[{"data":1,"prerenderedAt":2874},["ShallowReactive",2],{"navigation_docs_hr":3,"-hr-oauth-booking-sync":312,"-hr-oauth-booking-sync-surround":2869},[4,17,210,237,272],{"title":5,"path":6,"stem":7,"children":8,"icon":11},"Prvi koraci","\u002Fhr\u002Fgetting-started","hr\u002F0.getting-started\u002F1.index",[9,12],{"title":10,"path":6,"stem":7,"icon":11},"Obilazak administracije","sporty-toggle-large-on",{"title":13,"path":14,"stem":15,"icon":16},"Postavljanje u prvom tjednu","\u002Fhr\u002Fgetting-started\u002Ffirst-week-setup","hr\u002F0.getting-started\u002F2.first-week-setup","sporty-calendar-check",{"title":18,"path":19,"stem":20,"children":21,"page":209},"Interface","\u002Fhr\u002Finterface","hr\u002F1.interface",[22,65,72,79,90,97,105,112,119,126,147,154,174,185,203],{"title":23,"path":24,"stem":25,"children":26,"icon":28},"Tereni","\u002Fhr\u002Finterface\u002Fcourts","hr\u002F1.interface\u002F01.courts\u002F1.index",[27,29],{"title":23,"path":24,"stem":25,"icon":28},"sporty-court-sport",{"title":30,"path":31,"stem":32,"children":33,"icon":11},"Kontrola pristupa i rasvjeta","\u002Fhr\u002Finterface\u002Fcourts\u002Fintegrations","hr\u002F1.interface\u002F01.courts\u002F5.integrations\u002F1.index",[34,35,40,45],{"title":30,"path":31,"stem":32,"icon":11},{"title":36,"path":37,"stem":38,"icon":39},"Weblock","\u002Fhr\u002Finterface\u002Fcourts\u002Fintegrations\u002Fweblock","hr\u002F1.interface\u002F01.courts\u002F5.integrations\u002F2.weblock","sporty-door-open",{"title":41,"path":42,"stem":43,"icon":44},"Shelly","\u002Fhr\u002Finterface\u002Fcourts\u002Fintegrations\u002Fshelly","hr\u002F1.interface\u002F01.courts\u002F5.integrations\u002F3.shelly","sporty-bolt",{"title":46,"path":47,"stem":48,"children":49,"icon":39},"UniFi Access","\u002Fhr\u002Finterface\u002Fcourts\u002Fintegrations\u002Funifi-access","hr\u002F1.interface\u002F01.courts\u002F5.integrations\u002F4.unifi-access\u002F1.index",[50,52,56,61],{"title":51,"path":47,"stem":48,"icon":39},"Pregled",{"title":53,"path":54,"stem":55,"icon":11},"Povežite VPN","\u002Fhr\u002Finterface\u002Fcourts\u002Fintegrations\u002Funifi-access\u002Fvpn","hr\u002F1.interface\u002F01.courts\u002F5.integrations\u002F4.unifi-access\u002F2.vpn",{"title":57,"path":58,"stem":59,"icon":60},"Izradite API token","\u002Fhr\u002Finterface\u002Fcourts\u002Fintegrations\u002Funifi-access\u002Fapi-token","hr\u002F1.interface\u002F01.courts\u002F5.integrations\u002F4.unifi-access\u002F3.api-token","sporty-gear",{"title":62,"path":63,"stem":64,"icon":28},"Postavite integraciju u Club Adminu","\u002Fhr\u002Finterface\u002Fcourts\u002Fintegrations\u002Funifi-access\u002Fclub-admin","hr\u002F1.interface\u002F01.courts\u002F5.integrations\u002F4.unifi-access\u002F4.club-admin",{"title":66,"path":67,"stem":68,"children":69,"icon":71},"Članovi","\u002Fhr\u002Finterface\u002Fmembers","hr\u002F1.interface\u002F02.members\u002F1.index",[70],{"title":66,"path":67,"stem":68,"icon":71},"sporty-user-group",{"title":73,"path":74,"stem":75,"children":76,"icon":78},"Članstva","\u002Fhr\u002Finterface\u002Fmemberships","hr\u002F1.interface\u002F03.memberships\u002F1.index",[77],{"title":73,"path":74,"stem":75,"icon":78},"sporty-id-card",{"title":80,"path":81,"stem":82,"children":83,"icon":85},"Lige","\u002Fhr\u002Finterface\u002Fleagues","hr\u002F1.interface\u002F04.leagues\u002F1.index",[84,86],{"title":80,"path":81,"stem":82,"icon":85},"sporty-ranking-star",{"title":87,"path":88,"stem":89,"icon":16},"Planirana natjecanja","\u002Fhr\u002Finterface\u002Fleagues\u002Fplanned-competitions","hr\u002F1.interface\u002F04.leagues\u002F2.planned-competitions",{"title":91,"path":92,"stem":93,"children":94,"icon":96},"Turniri","\u002Fhr\u002Finterface\u002Ftournaments","hr\u002F1.interface\u002F05.tournaments\u002F1.index",[95],{"title":91,"path":92,"stem":93,"icon":96},"sporty-trophy",{"title":98,"path":99,"stem":100,"children":101,"icon":104},"Plaćanja i pretplate","\u002Fhr\u002Finterface\u002Fpayments","hr\u002F1.interface\u002F06.payments\u002F1.index",[102],{"title":103,"path":99,"stem":100,"icon":104},"Plaćanja","sporty-credit-card",{"title":106,"path":107,"stem":108,"children":109,"icon":111},"Dućan","\u002Fhr\u002Finterface\u002Fshop","hr\u002F1.interface\u002F07.shop\u002F1.index",[110],{"title":106,"path":107,"stem":108,"icon":111},"sporty-bag-shopping",{"title":113,"path":114,"stem":115,"children":116,"icon":118},"Škole i treneri","\u002Fhr\u002Finterface\u002Fschools","hr\u002F1.interface\u002F08.schools\u002F1.index",[117],{"title":113,"path":114,"stem":115,"icon":118},"sporty-graduation-cap",{"title":120,"path":121,"stem":122,"children":123,"icon":125},"E-poruke","\u002Fhr\u002Finterface\u002Femails","hr\u002F1.interface\u002F09.emails\u002F1.index",[124],{"title":120,"path":121,"stem":122,"icon":125},"sporty-envelope",{"title":127,"path":128,"stem":129,"children":130,"icon":132},"Video i kamere","\u002Fhr\u002Finterface\u002Fvideo","hr\u002F1.interface\u002F10.video\u002F1.index",[131,133,137,142],{"title":127,"path":128,"stem":129,"icon":132},"sporty-camera-cctv",{"title":134,"path":135,"stem":136,"icon":132},"Dahua kamere","\u002Fhr\u002Finterface\u002Fvideo\u002Fdahua","hr\u002F1.interface\u002F10.video\u002F2.dahua",{"title":138,"path":139,"stem":140,"icon":141},"Ostale RTMP kamere","\u002Fhr\u002Finterface\u002Fvideo\u002Frtmp","hr\u002F1.interface\u002F10.video\u002F3.rtmp","sporty-video",{"title":143,"path":144,"stem":145,"icon":146},"Analitika meča","\u002Fhr\u002Finterface\u002Fvideo\u002Fanalytics","hr\u002F1.interface\u002F10.video\u002F4.analytics","sporty-chart-simple",{"title":148,"path":149,"stem":150,"children":151,"icon":153},"Izvješća","\u002Fhr\u002Finterface\u002Freports","hr\u002F1.interface\u002F11.reports\u002F1.index",[152],{"title":148,"path":149,"stem":150,"icon":153},"sporty-chart-mixed",{"title":155,"path":156,"stem":157,"children":158,"icon":60},"Postavke","\u002Fhr\u002Finterface\u002Fsettings","hr\u002F1.interface\u002F12.settings\u002F1.index",[159,161,165,169],{"title":160,"path":156,"stem":157,"icon":60},"Postavke kluba",{"title":162,"path":163,"stem":164,"icon":16},"Pravila rezervacija i cjenik","\u002Fhr\u002Finterface\u002Fsettings\u002Fbooking-rules","hr\u002F1.interface\u002F12.settings\u002F2.booking-rules",{"title":166,"path":167,"stem":168,"icon":78},"Registracija i pravne stranice","\u002Fhr\u002Finterface\u002Fsettings\u002Fsignup-and-legal","hr\u002F1.interface\u002F12.settings\u002F3.signup-and-legal",{"title":170,"path":171,"stem":172,"icon":173},"Administratori i uloge","\u002Fhr\u002Finterface\u002Fsettings\u002Fadministrators-and-roles","hr\u002F1.interface\u002F12.settings\u002F4.administrators-and-roles","sporty-user",{"title":175,"path":176,"stem":177,"children":178,"icon":180},"Objave na društvenim mrežama","\u002Fhr\u002Finterface\u002Fsocial","hr\u002F1.interface\u002F13.social\u002F1.index",[179,181],{"title":175,"path":176,"stem":177,"icon":180},"sporty-newspaper",{"title":182,"path":183,"stem":184,"icon":11},"Povezivanje kanala","\u002Fhr\u002Finterface\u002Fsocial\u002Fchannels","hr\u002F1.interface\u002F13.social\u002F2.channels",{"title":186,"path":187,"stem":188,"children":189,"icon":28},"Događaji s numeriranim mjestima","\u002Fhr\u002Finterface\u002Fseated-events","hr\u002F1.interface\u002F14.seated-events\u002F1.index",[190,191,195,199],{"title":186,"path":187,"stem":188,"icon":28},{"title":192,"path":193,"stem":194,"icon":28},"Planovi sjedenja","\u002Fhr\u002Finterface\u002Fseated-events\u002Fseating-plans","hr\u002F1.interface\u002F14.seated-events\u002F2.seating-plans",{"title":196,"path":197,"stem":198,"icon":16},"Prodaja mjesta","\u002Fhr\u002Finterface\u002Fseated-events\u002Fselling-seats","hr\u002F1.interface\u002F14.seated-events\u002F3.selling-seats",{"title":200,"path":201,"stem":202,"icon":39},"U prodaji i na ulazu","\u002Fhr\u002Finterface\u002Fseated-events\u002Fon-sale","hr\u002F1.interface\u002F14.seated-events\u002F4.on-sale",{"title":204,"path":205,"stem":206,"children":207,"icon":16},"Sezonske ulaznice","\u002Fhr\u002Finterface\u002Fseason-tickets","hr\u002F1.interface\u002F15.season-tickets\u002F1.index",[208],{"title":204,"path":205,"stem":206,"icon":16},false,{"title":211,"path":212,"stem":213,"children":214,"icon":217},"Web stranica","\u002Fhr\u002Fwebsite","hr\u002F2.website\u002F1.index",[215,218,223,227,232],{"title":216,"path":212,"stem":213,"icon":217},"Izrada web stranice","sporty-browser",{"title":219,"path":220,"stem":221,"icon":222},"Stranice, hero i podnožje","\u002Fhr\u002Fwebsite\u002Fpages","hr\u002F2.website\u002F2.pages","sporty-file-lines",{"title":224,"path":225,"stem":226,"icon":180},"Novosti i događaji","\u002Fhr\u002Fwebsite\u002Fnews-and-events","hr\u002F2.website\u002F3.news-and-events",{"title":228,"path":229,"stem":230,"icon":231},"Treneri i galerija","\u002Fhr\u002Fwebsite\u002Fcoaches-and-gallery","hr\u002F2.website\u002F4.coaches-and-gallery","sporty-images",{"title":233,"path":234,"stem":235,"icon":236},"FAQ i sponzori","\u002Fhr\u002Fwebsite\u002Ffaq-and-sponsors","hr\u002F2.website\u002F5.faq-and-sponsors","sporty-circle-question",{"title":238,"path":239,"stem":240,"children":241,"icon":173},"Za članove","\u002Fhr\u002Fmembers","hr\u002F3.members\u002F1.index",[242,244,248,252,256,260,264,268],{"title":243,"path":239,"stem":240,"icon":173},"Korištenje aplikacije za članove",{"title":245,"path":246,"stem":247,"icon":16},"Rezervacija terena","\u002Fhr\u002Fmembers\u002Fbooking","hr\u002F3.members\u002F2.booking",{"title":249,"path":250,"stem":251,"icon":104},"Članstva i plaćanja","\u002Fhr\u002Fmembers\u002Fpayments","hr\u002F3.members\u002F3.payments",{"title":253,"path":254,"stem":255,"icon":85},"Kako funkcioniraju natjecanja","\u002Fhr\u002Fmembers\u002Fhow-competitions-work","hr\u002F3.members\u002F4.how-competitions-work",{"title":257,"path":258,"stem":259,"icon":96},"Lige, turniri i rezultati","\u002Fhr\u002Fmembers\u002Fcompetitions","hr\u002F3.members\u002F5.competitions",{"title":261,"path":262,"stem":263,"icon":71},"Obitelj i djeca","\u002Fhr\u002Fmembers\u002Ffamily","hr\u002F3.members\u002F6.family",{"title":265,"path":266,"stem":267,"icon":78},"Vaš račun","\u002Fhr\u002Fmembers\u002Faccount","hr\u002F3.members\u002F7.account",{"title":269,"path":270,"stem":271,"icon":236},"Pomoć","\u002Fhr\u002Fmembers\u002Fhelp","hr\u002F3.members\u002F8.help",{"title":273,"path":274,"stem":275,"children":276,"icon":278},"OAuth i prijava putem Sportyja","\u002Fhr\u002Foauth","hr\u002F4.oauth\u002F1.index",[277,279,283,287,291,295,299,303,307],{"title":273,"path":274,"stem":275,"icon":278},"sporty-brackets-curly",{"title":280,"path":281,"stem":282,"icon":278},"Registracija aplikacije","\u002Fhr\u002Foauth\u002Fclients","hr\u002F4.oauth\u002F2.clients",{"title":284,"path":285,"stem":286,"icon":278},"Tok authorization code","\u002Fhr\u002Foauth\u002Fauthorization-code","hr\u002F4.oauth\u002F3.authorization-code",{"title":288,"path":289,"stem":290,"icon":278},"Opsezi","\u002Fhr\u002Foauth\u002Fscopes","hr\u002F4.oauth\u002F4.scopes",{"title":292,"path":293,"stem":294,"icon":278},"Prijava putem Sportyja","\u002Fhr\u002Foauth\u002Fsign-in-with-sporty","hr\u002F4.oauth\u002F5.sign-in-with-sporty",{"title":296,"path":297,"stem":298,"icon":278},"Partnerski API","\u002Fhr\u002Foauth\u002Fpartner-api","hr\u002F4.oauth\u002F6.partner-api",{"title":300,"path":301,"stem":302,"icon":278},"Sinkronizacija rezervacija","\u002Fhr\u002Foauth\u002Fbooking-sync","hr\u002F4.oauth\u002F7.booking-sync",{"title":304,"path":305,"stem":306,"icon":278},"MCP i AI klijenti","\u002Fhr\u002Foauth\u002Fmcp-and-ai-clients","hr\u002F4.oauth\u002F8.mcp-and-ai-clients",{"title":308,"path":309,"stem":310,"icon":311},"Kupnja putem agenta","\u002Fhr\u002Foauth\u002Fagent-checkout","hr\u002F4.oauth\u002F9.agent-checkout","sporty-cart-shopping",{"id":313,"title":300,"body":314,"description":2860,"extension":2861,"links":2862,"meta":2863,"navigation":2864,"path":301,"seo":2865,"stem":302,"__hash__":2868},"docs_hr\u002Fhr\u002F4.oauth\u002F7.booking-sync.md",{"type":315,"value":316,"toc":2840},"minimark",[317,321,338,350,355,358,381,384,388,391,442,451,454,537,544,548,551,581,669,679,683,698,791,884,891,1136,1142,1147,1166,1172,1176,1243,1250,1254,1310,1331,1341,1345,1375,1381,1385,1389,1445,1571,1589,1625,1629,1636,1963,2002,2028,2037,2041,2048,2062,2065,2083,2091,2095,2098,2106,2120,2550,2553,2556,2559,2589,2611,2617,2621,2759,2776,2780,2783,2790,2801,2808,2811,2829,2836],[318,319,320],"p",{},"Ako terene kluba prodajete putem vlastitog sustava, primjerice tržnice, sustava za upravljanje\nobjektima ili web-stranice kluba, dva se rasporeda moraju slagati. Ova stranica pokriva oba\nsmjera:",[322,323,324,332],"ul",{},[325,326,327,331],"li",{},[328,329,330],"strong",{},"Vi javljate nama"," svaku rezervaciju koju primite, a mi zauzimamo taj teren kako ga nitko ne\nbi rezervirao u Sportyju.",[325,333,334,337],{},[328,335,336],{},"Mi javljamo vama"," svaku rezervaciju napravljenu, premještenu ili otkazanu u Sportyju, putem\npotpisanog webhooka.",[318,339,340,341,344,345,349],{},"Vaša integracija je ",[328,342,343],{},"servisni račun",". Ima token dobiven putem\n",[346,347,348],"a",{"href":281},"client credentials"," i djeluje u ime kluba, a ne nekog člana.",[351,352,354],"h2",{"id":353},"što-je-rezervacija-koju-vi-pošaljete","Što je rezervacija koju vi pošaljete",[318,356,357],{},"Kad pošaljete rezervaciju, teren se zauzima točno kao kad administrator kluba blokira termin u\nSportyju:",[322,359,360,371,378],{},[325,361,362,363,366,367,370],{},"Ima ",[328,364,365],{},"naziv"," (prikazan u klupskom rasporedu) i, po želji, ",[328,368,369],{},"kategoriju",".",[325,372,373,374,377],{},"Nema ",[328,375,376],{},"ni igrača ni cijene",". Sporty za nju ne naplaćuje ništa, ne primjenjuje ograničenja\nčlanstva i ne obavještava nijednog člana.",[325,379,380],{},"Teren mora biti slobodan. To je jedino pravilo koje provjeravamo.",[318,382,383],{},"Tko je igrao i tko je platio ostaje u vašem sustavu. Klubu javljate da je teren zauzet, a ne\nprodajete rezervaciju putem Sportyja.",[351,385,387],{"id":386},"prije-nego-što-počnete","Prije nego što počnete",[318,389,390],{},"Klub vašoj aplikaciji mora odobriti potrebne opsege. Za dvosmjernu sinkronizaciju to su:",[392,393,394,407],"table",{},[395,396,397],"thead",{},[398,399,400,404],"tr",{},[401,402,403],"th",{},"Opseg",[401,405,406],{},"Za",[408,409,410,422,432],"tbody",{},[398,411,412,419],{},[413,414,415],"td",{},[416,417,418],"code",{},"club.courts.read",[413,420,421],{},"Popis terena, kako biste ih povezali sa svojima",[398,423,424,429],{},[413,425,426],{},[416,427,428],{},"club.reservations.read",[413,430,431],{},"Čitanje rasporeda i njegovih kategorija te primanje webhookova",[398,433,434,439],{},[413,435,436],{},[416,437,438],{},"club.reservations.write",[413,440,441],{},"Zauzimanje, premještanje i otkazivanje rezervacija",[318,443,444,446,447,450],{},[416,445,438],{}," vašoj aplikaciji omogućuje otkazivanje ",[328,448,449],{},"bilo koje"," rezervacije u\nklubu, uključujući rezervacije članova, kao što to može osoblje kluba. Klub ga odobrava znajući\nto. Koristite ga za rezervacije koje morate povući, a ne za pospremanje rasporeda.",[318,452,453],{},"Dohvatite token:",[455,456,461],"pre",{"className":457,"code":458,"language":459,"meta":460,"style":460},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -X POST https:\u002F\u002Fapi.sporty.plus\u002Foauth2\u002Ftoken \\\n  -d grant_type=client_credentials \\\n  -d client_id=$CLIENT_ID \\\n  -d client_secret=$CLIENT_SECRET \\\n  -d scope=\"club.courts.read club.reservations.read club.reservations.write\"\n","bash","",[416,462,463,486,497,508,519],{"__ignoreMap":460},[464,465,468,472,476,479,482],"span",{"class":466,"line":467},"line",1,[464,469,471],{"class":470},"sBMFI","curl",[464,473,475],{"class":474},"sfazB"," -X",[464,477,478],{"class":474}," POST",[464,480,481],{"class":474}," https:\u002F\u002Fapi.sporty.plus\u002Foauth2\u002Ftoken",[464,483,485],{"class":484},"sTEyZ"," \\\n",[464,487,489,492,495],{"class":466,"line":488},2,[464,490,491],{"class":474},"  -d",[464,493,494],{"class":474}," grant_type=client_credentials",[464,496,485],{"class":484},[464,498,500,502,505],{"class":466,"line":499},3,[464,501,491],{"class":474},[464,503,504],{"class":474}," client_id=",[464,506,507],{"class":484},"$CLIENT_ID \\\n",[464,509,511,513,516],{"class":466,"line":510},4,[464,512,491],{"class":474},[464,514,515],{"class":474}," client_secret=",[464,517,518],{"class":484},"$CLIENT_SECRET \\\n",[464,520,522,524,527,531,534],{"class":466,"line":521},5,[464,523,491],{"class":474},[464,525,526],{"class":474}," scope=",[464,528,530],{"class":529},"sMK4o","\"",[464,532,533],{"class":474},"club.courts.read club.reservations.read club.reservations.write",[464,535,536],{"class":529},"\"\n",[318,538,539,540,543],{},"Ako vaša aplikacija djeluje za više klubova, uz svaki zahtjev u nastavku pošaljite\n",[416,541,542],{},"X-Club: \u003Cclub id>",". Webhookovi se postavljaju za svaki klub zasebno.",[351,545,547],{"id":546},"kategorije","Kategorije",[318,549,550],{},"Rezervacija može nositi jednu od kategorija rezervacija kluba, oznaka koje njegovi administratori\ndaju blokiranim terminima („Liga”, „Teniska škola”). Klupski je raspored prikazuje u boji\nkategorije.",[455,552,554],{"className":457,"code":553,"language":459,"meta":460,"style":460},"curl https:\u002F\u002Fapi.sporty.plus\u002Fapi\u002Fpartner\u002Fv1\u002Freservation-categories \\\n  -H \"Authorization: Bearer $ACCESS_TOKEN\"\n",[416,555,556,565],{"__ignoreMap":460},[464,557,558,560,563],{"class":466,"line":467},[464,559,471],{"class":470},[464,561,562],{"class":474}," https:\u002F\u002Fapi.sporty.plus\u002Fapi\u002Fpartner\u002Fv1\u002Freservation-categories",[464,564,485],{"class":484},[464,566,567,570,573,576,579],{"class":466,"line":488},[464,568,569],{"class":474},"  -H",[464,571,572],{"class":529}," \"",[464,574,575],{"class":474},"Authorization: Bearer ",[464,577,578],{"class":484},"$ACCESS_TOKEN",[464,580,536],{"class":529},[455,582,586],{"className":583,"code":584,"language":585,"meta":460,"style":460},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{ \"data\": [ { \"id\": 3, \"name\": \"Liga\", \"color\": \"#ea47bc\" } ] }\n","json",[416,587,588],{"__ignoreMap":460},[464,589,590,593,595,599,601,604,607,610,612,615,617,619,623,626,628,631,633,635,637,640,642,644,646,649,651,653,655,658,660,663,666],{"class":466,"line":467},[464,591,592],{"class":529},"{",[464,594,572],{"class":529},[464,596,598],{"class":597},"spNyl","data",[464,600,530],{"class":529},[464,602,603],{"class":529},":",[464,605,606],{"class":529}," [",[464,608,609],{"class":529}," {",[464,611,572],{"class":529},[464,613,614],{"class":470},"id",[464,616,530],{"class":529},[464,618,603],{"class":529},[464,620,622],{"class":621},"sbssI"," 3",[464,624,625],{"class":529},",",[464,627,572],{"class":529},[464,629,630],{"class":470},"name",[464,632,530],{"class":529},[464,634,603],{"class":529},[464,636,572],{"class":529},[464,638,639],{"class":474},"Liga",[464,641,530],{"class":529},[464,643,625],{"class":529},[464,645,572],{"class":529},[464,647,648],{"class":470},"color",[464,650,530],{"class":529},[464,652,603],{"class":529},[464,654,572],{"class":529},[464,656,657],{"class":474},"#ea47bc",[464,659,530],{"class":529},[464,661,662],{"class":529}," }",[464,664,665],{"class":529}," ]",[464,667,668],{"class":529}," }\n",[318,670,671,672,674,675,678],{},"Za ovo je potreban ",[416,673,428],{},". Klub ih ne mora imati; ",[416,676,677],{},"category_id"," je neobavezan.",[351,680,682],{"id":681},"zauzimanje-terena","Zauzimanje terena",[318,684,685,686,689,690,694,695,370],{},"Da biste najprije pronašli slobodan termin, ",[416,687,688],{},"GET \u002Favailability?date=…"," navodi termine svakog\nterena, slobodne ili zauzete; pogledajte ",[346,691,693],{"href":692},"\u002Fhr\u002Foauth\u002Fpartner-api#get-availability","partnerski API",".\nZauzimanje terena to ponovno provjerava, pa termin koji je u međuvremenu zauzet i dalje dobiva\n",[416,696,697],{},"409 slot_taken",[455,699,701],{"className":457,"code":700,"language":459,"meta":460,"style":460},"curl -X POST https:\u002F\u002Fapi.sporty.plus\u002Fapi\u002Fpartner\u002Fv1\u002Freservations \\\n  -H \"Authorization: Bearer $ACCESS_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"external_id\": \"bk_8f3a21\",\n    \"court_id\": 412,\n    \"from\": \"2026-10-06T17:00:00+02:00\",\n    \"to\": \"2026-10-06T18:30:00+02:00\",\n    \"name\": \"Online: Horvat\"\n  }'\n",[416,702,703,716,730,743,753,758,764,770,776,782],{"__ignoreMap":460},[464,704,705,707,709,711,714],{"class":466,"line":467},[464,706,471],{"class":470},[464,708,475],{"class":474},[464,710,478],{"class":474},[464,712,713],{"class":474}," https:\u002F\u002Fapi.sporty.plus\u002Fapi\u002Fpartner\u002Fv1\u002Freservations",[464,715,485],{"class":484},[464,717,718,720,722,724,726,728],{"class":466,"line":488},[464,719,569],{"class":474},[464,721,572],{"class":529},[464,723,575],{"class":474},[464,725,578],{"class":484},[464,727,530],{"class":529},[464,729,485],{"class":484},[464,731,732,734,736,739,741],{"class":466,"line":499},[464,733,569],{"class":474},[464,735,572],{"class":529},[464,737,738],{"class":474},"Content-Type: application\u002Fjson",[464,740,530],{"class":529},[464,742,485],{"class":484},[464,744,745,747,750],{"class":466,"line":510},[464,746,491],{"class":474},[464,748,749],{"class":529}," '",[464,751,752],{"class":474},"{\n",[464,754,755],{"class":466,"line":521},[464,756,757],{"class":474},"    \"external_id\": \"bk_8f3a21\",\n",[464,759,761],{"class":466,"line":760},6,[464,762,763],{"class":474},"    \"court_id\": 412,\n",[464,765,767],{"class":466,"line":766},7,[464,768,769],{"class":474},"    \"from\": \"2026-10-06T17:00:00+02:00\",\n",[464,771,773],{"class":466,"line":772},8,[464,774,775],{"class":474},"    \"to\": \"2026-10-06T18:30:00+02:00\",\n",[464,777,779],{"class":466,"line":778},9,[464,780,781],{"class":474},"    \"name\": \"Online: Horvat\"\n",[464,783,785,788],{"class":466,"line":784},10,[464,786,787],{"class":474},"  }",[464,789,790],{"class":529},"'\n",[392,792,793,804],{},[395,794,795],{},[398,796,797,800,802],{},[401,798,799],{},"Polje",[401,801],{},[401,803],{},[408,805,806,822,837,858,870],{},[398,807,808,813,816],{},[413,809,810],{},[416,811,812],{},"external_id",[413,814,815],{},"obavezno",[413,817,818,821],{},[328,819,820],{},"Vaš"," id rezervacije, do 191 znaka.",[398,823,824,829,831],{},[413,825,826],{},[416,827,828],{},"court_id",[413,830,815],{},[413,832,833,834,370],{},"Teren iz ",[416,835,836],{},"GET \u002Fcourts",[398,838,839,848,850],{},[413,840,841,844,845],{},[416,842,843],{},"from",", ",[416,846,847],{},"to",[413,849,815],{},[413,851,852,853,855,856,370],{},"ISO 8601 s pomakom vremenske zone. ",[416,854,847],{}," mora biti nakon ",[416,857,843],{},[398,859,860,864,867],{},[413,861,862],{},[416,863,630],{},[413,865,866],{},"neobavezno",[413,868,869],{},"Ono što klub vidi u svojem rasporedu, do 255 znakova.",[398,871,872,876,878],{},[413,873,874],{},[416,875,677],{},[413,877,866],{},[413,879,880,881,370],{},"Jedna od kategorija rezervacija kluba, iz ",[416,882,883],{},"GET \u002Freservation-categories",[318,885,886,887,890],{},"Odgovor je ",[416,888,889],{},"201"," s rezervacijom:",[455,892,894],{"className":583,"code":893,"language":585,"meta":460,"style":460},"{\n  \"data\": {\n    \"id\": 918273,\n    \"court_id\": 412,\n    \"court_name\": \"Teren 3\",\n    \"from\": \"2026-10-06T15:00:00+00:00\",\n    \"to\": \"2026-10-06T16:30:00+00:00\",\n    \"category_id\": null,\n    \"approved\": false,\n    \"cancelled\": false,\n    \"source\": \"partner\",\n    \"external_id\": \"bk_8f3a21\",\n    \"name\": \"Online: Horvat\",\n    \"updated_at\": \"2026-09-29T11:20:04+00:00\"\n  }\n}\n",[416,895,896,900,914,931,946,966,985,1004,1017,1031,1044,1065,1085,1105,1124,1130],{"__ignoreMap":460},[464,897,898],{"class":466,"line":467},[464,899,752],{"class":529},[464,901,902,905,907,909,911],{"class":466,"line":488},[464,903,904],{"class":529},"  \"",[464,906,598],{"class":597},[464,908,530],{"class":529},[464,910,603],{"class":529},[464,912,913],{"class":529}," {\n",[464,915,916,919,921,923,925,928],{"class":466,"line":499},[464,917,918],{"class":529},"    \"",[464,920,614],{"class":470},[464,922,530],{"class":529},[464,924,603],{"class":529},[464,926,927],{"class":621}," 918273",[464,929,930],{"class":529},",\n",[464,932,933,935,937,939,941,944],{"class":466,"line":510},[464,934,918],{"class":529},[464,936,828],{"class":470},[464,938,530],{"class":529},[464,940,603],{"class":529},[464,942,943],{"class":621}," 412",[464,945,930],{"class":529},[464,947,948,950,953,955,957,959,962,964],{"class":466,"line":521},[464,949,918],{"class":529},[464,951,952],{"class":470},"court_name",[464,954,530],{"class":529},[464,956,603],{"class":529},[464,958,572],{"class":529},[464,960,961],{"class":474},"Teren 3",[464,963,530],{"class":529},[464,965,930],{"class":529},[464,967,968,970,972,974,976,978,981,983],{"class":466,"line":760},[464,969,918],{"class":529},[464,971,843],{"class":470},[464,973,530],{"class":529},[464,975,603],{"class":529},[464,977,572],{"class":529},[464,979,980],{"class":474},"2026-10-06T15:00:00+00:00",[464,982,530],{"class":529},[464,984,930],{"class":529},[464,986,987,989,991,993,995,997,1000,1002],{"class":466,"line":766},[464,988,918],{"class":529},[464,990,847],{"class":470},[464,992,530],{"class":529},[464,994,603],{"class":529},[464,996,572],{"class":529},[464,998,999],{"class":474},"2026-10-06T16:30:00+00:00",[464,1001,530],{"class":529},[464,1003,930],{"class":529},[464,1005,1006,1008,1010,1012,1014],{"class":466,"line":772},[464,1007,918],{"class":529},[464,1009,677],{"class":470},[464,1011,530],{"class":529},[464,1013,603],{"class":529},[464,1015,1016],{"class":529}," null,\n",[464,1018,1019,1021,1024,1026,1028],{"class":466,"line":778},[464,1020,918],{"class":529},[464,1022,1023],{"class":470},"approved",[464,1025,530],{"class":529},[464,1027,603],{"class":529},[464,1029,1030],{"class":529}," false,\n",[464,1032,1033,1035,1038,1040,1042],{"class":466,"line":784},[464,1034,918],{"class":529},[464,1036,1037],{"class":470},"cancelled",[464,1039,530],{"class":529},[464,1041,603],{"class":529},[464,1043,1030],{"class":529},[464,1045,1047,1049,1052,1054,1056,1058,1061,1063],{"class":466,"line":1046},11,[464,1048,918],{"class":529},[464,1050,1051],{"class":470},"source",[464,1053,530],{"class":529},[464,1055,603],{"class":529},[464,1057,572],{"class":529},[464,1059,1060],{"class":474},"partner",[464,1062,530],{"class":529},[464,1064,930],{"class":529},[464,1066,1068,1070,1072,1074,1076,1078,1081,1083],{"class":466,"line":1067},12,[464,1069,918],{"class":529},[464,1071,812],{"class":470},[464,1073,530],{"class":529},[464,1075,603],{"class":529},[464,1077,572],{"class":529},[464,1079,1080],{"class":474},"bk_8f3a21",[464,1082,530],{"class":529},[464,1084,930],{"class":529},[464,1086,1088,1090,1092,1094,1096,1098,1101,1103],{"class":466,"line":1087},13,[464,1089,918],{"class":529},[464,1091,630],{"class":470},[464,1093,530],{"class":529},[464,1095,603],{"class":529},[464,1097,572],{"class":529},[464,1099,1100],{"class":474},"Online: Horvat",[464,1102,530],{"class":529},[464,1104,930],{"class":529},[464,1106,1108,1110,1113,1115,1117,1119,1122],{"class":466,"line":1107},14,[464,1109,918],{"class":529},[464,1111,1112],{"class":470},"updated_at",[464,1114,530],{"class":529},[464,1116,603],{"class":529},[464,1118,572],{"class":529},[464,1120,1121],{"class":474},"2026-09-29T11:20:04+00:00",[464,1123,536],{"class":529},[464,1125,1127],{"class":466,"line":1126},15,[464,1128,1129],{"class":529},"  }\n",[464,1131,1133],{"class":466,"line":1132},16,[464,1134,1135],{"class":529},"}\n",[318,1137,1138,1139,1141],{},"Sačuvajte ",[416,1140,614],{},". Njime premještate ili otkazujete rezervaciju. Vremena se uvijek vraćaju u UTC-u.",[1143,1144,1146],"h3",{"id":1145},"dvostruko-slanje-je-sigurno","Dvostruko slanje je sigurno",[318,1148,1149,1151,1152,1154,1155,1158,1159,1162,1163,370],{},[416,1150,812],{}," čini zahtjev idempotentnim. Ponovno slanje istog ",[416,1153,812],{}," dok ta rezervacija\npostoji odgovara ",[416,1156,1157],{},"200"," s postojećom rezervacijom, ",[328,1160,1161],{},"nepromijenjenom",". Ponovni pokušaj nakon\nisteka vremena stoga nikad ne zauzima drugi teren. Ponovno slanje s drugim vremenima ne premješta\nrezervaciju; za premještanje koristite ",[416,1164,1165],{},"PATCH",[318,1167,1168,1169,1171],{},"Ako je rezervacija u međuvremenu otkazana, s vaše strane ili od strane kluba, ponovno slanje\nnjezina ",[416,1170,812],{}," rezervira je iznova.",[1143,1173,1175],{"id":1174},"kad-je-teren-zauzet","Kad je teren zauzet",[455,1177,1179],{"className":583,"code":1178,"language":585,"meta":460,"style":460},"{\n  \"error\": \"slot_taken\",\n  \"error_description\": \"The court is already booked for some of that time.\",\n  \"conflicting_reservation_id\": 918102\n}\n",[416,1180,1181,1185,1205,1225,1239],{"__ignoreMap":460},[464,1182,1183],{"class":466,"line":467},[464,1184,752],{"class":529},[464,1186,1187,1189,1192,1194,1196,1198,1201,1203],{"class":466,"line":488},[464,1188,904],{"class":529},[464,1190,1191],{"class":597},"error",[464,1193,530],{"class":529},[464,1195,603],{"class":529},[464,1197,572],{"class":529},[464,1199,1200],{"class":474},"slot_taken",[464,1202,530],{"class":529},[464,1204,930],{"class":529},[464,1206,1207,1209,1212,1214,1216,1218,1221,1223],{"class":466,"line":499},[464,1208,904],{"class":529},[464,1210,1211],{"class":597},"error_description",[464,1213,530],{"class":529},[464,1215,603],{"class":529},[464,1217,572],{"class":529},[464,1219,1220],{"class":474},"The court is already booked for some of that time.",[464,1222,530],{"class":529},[464,1224,930],{"class":529},[464,1226,1227,1229,1232,1234,1236],{"class":466,"line":510},[464,1228,904],{"class":529},[464,1230,1231],{"class":597},"conflicting_reservation_id",[464,1233,530],{"class":529},[464,1235,603],{"class":529},[464,1237,1238],{"class":621}," 918102\n",[464,1240,1241],{"class":466,"line":521},[464,1242,1135],{"class":529},[318,1244,1245,1246,1249],{},"Status ",[416,1247,1248],{},"409",". Rezervacija smije početi točno kad druga završava; svako preklapanje dulje od nule\nje sukob.",[351,1251,1253],{"id":1252},"premještanje-rezervacije","Premještanje rezervacije",[455,1255,1257],{"className":457,"code":1256,"language":459,"meta":460,"style":460},"curl -X PATCH https:\u002F\u002Fapi.sporty.plus\u002Fapi\u002Fpartner\u002Fv1\u002Freservations\u002F918273 \\\n  -H \"Authorization: Bearer $ACCESS_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"court_id\": 413, \"from\": \"2026-10-06T18:00:00+02:00\", \"to\": \"2026-10-06T19:30:00+02:00\"}'\n",[416,1258,1259,1273,1287,1299],{"__ignoreMap":460},[464,1260,1261,1263,1265,1268,1271],{"class":466,"line":467},[464,1262,471],{"class":470},[464,1264,475],{"class":474},[464,1266,1267],{"class":474}," PATCH",[464,1269,1270],{"class":474}," https:\u002F\u002Fapi.sporty.plus\u002Fapi\u002Fpartner\u002Fv1\u002Freservations\u002F918273",[464,1272,485],{"class":484},[464,1274,1275,1277,1279,1281,1283,1285],{"class":466,"line":488},[464,1276,569],{"class":474},[464,1278,572],{"class":529},[464,1280,575],{"class":474},[464,1282,578],{"class":484},[464,1284,530],{"class":529},[464,1286,485],{"class":484},[464,1288,1289,1291,1293,1295,1297],{"class":466,"line":499},[464,1290,569],{"class":474},[464,1292,572],{"class":529},[464,1294,738],{"class":474},[464,1296,530],{"class":529},[464,1298,485],{"class":484},[464,1300,1301,1303,1305,1308],{"class":466,"line":510},[464,1302,491],{"class":474},[464,1304,749],{"class":529},[464,1306,1307],{"class":474},"{\"court_id\": 413, \"from\": \"2026-10-06T18:00:00+02:00\", \"to\": \"2026-10-06T19:30:00+02:00\"}",[464,1309,790],{"class":529},[318,1311,1312,1313,844,1315,844,1317,844,1319,844,1321,1323,1324,1327,1328,370],{},"Pošaljite samo ono što se mijenja: ",[416,1314,828],{},[416,1316,630],{},[416,1318,677],{},[416,1320,843],{},[416,1322,847],{},". Svaki kraj\nvremenskog raspona može se promijeniti zasebno, pa ",[416,1325,1326],{},"{\"to\": \"…\"}"," produljuje ili skraćuje\nrezervaciju. Novi termin provjerava se u odnosu na sve ostale rezervacije, a odgovor je ažurirana\nrezervacija. Promjena zbog koje bi rezervacija završila prije nego što počne odbija se s\n",[416,1329,1330],{},"422 invalid_times",[318,1332,1333,1334,1337,1338,370],{},"Možete premještati samo rezervacije ",[328,1335,1336],{},"koje je poslala vaša aplikacija",". Rezervacije napravljene u\nSportyju pripadaju članovima i klubu. Za njih, kao i za otkazane rezervacije, odgovor je ",[416,1339,1340],{},"404",[351,1342,1344],{"id":1343},"otkazivanje-rezervacije","Otkazivanje rezervacije",[455,1346,1348],{"className":457,"code":1347,"language":459,"meta":460,"style":460},"curl -X DELETE https:\u002F\u002Fapi.sporty.plus\u002Fapi\u002Fpartner\u002Fv1\u002Freservations\u002F918273 \\\n  -H \"Authorization: Bearer $ACCESS_TOKEN\"\n",[416,1349,1350,1363],{"__ignoreMap":460},[464,1351,1352,1354,1356,1359,1361],{"class":466,"line":467},[464,1353,471],{"class":470},[464,1355,475],{"class":474},[464,1357,1358],{"class":474}," DELETE",[464,1360,1270],{"class":474},[464,1362,485],{"class":484},[464,1364,1365,1367,1369,1371,1373],{"class":466,"line":488},[464,1366,569],{"class":474},[464,1368,572],{"class":529},[464,1370,575],{"class":474},[464,1372,578],{"class":484},[464,1374,536],{"class":529},[318,1376,886,1377,1380],{},[416,1378,1379],{},"204",". Ovo radi za bilo koju rezervaciju u klubu i izvodi se kao otkazivanje od strane\nadministratora kluba. Ako je rezervacija bila članova, iznos mu se vraća u klupski novčanik i\ndobiva obavijest da je rezervacija otkazana.",[351,1382,1384],{"id":1383},"obavijesti-o-rezervacijama-napravljenima-u-sportyju","Obavijesti o rezervacijama napravljenima u Sportyju",[1143,1386,1388],{"id":1387},"postavljanje-webhooka","Postavljanje webhooka",[455,1390,1392],{"className":457,"code":1391,"language":459,"meta":460,"style":460},"curl -X PUT https:\u002F\u002Fapi.sporty.plus\u002Fapi\u002Fpartner\u002Fv1\u002Fwebhook \\\n  -H \"Authorization: Bearer $ACCESS_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"url\": \"https:\u002F\u002Fbookings.example.com\u002Fhooks\u002Fsporty\"}'\n",[416,1393,1394,1408,1422,1434],{"__ignoreMap":460},[464,1395,1396,1398,1400,1403,1406],{"class":466,"line":467},[464,1397,471],{"class":470},[464,1399,475],{"class":474},[464,1401,1402],{"class":474}," PUT",[464,1404,1405],{"class":474}," https:\u002F\u002Fapi.sporty.plus\u002Fapi\u002Fpartner\u002Fv1\u002Fwebhook",[464,1407,485],{"class":484},[464,1409,1410,1412,1414,1416,1418,1420],{"class":466,"line":488},[464,1411,569],{"class":474},[464,1413,572],{"class":529},[464,1415,575],{"class":474},[464,1417,578],{"class":484},[464,1419,530],{"class":529},[464,1421,485],{"class":484},[464,1423,1424,1426,1428,1430,1432],{"class":466,"line":499},[464,1425,569],{"class":474},[464,1427,572],{"class":529},[464,1429,738],{"class":474},[464,1431,530],{"class":529},[464,1433,485],{"class":484},[464,1435,1436,1438,1440,1443],{"class":466,"line":510},[464,1437,491],{"class":474},[464,1439,749],{"class":529},[464,1441,1442],{"class":474},"{\"url\": \"https:\u002F\u002Fbookings.example.com\u002Fhooks\u002Fsporty\"}",[464,1444,790],{"class":529},[455,1446,1448],{"className":583,"code":1447,"language":585,"meta":460,"style":460},"{\n  \"data\": {\n    \"url\": \"https:\u002F\u002Fbookings.example.com\u002Fhooks\u002Fsporty\",\n    \"delivered_up_to\": \"2026-09-29T11:25:00+00:00\",\n    \"last_delivered_at\": null,\n    \"last_failed_at\": null,\n    \"last_error\": null,\n    \"secret\": \"whsec_…\"\n  }\n}\n",[416,1449,1450,1454,1466,1486,1506,1519,1532,1545,1563,1567],{"__ignoreMap":460},[464,1451,1452],{"class":466,"line":467},[464,1453,752],{"class":529},[464,1455,1456,1458,1460,1462,1464],{"class":466,"line":488},[464,1457,904],{"class":529},[464,1459,598],{"class":597},[464,1461,530],{"class":529},[464,1463,603],{"class":529},[464,1465,913],{"class":529},[464,1467,1468,1470,1473,1475,1477,1479,1482,1484],{"class":466,"line":499},[464,1469,918],{"class":529},[464,1471,1472],{"class":470},"url",[464,1474,530],{"class":529},[464,1476,603],{"class":529},[464,1478,572],{"class":529},[464,1480,1481],{"class":474},"https:\u002F\u002Fbookings.example.com\u002Fhooks\u002Fsporty",[464,1483,530],{"class":529},[464,1485,930],{"class":529},[464,1487,1488,1490,1493,1495,1497,1499,1502,1504],{"class":466,"line":510},[464,1489,918],{"class":529},[464,1491,1492],{"class":470},"delivered_up_to",[464,1494,530],{"class":529},[464,1496,603],{"class":529},[464,1498,572],{"class":529},[464,1500,1501],{"class":474},"2026-09-29T11:25:00+00:00",[464,1503,530],{"class":529},[464,1505,930],{"class":529},[464,1507,1508,1510,1513,1515,1517],{"class":466,"line":521},[464,1509,918],{"class":529},[464,1511,1512],{"class":470},"last_delivered_at",[464,1514,530],{"class":529},[464,1516,603],{"class":529},[464,1518,1016],{"class":529},[464,1520,1521,1523,1526,1528,1530],{"class":466,"line":760},[464,1522,918],{"class":529},[464,1524,1525],{"class":470},"last_failed_at",[464,1527,530],{"class":529},[464,1529,603],{"class":529},[464,1531,1016],{"class":529},[464,1533,1534,1536,1539,1541,1543],{"class":466,"line":766},[464,1535,918],{"class":529},[464,1537,1538],{"class":470},"last_error",[464,1540,530],{"class":529},[464,1542,603],{"class":529},[464,1544,1016],{"class":529},[464,1546,1547,1549,1552,1554,1556,1558,1561],{"class":466,"line":772},[464,1548,918],{"class":529},[464,1550,1551],{"class":470},"secret",[464,1553,530],{"class":529},[464,1555,603],{"class":529},[464,1557,572],{"class":529},[464,1559,1560],{"class":474},"whsec_…",[464,1562,536],{"class":529},[464,1564,1565],{"class":466,"line":778},[464,1566,1129],{"class":529},[464,1568,1569],{"class":466,"line":784},[464,1570,1135],{"class":529},[1572,1573,1575,1580,1581,1584,1585,1588],"callout",{"icon":1574},"i-heroicons-key",[328,1576,1577,1579],{},[416,1578,1551],{}," se prikazuje jednom",", u ovom odgovoru. Pohranite ga. Da biste ga zamijenili, uz\nsljedeći ",[416,1582,1583],{},"PUT"," pošaljite ",[416,1586,1587],{},"\"rotate_secret\": true",", a odgovor će sadržavati novi.",[322,1590,1591,1605,1608,1615],{},[325,1592,1593,1594,1596,1597,1600,1601,1604],{},"Ponovno slanje ",[416,1595,1583],{}," mijenja URL. ",[416,1598,1599],{},"GET \u002Fwebhook"," prikazuje trenutne postavke i kako ide\nisporuka; ",[416,1602,1603],{},"DELETE \u002Fwebhook"," zaustavlja isporuku.",[325,1606,1607],{},"Postoji jedan webhook po aplikaciji i klubu.",[325,1609,1610,1611,370],{},"Novi webhook počinje od trenutka kad ga postavite. Za sve ranije pogledajte\n",[346,1612,1614],{"href":1613},"#nadokna%C4%91ivanje","nadoknađivanje",[325,1616,1617,1618,1621,1622,370],{},"URL mora biti ",[416,1619,1620],{},"https",", ne smije sadržavati vjerodajnice i mora se razriješiti u javnu adresu.\nSve ostalo odbija se s ",[416,1623,1624],{},"422",[1143,1626,1628],{"id":1627},"što-stiže","Što stiže",[318,1630,1631,1632,1635],{},"Otprilike jednom u minuti, dok god se nešto promijenilo, dobivate ",[416,1633,1634],{},"POST"," poput ovoga:",[455,1637,1639],{"className":583,"code":1638,"language":585,"meta":460,"style":460},"{\n  \"id\": \"5d1c4e0a-4a59-4b8e-9a0e-2a7b8f6c9d12\",\n  \"club_id\": 57,\n  \"sent_at\": \"2026-09-29T11:31:07+00:00\",\n  \"events\": [\n    {\n      \"type\": \"reservation.created\",\n      \"reservation\": {\n        \"id\": 918301,\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        \"category_id\": null,\n        \"approved\": true,\n        \"cancelled\": false,\n        \"source\": \"sporty\",\n        \"external_id\": null,\n        \"name\": null,\n        \"updated_at\": \"2026-09-29T11:30:58+00:00\"\n      }\n    }\n  ]\n}\n",[416,1640,1641,1645,1664,1680,1700,1714,1719,1740,1753,1769,1783,1801,1820,1839,1851,1864,1876,1896,1909,1922,1940,1946,1952,1958],{"__ignoreMap":460},[464,1642,1643],{"class":466,"line":467},[464,1644,752],{"class":529},[464,1646,1647,1649,1651,1653,1655,1657,1660,1662],{"class":466,"line":488},[464,1648,904],{"class":529},[464,1650,614],{"class":597},[464,1652,530],{"class":529},[464,1654,603],{"class":529},[464,1656,572],{"class":529},[464,1658,1659],{"class":474},"5d1c4e0a-4a59-4b8e-9a0e-2a7b8f6c9d12",[464,1661,530],{"class":529},[464,1663,930],{"class":529},[464,1665,1666,1668,1671,1673,1675,1678],{"class":466,"line":499},[464,1667,904],{"class":529},[464,1669,1670],{"class":597},"club_id",[464,1672,530],{"class":529},[464,1674,603],{"class":529},[464,1676,1677],{"class":621}," 57",[464,1679,930],{"class":529},[464,1681,1682,1684,1687,1689,1691,1693,1696,1698],{"class":466,"line":510},[464,1683,904],{"class":529},[464,1685,1686],{"class":597},"sent_at",[464,1688,530],{"class":529},[464,1690,603],{"class":529},[464,1692,572],{"class":529},[464,1694,1695],{"class":474},"2026-09-29T11:31:07+00:00",[464,1697,530],{"class":529},[464,1699,930],{"class":529},[464,1701,1702,1704,1707,1709,1711],{"class":466,"line":521},[464,1703,904],{"class":529},[464,1705,1706],{"class":597},"events",[464,1708,530],{"class":529},[464,1710,603],{"class":529},[464,1712,1713],{"class":529}," [\n",[464,1715,1716],{"class":466,"line":760},[464,1717,1718],{"class":529},"    {\n",[464,1720,1721,1724,1727,1729,1731,1733,1736,1738],{"class":466,"line":766},[464,1722,1723],{"class":529},"      \"",[464,1725,1726],{"class":470},"type",[464,1728,530],{"class":529},[464,1730,603],{"class":529},[464,1732,572],{"class":529},[464,1734,1735],{"class":474},"reservation.created",[464,1737,530],{"class":529},[464,1739,930],{"class":529},[464,1741,1742,1744,1747,1749,1751],{"class":466,"line":772},[464,1743,1723],{"class":529},[464,1745,1746],{"class":470},"reservation",[464,1748,530],{"class":529},[464,1750,603],{"class":529},[464,1752,913],{"class":529},[464,1754,1755,1758,1760,1762,1764,1767],{"class":466,"line":778},[464,1756,1757],{"class":529},"        \"",[464,1759,614],{"class":621},[464,1761,530],{"class":529},[464,1763,603],{"class":529},[464,1765,1766],{"class":621}," 918301",[464,1768,930],{"class":529},[464,1770,1771,1773,1775,1777,1779,1781],{"class":466,"line":784},[464,1772,1757],{"class":529},[464,1774,828],{"class":621},[464,1776,530],{"class":529},[464,1778,603],{"class":529},[464,1780,943],{"class":621},[464,1782,930],{"class":529},[464,1784,1785,1787,1789,1791,1793,1795,1797,1799],{"class":466,"line":1046},[464,1786,1757],{"class":529},[464,1788,952],{"class":621},[464,1790,530],{"class":529},[464,1792,603],{"class":529},[464,1794,572],{"class":529},[464,1796,961],{"class":474},[464,1798,530],{"class":529},[464,1800,930],{"class":529},[464,1802,1803,1805,1807,1809,1811,1813,1816,1818],{"class":466,"line":1067},[464,1804,1757],{"class":529},[464,1806,843],{"class":621},[464,1808,530],{"class":529},[464,1810,603],{"class":529},[464,1812,572],{"class":529},[464,1814,1815],{"class":474},"2026-10-07T16:00:00+00:00",[464,1817,530],{"class":529},[464,1819,930],{"class":529},[464,1821,1822,1824,1826,1828,1830,1832,1835,1837],{"class":466,"line":1087},[464,1823,1757],{"class":529},[464,1825,847],{"class":621},[464,1827,530],{"class":529},[464,1829,603],{"class":529},[464,1831,572],{"class":529},[464,1833,1834],{"class":474},"2026-10-07T17:00:00+00:00",[464,1836,530],{"class":529},[464,1838,930],{"class":529},[464,1840,1841,1843,1845,1847,1849],{"class":466,"line":1107},[464,1842,1757],{"class":529},[464,1844,677],{"class":621},[464,1846,530],{"class":529},[464,1848,603],{"class":529},[464,1850,1016],{"class":529},[464,1852,1853,1855,1857,1859,1861],{"class":466,"line":1126},[464,1854,1757],{"class":529},[464,1856,1023],{"class":621},[464,1858,530],{"class":529},[464,1860,603],{"class":529},[464,1862,1863],{"class":529}," true,\n",[464,1865,1866,1868,1870,1872,1874],{"class":466,"line":1132},[464,1867,1757],{"class":529},[464,1869,1037],{"class":621},[464,1871,530],{"class":529},[464,1873,603],{"class":529},[464,1875,1030],{"class":529},[464,1877,1879,1881,1883,1885,1887,1889,1892,1894],{"class":466,"line":1878},17,[464,1880,1757],{"class":529},[464,1882,1051],{"class":621},[464,1884,530],{"class":529},[464,1886,603],{"class":529},[464,1888,572],{"class":529},[464,1890,1891],{"class":474},"sporty",[464,1893,530],{"class":529},[464,1895,930],{"class":529},[464,1897,1899,1901,1903,1905,1907],{"class":466,"line":1898},18,[464,1900,1757],{"class":529},[464,1902,812],{"class":621},[464,1904,530],{"class":529},[464,1906,603],{"class":529},[464,1908,1016],{"class":529},[464,1910,1912,1914,1916,1918,1920],{"class":466,"line":1911},19,[464,1913,1757],{"class":529},[464,1915,630],{"class":621},[464,1917,530],{"class":529},[464,1919,603],{"class":529},[464,1921,1016],{"class":529},[464,1923,1925,1927,1929,1931,1933,1935,1938],{"class":466,"line":1924},20,[464,1926,1757],{"class":529},[464,1928,1112],{"class":621},[464,1930,530],{"class":529},[464,1932,603],{"class":529},[464,1934,572],{"class":529},[464,1936,1937],{"class":474},"2026-09-29T11:30:58+00:00",[464,1939,536],{"class":529},[464,1941,1943],{"class":466,"line":1942},21,[464,1944,1945],{"class":529},"      }\n",[464,1947,1949],{"class":466,"line":1948},22,[464,1950,1951],{"class":529},"    }\n",[464,1953,1955],{"class":466,"line":1954},23,[464,1956,1957],{"class":529},"  ]\n",[464,1959,1961],{"class":466,"line":1960},24,[464,1962,1135],{"class":529},[322,1964,1965,1987,1992],{},[325,1966,1967,1969,1970],{},[416,1968,1726],{}," je jedno od sljedećeg:\n",[322,1971,1972,1976,1982],{},[325,1973,1974],{},[416,1975,1735],{},[325,1977,1978,1981],{},[416,1979,1980],{},"reservation.updated",", kad je rezervacija premještena, preimenovana ili na drugi način\npromijenjena;",[325,1983,1984,370],{},[416,1985,1986],{},"reservation.cancelled",[325,1988,1989,1991],{},[416,1990,1706],{}," sadrži do otprilike 100 promjena, od najstarije.",[325,1993,1994,1995,1997,1998,2001],{},"Rezervacije članova stižu bez naziva (",[416,1996,630],{}," je ",[416,1999,2000],{},"null",") i bez osoba koje u njima sudjeluju.\nVidite da je teren zauzet i kada.",[318,2003,2004,2010,2011,2013,2014,2016,2017,2019,2020,2022,2023,2025,2026,370],{},[328,2005,2006,2007,2009],{},"Ne oslanjajte se na to da je ",[416,2008,1726],{}," potpun."," Promjene se skupljaju između isporuka, pa\nrezervacija napravljena i otkazana unutar iste minute stiže samo kao ",[416,2012,1986],{},".\nSmatrajte ",[416,2015,1746],{}," trenutnim stanjem rezervacije i primijenite ga: ako je ",[416,2018,1037],{}," true,\noslobodite teren; inače ga zauzmite na ",[416,2021,828],{}," od ",[416,2024,843],{}," do ",[416,2027,847],{},[318,2029,2030,2033,2034,2036],{},[328,2031,2032],{},"Ne dobivate obavijesti o vlastitim promjenama."," Rezervacija koju pošaljete ili premjestite ne\nvraća vam se. Kad otkažete rezervaciju člana, ona vam se vraća kao ",[416,2035,1986],{},". Taj je\ndogađaj bezopasan jer je teren u vašoj kopiji već slobodan.",[1143,2038,2040],{"id":2039},"odgovaranje","Odgovaranje",[318,2042,2043,2044,2047],{},"Odgovorite bilo kojim ",[416,2045,2046],{},"2xx"," unutar 10 sekundi. Sve ostalo smatra se neuspjehom: drugi status,\nistek vremena ili preusmjeravanje (preusmjeravanja ne slijedimo). Iste promjene, uz sve novije,\ntada se ponovno šalju otprilike minutu kasnije, i tako dalje dok ih ne prihvatite. Ništa se ne\ngubi, a redoslijed se čuva.",[318,2049,2050,2051,2054,2055,2058,2059,2061],{},"To znači da ćete ",[328,2052,2053],{},"ponekad istu promjenu primiti dvaput",". Obradu napravite idempotentnom: kao\nključ koristite ",[416,2056,2057],{},"reservation.id"," i zanemarite kopiju čiji ",[416,2060,1112],{}," nije noviji od onoga što\nveć imate.",[318,2063,2064],{},"Isporuka prestaje u bilo kojem od ovih slučajeva:",[322,2066,2067,2070,2073,2076],{},[325,2068,2069],{},"klub povuče vaše odobrenje;",[325,2071,2072],{},"vaša je aplikacija opozvana;",[325,2074,2075],{},"izbrišete webhook;",[325,2077,2078,2079,370],{},"klub ",[346,2080,2082],{"href":2081},"#%C5%A1to-klub-vidi","zaustavi webhook",[318,2084,2085,2087,2088,2090],{},[416,2086,1599],{}," prikazuje ",[416,2089,1538],{}," ako isporuke ne uspijevaju.",[1143,2092,2094],{"id":2093},"provjera-potpisa","Provjera potpisa",[318,2096,2097],{},"Svaka isporuka sadrži:",[455,2099,2104],{"className":2100,"code":2102,"language":2103},[2101],"language-text","Sporty-Signature: t=1790680267,v1=6c4b1e9f…\n","text",[416,2105,2102],{"__ignoreMap":460},[318,2107,2108,2111,2112,2115,2116,2119],{},[416,2109,2110],{},"v1"," je heksadecimalni HMAC-SHA256 od ",[416,2113,2114],{},"{t}.{raw body}",", s tajnim ključem vašeg webhooka kao\nključem. Provjerite ga prema ",[328,2117,2118],{},"izvornom"," tijelu zahtjeva prije parsiranja i odbijte stare\nvremenske oznake kako se presretnuta isporuka ne bi mogla ponoviti.",[2121,2122,2123,2505],"code-group",{},[455,2124,2129],{"className":2125,"code":2126,"filename":2127,"language":2128,"meta":460,"style":460},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import crypto from 'node:crypto'\n\nexport function verifySporty(rawBody, header, secret, toleranceSeconds = 300) {\n  const parts = Object.fromEntries(header.split(',').map((kv) => kv.split('=')))\n  const expected = crypto.createHmac('sha256', secret).update(`${parts.t}.${rawBody}`).digest('hex')\n  const fresh = Math.abs(Date.now() \u002F 1000 - Number(parts.t)) \u003C= toleranceSeconds\n\n  return fresh && parts.v1?.length === expected.length\n    && crypto.timingSafeEqual(Buffer.from(parts.v1), Buffer.from(expected))\n}\n","Node.js","js",[416,2130,2131,2149,2155,2200,2276,2358,2417,2421,2453,2501],{"__ignoreMap":460},[464,2132,2133,2137,2140,2142,2144,2147],{"class":466,"line":467},[464,2134,2136],{"class":2135},"s7zQu","import",[464,2138,2139],{"class":484}," crypto ",[464,2141,843],{"class":2135},[464,2143,749],{"class":529},[464,2145,2146],{"class":474},"node:crypto",[464,2148,790],{"class":529},[464,2150,2151],{"class":466,"line":488},[464,2152,2154],{"emptyLinePlaceholder":2153},true,"\n",[464,2156,2157,2160,2163,2167,2170,2174,2176,2179,2181,2184,2186,2189,2192,2195,2198],{"class":466,"line":499},[464,2158,2159],{"class":2135},"export",[464,2161,2162],{"class":597}," function",[464,2164,2166],{"class":2165},"s2Zo4"," verifySporty",[464,2168,2169],{"class":529},"(",[464,2171,2173],{"class":2172},"sHdIc","rawBody",[464,2175,625],{"class":529},[464,2177,2178],{"class":2172}," header",[464,2180,625],{"class":529},[464,2182,2183],{"class":2172}," secret",[464,2185,625],{"class":529},[464,2187,2188],{"class":2172}," toleranceSeconds",[464,2190,2191],{"class":529}," =",[464,2193,2194],{"class":621}," 300",[464,2196,2197],{"class":529},")",[464,2199,913],{"class":529},[464,2201,2202,2205,2208,2210,2213,2215,2218,2221,2224,2226,2229,2231,2234,2236,2238,2240,2242,2245,2247,2249,2252,2254,2257,2260,2262,2264,2266,2268,2271,2273],{"class":466,"line":510},[464,2203,2204],{"class":597},"  const",[464,2206,2207],{"class":484}," parts",[464,2209,2191],{"class":529},[464,2211,2212],{"class":484}," Object",[464,2214,370],{"class":529},[464,2216,2217],{"class":2165},"fromEntries",[464,2219,2169],{"class":2220},"swJcz",[464,2222,2223],{"class":484},"header",[464,2225,370],{"class":529},[464,2227,2228],{"class":2165},"split",[464,2230,2169],{"class":2220},[464,2232,2233],{"class":529},"'",[464,2235,625],{"class":474},[464,2237,2233],{"class":529},[464,2239,2197],{"class":2220},[464,2241,370],{"class":529},[464,2243,2244],{"class":2165},"map",[464,2246,2169],{"class":2220},[464,2248,2169],{"class":529},[464,2250,2251],{"class":2172},"kv",[464,2253,2197],{"class":529},[464,2255,2256],{"class":597}," =>",[464,2258,2259],{"class":484}," kv",[464,2261,370],{"class":529},[464,2263,2228],{"class":2165},[464,2265,2169],{"class":2220},[464,2267,2233],{"class":529},[464,2269,2270],{"class":474},"=",[464,2272,2233],{"class":529},[464,2274,2275],{"class":2220},")))\n",[464,2277,2278,2280,2283,2285,2288,2290,2293,2295,2297,2300,2302,2304,2306,2308,2310,2313,2315,2318,2321,2323,2326,2329,2331,2334,2336,2339,2341,2343,2346,2348,2350,2353,2355],{"class":466,"line":521},[464,2279,2204],{"class":597},[464,2281,2282],{"class":484}," expected",[464,2284,2191],{"class":529},[464,2286,2287],{"class":484}," crypto",[464,2289,370],{"class":529},[464,2291,2292],{"class":2165},"createHmac",[464,2294,2169],{"class":2220},[464,2296,2233],{"class":529},[464,2298,2299],{"class":474},"sha256",[464,2301,2233],{"class":529},[464,2303,625],{"class":529},[464,2305,2183],{"class":484},[464,2307,2197],{"class":2220},[464,2309,370],{"class":529},[464,2311,2312],{"class":2165},"update",[464,2314,2169],{"class":2220},[464,2316,2317],{"class":529},"`${",[464,2319,2320],{"class":484},"parts",[464,2322,370],{"class":529},[464,2324,2325],{"class":484},"t",[464,2327,2328],{"class":529},"}",[464,2330,370],{"class":474},[464,2332,2333],{"class":529},"${",[464,2335,2173],{"class":484},[464,2337,2338],{"class":529},"}`",[464,2340,2197],{"class":2220},[464,2342,370],{"class":529},[464,2344,2345],{"class":2165},"digest",[464,2347,2169],{"class":2220},[464,2349,2233],{"class":529},[464,2351,2352],{"class":474},"hex",[464,2354,2233],{"class":529},[464,2356,2357],{"class":2220},")\n",[464,2359,2360,2362,2365,2367,2370,2372,2375,2377,2380,2382,2385,2388,2391,2394,2397,2400,2402,2404,2406,2408,2411,2414],{"class":466,"line":760},[464,2361,2204],{"class":597},[464,2363,2364],{"class":484}," fresh",[464,2366,2191],{"class":529},[464,2368,2369],{"class":484}," Math",[464,2371,370],{"class":529},[464,2373,2374],{"class":2165},"abs",[464,2376,2169],{"class":2220},[464,2378,2379],{"class":484},"Date",[464,2381,370],{"class":529},[464,2383,2384],{"class":2165},"now",[464,2386,2387],{"class":2220},"() ",[464,2389,2390],{"class":529},"\u002F",[464,2392,2393],{"class":621}," 1000",[464,2395,2396],{"class":529}," -",[464,2398,2399],{"class":2165}," Number",[464,2401,2169],{"class":2220},[464,2403,2320],{"class":484},[464,2405,370],{"class":529},[464,2407,2325],{"class":484},[464,2409,2410],{"class":2220},")) ",[464,2412,2413],{"class":529},"\u003C=",[464,2415,2416],{"class":484}," toleranceSeconds\n",[464,2418,2419],{"class":466,"line":766},[464,2420,2154],{"emptyLinePlaceholder":2153},[464,2422,2423,2426,2428,2431,2433,2435,2437,2440,2443,2446,2448,2450],{"class":466,"line":772},[464,2424,2425],{"class":2135},"  return",[464,2427,2364],{"class":484},[464,2429,2430],{"class":529}," &&",[464,2432,2207],{"class":484},[464,2434,370],{"class":529},[464,2436,2110],{"class":484},[464,2438,2439],{"class":529},"?.",[464,2441,2442],{"class":484},"length",[464,2444,2445],{"class":529}," ===",[464,2447,2282],{"class":484},[464,2449,370],{"class":529},[464,2451,2452],{"class":484},"length\n",[464,2454,2455,2458,2460,2462,2465,2467,2470,2472,2474,2476,2478,2480,2482,2484,2486,2489,2491,2493,2495,2498],{"class":466,"line":778},[464,2456,2457],{"class":529},"    &&",[464,2459,2287],{"class":484},[464,2461,370],{"class":529},[464,2463,2464],{"class":2165},"timingSafeEqual",[464,2466,2169],{"class":2220},[464,2468,2469],{"class":484},"Buffer",[464,2471,370],{"class":529},[464,2473,843],{"class":2165},[464,2475,2169],{"class":2220},[464,2477,2320],{"class":484},[464,2479,370],{"class":529},[464,2481,2110],{"class":484},[464,2483,2197],{"class":2220},[464,2485,625],{"class":529},[464,2487,2488],{"class":484}," Buffer",[464,2490,370],{"class":529},[464,2492,843],{"class":2165},[464,2494,2169],{"class":2220},[464,2496,2497],{"class":484},"expected",[464,2499,2500],{"class":2220},"))\n",[464,2502,2503],{"class":466,"line":784},[464,2504,1135],{"class":529},[455,2506,2511],{"className":2507,"code":2508,"filename":2509,"language":2510,"meta":460,"style":460},"language-php shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","function verifySporty(string $rawBody, string $header, string $secret, int $tolerance = 300): bool\n{\n    parse_str(str_replace(',', '&', $header), $parts);\n    $expected = hash_hmac('sha256', $parts['t'].'.'.$rawBody, $secret);\n\n    return abs(time() - (int) $parts['t']) \u003C= $tolerance\n        && hash_equals($expected, $parts['v1'] ?? '');\n}\n","PHP","php",[416,2512,2513,2518,2522,2527,2532,2536,2541,2546],{"__ignoreMap":460},[464,2514,2515],{"class":466,"line":467},[464,2516,2517],{},"function verifySporty(string $rawBody, string $header, string $secret, int $tolerance = 300): bool\n",[464,2519,2520],{"class":466,"line":488},[464,2521,752],{},[464,2523,2524],{"class":466,"line":499},[464,2525,2526],{},"    parse_str(str_replace(',', '&', $header), $parts);\n",[464,2528,2529],{"class":466,"line":510},[464,2530,2531],{},"    $expected = hash_hmac('sha256', $parts['t'].'.'.$rawBody, $secret);\n",[464,2533,2534],{"class":466,"line":521},[464,2535,2154],{"emptyLinePlaceholder":2153},[464,2537,2538],{"class":466,"line":760},[464,2539,2540],{},"    return abs(time() - (int) $parts['t']) \u003C= $tolerance\n",[464,2542,2543],{"class":466,"line":766},[464,2544,2545],{},"        && hash_equals($expected, $parts['v1'] ?? '');\n",[464,2547,2548],{"class":466,"line":772},[464,2549,1135],{},[318,2551,2552],{},"Računajte s isporukom koja kasni nekoliko minuta: šalje se ponovno dok je ne prihvatite, ali se\nsvaki put iznova potpisuje, pa tolerancija mora pokriti samo razliku u satovima.",[351,2554,2555],{"id":1614},"Nadoknađivanje",[318,2557,2558],{},"Iste su promjene dostupne i na zahtjev. Koristite ovo nakon prekida rada na vašoj strani, pri\nprvom povezivanju ili kao noćnu provjeru slažu li se dva rasporeda:",[455,2560,2562],{"className":457,"code":2561,"language":459,"meta":460,"style":460},"curl \"https:\u002F\u002Fapi.sporty.plus\u002Fapi\u002Fpartner\u002Fv1\u002Freservations?updated_since=2026-09-28T00:00:00Z\" \\\n  -H \"Authorization: Bearer $ACCESS_TOKEN\"\n",[416,2563,2564,2577],{"__ignoreMap":460},[464,2565,2566,2568,2570,2573,2575],{"class":466,"line":467},[464,2567,471],{"class":470},[464,2569,572],{"class":529},[464,2571,2572],{"class":474},"https:\u002F\u002Fapi.sporty.plus\u002Fapi\u002Fpartner\u002Fv1\u002Freservations?updated_since=2026-09-28T00:00:00Z",[464,2574,530],{"class":529},[464,2576,485],{"class":484},[464,2578,2579,2581,2583,2585,2587],{"class":466,"line":488},[464,2580,569],{"class":474},[464,2582,572],{"class":529},[464,2584,575],{"class":474},[464,2586,578],{"class":484},[464,2588,536],{"class":529},[318,2590,2591,2592,2595,2596,2599,2600,2603,2604,2607,2608,2610],{},"Uz ",[416,2593,2594],{},"updated_since"," popis sadrži svaku rezervaciju promijenjenu u tom trenutku ili nakon njega, od\nnajstarije promjene, ",[328,2597,2598],{},"uključujući otkazane",". Stranicama se krećete pomoću ",[416,2601,2602],{},"per_page"," (do 100) i\n",[416,2605,2606],{},"page",". Da biste nastavili kasnije, krenite od posljednjeg ",[416,2609,1112],{}," koji ste vidjeli; tu\nrezervaciju možda ćete vidjeti ponovno, što je bezopasno.",[318,2612,2613,2616],{},[416,2614,2615],{},"GET \u002Freservations\u002F{id}"," čita jednu rezervaciju, otkazanu ili ne.",[351,2618,2620],{"id":2619},"pogreške","Pogreške",[392,2622,2623,2637],{},[395,2624,2625],{},[398,2626,2627,2630,2634],{},[401,2628,2629],{},"Status",[401,2631,2632],{},[416,2633,1191],{},[401,2635,2636],{},"Značenje",[408,2638,2639,2655,2669,2683,2697,2714,2731,2745],{},[398,2640,2641,2645,2649],{},[413,2642,2643],{},[416,2644,1248],{},[413,2646,2647],{},[416,2648,1200],{},[413,2650,2651,2652,2654],{},"Teren je rezerviran za dio tog vremena. ",[416,2653,1231],{}," kaže kojom rezervacijom.",[398,2656,2657,2661,2666],{},[413,2658,2659],{},[416,2660,1624],{},[413,2662,2663],{},[416,2664,2665],{},"unknown_court",[413,2667,2668],{},"Klub nema takav teren.",[398,2670,2671,2675,2680],{},[413,2672,2673],{},[416,2674,1624],{},[413,2676,2677],{},[416,2678,2679],{},"unknown_category",[413,2681,2682],{},"Klub nema takvu kategoriju rezervacija.",[398,2684,2685,2689,2694],{},[413,2686,2687],{},[416,2688,1624],{},[413,2690,2691],{},[416,2692,2693],{},"invalid_times",[413,2695,2696],{},"Rezervacija bi završila prije nego što počne.",[398,2698,2699,2703,2708],{},[413,2700,2701],{},[416,2702,1340],{},[413,2704,2705],{},[416,2706,2707],{},"not_found",[413,2709,2710,2711,2713],{},"U ovom klubu nema takve rezervacije; za ",[416,2712,1165],{},", nema takve koju je poslala vaša aplikacija.",[398,2715,2716,2720,2725],{},[413,2717,2718],{},[416,2719,1248],{},[413,2721,2722],{},[416,2723,2724],{},"not_cancelable",[413,2726,2727,2728,2730],{},"Rezervacija se nije mogla otkazati; ",[416,2729,1211],{}," kaže zašto.",[398,2732,2733,2737,2742],{},[413,2734,2735],{},[416,2736,1248],{},[413,2738,2739],{},[416,2740,2741],{},"no_acting_admin",[413,2743,2744],{},"Nije zabilježen nijedan administrator kluba koji je odobrio vašu aplikaciju. Zamolite klub da je ponovno odobri.",[398,2746,2747,2751,2756],{},[413,2748,2749],{},[416,2750,1248],{},[413,2752,2753],{},[416,2754,2755],{},"no_courts",[413,2757,2758],{},"Klub nema terena za rezervaciju.",[318,2760,2761,2762,844,2765,844,2768,2771,2772,370],{},"Opće pogreške (",[416,2763,2764],{},"401",[416,2766,2767],{},"403 insufficient_scope",[416,2769,2770],{},"429"," i ostale) navedene su na stranici\n",[346,2773,2775],{"href":2774},"\u002Fhr\u002Foauth\u002Fpartner-api#pogre%C5%A1ke","partnerskog API-ja",[351,2777,2779],{"id":2778},"što-klub-vidi","Što klub vidi",[318,2781,2782],{},"Svaka rezervacija koju zauzmete, premjestite ili otkažete bilježi se na administratora kluba koji\nje vašoj aplikaciji odobrio pristup. Ako je klub sam registrirao aplikaciju, bilježi se na\nadministratora koji ju je registrirao. Kad otkažete rezervaciju člana, ime tog administratora\nstoji u obavijesti koju član dobiva. Recite to klubu, kako nitko ne bi bio iznenađen.",[318,2784,2785,2786,2789],{},"Klub vidi i vaš webhook. Pod ",[328,2787,2788],{},"Postavke → API klijenti"," administrator kluba vidi:",[322,2791,2792,2795,2798],{},[325,2793,2794],{},"njegov URL;",[325,2796,2797],{},"isporučuje li, ne uspijeva li ili još nije ništa poslao;",[325,2799,2800],{},"kad je posljednji put isporučio te posljednju pogrešku dok isporuke ne uspijevaju.",[318,2802,2803,2804,2807],{},"Tajni ključ ondje se nikad ne prikazuje. ",[328,2805,2806],{},"Neka vaša krajnja točka odgovara."," Webhook koji danima\nne uspijeva upravo je ono što klub primijeti i zaustavi.",[318,2809,2810],{},"Administrator može zaustaviti vaš webhook bez povlačenja vašeg pristupa. Nakon toga:",[322,2812,2813,2821,2824],{},[325,2814,2815,2817,2818,2820],{},[416,2816,1599],{}," odgovara ",[416,2819,1340],{},";",[325,2822,2823],{},"vaš token i dalje radi;",[325,2825,2826,2828],{},[416,2827,1583],{}," postavlja novi webhook, s novim tajnim ključem, koji dobiva obavijesti o promjenama od tog\ntrenutka nadalje.",[318,2830,2831,2832,2835],{},"Pozovite ",[416,2833,2834],{},"GET \u002Freservations?updated_since=…"," od trenutka kad je stigla vaša posljednja isporuka,\nkako biste pokupili ono što se dogodilo dok je webhook bio zaustavljen.",[2837,2838,2839],"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}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}",{"title":460,"searchDepth":488,"depth":488,"links":2841},[2842,2843,2844,2845,2849,2850,2851,2857,2858,2859],{"id":353,"depth":488,"text":354},{"id":386,"depth":488,"text":387},{"id":546,"depth":488,"text":547},{"id":681,"depth":488,"text":682,"children":2846},[2847,2848],{"id":1145,"depth":499,"text":1146},{"id":1174,"depth":499,"text":1175},{"id":1252,"depth":488,"text":1253},{"id":1343,"depth":488,"text":1344},{"id":1383,"depth":488,"text":1384,"children":2852},[2853,2854,2855,2856],{"id":1387,"depth":499,"text":1388},{"id":1627,"depth":499,"text":1628},{"id":2039,"depth":499,"text":2040},{"id":2093,"depth":499,"text":2094},{"id":1614,"depth":488,"text":2555},{"id":2619,"depth":488,"text":2620},{"id":2778,"depth":488,"text":2779},"Održavajte svoj sustav rezervacija i klupski raspored u Sportyju usklađenima, u oba smjera.","md",null,{},{"icon":278},{"title":2866,"description":2867},"Dvosmjerna sinkronizacija rezervacija terena putem Sporty partnerskog API-ja","Zauzmite terene za rezervacije primljene u vašem sustavu i primajte potpisane webhookove za rezervacije napravljene u Sportyju.","8i0A3lCP4BY1DjxFY3W0lUCmh3m5r8c5CzmcEbByaFw",[2870,2872],{"title":296,"path":297,"stem":298,"description":2871,"icon":278,"children":-1},"Što pristupni token zapravo može čitati i pisati, a što namjerno ne može.",{"title":304,"path":305,"stem":306,"description":2873,"icon":278,"children":-1},"Dinamička registracija klijenata te što samoregistrirani klijent može, a što ne može.",1792420869074]