OAuth et Se connecter avec Sporty

Scopes

Chaque scope, ce que le membre lit à son sujet, et quels types de clients peuvent le demander.

Demandez le strict nécessaire. L'écran de consentement montre au membre la description ci-dessous, mot pour mot : une longue liste de scopes, c'est une longue liste de raisons de refuser.

Tout ce qui ne figure pas dans cette liste est refusé avec invalid_scope.

Certains scopes sont définis avant l'API. Un scope marqué Pas encore peut être demandé, et un membre peut l'accepter, mais aucun point de terminaison n'y répond encore : un jeton qui le détient n'atteint donc rien de plus. Développez avec les scopes marqués Oui. Les documents de découverte (/.well-known/oauth-authorization-server et les autres) annoncent exactement ceux-là dans scopes_supported, et un scope y apparaît le jour où un point de terminaison commence à le servir.

Identité

ScopeCe que lit le membreDisponible
openidConfirmer qui vous êtesOui
profileVoir votre nom et votre photo de profilOui
emailVoir votre adresse e-mailOui

Les données du membre

ScopeCe que lit le membreDisponible
me.readVoir votre profil de baseOui
me.reservations.readVoir vos réservations de courtsOui
me.reservations.writeRéserver et annuler des courts pour vousOui
me.purchases.writeAcheter du temps de court pour vous, avec une carte que vous confiez à l'applicationOui, paiement par agent
me.results.readVoir vos résultats de matchsOui
me.memberships.readVoir les clubs dont vous êtes membreOui

Les données d'un club

ScopeCe que lit le membreDisponible
club.readVoir les informations publiques du clubOui
club.members.readVoir les membres du clubOui
club.members.writeAjouter et modifier les membres du clubOui
club.courts.readVoir les courts du clubOui
club.reservations.readVoir les réservations du clubOui
club.reservations.writeCréer et annuler les réservations du clubOui
club.checkout.writeVendre le temps de court du club aux invités qu'amène l'applicationOui, paiement par agent
club.events.readVoir les événements du clubPas encore
club.shop.orders.readVoir les commandes de la boutique du clubPas encore

Partenaire

Identifiants client uniquement — ces scopes décrivent une application qui agit sans membre présent.

ScopeSignificationDisponible
partner.members.provisionCréer des membres pour le compte d'un partenairePas encore
partner.login.handoffConnecter un membre depuis une application partenaireOui

Qui peut demander quoi

ClientPeut demander
Enregistré par un administrateur de club, ou par nousopenid, profile, email, me.*, club.*
Auto-enregistré (dynamique)openid, profile, email, me.* — jamais les données d'un club
Identifiants clientpartner.*, club.* — me.* n'a aucun sens sans membre

club.* exige aussi l'accord du club

Détenir un scope club.* ne signifie pas qu'on a le droit de l'utiliser.

Avant qu'un scope club.* produise le moindre effet, trois parties distinctes doivent avoir donné leur accord :

  1. Sporty a validé votre application ;
  2. l'administrateur du club a accordé ce club à votre application, ainsi que ce scope ;
  3. le membre (s'il y en a un) a autorisé votre application pour ce club.

Chacune des trois peut se retirer de son côté, à tout moment, et votre accès prend fin à l'instant même. Si un club ne vous a pas accordé l'accès, les appels répondent 403 access_denied avec un message indiquant qu'un administrateur doit d'abord vous approuver — ce n'est pas une erreur à réessayer, mais une question à aller poser.

Pour quel club agit un jeton

Vous ne nous l'indiquez jamais dans le corps de la requête ; nous le déduisons de votre client.

  • Un client appartenant à un seul club agit toujours pour ce club.
  • Un client ayant accès à plusieurs clubs doit en désigner un avec l'en-tête X-Club. Sans lui, vous obtenez 400 club_required. L'en-tête choisit parmi les clubs qui vous ont déjà été accordés — il ne peut pas vous en donner un.

GET /api/partner/v1/clubs/me vous indique pour quel club un jeton agit finalement.