[{"data":1,"prerenderedAt":2985},["ShallowReactive",2],{"navigation_docs":3,"-oauth-partner-api":224,"-oauth-partner-api-surround":2980},[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":208,"body":226,"description":2971,"extension":2972,"links":2973,"meta":2974,"navigation":2975,"path":209,"seo":2976,"stem":210,"__hash__":2979},"docs\u002F4.oauth\u002F6.partner-api.md",{"type":227,"value":228,"toc":2951},"minimark",[229,236,239,284,289,598,605,637,652,658,676,889,892,898,905,921,1004,1031,1037,1255,1284,1287,1294,1420,1434,1440,1458,1464,1475,1814,1869,1875,1878,2066,2079,2085,2088,2094,2125,2198,2201,2206,2223,2446,2497,2503,2516,2527,2530,2645,2649,2663,2669,2678,2684,2794,2801,2813,2817,2823,2827,2933,2937,2947],[230,231,232],"p",{},[233,234,235],"code",{},"https:\u002F\u002Fapi.sporty.plus\u002Fapi\u002Fpartner\u002Fv1",[230,237,238],{},"This is the only place an OAuth access token works. Plain JSON — not JSON:API — with a\ndeliberately small surface: every field is one somebody chose to expose.",[240,241,246],"pre",{"className":242,"code":243,"language":244,"meta":245,"style":245},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl https:\u002F\u002Fapi.sporty.plus\u002Fapi\u002Fpartner\u002Fv1\u002Fcourts \\\n  -H \"Authorization: Bearer $ACCESS_TOKEN\"\n","bash","",[233,247,248,265],{"__ignoreMap":245},[249,250,253,257,261],"span",{"class":251,"line":252},"line",1,[249,254,256],{"class":255},"sBMFI","curl",[249,258,260],{"class":259},"sfazB"," https:\u002F\u002Fapi.sporty.plus\u002Fapi\u002Fpartner\u002Fv1\u002Fcourts",[249,262,264],{"class":263},"sTEyZ"," \\\n",[249,266,268,271,275,278,281],{"class":251,"line":267},2,[249,269,270],{"class":259},"  -H",[249,272,274],{"class":273},"sMK4o"," \"",[249,276,277],{"class":259},"Authorization: Bearer ",[249,279,280],{"class":263},"$ACCESS_TOKEN",[249,282,283],{"class":273},"\"\n",[285,286,288],"h2",{"id":287},"endpoints","Endpoints",[290,291,292,308],"table",{},[293,294,295],"thead",{},[296,297,298,302,305],"tr",{},[299,300,301],"th",{},"Method",[299,303,304],{},"Path",[299,306,307],{},"Scope",[309,310,311,329,345,361,377,393,409,425,441,456,472,487,502,517,532,546,567,583],"tbody",{},[296,312,313,319,324],{},[314,315,316],"td",{},[233,317,318],{},"GET",[314,320,321],{},[233,322,323],{},"\u002Fme",[314,325,326],{},[233,327,328],{},"me.read",[296,330,331,335,340],{},[314,332,333],{},[233,334,318],{},[314,336,337],{},[233,338,339],{},"\u002Fme\u002Freservations",[314,341,342],{},[233,343,344],{},"me.reservations.read",[296,346,347,352,356],{},[314,348,349],{},[233,350,351],{},"POST",[314,353,354],{},[233,355,339],{},[314,357,358],{},[233,359,360],{},"me.reservations.write",[296,362,363,368,373],{},[314,364,365],{},[233,366,367],{},"DELETE",[314,369,370],{},[233,371,372],{},"\u002Fme\u002Freservations\u002F{id}",[314,374,375],{},[233,376,360],{},[296,378,379,383,388],{},[314,380,381],{},[233,382,318],{},[314,384,385],{},[233,386,387],{},"\u002Fme\u002Fresults",[314,389,390],{},[233,391,392],{},"me.results.read",[296,394,395,399,404],{},[314,396,397],{},[233,398,318],{},[314,400,401],{},[233,402,403],{},"\u002Fme\u002Fmemberships",[314,405,406],{},[233,407,408],{},"me.memberships.read",[296,410,411,415,420],{},[314,412,413],{},[233,414,318],{},[314,416,417],{},[233,418,419],{},"\u002Fclubs\u002Fme",[314,421,422],{},[233,423,424],{},"club.read",[296,426,427,431,436],{},[314,428,429],{},[233,430,318],{},[314,432,433],{},[233,434,435],{},"\u002Fcourts",[314,437,438],{},[233,439,440],{},"club.courts.read",[296,442,443,447,452],{},[314,444,445],{},[233,446,318],{},[314,448,449],{},[233,450,451],{},"\u002Favailability",[314,453,454],{},[233,455,440],{},[296,457,458,462,467],{},[314,459,460],{},[233,461,318],{},[314,463,464],{},[233,465,466],{},"\u002Freservations",[314,468,469],{},[233,470,471],{},"club.reservations.read",[296,473,474,478,483],{},[314,475,476],{},[233,477,318],{},[314,479,480],{},[233,481,482],{},"\u002Freservations\u002F{id}",[314,484,485],{},[233,486,471],{},[296,488,489,493,498],{},[314,490,491],{},[233,492,318],{},[314,494,495],{},[233,496,497],{},"\u002Freservation-categories",[314,499,500],{},[233,501,471],{},[296,503,504,508,512],{},[314,505,506],{},[233,507,351],{},[314,509,510],{},[233,511,466],{},[314,513,514],{},[233,515,516],{},"club.reservations.write",[296,518,519,524,528],{},[314,520,521],{},[233,522,523],{},"PATCH",[314,525,526],{},[233,527,482],{},[314,529,530],{},[233,531,516],{},[296,533,534,538,542],{},[314,535,536],{},[233,537,367],{},[314,539,540],{},[233,541,482],{},[314,543,544],{},[233,545,516],{},[296,547,548,558,563],{},[314,549,550,552,553,552,556],{},[233,551,318],{}," ",[233,554,555],{},"PUT",[233,557,367],{},[314,559,560],{},[233,561,562],{},"\u002Fwebhook",[314,564,565],{},[233,566,471],{},[296,568,569,573,578],{},[314,570,571],{},[233,572,318],{},[314,574,575],{},[233,576,577],{},"\u002Fmembers",[314,579,580],{},[233,581,582],{},"club.members.read",[296,584,585,589,593],{},[314,586,587],{},[233,588,351],{},[314,590,591],{},[233,592,577],{},[314,594,595],{},[233,596,597],{},"club.members.write",[599,600,602],"h3",{"id":601},"get-me",[233,603,604],{},"GET \u002Fme",[230,606,607,608,611,612,611,615,611,618,611,621,624,625,628,629,632,633,636],{},"The member the token was issued for: ",[233,609,610],{},"id",", ",[233,613,614],{},"first_name",[233,616,617],{},"last_name",[233,619,620],{},"name",[233,622,623],{},"picture"," and\n",[233,626,627],{},"locale",". Their email address is not part of it; ask for the ",[233,630,631],{},"email"," scope and read it from\n",[233,634,635],{},"\u002Foauth2\u002Fuserinfo",".",[230,638,639,640,642,643,647,648,651],{},"This and ",[233,641,339],{}," need a token issued ",[644,645,646],"strong",{},"for a member"," (authorization code), and they\nare the member's own data rather than a club's, so no club has to grant your application\nanything. A client-credentials token gets ",[233,649,650],{},"401",". If the member authorised your application for\none club only, you see that club's part of their data.",[599,653,655],{"id":654},"get-mereservations",[233,656,657],{},"GET \u002Fme\u002Freservations",[230,659,660,661,664,665,624,668,671,672,675],{},"The bookings the member plays or coaches in, ",[644,662,663],{},"upcoming unless you say otherwise",". ",[233,666,667],{},"from",[233,669,670],{},"to"," (ISO 8601) set the window; ",[233,673,674],{},"per_page"," goes up to 100.",[240,677,681],{"className":678,"code":679,"language":680,"meta":245,"style":245},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"data\": [\n    {\n      \"id\": 918301,\n      \"club\": { \"id\": 57, \"name\": \"TK Test\" },\n      \"court_id\": 412,\n      \"court_name\": \"Teren 3\",\n      \"from\": \"2026-10-07T16:00:00+00:00\",\n      \"to\": \"2026-10-07T17:00:00+00:00\",\n      \"approved\": true\n    }\n  ]\n}\n","json",[233,682,683,688,706,712,731,778,795,816,836,856,871,877,883],{"__ignoreMap":245},[249,684,685],{"class":251,"line":252},[249,686,687],{"class":273},"{\n",[249,689,690,693,697,700,703],{"class":251,"line":267},[249,691,692],{"class":273},"  \"",[249,694,696],{"class":695},"spNyl","data",[249,698,699],{"class":273},"\"",[249,701,702],{"class":273},":",[249,704,705],{"class":273}," [\n",[249,707,709],{"class":251,"line":708},3,[249,710,711],{"class":273},"    {\n",[249,713,715,718,720,722,724,728],{"class":251,"line":714},4,[249,716,717],{"class":273},"      \"",[249,719,610],{"class":255},[249,721,699],{"class":273},[249,723,702],{"class":273},[249,725,727],{"class":726},"sbssI"," 918301",[249,729,730],{"class":273},",\n",[249,732,734,736,739,741,743,746,748,750,752,754,757,760,762,764,766,768,770,773,775],{"class":251,"line":733},5,[249,735,717],{"class":273},[249,737,738],{"class":255},"club",[249,740,699],{"class":273},[249,742,702],{"class":273},[249,744,745],{"class":273}," {",[249,747,274],{"class":273},[249,749,610],{"class":726},[249,751,699],{"class":273},[249,753,702],{"class":273},[249,755,756],{"class":726}," 57",[249,758,759],{"class":273},",",[249,761,274],{"class":273},[249,763,620],{"class":726},[249,765,699],{"class":273},[249,767,702],{"class":273},[249,769,274],{"class":273},[249,771,772],{"class":259},"TK Test",[249,774,699],{"class":273},[249,776,777],{"class":273}," },\n",[249,779,781,783,786,788,790,793],{"class":251,"line":780},6,[249,782,717],{"class":273},[249,784,785],{"class":255},"court_id",[249,787,699],{"class":273},[249,789,702],{"class":273},[249,791,792],{"class":726}," 412",[249,794,730],{"class":273},[249,796,798,800,803,805,807,809,812,814],{"class":251,"line":797},7,[249,799,717],{"class":273},[249,801,802],{"class":255},"court_name",[249,804,699],{"class":273},[249,806,702],{"class":273},[249,808,274],{"class":273},[249,810,811],{"class":259},"Teren 3",[249,813,699],{"class":273},[249,815,730],{"class":273},[249,817,819,821,823,825,827,829,832,834],{"class":251,"line":818},8,[249,820,717],{"class":273},[249,822,667],{"class":255},[249,824,699],{"class":273},[249,826,702],{"class":273},[249,828,274],{"class":273},[249,830,831],{"class":259},"2026-10-07T16:00:00+00:00",[249,833,699],{"class":273},[249,835,730],{"class":273},[249,837,839,841,843,845,847,849,852,854],{"class":251,"line":838},9,[249,840,717],{"class":273},[249,842,670],{"class":255},[249,844,699],{"class":273},[249,846,702],{"class":273},[249,848,274],{"class":273},[249,850,851],{"class":259},"2026-10-07T17:00:00+00:00",[249,853,699],{"class":273},[249,855,730],{"class":273},[249,857,859,861,864,866,868],{"class":251,"line":858},10,[249,860,717],{"class":273},[249,862,863],{"class":255},"approved",[249,865,699],{"class":273},[249,867,702],{"class":273},[249,869,870],{"class":273}," true\n",[249,872,874],{"class":251,"line":873},11,[249,875,876],{"class":273},"    }\n",[249,878,880],{"class":251,"line":879},12,[249,881,882],{"class":273},"  ]\n",[249,884,886],{"class":251,"line":885},13,[249,887,888],{"class":273},"}\n",[230,890,891],{},"The other players are not included: whom a member plays with is the other players' to share.",[599,893,895],{"id":894},"post-mereservations",[233,896,897],{},"POST \u002Fme\u002Freservations",[230,899,900,901,904],{},"Books a court ",[644,902,903],{},"as the member",". Every rule the club applies to them in the Sporty app applies\nhere too:",[906,907,908,912,915,918],"ul",{},[909,910,911],"li",{},"their membership's opening hours and price;",[909,913,914],{},"how far ahead they may book, and how close to the start;",[909,916,917],{},"how many bookings they may hold;",[909,919,920],{},"whether they must pay first.",[240,922,924],{"className":678,"code":923,"language":680,"meta":245,"style":245},"{\n  \"court_id\": 412,\n  \"from\": \"2026-10-07T18:00:00+02:00\",\n  \"to\": \"2026-10-07T19:30:00+02:00\",\n  \"external_id\": \"agent-7f3a\"\n}\n",[233,925,926,930,944,963,982,1000],{"__ignoreMap":245},[249,927,928],{"class":251,"line":252},[249,929,687],{"class":273},[249,931,932,934,936,938,940,942],{"class":251,"line":267},[249,933,692],{"class":273},[249,935,785],{"class":695},[249,937,699],{"class":273},[249,939,702],{"class":273},[249,941,792],{"class":726},[249,943,730],{"class":273},[249,945,946,948,950,952,954,956,959,961],{"class":251,"line":708},[249,947,692],{"class":273},[249,949,667],{"class":695},[249,951,699],{"class":273},[249,953,702],{"class":273},[249,955,274],{"class":273},[249,957,958],{"class":259},"2026-10-07T18:00:00+02:00",[249,960,699],{"class":273},[249,962,730],{"class":273},[249,964,965,967,969,971,973,975,978,980],{"class":251,"line":714},[249,966,692],{"class":273},[249,968,670],{"class":695},[249,970,699],{"class":273},[249,972,702],{"class":273},[249,974,274],{"class":273},[249,976,977],{"class":259},"2026-10-07T19:30:00+02:00",[249,979,699],{"class":273},[249,981,730],{"class":273},[249,983,984,986,989,991,993,995,998],{"class":251,"line":733},[249,985,692],{"class":273},[249,987,988],{"class":695},"external_id",[249,990,699],{"class":273},[249,992,702],{"class":273},[249,994,274],{"class":273},[249,996,997],{"class":259},"agent-7f3a",[249,999,283],{"class":273},[249,1001,1002],{"class":251,"line":780},[249,1003,888],{"class":273},[906,1005,1006,1022],{},[909,1007,1008,1010,1011,1013,1014,1017,1018,1021],{},[233,1009,667],{}," and ",[233,1012,670],{}," must fall on the court's slots, as ",[233,1015,1016],{},"GET \u002Favailability"," lists them. The\nbooking must be a whole number of ",[233,1019,1020],{},"reservation_duration"," slots, and every one of them must be\nopen to this member.",[909,1023,1024,1026,1027,1030],{},[233,1025,988],{}," is optional: your id for the request, up to 191 characters. Sending it again\nanswers ",[233,1028,1029],{},"200"," with the booking already made, so a retry never books twice.",[230,1032,1033,1034,702],{},"The answer is ",[233,1035,1036],{},"201",[240,1038,1040],{"className":678,"code":1039,"language":680,"meta":245,"style":245},"{\n  \"data\": {\n    \"id\": 918402,\n    \"club\": { \"id\": 57, \"name\": \"TK Test\" },\n    \"court_id\": 412,\n    \"court_name\": \"Teren 3\",\n    \"from\": \"2026-10-07T16:00:00+00:00\",\n    \"to\": \"2026-10-07T17:30:00+00:00\",\n    \"approved\": false,\n    \"price\": 20,\n    \"needs_payment\": true,\n    \"pay_by\": \"2026-10-01T10:20:00+00:00\"\n  }\n}\n",[233,1041,1042,1046,1059,1075,1115,1129,1147,1165,1184,1197,1213,1227,1245,1250],{"__ignoreMap":245},[249,1043,1044],{"class":251,"line":252},[249,1045,687],{"class":273},[249,1047,1048,1050,1052,1054,1056],{"class":251,"line":267},[249,1049,692],{"class":273},[249,1051,696],{"class":695},[249,1053,699],{"class":273},[249,1055,702],{"class":273},[249,1057,1058],{"class":273}," {\n",[249,1060,1061,1064,1066,1068,1070,1073],{"class":251,"line":708},[249,1062,1063],{"class":273},"    \"",[249,1065,610],{"class":255},[249,1067,699],{"class":273},[249,1069,702],{"class":273},[249,1071,1072],{"class":726}," 918402",[249,1074,730],{"class":273},[249,1076,1077,1079,1081,1083,1085,1087,1089,1091,1093,1095,1097,1099,1101,1103,1105,1107,1109,1111,1113],{"class":251,"line":714},[249,1078,1063],{"class":273},[249,1080,738],{"class":255},[249,1082,699],{"class":273},[249,1084,702],{"class":273},[249,1086,745],{"class":273},[249,1088,274],{"class":273},[249,1090,610],{"class":726},[249,1092,699],{"class":273},[249,1094,702],{"class":273},[249,1096,756],{"class":726},[249,1098,759],{"class":273},[249,1100,274],{"class":273},[249,1102,620],{"class":726},[249,1104,699],{"class":273},[249,1106,702],{"class":273},[249,1108,274],{"class":273},[249,1110,772],{"class":259},[249,1112,699],{"class":273},[249,1114,777],{"class":273},[249,1116,1117,1119,1121,1123,1125,1127],{"class":251,"line":733},[249,1118,1063],{"class":273},[249,1120,785],{"class":255},[249,1122,699],{"class":273},[249,1124,702],{"class":273},[249,1126,792],{"class":726},[249,1128,730],{"class":273},[249,1130,1131,1133,1135,1137,1139,1141,1143,1145],{"class":251,"line":780},[249,1132,1063],{"class":273},[249,1134,802],{"class":255},[249,1136,699],{"class":273},[249,1138,702],{"class":273},[249,1140,274],{"class":273},[249,1142,811],{"class":259},[249,1144,699],{"class":273},[249,1146,730],{"class":273},[249,1148,1149,1151,1153,1155,1157,1159,1161,1163],{"class":251,"line":797},[249,1150,1063],{"class":273},[249,1152,667],{"class":255},[249,1154,699],{"class":273},[249,1156,702],{"class":273},[249,1158,274],{"class":273},[249,1160,831],{"class":259},[249,1162,699],{"class":273},[249,1164,730],{"class":273},[249,1166,1167,1169,1171,1173,1175,1177,1180,1182],{"class":251,"line":818},[249,1168,1063],{"class":273},[249,1170,670],{"class":255},[249,1172,699],{"class":273},[249,1174,702],{"class":273},[249,1176,274],{"class":273},[249,1178,1179],{"class":259},"2026-10-07T17:30:00+00:00",[249,1181,699],{"class":273},[249,1183,730],{"class":273},[249,1185,1186,1188,1190,1192,1194],{"class":251,"line":838},[249,1187,1063],{"class":273},[249,1189,863],{"class":255},[249,1191,699],{"class":273},[249,1193,702],{"class":273},[249,1195,1196],{"class":273}," false,\n",[249,1198,1199,1201,1204,1206,1208,1211],{"class":251,"line":858},[249,1200,1063],{"class":273},[249,1202,1203],{"class":255},"price",[249,1205,699],{"class":273},[249,1207,702],{"class":273},[249,1209,1210],{"class":726}," 20",[249,1212,730],{"class":273},[249,1214,1215,1217,1220,1222,1224],{"class":251,"line":873},[249,1216,1063],{"class":273},[249,1218,1219],{"class":255},"needs_payment",[249,1221,699],{"class":273},[249,1223,702],{"class":273},[249,1225,1226],{"class":273}," true,\n",[249,1228,1229,1231,1234,1236,1238,1240,1243],{"class":251,"line":879},[249,1230,1063],{"class":273},[249,1232,1233],{"class":255},"pay_by",[249,1235,699],{"class":273},[249,1237,702],{"class":273},[249,1239,274],{"class":273},[249,1241,1242],{"class":259},"2026-10-01T10:20:00+00:00",[249,1244,283],{"class":273},[249,1246,1247],{"class":251,"line":885},[249,1248,1249],{"class":273},"  }\n",[249,1251,1253],{"class":251,"line":1252},14,[249,1254,888],{"class":273},[230,1256,1257,1260,1261,1263,1264,1267,1268,1270,1271,1010,1274,664,1277,1279,1280,1283],{},[644,1258,1259],{},"Payment is never taken through the API."," When ",[233,1262,1219],{}," is ",[233,1265,1266],{},"true",", the member must pay\nin the Sporty app before ",[233,1269,1233],{},", or the club takes the slot back. Tell them so. A club that\ndoes not require payment up front answers ",[233,1272,1273],{},"needs_payment: false",[233,1275,1276],{},"pay_by: null",[233,1278,1233],{}," is\ngiven only on the answer that made the booking, and is ",[233,1281,1282],{},"null"," on a repeat.",[230,1285,1286],{},"The member is notified as for any booking they make themselves, and the club sees it in its\ndiary as theirs.",[230,1288,1289,1290,1293],{},"When the member cannot book, the answer is ",[233,1291,1292],{},"409"," with a code, plus the rule's own message,\ntranslated for the member and meant to be shown to them:",[290,1295,1296,1308],{},[293,1297,1298],{},[296,1299,1300,1305],{},[299,1301,1302],{},[233,1303,1304],{},"error",[299,1306,1307],{},"Meaning",[309,1309,1310,1320,1330,1340,1350,1360,1370,1380,1390,1400,1410],{},[296,1311,1312,1317],{},[314,1313,1314],{},[233,1315,1316],{},"slot_taken",[314,1318,1319],{},"Someone else has part of that time.",[296,1321,1322,1327],{},[314,1323,1324],{},[233,1325,1326],{},"outside_opening_hours",[314,1328,1329],{},"The court is not open to this member for all of it.",[296,1331,1332,1337],{},[314,1333,1334],{},[233,1335,1336],{},"court_closed",[314,1338,1339],{},"The court is closed that day.",[296,1341,1342,1347],{},[314,1343,1344],{},[233,1345,1346],{},"in_past",[314,1348,1349],{},"That time has passed.",[296,1351,1352,1357],{},[314,1353,1354],{},[233,1355,1356],{},"too_soon",[314,1358,1359],{},"Too close to the start for their membership.",[296,1361,1362,1367],{},[314,1363,1364],{},[233,1365,1366],{},"too_far_ahead",[314,1368,1369],{},"Further ahead than their membership allows.",[296,1371,1372,1377],{},[314,1373,1374],{},[233,1375,1376],{},"leaves_a_gap",[314,1378,1379],{},"It would leave a half-hour gap the club does not allow.",[296,1381,1382,1387],{},[314,1383,1384],{},[233,1385,1386],{},"duration_not_offered",[314,1388,1389],{},"The club does not sell that length at that time.",[296,1391,1392,1397],{},[314,1393,1394],{},[233,1395,1396],{},"limit_reached",[314,1398,1399],{},"They already hold as many bookings as their membership allows.",[296,1401,1402,1407],{},[314,1403,1404],{},[233,1405,1406],{},"not_a_member",[314,1408,1409],{},"The club has not accepted them yet.",[296,1411,1412,1417],{},[314,1413,1414],{},[233,1415,1416],{},"not_bookable",[314,1418,1419],{},"Any other rule; the message says which.",[230,1421,1422,1425,1426,1429,1430,1433],{},[233,1423,1424],{},"invalid_times"," (",[233,1427,1428],{},"422",") means the times are not whole slots, or run past midnight. ",[233,1431,1432],{},"403 access_denied"," means the member authorised your application for a different club.",[599,1435,1437],{"id":1436},"delete-mereservationsid",[233,1438,1439],{},"DELETE \u002Fme\u002Freservations\u002F{id}",[230,1441,1442,1443,1445,1446,1449,1450,1453,1454,1457],{},"Cancels one of the member's own bookings ",[644,1444,903],{},", so their cancellation deadline\napplies. Anything they paid goes back to their club wallet, and the other players are told.\nThe answer is ",[233,1447,1448],{},"204",". It is ",[233,1451,1452],{},"409 not_cancelable",", with the reason, when it is too late or the\nbooking is not theirs to cancel (someone else booked them in). It is ",[233,1455,1456],{},"404"," for a booking they\nare not in.",[599,1459,1461],{"id":1460},"get-meresults",[233,1462,1463],{},"GET \u002Fme\u002Fresults",[230,1465,1466,1467,1010,1469,1471,1472,1474],{},"The member's match results, newest first. ",[233,1468,667],{},[233,1470,670],{}," (ISO 8601) narrow it; ",[233,1473,674],{},"\ngoes up to 100.",[240,1476,1478],{"className":678,"code":1477,"language":680,"meta":245,"style":245},"{\n  \"data\": [\n    {\n      \"id\": 22875,\n      \"club\": { \"id\": 57, \"name\": \"TK Test\" },\n      \"played_at\": \"2026-09-27T18:00:00+00:00\",\n      \"sport\": \"tennis\",\n      \"kind\": \"league\",\n      \"sets\": [\n        { \"games\": [2, 6], \"tie_break\": null },\n        { \"games\": [6, 3], \"tie_break\": null },\n        { \"games\": [7, 6], \"tie_break\": [10, 8] }\n      ],\n      \"won\": true,\n      \"official\": true,\n      \"verified\": true\n    }\n  ]\n}\n",[233,1479,1480,1484,1496,1500,1515,1555,1575,1595,1615,1628,1670,1706,1753,1758,1771,1785,1799,1804,1809],{"__ignoreMap":245},[249,1481,1482],{"class":251,"line":252},[249,1483,687],{"class":273},[249,1485,1486,1488,1490,1492,1494],{"class":251,"line":267},[249,1487,692],{"class":273},[249,1489,696],{"class":695},[249,1491,699],{"class":273},[249,1493,702],{"class":273},[249,1495,705],{"class":273},[249,1497,1498],{"class":251,"line":708},[249,1499,711],{"class":273},[249,1501,1502,1504,1506,1508,1510,1513],{"class":251,"line":714},[249,1503,717],{"class":273},[249,1505,610],{"class":255},[249,1507,699],{"class":273},[249,1509,702],{"class":273},[249,1511,1512],{"class":726}," 22875",[249,1514,730],{"class":273},[249,1516,1517,1519,1521,1523,1525,1527,1529,1531,1533,1535,1537,1539,1541,1543,1545,1547,1549,1551,1553],{"class":251,"line":733},[249,1518,717],{"class":273},[249,1520,738],{"class":255},[249,1522,699],{"class":273},[249,1524,702],{"class":273},[249,1526,745],{"class":273},[249,1528,274],{"class":273},[249,1530,610],{"class":726},[249,1532,699],{"class":273},[249,1534,702],{"class":273},[249,1536,756],{"class":726},[249,1538,759],{"class":273},[249,1540,274],{"class":273},[249,1542,620],{"class":726},[249,1544,699],{"class":273},[249,1546,702],{"class":273},[249,1548,274],{"class":273},[249,1550,772],{"class":259},[249,1552,699],{"class":273},[249,1554,777],{"class":273},[249,1556,1557,1559,1562,1564,1566,1568,1571,1573],{"class":251,"line":780},[249,1558,717],{"class":273},[249,1560,1561],{"class":255},"played_at",[249,1563,699],{"class":273},[249,1565,702],{"class":273},[249,1567,274],{"class":273},[249,1569,1570],{"class":259},"2026-09-27T18:00:00+00:00",[249,1572,699],{"class":273},[249,1574,730],{"class":273},[249,1576,1577,1579,1582,1584,1586,1588,1591,1593],{"class":251,"line":797},[249,1578,717],{"class":273},[249,1580,1581],{"class":255},"sport",[249,1583,699],{"class":273},[249,1585,702],{"class":273},[249,1587,274],{"class":273},[249,1589,1590],{"class":259},"tennis",[249,1592,699],{"class":273},[249,1594,730],{"class":273},[249,1596,1597,1599,1602,1604,1606,1608,1611,1613],{"class":251,"line":818},[249,1598,717],{"class":273},[249,1600,1601],{"class":255},"kind",[249,1603,699],{"class":273},[249,1605,702],{"class":273},[249,1607,274],{"class":273},[249,1609,1610],{"class":259},"league",[249,1612,699],{"class":273},[249,1614,730],{"class":273},[249,1616,1617,1619,1622,1624,1626],{"class":251,"line":838},[249,1618,717],{"class":273},[249,1620,1621],{"class":255},"sets",[249,1623,699],{"class":273},[249,1625,702],{"class":273},[249,1627,705],{"class":273},[249,1629,1630,1633,1635,1638,1640,1642,1645,1648,1650,1653,1656,1658,1661,1663,1665,1668],{"class":251,"line":858},[249,1631,1632],{"class":273},"        {",[249,1634,274],{"class":273},[249,1636,1637],{"class":726},"games",[249,1639,699],{"class":273},[249,1641,702],{"class":273},[249,1643,1644],{"class":273}," [",[249,1646,1647],{"class":726},"2",[249,1649,759],{"class":273},[249,1651,1652],{"class":726}," 6",[249,1654,1655],{"class":273},"],",[249,1657,274],{"class":273},[249,1659,1660],{"class":726},"tie_break",[249,1662,699],{"class":273},[249,1664,702],{"class":273},[249,1666,1667],{"class":273}," null",[249,1669,777],{"class":273},[249,1671,1672,1674,1676,1678,1680,1682,1684,1687,1689,1692,1694,1696,1698,1700,1702,1704],{"class":251,"line":873},[249,1673,1632],{"class":273},[249,1675,274],{"class":273},[249,1677,1637],{"class":726},[249,1679,699],{"class":273},[249,1681,702],{"class":273},[249,1683,1644],{"class":273},[249,1685,1686],{"class":726},"6",[249,1688,759],{"class":273},[249,1690,1691],{"class":726}," 3",[249,1693,1655],{"class":273},[249,1695,274],{"class":273},[249,1697,1660],{"class":726},[249,1699,699],{"class":273},[249,1701,702],{"class":273},[249,1703,1667],{"class":273},[249,1705,777],{"class":273},[249,1707,1708,1710,1712,1714,1716,1718,1720,1723,1725,1727,1729,1731,1733,1735,1737,1739,1742,1744,1747,1750],{"class":251,"line":879},[249,1709,1632],{"class":273},[249,1711,274],{"class":273},[249,1713,1637],{"class":726},[249,1715,699],{"class":273},[249,1717,702],{"class":273},[249,1719,1644],{"class":273},[249,1721,1722],{"class":726},"7",[249,1724,759],{"class":273},[249,1726,1652],{"class":726},[249,1728,1655],{"class":273},[249,1730,274],{"class":273},[249,1732,1660],{"class":726},[249,1734,699],{"class":273},[249,1736,702],{"class":273},[249,1738,1644],{"class":273},[249,1740,1741],{"class":726},"10",[249,1743,759],{"class":273},[249,1745,1746],{"class":726}," 8",[249,1748,1749],{"class":273},"]",[249,1751,1752],{"class":273}," }\n",[249,1754,1755],{"class":251,"line":885},[249,1756,1757],{"class":273},"      ],\n",[249,1759,1760,1762,1765,1767,1769],{"class":251,"line":1252},[249,1761,717],{"class":273},[249,1763,1764],{"class":255},"won",[249,1766,699],{"class":273},[249,1768,702],{"class":273},[249,1770,1226],{"class":273},[249,1772,1774,1776,1779,1781,1783],{"class":251,"line":1773},15,[249,1775,717],{"class":273},[249,1777,1778],{"class":255},"official",[249,1780,699],{"class":273},[249,1782,702],{"class":273},[249,1784,1226],{"class":273},[249,1786,1788,1790,1793,1795,1797],{"class":251,"line":1787},16,[249,1789,717],{"class":273},[249,1791,1792],{"class":255},"verified",[249,1794,699],{"class":273},[249,1796,702],{"class":273},[249,1798,870],{"class":273},[249,1800,1802],{"class":251,"line":1801},17,[249,1803,876],{"class":273},[249,1805,1807],{"class":251,"line":1806},18,[249,1808,882],{"class":273},[249,1810,1812],{"class":251,"line":1811},19,[249,1813,888],{"class":273},[906,1815,1816,1826,1832,1841,1856,1863],{},[909,1817,1818,1821,1822,1825],{},[644,1819,1820],{},"Scores are from the member's side."," Every pair is ",[233,1823,1824],{},"[the member's, the opponents']",", so\nyou never need to know which side of the match they were on.",[909,1827,1828,1831],{},[644,1829,1830],{},"Sets:"," only sets that were played are listed.",[909,1833,1834,552,1838,1840],{},[644,1835,1836,702],{},[233,1837,1764],{},[233,1839,1282],{}," when there was no winner.",[909,1842,1843,552,1847,611,1849,1852,1853,636],{},[644,1844,1845,702],{},[233,1846,1601],{},[233,1848,1610],{},[233,1850,1851],{},"tournament"," or ",[233,1854,1855],{},"match",[909,1857,1858,1862],{},[644,1859,1860,702],{},[233,1861,1792],{}," the opponents confirmed the score.",[909,1864,1865,1868],{},[644,1866,1867],{},"Opponents are not included:"," whom a member played is the opponents' to share.",[599,1870,1872],{"id":1871},"get-mememberships",[233,1873,1874],{},"GET \u002Fme\u002Fmemberships",[230,1876,1877],{},"The clubs the member belongs to, and on which plan: every membership that has not ended.",[240,1879,1881],{"className":678,"code":1880,"language":680,"meta":245,"style":245},"{\n  \"data\": [\n    {\n      \"club\": { \"id\": 57, \"name\": \"TK Test\" },\n      \"membership\": { \"id\": 12, \"name\": \"Seniori\", \"basic\": false },\n      \"start\": \"2026-01-01T00:00:00+00:00\",\n      \"end\": \"2026-12-31T00:00:00+00:00\",\n      \"renews\": false\n    }\n  ]\n}\n",[233,1882,1883,1887,1899,1903,1943,2000,2020,2040,2054,2058,2062],{"__ignoreMap":245},[249,1884,1885],{"class":251,"line":252},[249,1886,687],{"class":273},[249,1888,1889,1891,1893,1895,1897],{"class":251,"line":267},[249,1890,692],{"class":273},[249,1892,696],{"class":695},[249,1894,699],{"class":273},[249,1896,702],{"class":273},[249,1898,705],{"class":273},[249,1900,1901],{"class":251,"line":708},[249,1902,711],{"class":273},[249,1904,1905,1907,1909,1911,1913,1915,1917,1919,1921,1923,1925,1927,1929,1931,1933,1935,1937,1939,1941],{"class":251,"line":714},[249,1906,717],{"class":273},[249,1908,738],{"class":255},[249,1910,699],{"class":273},[249,1912,702],{"class":273},[249,1914,745],{"class":273},[249,1916,274],{"class":273},[249,1918,610],{"class":726},[249,1920,699],{"class":273},[249,1922,702],{"class":273},[249,1924,756],{"class":726},[249,1926,759],{"class":273},[249,1928,274],{"class":273},[249,1930,620],{"class":726},[249,1932,699],{"class":273},[249,1934,702],{"class":273},[249,1936,274],{"class":273},[249,1938,772],{"class":259},[249,1940,699],{"class":273},[249,1942,777],{"class":273},[249,1944,1945,1947,1950,1952,1954,1956,1958,1960,1962,1964,1967,1969,1971,1973,1975,1977,1979,1982,1984,1986,1988,1991,1993,1995,1998],{"class":251,"line":733},[249,1946,717],{"class":273},[249,1948,1949],{"class":255},"membership",[249,1951,699],{"class":273},[249,1953,702],{"class":273},[249,1955,745],{"class":273},[249,1957,274],{"class":273},[249,1959,610],{"class":726},[249,1961,699],{"class":273},[249,1963,702],{"class":273},[249,1965,1966],{"class":726}," 12",[249,1968,759],{"class":273},[249,1970,274],{"class":273},[249,1972,620],{"class":726},[249,1974,699],{"class":273},[249,1976,702],{"class":273},[249,1978,274],{"class":273},[249,1980,1981],{"class":259},"Seniori",[249,1983,699],{"class":273},[249,1985,759],{"class":273},[249,1987,274],{"class":273},[249,1989,1990],{"class":726},"basic",[249,1992,699],{"class":273},[249,1994,702],{"class":273},[249,1996,1997],{"class":273}," false",[249,1999,777],{"class":273},[249,2001,2002,2004,2007,2009,2011,2013,2016,2018],{"class":251,"line":780},[249,2003,717],{"class":273},[249,2005,2006],{"class":255},"start",[249,2008,699],{"class":273},[249,2010,702],{"class":273},[249,2012,274],{"class":273},[249,2014,2015],{"class":259},"2026-01-01T00:00:00+00:00",[249,2017,699],{"class":273},[249,2019,730],{"class":273},[249,2021,2022,2024,2027,2029,2031,2033,2036,2038],{"class":251,"line":797},[249,2023,717],{"class":273},[249,2025,2026],{"class":255},"end",[249,2028,699],{"class":273},[249,2030,702],{"class":273},[249,2032,274],{"class":273},[249,2034,2035],{"class":259},"2026-12-31T00:00:00+00:00",[249,2037,699],{"class":273},[249,2039,730],{"class":273},[249,2041,2042,2044,2047,2049,2051],{"class":251,"line":818},[249,2043,717],{"class":273},[249,2045,2046],{"class":255},"renews",[249,2048,699],{"class":273},[249,2050,702],{"class":273},[249,2052,2053],{"class":273}," false\n",[249,2055,2056],{"class":251,"line":838},[249,2057,876],{"class":273},[249,2059,2060],{"class":251,"line":858},[249,2061,882],{"class":273},[249,2063,2064],{"class":251,"line":873},[249,2065,888],{"class":273},[230,2067,2068,1263,2070,2072,2073,2075,2076,2078],{},[233,2069,2026],{},[233,2071,1282],{}," for a membership with no end date. ",[233,2074,2046],{}," says whether it renews on its own.\n",[233,2077,1990],{}," marks the plan every member of the club has before they buy another.",[599,2080,2082],{"id":2081},"get-clubsme",[233,2083,2084],{},"GET \u002Fclubs\u002Fme",[230,2086,2087],{},"Which club your token acts for. Worth calling first, especially if you hold grants for\nseveral clubs.",[599,2089,2091],{"id":2090},"get-courts",[233,2092,2093],{},"GET \u002Fcourts",[230,2095,2096,2098,2099,611,2101,611,2103,611,2106,611,2109,730,2112,611,2115,611,2118,2120,2121,2124],{},[233,2097,674],{}," up to 100. Each court has ",[233,2100,610],{},[233,2102,620],{},[233,2104,2105],{},"active",[233,2107,2108],{},"indoor",[233,2110,2111],{},"lights",[233,2113,2114],{},"working_from",[233,2116,2117],{},"working_to",[233,2119,1020],{}," (minutes per slot) and ",[233,2122,2123],{},"sports",", what is\nplayed on it:",[240,2126,2128],{"className":678,"code":2127,"language":680,"meta":245,"style":245},"\"sports\": [ { \"id\": 2, \"slug\": \"padel\", \"name\": \"Padel\" } ]\n",[233,2129,2130],{"__ignoreMap":245},[249,2131,2132,2134,2136,2138,2141,2144,2146,2148,2150,2152,2154,2157,2159,2161,2164,2166,2168,2170,2173,2175,2177,2179,2181,2183,2185,2187,2190,2192,2195],{"class":251,"line":252},[249,2133,699],{"class":273},[249,2135,2123],{"class":259},[249,2137,699],{"class":273},[249,2139,2140],{"class":263},": ",[249,2142,2143],{"class":273},"[",[249,2145,745],{"class":273},[249,2147,274],{"class":273},[249,2149,610],{"class":695},[249,2151,699],{"class":273},[249,2153,702],{"class":273},[249,2155,2156],{"class":726}," 2",[249,2158,759],{"class":273},[249,2160,274],{"class":273},[249,2162,2163],{"class":695},"slug",[249,2165,699],{"class":273},[249,2167,702],{"class":273},[249,2169,274],{"class":273},[249,2171,2172],{"class":259},"padel",[249,2174,699],{"class":273},[249,2176,759],{"class":273},[249,2178,274],{"class":273},[249,2180,620],{"class":695},[249,2182,699],{"class":273},[249,2184,702],{"class":273},[249,2186,274],{"class":273},[249,2188,2189],{"class":259},"Padel",[249,2191,699],{"class":273},[249,2193,2194],{"class":273}," }",[249,2196,2197],{"class":273}," ]\n",[230,2199,2200],{},"Most courts have one sport; a few have two, and a court nobody has set one for has none.",[599,2202,2204],{"id":2203},"get-availability",[233,2205,1016],{},[230,2207,2208,2209,1425,2212,2215,2216,2219,2220,2222],{},"Which slots are free. ",[233,2210,2211],{},"date",[233,2213,2214],{},"YYYY-MM-DD",", the club's local day) is required; ",[233,2217,2218],{},"days"," covers up\nto 7 days from it; ",[233,2221,785],{}," narrows it to one court.",[240,2224,2226],{"className":678,"code":2225,"language":680,"meta":245,"style":245},"{\n  \"data\": [\n    {\n      \"court_id\": 412,\n      \"date\": \"2026-10-07\",\n      \"timezone\": \"Europe\u002FZagreb\",\n      \"closed\": null,\n      \"slots\": [\n        { \"from\": \"2026-10-07T06:00:00+00:00\", \"to\": \"2026-10-07T07:00:00+00:00\", \"available\": false },\n        { \"from\": \"2026-10-07T07:00:00+00:00\", \"to\": \"2026-10-07T08:00:00+00:00\", \"available\": true }\n      ]\n    }\n  ]\n}\n",[233,2227,2228,2232,2244,2248,2262,2281,2301,2315,2328,2379,2429,2434,2438,2442],{"__ignoreMap":245},[249,2229,2230],{"class":251,"line":252},[249,2231,687],{"class":273},[249,2233,2234,2236,2238,2240,2242],{"class":251,"line":267},[249,2235,692],{"class":273},[249,2237,696],{"class":695},[249,2239,699],{"class":273},[249,2241,702],{"class":273},[249,2243,705],{"class":273},[249,2245,2246],{"class":251,"line":708},[249,2247,711],{"class":273},[249,2249,2250,2252,2254,2256,2258,2260],{"class":251,"line":714},[249,2251,717],{"class":273},[249,2253,785],{"class":255},[249,2255,699],{"class":273},[249,2257,702],{"class":273},[249,2259,792],{"class":726},[249,2261,730],{"class":273},[249,2263,2264,2266,2268,2270,2272,2274,2277,2279],{"class":251,"line":733},[249,2265,717],{"class":273},[249,2267,2211],{"class":255},[249,2269,699],{"class":273},[249,2271,702],{"class":273},[249,2273,274],{"class":273},[249,2275,2276],{"class":259},"2026-10-07",[249,2278,699],{"class":273},[249,2280,730],{"class":273},[249,2282,2283,2285,2288,2290,2292,2294,2297,2299],{"class":251,"line":780},[249,2284,717],{"class":273},[249,2286,2287],{"class":255},"timezone",[249,2289,699],{"class":273},[249,2291,702],{"class":273},[249,2293,274],{"class":273},[249,2295,2296],{"class":259},"Europe\u002FZagreb",[249,2298,699],{"class":273},[249,2300,730],{"class":273},[249,2302,2303,2305,2308,2310,2312],{"class":251,"line":797},[249,2304,717],{"class":273},[249,2306,2307],{"class":255},"closed",[249,2309,699],{"class":273},[249,2311,702],{"class":273},[249,2313,2314],{"class":273}," null,\n",[249,2316,2317,2319,2322,2324,2326],{"class":251,"line":818},[249,2318,717],{"class":273},[249,2320,2321],{"class":255},"slots",[249,2323,699],{"class":273},[249,2325,702],{"class":273},[249,2327,705],{"class":273},[249,2329,2330,2332,2334,2336,2338,2340,2342,2345,2347,2349,2351,2353,2355,2357,2359,2362,2364,2366,2368,2371,2373,2375,2377],{"class":251,"line":838},[249,2331,1632],{"class":273},[249,2333,274],{"class":273},[249,2335,667],{"class":726},[249,2337,699],{"class":273},[249,2339,702],{"class":273},[249,2341,274],{"class":273},[249,2343,2344],{"class":259},"2026-10-07T06:00:00+00:00",[249,2346,699],{"class":273},[249,2348,759],{"class":273},[249,2350,274],{"class":273},[249,2352,670],{"class":726},[249,2354,699],{"class":273},[249,2356,702],{"class":273},[249,2358,274],{"class":273},[249,2360,2361],{"class":259},"2026-10-07T07:00:00+00:00",[249,2363,699],{"class":273},[249,2365,759],{"class":273},[249,2367,274],{"class":273},[249,2369,2370],{"class":726},"available",[249,2372,699],{"class":273},[249,2374,702],{"class":273},[249,2376,1997],{"class":273},[249,2378,777],{"class":273},[249,2380,2381,2383,2385,2387,2389,2391,2393,2395,2397,2399,2401,2403,2405,2407,2409,2412,2414,2416,2418,2420,2422,2424,2427],{"class":251,"line":858},[249,2382,1632],{"class":273},[249,2384,274],{"class":273},[249,2386,667],{"class":726},[249,2388,699],{"class":273},[249,2390,702],{"class":273},[249,2392,274],{"class":273},[249,2394,2361],{"class":259},[249,2396,699],{"class":273},[249,2398,759],{"class":273},[249,2400,274],{"class":273},[249,2402,670],{"class":726},[249,2404,699],{"class":273},[249,2406,702],{"class":273},[249,2408,274],{"class":273},[249,2410,2411],{"class":259},"2026-10-07T08:00:00+00:00",[249,2413,699],{"class":273},[249,2415,759],{"class":273},[249,2417,274],{"class":273},[249,2419,2370],{"class":726},[249,2421,699],{"class":273},[249,2423,702],{"class":273},[249,2425,2426],{"class":273}," true",[249,2428,1752],{"class":273},[249,2430,2431],{"class":251,"line":873},[249,2432,2433],{"class":273},"      ]\n",[249,2435,2436],{"class":251,"line":879},[249,2437,876],{"class":273},[249,2439,2440],{"class":251,"line":885},[249,2441,882],{"class":273},[249,2443,2444],{"class":251,"line":1252},[249,2445,888],{"class":273},[906,2447,2448,2460,2470,2487],{},[909,2449,2450,2453,2454,2456,2457,2459],{},[644,2451,2452],{},"One entry per court per day."," The slots follow the club's timetable for that day, each\n",[233,2455,1020],{}," long. Times are in UTC; ",[233,2458,2287],{}," is the club's.",[909,2461,2462,2465,2466,2469],{},[644,2463,2464],{},"Taken or free."," A slot is taken (",[233,2467,2468],{},"\"available\": false",") when any booking overlaps it, even\npartly.",[909,2471,2472,552,2475,1263,2477,1852,2480,2483,2484,2486],{},[644,2473,2474],{},"Closed courts.",[233,2476,2307],{},[233,2478,2479],{},"inactive",[233,2481,2482],{},"court_break"," when the court cannot be booked\nat all that day, and its ",[233,2485,2321],{}," are then empty.",[909,2488,2489,2492,2493,2496],{},[644,2490,2491],{},"Whose timetable."," This is the club's ",[644,2494,2495],{},"standard"," timetable, the one a visitor who is not\nsigned in sees. A member's own membership can open or close some hours, and set the price.\nNeither is shown here.",[599,2498,2500],{"id":2499},"get-reservations",[233,2501,2502],{},"GET \u002Freservations",[230,2504,2505,1010,2507,2509,2510,2512,2513,2515],{},[233,2506,667],{},[233,2508,670],{}," (ISO 8601, UTC) narrow the window; ",[233,2511,674],{}," up to 100. Bookings are\nreturned without the people in them. Reading those needs ",[233,2514,582],{}," and the members\nendpoint, so the club makes the two decisions separately.",[230,2517,2518,2521,2522,636],{},[233,2519,2520],{},"updated_since"," returns every booking changed at or after that instant instead, oldest change\nfirst, cancellations included. It is for ",[2523,2524,2526],"a",{"href":2525},"\u002Foauth\u002Fbooking-sync#catching-up","keeping a copy in sync",[230,2528,2529],{},"Each booking has:",[290,2531,2532,2541],{},[293,2533,2534],{},[296,2535,2536,2539],{},[299,2537,2538],{},"Field",[299,2540],{},[309,2542,2543,2555,2566,2576,2585,2604,2621,2635],{},[296,2544,2545,2553],{},[314,2546,2547,611,2549,611,2551],{},[233,2548,610],{},[233,2550,785],{},[233,2552,802],{},[314,2554],{},[296,2556,2557,2563],{},[314,2558,2559,611,2561],{},[233,2560,667],{},[233,2562,670],{},[314,2564,2565],{},"UTC",[296,2567,2568,2573],{},[314,2569,2570],{},[233,2571,2572],{},"category_id",[314,2574,2575],{},"The club's reservation category, if any",[296,2577,2578,2582],{},[314,2579,2580],{},[233,2581,863],{},[314,2583,2584],{},"Whether the booking is confirmed",[296,2586,2587,2592],{},[314,2588,2589],{},[233,2590,2591],{},"cancelled",[314,2593,2594,2595,2597,2598,2600,2601],{},"Only ever ",[233,2596,1266],{}," with ",[233,2599,2520],{}," or on ",[233,2602,2603],{},"GET \u002Freservations\u002F{id}",[296,2605,2606,2611],{},[314,2607,2608],{},[233,2609,2610],{},"source",[314,2612,2613,2616,2617,2620],{},[233,2614,2615],{},"partner"," for a booking your application pushed, ",[233,2618,2619],{},"sporty"," for any other",[296,2622,2623,2629],{},[314,2624,2625,611,2627],{},[233,2626,988],{},[233,2628,620],{},[314,2630,2631,2632,2634],{},"Your id and name for a booking you pushed; ",[233,2633,1282],{}," on every other",[296,2636,2637,2642],{},[314,2638,2639],{},[233,2640,2641],{},"updated_at",[314,2643,2644],{},"When the booking last changed",[599,2646,2648],{"id":2647},"writing-bookings-and-webhooks","Writing bookings and webhooks",[230,2650,2651,611,2653,1010,2655,1010,2658,2660,2661,636],{},[233,2652,351],{},[233,2654,523],{},[233,2656,2657],{},"DELETE \u002Freservations",[233,2659,562],{}," are for a system that keeps its own\ndiary in step with the club's. They are described, with examples, in\n",[2523,2662,212],{"href":213},[599,2664,2666],{"id":2665},"get-members",[233,2667,2668],{},"GET \u002Fmembers",[230,2670,2671,2674,2675,2677],{},[233,2672,2673],{},"search"," matches name or email. ",[233,2676,674],{}," up to 100.",[599,2679,2681],{"id":2680},"post-members",[233,2682,2683],{},"POST \u002Fmembers",[240,2685,2687],{"className":678,"code":2686,"language":680,"meta":245,"style":245},"{\n  \"email\": \"new@example.com\",\n  \"firstName\": \"New\",\n  \"lastName\": \"Member\",\n  \"language\": \"hr\",\n  \"countryCode\": \"HR\"\n}\n",[233,2688,2689,2693,2712,2732,2752,2772,2790],{"__ignoreMap":245},[249,2690,2691],{"class":251,"line":252},[249,2692,687],{"class":273},[249,2694,2695,2697,2699,2701,2703,2705,2708,2710],{"class":251,"line":267},[249,2696,692],{"class":273},[249,2698,631],{"class":695},[249,2700,699],{"class":273},[249,2702,702],{"class":273},[249,2704,274],{"class":273},[249,2706,2707],{"class":259},"new@example.com",[249,2709,699],{"class":273},[249,2711,730],{"class":273},[249,2713,2714,2716,2719,2721,2723,2725,2728,2730],{"class":251,"line":708},[249,2715,692],{"class":273},[249,2717,2718],{"class":695},"firstName",[249,2720,699],{"class":273},[249,2722,702],{"class":273},[249,2724,274],{"class":273},[249,2726,2727],{"class":259},"New",[249,2729,699],{"class":273},[249,2731,730],{"class":273},[249,2733,2734,2736,2739,2741,2743,2745,2748,2750],{"class":251,"line":714},[249,2735,692],{"class":273},[249,2737,2738],{"class":695},"lastName",[249,2740,699],{"class":273},[249,2742,702],{"class":273},[249,2744,274],{"class":273},[249,2746,2747],{"class":259},"Member",[249,2749,699],{"class":273},[249,2751,730],{"class":273},[249,2753,2754,2756,2759,2761,2763,2765,2768,2770],{"class":251,"line":733},[249,2755,692],{"class":273},[249,2757,2758],{"class":695},"language",[249,2760,699],{"class":273},[249,2762,702],{"class":273},[249,2764,274],{"class":273},[249,2766,2767],{"class":259},"hr",[249,2769,699],{"class":273},[249,2771,730],{"class":273},[249,2773,2774,2776,2779,2781,2783,2785,2788],{"class":251,"line":780},[249,2775,692],{"class":273},[249,2777,2778],{"class":695},"countryCode",[249,2780,699],{"class":273},[249,2782,702],{"class":273},[249,2784,274],{"class":273},[249,2786,2787],{"class":259},"HR",[249,2789,283],{"class":273},[249,2791,2792],{"class":251,"line":797},[249,2793,888],{"class":273},[230,2795,2796,1010,2798,2800],{},[233,2797,2758],{},[233,2799,2778],{}," are optional and default to the club's.",[230,2802,2803,2806,2807,2809,2810,2812],{},[644,2804,2805],{},"Idempotent on the email address."," A member we already know is joined to the club and\nreturned with ",[233,2808,1029],{},"; a new one is created and returned with ",[233,2811,1036],{},". Re-sending the same person\nis safe, which matters when two systems are syncing people.",[285,2814,2816],{"id":2815},"what-is-not-here","What is not here",[230,2818,2819,2822],{},[644,2820,2821],{},"Taking payment."," A member booking made through the API is paid for in the Sporty app, never\nthrough the API.",[285,2824,2826],{"id":2825},"errors","Errors",[290,2828,2829,2841],{},[293,2830,2831],{},[296,2832,2833,2836,2839],{},[299,2834,2835],{},"Status",[299,2837,2838],{},"Body",[299,2840,1307],{},[309,2842,2843,2857,2876,2890,2908,2920],{},[296,2844,2845,2849,2854],{},[314,2846,2847],{},[233,2848,650],{},[314,2850,2851],{},[233,2852,2853],{},"invalid_token",[314,2855,2856],{},"Missing, expired, revoked, or not ours.",[296,2858,2859,2864,2869],{},[314,2860,2861],{},[233,2862,2863],{},"403",[314,2865,2866],{},[233,2867,2868],{},"insufficient_scope",[314,2870,2871,2872,2875],{},"Valid token, scope not granted. ",[233,2873,2874],{},"WWW-Authenticate"," names what is needed.",[296,2877,2878,2882,2887],{},[314,2879,2880],{},[233,2881,2863],{},[314,2883,2884],{},[233,2885,2886],{},"access_denied",[314,2888,2889],{},"No club has granted your application, or not the club you named.",[296,2891,2892,2897,2902],{},[314,2893,2894],{},[233,2895,2896],{},"400",[314,2898,2899],{},[233,2900,2901],{},"club_required",[314,2903,2904,2905,636],{},"You act for several clubs; name one with ",[233,2906,2907],{},"X-Club",[296,2909,2910,2914,2917],{},[314,2911,2912],{},[233,2913,1428],{},[314,2915,2916],{},"Laravel validation errors",[314,2918,2919],{},"A malformed request body.",[296,2921,2922,2927,2930],{},[314,2923,2924],{},[233,2925,2926],{},"429",[314,2928,2929],{},"—",[314,2931,2932],{},"120 requests per minute, per client.",[285,2934,2936],{"id":2935},"versioning","Versioning",[230,2938,2939,2942,2943,2946],{},[233,2940,2941],{},"v1"," is in the path and will not change shape under you. New fields and new endpoints may be\nadded; existing fields will not be removed or change meaning. A breaking change means ",[233,2944,2945],{},"v2",",\nand we will tell you before it arrives.",[2948,2949,2950],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":245,"searchDepth":267,"depth":267,"links":2952},[2953,2968,2969,2970],{"id":287,"depth":267,"text":288,"children":2954},[2955,2956,2957,2958,2959,2960,2961,2962,2963,2964,2965,2966,2967],{"id":601,"depth":708,"text":604},{"id":654,"depth":708,"text":657},{"id":894,"depth":708,"text":897},{"id":1436,"depth":708,"text":1439},{"id":1460,"depth":708,"text":1463},{"id":1871,"depth":708,"text":1874},{"id":2081,"depth":708,"text":2084},{"id":2090,"depth":708,"text":2093},{"id":2203,"depth":708,"text":1016},{"id":2499,"depth":708,"text":2502},{"id":2647,"depth":708,"text":2648},{"id":2665,"depth":708,"text":2668},{"id":2680,"depth":708,"text":2683},{"id":2815,"depth":267,"text":2816},{"id":2825,"depth":267,"text":2826},{"id":2935,"depth":267,"text":2936},"What an access token can actually read and write, and what it deliberately cannot.","md",null,{},{"icon":190},{"title":2977,"description":2978},"Sporty partner API v1","The endpoints an OAuth token may call, their scopes, and the API's versioning promise.","az-f8TmtjYS2hZ-ahAlBSNlnawdzDBYpsZgNxhdaucI",[2981,2983],{"title":204,"path":205,"stem":206,"description":2982,"icon":190,"children":-1},"OpenID Connect — the id_token, its claims, \u002Fuserinfo and verifying a signature.",{"title":212,"path":213,"stem":214,"description":2984,"icon":190,"children":-1},"Keep your booking system and a club's Sporty diary in agreement, in both directions.",1790691909306]