[{"data":1,"prerenderedAt":720},["ShallowReactive",2],{"navigation_docs":3,"-interface-courts-integrations-unifi-access-club-admin":224,"-interface-courts-integrations-unifi-access-club-admin-surround":715},[4,157,184],{"title":5,"path":6,"stem":7,"children":8,"page":156},"Interface","\u002Finterface","1.interface",[9,53,61,68,75,82,90,97,104,111,132,139,145],{"title":10,"path":11,"stem":12,"children":13,"icon":15},"Courts","\u002Finterface\u002Fcourts","1.interface\u002F01.courts\u002F1.index",[14,16],{"title":10,"path":11,"stem":12,"icon":15},"sporty-court-sport",{"title":17,"path":18,"stem":19,"children":20,"icon":22},"Access control and lights","\u002Finterface\u002Fcourts\u002Fintegrations","1.interface\u002F01.courts\u002F5.integrations\u002F1.index",[21,23,28,33],{"title":17,"path":18,"stem":19,"icon":22},"sporty-toggle-large-on",{"title":24,"path":25,"stem":26,"icon":27},"Weblock","\u002Finterface\u002Fcourts\u002Fintegrations\u002Fweblock","1.interface\u002F01.courts\u002F5.integrations\u002F2.weblock","sporty-door-open",{"title":29,"path":30,"stem":31,"icon":32},"Shelly","\u002Finterface\u002Fcourts\u002Fintegrations\u002Fshelly","1.interface\u002F01.courts\u002F5.integrations\u002F3.shelly","sporty-bolt",{"title":34,"path":35,"stem":36,"children":37,"icon":27},"UniFi Access","\u002Finterface\u002Fcourts\u002Fintegrations\u002Funifi-access","1.interface\u002F01.courts\u002F5.integrations\u002F4.unifi-access\u002F1.index",[38,40,44,49],{"title":39,"path":35,"stem":36,"icon":27},"Overview",{"title":41,"path":42,"stem":43,"icon":22},"Connect the VPN","\u002Finterface\u002Fcourts\u002Fintegrations\u002Funifi-access\u002Fvpn","1.interface\u002F01.courts\u002F5.integrations\u002F4.unifi-access\u002F2.vpn",{"title":45,"path":46,"stem":47,"icon":48},"Create an API token","\u002Finterface\u002Fcourts\u002Fintegrations\u002Funifi-access\u002Fapi-token","1.interface\u002F01.courts\u002F5.integrations\u002F4.unifi-access\u002F3.api-token","sporty-gear",{"title":50,"path":51,"stem":52,"icon":15},"Set it up in Club Admin","\u002Finterface\u002Fcourts\u002Fintegrations\u002Funifi-access\u002Fclub-admin","1.interface\u002F01.courts\u002F5.integrations\u002F4.unifi-access\u002F4.club-admin",{"title":54,"path":55,"stem":56,"children":57,"icon":60},"Members","\u002Finterface\u002Fmembers","1.interface\u002F02.members\u002F1.index",[58],{"title":59,"path":55,"stem":56,"icon":60},"Member management","sporty-user-group",{"title":62,"path":63,"stem":64,"children":65,"icon":67},"Memberships","\u002Finterface\u002Fmemberships","1.interface\u002F03.memberships\u002F1.index",[66],{"title":62,"path":63,"stem":64,"icon":67},"sporty-id-card",{"title":69,"path":70,"stem":71,"children":72,"icon":74},"Leagues","\u002Finterface\u002Fleagues","1.interface\u002F04.leagues\u002F1.index",[73],{"title":69,"path":70,"stem":71,"icon":74},"sporty-ranking-star",{"title":76,"path":77,"stem":78,"children":79,"icon":81},"Tournaments","\u002Finterface\u002Ftournaments","1.interface\u002F05.tournaments\u002F1.index",[80],{"title":76,"path":77,"stem":78,"icon":81},"sporty-trophy",{"title":83,"path":84,"stem":85,"children":86,"icon":89},"Payments and subscriptions","\u002Finterface\u002Fpayments","1.interface\u002F06.payments\u002F1.index",[87],{"title":88,"path":84,"stem":85,"icon":89},"Payments","sporty-credit-card",{"title":91,"path":92,"stem":93,"children":94,"icon":96},"Shop","\u002Finterface\u002Fshop","1.interface\u002F07.shop\u002F1.index",[95],{"title":91,"path":92,"stem":93,"icon":96},"sporty-bag-shopping",{"title":98,"path":99,"stem":100,"children":101,"icon":103},"Schools and coaches","\u002Finterface\u002Fschools","1.interface\u002F08.schools\u002F1.index",[102],{"title":98,"path":99,"stem":100,"icon":103},"sporty-graduation-cap",{"title":105,"path":106,"stem":107,"children":108,"icon":110},"Emails","\u002Finterface\u002Femails","1.interface\u002F09.emails\u002F1.index",[109],{"title":105,"path":106,"stem":107,"icon":110},"sporty-envelope",{"title":112,"path":113,"stem":114,"children":115,"icon":117},"Video and cameras","\u002Finterface\u002Fvideo","1.interface\u002F10.video\u002F1.index",[116,118,122,127],{"title":112,"path":113,"stem":114,"icon":117},"sporty-camera-cctv",{"title":119,"path":120,"stem":121,"icon":117},"Dahua cameras","\u002Finterface\u002Fvideo\u002Fdahua","1.interface\u002F10.video\u002F2.dahua",{"title":123,"path":124,"stem":125,"icon":126},"Other RTMP cameras","\u002Finterface\u002Fvideo\u002Frtmp","1.interface\u002F10.video\u002F3.rtmp","sporty-video",{"title":128,"path":129,"stem":130,"icon":131},"Match analytics","\u002Finterface\u002Fvideo\u002Fanalytics","1.interface\u002F10.video\u002F4.analytics","sporty-chart-simple",{"title":133,"path":134,"stem":135,"children":136,"icon":138},"Reports","\u002Finterface\u002Freports","1.interface\u002F11.reports\u002F1.index",[137],{"title":133,"path":134,"stem":135,"icon":138},"sporty-chart-mixed",{"title":140,"path":141,"stem":142,"children":143,"icon":48},"Settings","\u002Finterface\u002Fsettings","1.interface\u002F12.settings\u002F1.index",[144],{"title":140,"path":141,"stem":142,"icon":48},{"title":146,"path":147,"stem":148,"children":149,"icon":151},"Social publishing","\u002Finterface\u002Fsocial","1.interface\u002F13.social\u002F1.index",[150,152],{"title":146,"path":147,"stem":148,"icon":151},"sporty-newspaper",{"title":153,"path":154,"stem":155,"icon":22},"Connecting channels","\u002Finterface\u002Fsocial\u002Fchannels","1.interface\u002F13.social\u002F2.channels",false,{"title":158,"path":159,"stem":160,"children":161,"icon":164},"Website","\u002Fwebsite","2.website\u002F1.index",[162,165,170,174,179],{"title":163,"path":159,"stem":160,"icon":164},"Website builder","sporty-browser",{"title":166,"path":167,"stem":168,"icon":169},"Pages, hero and footer","\u002Fwebsite\u002Fpages","2.website\u002F2.pages","sporty-file-lines",{"title":171,"path":172,"stem":173,"icon":151},"News and events","\u002Fwebsite\u002Fnews-and-events","2.website\u002F3.news-and-events",{"title":175,"path":176,"stem":177,"icon":178},"Coaches and gallery","\u002Fwebsite\u002Fcoaches-and-gallery","2.website\u002F4.coaches-and-gallery","sporty-images",{"title":180,"path":181,"stem":182,"icon":183},"FAQ and sponsors","\u002Fwebsite\u002Ffaq-and-sponsors","2.website\u002F5.faq-and-sponsors","sporty-circle-question",{"title":185,"path":186,"stem":187,"children":188,"icon":190},"OAuth & Sign in with Sporty","\u002Foauth","4.oauth\u002F1.index",[189,191,195,199,203,207,211,215,219],{"title":185,"path":186,"stem":187,"icon":190},"sporty-brackets-curly",{"title":192,"path":193,"stem":194,"icon":190},"Registering an application","\u002Foauth\u002Fclients","4.oauth\u002F2.clients",{"title":196,"path":197,"stem":198,"icon":190},"The authorization code flow","\u002Foauth\u002Fauthorization-code","4.oauth\u002F3.authorization-code",{"title":200,"path":201,"stem":202,"icon":190},"Scopes","\u002Foauth\u002Fscopes","4.oauth\u002F4.scopes",{"title":204,"path":205,"stem":206,"icon":190},"Sign in with Sporty","\u002Foauth\u002Fsign-in-with-sporty","4.oauth\u002F5.sign-in-with-sporty",{"title":208,"path":209,"stem":210,"icon":190},"The partner API","\u002Foauth\u002Fpartner-api","4.oauth\u002F6.partner-api",{"title":212,"path":213,"stem":214,"icon":190},"Syncing bookings","\u002Foauth\u002Fbooking-sync","4.oauth\u002F7.booking-sync",{"title":216,"path":217,"stem":218,"icon":190},"MCP and AI clients","\u002Foauth\u002Fmcp-and-ai-clients","4.oauth\u002F8.mcp-and-ai-clients",{"title":220,"path":221,"stem":222,"icon":223},"Agent checkout","\u002Foauth\u002Fagent-checkout","4.oauth\u002F9.agent-checkout","sporty-cart-shopping",{"id":225,"title":50,"body":226,"description":707,"extension":708,"links":709,"meta":710,"navigation":711,"path":51,"seo":712,"stem":52,"__hash__":714},"docs\u002F1.interface\u002F01.courts\u002F5.integrations\u002F4.unifi-access\u002F4.club-admin.md",{"type":227,"value":228,"toc":693},"minimark",[229,243,255,260,270,303,307,370,376,387,394,398,404,410,426,431,434,438,449,456,460,463,533,539,544,547,564,571,582,586,593,596,603,607,610,687],[230,231,232,233,237,238,242],"p",{},"Everything for UniFi Access lives on one page: ",[234,235,236],"strong",{},"Club Admin → Business → Integrations → UniFi\nAccess"," (",[239,240,241],"code",{},"\u002Fadmin\u002Fapp\u002Fbusiness\u002Fintegrations\u002Funifi-access","). You need to be an admin of the club.",[230,244,245,246,250,251,254],{},"Before you start, the ",[247,248,249],"a",{"href":42},"VPN"," should be connected\nand you should have an ",[247,252,253],{"href":46},"API token",".",[256,257,259],"h2",{"id":258},"vpn-connection","VPN connection",[230,261,262,263,266,267,269],{},"The first card creates your console's tunnel to SportyPlus: ",[234,264,265],{},"Create VPN connection"," downloads the\nfile you import on the console (see ",[247,268,41],{"href":42},").\nAfterwards the card shows:",[271,272,273,281,291,297],"ul",{},[274,275,276,277,280],"li",{},"the ",[234,278,279],{},"tunnel address"," your console has, which is also its console address below",[274,282,283,286,287,290],{},[234,284,285],{},"Connected"," or ",[234,288,289],{},"Waiting for the console",", and when the console last made contact",[274,292,293,296],{},[234,294,295],{},"Download a new file",", for a lost file or a new console. It issues new keys and a new tunnel\naddress, and the console address updates to match.",[274,298,299,302],{},[234,300,301],{},"Remove VPN connection",", which cuts the tunnel within a minute. Door PINs and unlocking stop\nuntil you create a new one.",[256,304,306],{"id":305},"console","Console",[308,309,310,323],"table",{},[311,312,313],"thead",{},[314,315,316,320],"tr",{},[317,318,319],"th",{},"Field",[317,321,322],{},"What to enter",[324,325,326,337,361],"tbody",{},[314,327,328,334],{},[329,330,331],"td",{},[234,332,333],{},"Active",[329,335,336],{},"on",[314,338,339,344],{},[329,340,341],{},[234,342,343],{},"Console address",[329,345,346,349,350,352,353,356,357,360],{},[239,347,348],{},"https:\u002F\u002F"," + your console's ",[234,351,279],{}," + ",[239,354,355],{},":12445",", for example ",[239,358,359],{},"https:\u002F\u002F10.200.0.3:12445",". Creating the VPN connection fills this in.",[314,362,363,367],{},[329,364,365],{},[234,366,253],{},[329,368,369],{},"the token you copied from UniFi Access",[230,371,372,373,254],{},"Press ",[234,374,375],{},"Save",[230,377,378,379,382,383,386],{},"Use the tunnel address, not the console's address on your club network. It's unique to your club,\nso it never clashes with another club's network. The address must be ",[239,380,381],{},"https",", a private network\naddress and port ",[239,384,385],{},"12445",", and anything else is refused on save. That's deliberate: SportyPlus only\never talks to a console through your tunnel.",[230,388,389,390,393],{},"The token can't be read back once it's saved. The field shows ",[234,391,392],{},"Saved. Leave blank to keep it.","\nLeave it empty to keep the stored token, or paste a new one to replace it.",[256,395,397],{"id":396},"doors","Doors",[230,399,372,400,403],{},[234,401,402],{},"Read doors from console",". SportyPlus lists every door your console has, with its name and\nfull location, and shows when the doors were last read.",[230,405,406,407,409],{},"For each door, choose the ",[234,408,10],{}," it serves:",[271,411,412,415,423],{},[274,413,414],{},"one or more courts, for a door that only leads to those courts",[274,416,417,420,421,254],{},[234,418,419],{},"All courts",", for a door every booking passes through, such as the building entrance.\nChoosing it clears any individual courts, and choosing a court clears ",[234,422,419],{},[274,424,425],{},"nothing, for a door SportyPlus should never give access to, such as an office or a store room",[230,427,372,428,430],{},[234,429,375],{}," at the bottom of the list to keep the courts you chose.",[230,432,433],{},"Reading the doors again later keeps the courts you already set. A door that has been removed from\nthe console disappears from the list, along with its courts.",[256,435,437],{"id":436},"unlocking-a-door","Unlocking a door",[230,439,440,441,444,445,448],{},"Every door has an ",[234,442,443],{},"Unlock"," button. It opens the door ",[234,446,447],{},"once, immediately",", for whoever is\nstanding at it. You're asked to confirm first.",[230,450,451,452,455],{},"The console's own log records the unlock under your name, prefixed ",[239,453,454],{},"SportyPlus:",", so you can\nalways see who opened a door from Club Admin. A few unlocks a minute is the limit.",[256,457,459],{"id":458},"door-pins","Door PINs",[230,461,462],{},"This section is where bookings turn into door access.",[308,464,465,478],{},[311,466,467],{},[314,468,469,472,475],{},[317,470,471],{},"Setting",[317,473,474],{},"What it does",[317,476,477],{},"Default",[324,479,480,495,508,520],{},[314,481,482,487,490],{},[329,483,484],{},[234,485,486],{},"Issue door PINs for bookings",[329,488,489],{},"turns door PINs on for your club",[329,491,492],{},[234,493,494],{},"off",[314,496,497,502,505],{},[329,498,499],{},[234,500,501],{},"Minutes before the booking",[329,503,504],{},"how early a PIN starts working",[329,506,507],{},"15",[314,509,510,515,518],{},[329,511,512],{},[234,513,514],{},"Minutes after the booking",[329,516,517],{},"how long it keeps working once the booking ends",[329,519,507],{},[314,521,522,527,530],{},[329,523,524],{},[234,525,526],{},"PIN length",[329,528,529],{},"the length of new PINs, which must match the PIN length set on your console",[329,531,532],{},"6",[230,534,535,536,538],{},"Nothing happens until you turn ",[234,537,486],{}," on and save. So you can connect the\nconsole and match doors first, and switch PINs on when you're ready, ideally with someone at the\nclub to try a door.",[540,541,543],"h3",{"id":542},"what-members-get","What members get",[230,545,546],{},"Once PINs are on, within a minute of a booking being paid:",[271,548,549,555,561],{},[274,550,551,554],{},[234,552,553],{},"every player and every coach"," on the booking can get in with their own PIN. People only\nwatching a booking don't get one.",[274,556,557,558,560],{},"the PIN works on the doors that serve the booked court, plus any ",[234,559,419],{}," door",[274,562,563],{},"from the chosen minutes before the booking starts until the chosen minutes after it ends",[230,565,566,567,570],{},"A member's PIN is their ",[234,568,569],{},"entry code",", which the app and booking reminder emails already show. It\nstays the same from booking to booking. A member who already has an entry code from Weblock keeps\nthat code. Otherwise SportyPlus creates one of the PIN length you set.",[230,572,573,574,577,578,581],{},"A booking that is ",[234,575,576],{},"still waiting for payment"," gets no access until it's paid. A ",[234,579,580],{},"cancelled","\nbooking stops working within a minute.",[540,583,585],{"id":584},"how-it-looks-on-the-console","How it looks on the console",[230,587,588,589,592],{},"Each member appears in UniFi Access as ",[234,590,591],{},"one visitor",", named after them, carrying their PIN.\nSportyPlus moves that visitor from booking to booking: once one booking's time has passed, the\nvisitor's time and doors change to the member's next booking. Two bookings back to back become one\ncontinuous stretch, so the member isn't locked out in between. When a member has nothing else\nbooked, their visitor is removed, but they keep their PIN for next time.",[230,594,595],{},"Don't edit these visitors on the console. SportyPlus corrects them within a minute.",[597,598,599,600,602],"note",{},"Turning ",[234,601,486],{}," off stops SportyPlus from creating or changing visitors,\nbut it doesn't remove the ones already on the console. Delete them in UniFi Access if you need\naccess to stop immediately.",[256,604,606],{"id":605},"when-something-goes-wrong","When something goes wrong",[230,608,609],{},"SportyPlus shows the console's answer when an action fails.",[308,611,612,622],{},[311,613,614],{},[314,615,616,619],{},[317,617,618],{},"Message",[317,620,621],{},"What it means",[324,623,624,640,650,664,677],{},[314,625,626,632],{},[329,627,628],{},[629,630,631],"em",{},"The UniFi Access console could not be reached",[329,633,634,635,639],{},"the VPN is down, or the ",[247,636,638],{"href":637},"\u002Finterface\u002Fcourts\u002Fintegrations\u002Funifi-access\u002Fvpn#_3-allow-sportyplus-through-to-unifi-access","firewall rule"," is missing. Check that the SportyPlus VPN client is on.",[314,641,642,647],{},[329,643,644],{},[629,645,646],{},"refused the request (401)",[329,648,649],{},"the API token is wrong or has expired. Create a new one and paste it in.",[314,651,652,657],{},[329,653,654],{},[629,655,656],{},"refused the request (403)",[329,658,659,660],{},"the token is missing a ",[247,661,663],{"href":662},"\u002Finterface\u002Fcourts\u002Fintegrations\u002Funifi-access\u002Fapi-token#permissions","permission",[314,665,666,671],{},[329,667,668],{},[629,669,670],{},"The console address … is not allowed",[329,672,673,674],{},"the address isn't in the form ",[239,675,676],{},"https:\u002F\u002F10.200.0.x:12445",[314,678,679,684],{},[329,680,681],{},[629,682,683],{},"UniFi Access is not set up for this club",[329,685,686],{},"save the console address and the token first",[230,688,689,690,692],{},"If a member's PIN doesn't open a door, check that the booking is paid, that its court is matched\nto that door, and that ",[234,691,486],{}," is on. A console that was offline catches\nup on its own within a minute of coming back.",{"title":694,"searchDepth":695,"depth":695,"links":696},"",2,[697,698,699,700,701,706],{"id":258,"depth":695,"text":259},{"id":305,"depth":695,"text":306},{"id":396,"depth":695,"text":397},{"id":436,"depth":695,"text":437},{"id":458,"depth":695,"text":459,"children":702},[703,705],{"id":542,"depth":704,"text":543},3,{"id":584,"depth":704,"text":585},{"id":605,"depth":695,"text":606},"Connect the console, match doors to courts, unlock doors and issue door PINs for bookings","md",null,{},{"icon":15},{"title":713,"description":707},"UniFi Access in Club Admin","YP-5BK-6eHkj4oUgq_GxY1HvPscJXwJ9tBNt9CLyI1w",[716,718],{"title":45,"path":46,"stem":47,"description":717,"icon":48,"children":-1},"The UniFi Access API token SportyPlus needs, and the permissions to give it",{"title":59,"path":55,"stem":56,"description":719,"icon":60,"children":-1},"Here we learn how to manage members",1790691909306]