[{"data":1,"prerenderedAt":535},["ShallowReactive",2],{"navigation_docs_fr":3,"-fr-oauth-clients":312,"-fr-oauth-clients-surround":530},[4,17,210,237,272],{"title":5,"path":6,"stem":7,"children":8,"icon":11},"Premiers pas","\u002Ffr\u002Fgetting-started","fr\u002F0.getting-started\u002F1.index",[9,12],{"title":10,"path":6,"stem":7,"icon":11},"Visite de l'administration","sporty-toggle-large-on",{"title":13,"path":14,"stem":15,"icon":16},"Configuration de la première semaine","\u002Ffr\u002Fgetting-started\u002Ffirst-week-setup","fr\u002F0.getting-started\u002F2.first-week-setup","sporty-calendar-check",{"title":18,"path":19,"stem":20,"children":21,"page":209},"Interface","\u002Ffr\u002Finterface","fr\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},"Courts","\u002Ffr\u002Finterface\u002Fcourts","fr\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},"Contrôle d'accès et éclairage","\u002Ffr\u002Finterface\u002Fcourts\u002Fintegrations","fr\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","\u002Ffr\u002Finterface\u002Fcourts\u002Fintegrations\u002Fweblock","fr\u002F1.interface\u002F01.courts\u002F5.integrations\u002F2.weblock","sporty-door-open",{"title":41,"path":42,"stem":43,"icon":44},"Shelly","\u002Ffr\u002Finterface\u002Fcourts\u002Fintegrations\u002Fshelly","fr\u002F1.interface\u002F01.courts\u002F5.integrations\u002F3.shelly","sporty-bolt",{"title":46,"path":47,"stem":48,"children":49,"icon":39},"UniFi Access","\u002Ffr\u002Finterface\u002Fcourts\u002Fintegrations\u002Funifi-access","fr\u002F1.interface\u002F01.courts\u002F5.integrations\u002F4.unifi-access\u002F1.index",[50,52,56,61],{"title":51,"path":47,"stem":48,"icon":39},"Présentation",{"title":53,"path":54,"stem":55,"icon":11},"Connecter le VPN","\u002Ffr\u002Finterface\u002Fcourts\u002Fintegrations\u002Funifi-access\u002Fvpn","fr\u002F1.interface\u002F01.courts\u002F5.integrations\u002F4.unifi-access\u002F2.vpn",{"title":57,"path":58,"stem":59,"icon":60},"Créer un jeton d'API","\u002Ffr\u002Finterface\u002Fcourts\u002Fintegrations\u002Funifi-access\u002Fapi-token","fr\u002F1.interface\u002F01.courts\u002F5.integrations\u002F4.unifi-access\u002F3.api-token","sporty-gear",{"title":62,"path":63,"stem":64,"icon":28},"Configurer dans Club Admin","\u002Ffr\u002Finterface\u002Fcourts\u002Fintegrations\u002Funifi-access\u002Fclub-admin","fr\u002F1.interface\u002F01.courts\u002F5.integrations\u002F4.unifi-access\u002F4.club-admin",{"title":66,"path":67,"stem":68,"children":69,"icon":71},"Membres","\u002Ffr\u002Finterface\u002Fmembers","fr\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},"Adhésions","\u002Ffr\u002Finterface\u002Fmemberships","fr\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},"Ligues","\u002Ffr\u002Finterface\u002Fleagues","fr\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},"Compétitions planifiées","\u002Ffr\u002Finterface\u002Fleagues\u002Fplanned-competitions","fr\u002F1.interface\u002F04.leagues\u002F2.planned-competitions",{"title":91,"path":92,"stem":93,"children":94,"icon":96},"Tournois","\u002Ffr\u002Finterface\u002Ftournaments","fr\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},"Paiements et abonnements","\u002Ffr\u002Finterface\u002Fpayments","fr\u002F1.interface\u002F06.payments\u002F1.index",[102],{"title":103,"path":99,"stem":100,"icon":104},"Paiements","sporty-credit-card",{"title":106,"path":107,"stem":108,"children":109,"icon":111},"Boutique","\u002Ffr\u002Finterface\u002Fshop","fr\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},"Écoles et entraîneurs","\u002Ffr\u002Finterface\u002Fschools","fr\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-mails","\u002Ffr\u002Finterface\u002Femails","fr\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},"Vidéo et caméras","\u002Ffr\u002Finterface\u002Fvideo","fr\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},"Caméras Dahua","\u002Ffr\u002Finterface\u002Fvideo\u002Fdahua","fr\u002F1.interface\u002F10.video\u002F2.dahua",{"title":138,"path":139,"stem":140,"icon":141},"Autres caméras RTMP","\u002Ffr\u002Finterface\u002Fvideo\u002Frtmp","fr\u002F1.interface\u002F10.video\u002F3.rtmp","sporty-video",{"title":143,"path":144,"stem":145,"icon":146},"Analyse des matchs","\u002Ffr\u002Finterface\u002Fvideo\u002Fanalytics","fr\u002F1.interface\u002F10.video\u002F4.analytics","sporty-chart-simple",{"title":148,"path":149,"stem":150,"children":151,"icon":153},"Rapports","\u002Ffr\u002Finterface\u002Freports","fr\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},"Paramètres","\u002Ffr\u002Finterface\u002Fsettings","fr\u002F1.interface\u002F12.settings\u002F1.index",[159,161,165,169],{"title":160,"path":156,"stem":157,"icon":60},"Paramètres du club",{"title":162,"path":163,"stem":164,"icon":16},"Règles de réservation et liste de prix","\u002Ffr\u002Finterface\u002Fsettings\u002Fbooking-rules","fr\u002F1.interface\u002F12.settings\u002F2.booking-rules",{"title":166,"path":167,"stem":168,"icon":78},"Inscription et pages légales","\u002Ffr\u002Finterface\u002Fsettings\u002Fsignup-and-legal","fr\u002F1.interface\u002F12.settings\u002F3.signup-and-legal",{"title":170,"path":171,"stem":172,"icon":173},"Administrateurs et rôles","\u002Ffr\u002Finterface\u002Fsettings\u002Fadministrators-and-roles","fr\u002F1.interface\u002F12.settings\u002F4.administrators-and-roles","sporty-user",{"title":175,"path":176,"stem":177,"children":178,"icon":180},"Publication sur les réseaux sociaux","\u002Ffr\u002Finterface\u002Fsocial","fr\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},"Connecter des canaux","\u002Ffr\u002Finterface\u002Fsocial\u002Fchannels","fr\u002F1.interface\u002F13.social\u002F2.channels",{"title":186,"path":187,"stem":188,"children":189,"icon":28},"Événements à places numérotées","\u002Ffr\u002Finterface\u002Fseated-events","fr\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},"Plans de salle","\u002Ffr\u002Finterface\u002Fseated-events\u002Fseating-plans","fr\u002F1.interface\u002F14.seated-events\u002F2.seating-plans",{"title":196,"path":197,"stem":198,"icon":16},"Vendre des places","\u002Ffr\u002Finterface\u002Fseated-events\u002Fselling-seats","fr\u002F1.interface\u002F14.seated-events\u002F3.selling-seats",{"title":200,"path":201,"stem":202,"icon":39},"En vente et à l'entrée","\u002Ffr\u002Finterface\u002Fseated-events\u002Fon-sale","fr\u002F1.interface\u002F14.seated-events\u002F4.on-sale",{"title":204,"path":205,"stem":206,"children":207,"icon":16},"Abonnements saisonniers","\u002Ffr\u002Finterface\u002Fseason-tickets","fr\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},"Site web","\u002Ffr\u002Fwebsite","fr\u002F2.website\u002F1.index",[215,218,223,227,232],{"title":216,"path":212,"stem":213,"icon":217},"Créateur de site web","sporty-browser",{"title":219,"path":220,"stem":221,"icon":222},"Pages, hero et pied de page","\u002Ffr\u002Fwebsite\u002Fpages","fr\u002F2.website\u002F2.pages","sporty-file-lines",{"title":224,"path":225,"stem":226,"icon":180},"Actualités et événements","\u002Ffr\u002Fwebsite\u002Fnews-and-events","fr\u002F2.website\u002F3.news-and-events",{"title":228,"path":229,"stem":230,"icon":231},"Entraîneurs et galerie","\u002Ffr\u002Fwebsite\u002Fcoaches-and-gallery","fr\u002F2.website\u002F4.coaches-and-gallery","sporty-images",{"title":233,"path":234,"stem":235,"icon":236},"FAQ et sponsors","\u002Ffr\u002Fwebsite\u002Ffaq-and-sponsors","fr\u002F2.website\u002F5.faq-and-sponsors","sporty-circle-question",{"title":238,"path":239,"stem":240,"children":241,"icon":173},"Pour les membres","\u002Ffr\u002Fmembers","fr\u002F3.members\u002F1.index",[242,244,248,252,256,260,264,268],{"title":243,"path":239,"stem":240,"icon":173},"Utiliser l'application des membres",{"title":245,"path":246,"stem":247,"icon":16},"Réserver un court","\u002Ffr\u002Fmembers\u002Fbooking","fr\u002F3.members\u002F2.booking",{"title":249,"path":250,"stem":251,"icon":104},"Adhésions et paiements","\u002Ffr\u002Fmembers\u002Fpayments","fr\u002F3.members\u002F3.payments",{"title":253,"path":254,"stem":255,"icon":85},"Comment fonctionnent les compétitions","\u002Ffr\u002Fmembers\u002Fhow-competitions-work","fr\u002F3.members\u002F4.how-competitions-work",{"title":257,"path":258,"stem":259,"icon":96},"Ligues, tournois et résultats","\u002Ffr\u002Fmembers\u002Fcompetitions","fr\u002F3.members\u002F5.competitions",{"title":261,"path":262,"stem":263,"icon":71},"Famille et enfants","\u002Ffr\u002Fmembers\u002Ffamily","fr\u002F3.members\u002F6.family",{"title":265,"path":266,"stem":267,"icon":78},"Votre compte","\u002Ffr\u002Fmembers\u002Faccount","fr\u002F3.members\u002F7.account",{"title":269,"path":270,"stem":271,"icon":236},"Obtenir de l'aide","\u002Ffr\u002Fmembers\u002Fhelp","fr\u002F3.members\u002F8.help",{"title":273,"path":274,"stem":275,"children":276,"icon":278},"OAuth et Se connecter avec Sporty","\u002Ffr\u002Foauth","fr\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},"Enregistrer une application","\u002Ffr\u002Foauth\u002Fclients","fr\u002F4.oauth\u002F2.clients",{"title":284,"path":285,"stem":286,"icon":278},"Le flux du code d'autorisation","\u002Ffr\u002Foauth\u002Fauthorization-code","fr\u002F4.oauth\u002F3.authorization-code",{"title":288,"path":289,"stem":290,"icon":278},"Scopes","\u002Ffr\u002Foauth\u002Fscopes","fr\u002F4.oauth\u002F4.scopes",{"title":292,"path":293,"stem":294,"icon":278},"Se connecter avec Sporty","\u002Ffr\u002Foauth\u002Fsign-in-with-sporty","fr\u002F4.oauth\u002F5.sign-in-with-sporty",{"title":296,"path":297,"stem":298,"icon":278},"L'API partenaire","\u002Ffr\u002Foauth\u002Fpartner-api","fr\u002F4.oauth\u002F6.partner-api",{"title":300,"path":301,"stem":302,"icon":278},"Synchroniser les réservations","\u002Ffr\u002Foauth\u002Fbooking-sync","fr\u002F4.oauth\u002F7.booking-sync",{"title":304,"path":305,"stem":306,"icon":278},"MCP et clients IA","\u002Ffr\u002Foauth\u002Fmcp-and-ai-clients","fr\u002F4.oauth\u002F8.mcp-and-ai-clients",{"title":308,"path":309,"stem":310,"icon":311},"Paiement par agent","\u002Ffr\u002Foauth\u002Fagent-checkout","fr\u002F4.oauth\u002F9.agent-checkout","sporty-cart-shopping",{"id":313,"title":280,"body":314,"description":521,"extension":522,"links":523,"meta":524,"navigation":525,"path":281,"seo":526,"stem":282,"__hash__":529},"docs_fr\u002Ffr\u002F4.oauth\u002F2.clients.md",{"type":315,"value":316,"toc":513},"minimark",[317,321,384,389,392,430,451,455,462,469,472,476,479,486,489,493,496,510],[318,319,320],"p",{},"Il existe trois façons d'obtenir un client id.",[322,323,324,340],"table",{},[325,326,327],"thead",{},[328,329,330,334,337],"tr",{},[331,332,333],"th",{},"Comment",[331,335,336],{},"Pour qui",[331,338,339],{},"Ce que vous obtenez",[341,342,343,359,370],"tbody",{},[328,344,345,353,356],{},[346,347,348,349],"td",{},"Un administrateur du club l'enregistre dans l'administration Sporty, sous ",[350,351,352],"strong",{},"Paramètres → Clients API",[346,354,355],{},"Quiconque développe pour un seul club",[346,357,358],{},"Un client confidentiel, déjà validé, lié à ce club",[328,360,361,364,367],{},[346,362,363],{},"Nous l'enregistrons pour vous",[346,365,366],{},"Les partenaires qui s'intègrent à de nombreux clubs",[346,368,369],{},"Un client confidentiel, plus une autorisation par club pour chaque club qui l'accepte",[328,371,372,378,381],{},[346,373,374],{},[375,376,377],"a",{"href":305},"Enregistrement dynamique",[346,379,380],{},"Agents et clients MCP",[346,382,383],{},"Un client public, en attente de validation",[385,386,388],"h2",{"id":387},"uri-de-redirection","URI de redirection",[318,390,391],{},"Le code d'autorisation est envoyé à l'adresse que vous enregistrez ici : c'est donc le seul\nparamètre qu'il faut absolument régler avec précision. Nous imposons :",[393,394,395,406,416,424],"ul",{},[396,397,398,405],"li",{},[350,399,400,404],{},[401,402,403],"code",{},"https"," uniquement"," — avec une exception, décrite ci-dessous",[396,407,408,411,412,415],{},[350,409,410],{},"pas de caractères génériques"," — ",[401,413,414],{},"https:\u002F\u002F*.example.com\u002Fcb"," est refusé",[396,417,418,411,421,415],{},[350,419,420],{},"pas de fragments",[401,422,423],{},"https:\u002F\u002Fexample.com\u002Fcb#anything",[396,425,426,429],{},[350,427,428],{},"correspondance exacte"," au moment de l'autorisation ; une URI simplement similaire n'est pas acceptée",[318,431,432,433,435,436,439,440,443,444,450],{},"L'exception est l'adresse de bouclage (loopback). Une application de bureau, CLI ou native n'a\npas d'adresse ",[401,434,403],{}," propre ; ",[401,437,438],{},"http:\u002F\u002F127.0.0.1\u002Fcallback"," et ",[401,441,442],{},"http:\u002F\u002Flocalhost\u002Fcallback"," sont\ndonc autorisées, et le port est ignoré lors de la comparaison (",[375,445,449],{"href":446,"rel":447},"https:\u002F\u002Fwww.rfc-editor.org\u002Frfc\u002Frfc8252",[448],"nofollow","RFC 8252",").",[385,452,454],{"id":453},"secrets-client","Secrets client",[318,456,457,458,461],{},"Un client confidentiel reçoit son secret ",[350,459,460],{},"une seule fois",", dans la réponse qui le crée. Il est\nstocké sous forme de hachage, si bien que personne — nous compris — ne peut le relire. En cas de\nperte, renouvelez-le et mettez à jour votre application.",[318,463,464,465,468],{},"Renouveler un secret ne révoque ",[350,466,467],{},"pas"," les jetons existants. Les sessions que votre application\ndétient déjà continuent de fonctionner ; seules les nouvelles demandes de jeton exigent le\nnouveau secret.",[318,470,471],{},"Un client public (tout ce qui ne peut pas garder un secret : une application dans le navigateur,\nune application mobile, une CLI) n'a aucun secret. C'est PKCE qui le protège, et PKCE est\nobligatoire pour tous les clients, quels qu'ils soient.",[385,473,475],{"id":474},"validation","Validation",[318,477,478],{},"Un client enregistré par un administrateur de club, ou par nous, est validé d'emblée.",[318,480,481,482,485],{},"Un client qui s'est enregistré lui-même est ",[350,483,484],{},"en attente",". Il fonctionne — mais uniquement pour\nle compte qui l'a enregistré. C'est voulu : vous pouvez développer et tester une intégration de\nbout en bout avant que quiconque chez Sporty vous ait parlé, et tant que nous ne l'avons pas\nexaminée, aucun autre compte n'est exposé. Quand vous êtes prêt, contactez-nous et nous\nl'examinerons.",[318,487,488],{},"Sur l'écran de consentement, le membre est informé lorsqu'une application n'a pas été examinée.",[385,490,492],{"id":491},"retrait-dune-application","Retrait d'une application",[318,494,495],{},"Deux choses peuvent mettre fin à une intégration :",[393,497,498,504],{},[396,499,500,503],{},[350,501,502],{},"Supprimer"," l'application (par son propriétaire) révoque immédiatement tous ses jetons.",[396,505,506,509],{},[350,507,508],{},"La bannir"," (par l'équipe Sporty) fait de même et refuse les nouveaux. Réservé aux\napplications qui font ce qu'elles ne devraient pas.",[318,511,512],{},"Aucune de ces deux actions n'est réversible de votre côté, et aucune n'arrive par surprise —\nnous vous aurons parlé avant, sauf si quelque chose est en train de mal tourner.",{"title":514,"searchDepth":515,"depth":515,"links":516},"",2,[517,518,519,520],{"id":387,"depth":515,"text":388},{"id":453,"depth":515,"text":454},{"id":474,"depth":515,"text":475},{"id":491,"depth":515,"text":492},"Comment obtenir un client id, à quoi peut ressembler une URI de redirection, et ce que signifie « en attente de validation ».","md",null,{},{"icon":278},{"title":527,"description":528},"Enregistrer une application OAuth auprès de Sporty","Client ids, secrets, URI de redirection et étape de validation.","Qhj8kP0gEF8dxuVfZfd_g9fsGdP0w8rFp0GyUwdf0CY",[531,533],{"title":273,"path":274,"stem":275,"description":532,"icon":278,"children":-1},"Permettez aux utilisateurs de connecter votre application à leur compte Sporty, avec leur accord et rien de plus.",{"title":284,"path":285,"stem":286,"description":534,"icon":278,"children":-1},"Le flux complet avec de vraies requêtes, de l'envoi d'une personne vers Sporty jusqu'au rafraîchissement d'un jeton.",1792420862026]