Quand tu connectes une appli tierce à MoveMentors via OAuth (le cas le plus fréquent : un assistant IA via MCP), tu accordes des portées de permission spécifiques. Cet article liste chaque portée et ce qu'elle fait.
Le modèle de portées
OAuth MoveMentors suit le modèle standard OAuth 2.1 avec PKCE. Tu autorises un client (par ex. Claude), qui reçoit un jeton lié à des portées spécifiques. Chaque requête du client est validée par rapport à ces portées.
Si tu n'accordes que read:bookings, le client ne peut lire que les réservations ; les tentatives d'utiliser d'autres outils renvoient 403 Forbidden.
Tu peux accorder des portées individuelles pendant le flux de consentement OAuth. Tu peux révoquer à tout moment.
Portées de lecture
read:profile
Lire ton propre profil utilisateur (nom, e-mail, type de compte, paramètres).
Requis par presque tous les clients. L'accorder permet à l'IA de savoir qui tu es ; sans cela, l'assistant ne peut pas personnaliser.
read:mentor
Lire ton profil mentor (bio, photos, lieux, certifications).
Pour les comptes mentor.
read:studio
Lire ton profil studio.
Pour les comptes studio.
read:classes
Lire les cours que tu héberges (titre, planning, capacité, prix, etc.).
read:bookings
Lire tes réservations (à la fois en tant qu'hôte et en tant qu'élève).
read:clients
Lire ton CRM clients (clients qui ont réservé, leur historique, tes notes).
read:financials
Lire ton tableau de bord de revenus et de dépenses. Fonctionnalité Pro+.
read:reviews
Lire les avis sur ton profil et les avis que tu as laissés.
read:messages
Lire ta boîte de réception (demandes, messages mentor).
read:public
Rechercher dans le répertoire public (mentors, studios, cours). Tout le monde peut l'utiliser sans authentification, mais en tant que portée authentifiée elle renvoie des données légèrement enrichies (par ex. la distance depuis ton lieu de résidence enregistré).
Portées d'écriture
write:profile
Mettre à jour ton profil utilisateur (nom, paramètres).
write:mentor / write:studio
Mettre à jour ton profil mentor ou studio.
write:classes
Créer, mettre à jour, supprimer tes cours. Modifier les plannings, la capacité, la tarification.
Fonctionnalité Pro+ ; les comptes du palier gratuit qui accordent cette portée ne peuvent toujours pas faire de modifications (l'outil renvoie "upgrade required").
write:bookings
Créer de nouvelles réservations (réserver au nom d'un élève), annuler des réservations, marquer comme payé.
Note : les réservations ont des contraintes. Tu ne peux pas créer de réservation sur un cours complet via l'API, pas plus que via l'UI.
write:clients
Mettre à jour les notes et tags clients.
write:financials
Créer, mettre à jour, supprimer des dépenses. Modifier la catégorisation des revenus. Fonctionnalité Pro+.
write:reviews
Répondre aux avis sur ton profil.
write:messages
Envoyer des messages (demandes, réponses, prospection mentor).
Portées spéciales
mcp:tools
Autorise le client à appeler des outils MCP. Requis pour les serveurs MCP ; sans cela, le point de terminaison MCP refuse les requêtes.
offline_access
Autorise le client à rafraîchir son jeton d'accès sans que tu aies à réautoriser. Portée OAuth standard ; si elle n'est pas accordée, le client doit se réauthentifier à chaque fois que le jeton expire (environ 1 heure).
La plupart des clients la demandent pour que l'utilisateur n'ait pas à se réauthentifier constamment.
Groupements de portées courants
La plupart des clients demandent un groupement raisonnable plutôt que toutes les portées. Groupements typiques :
- Lecture seule :
read:profile,read:bookings,read:classes,read:clients. Utile pour les cas "montre-moi mon planning". - Assistant personnel : lecture seule plus
write:bookings,write:classes,write:messages. L'assistant peut gérer tes opérations. - Contrôle total : tout sauf
write:financials. Pour les utilisateurs avancés.
Tu peux refuser des portées spécifiques pendant l'écran de consentement ; le client s'adapte (certains outils seront indisponibles, mais le reste fonctionne).
Ce que je peux faire pendant le consentement
L'écran de consentement OAuth affiche :
- Le nom du client (par ex. "Claude Desktop").
- Le site web du client (si fourni).
- Chaque portée demandée par le client.
- Une case à cocher par portée (certaines sont pré-cochées comme requises).
Tu peux :
- Tout approuver (la facilité par défaut).
- Décocher des portées spécifiques et approuver le sous-ensemble.
- Refuser entièrement.
Révoquer l'accès
/settings/connected-apps affiche chaque client OAuth connecté à ton compte. Pour chacun, tu vois :
- Le nom du client.
- Quand il a été autorisé.
- Les portées qu'il possède.
- L'horodatage de dernière utilisation.
- Un bouton "Révoquer".
Clique sur révoquer et le jeton est invalidé. Le client perd immédiatement l'accès. Si tu réautorises le même client plus tard, tu repars à zéro ; pas de portées "mémorisées".
Journal d'audit
Chaque requête OAuth est enregistrée dans ton journal d'audit sur /settings/audit-log. Visible :
- Quel client a fait la requête.
- Quel outil a été appelé.
- Les arguments (avec les valeurs sensibles masquées).
- Le statut de la réponse.
Utile quand tu veux savoir ce qu'un assistant IA a fait en ton nom.
Ce que les portées ne couvrent pas
Quelques choses que les portées ne permettent PAS, quel que soit l'octroi :
- Lire les données privées d'autres utilisateurs. Même avec toutes les portées, un client ne peut accéder qu'à TES données et aux données publiques des autres.
- Déclencher des paiements ou modifier les paramètres côté Stripe. Cela se fait chez Stripe, pas chez nous.
- Modifier les paramètres de compte qui nécessitent une confirmation par e-mail (changer ton e-mail, etc.).
C'est intentionnel. Certaines actions ont trop d'enjeux pour être déléguées.
Questions fréquentes
Un client peut-il demander une portée que je n'ai pas accordée ? Le client recevra une 403 sur tout outil nécessitant une portée non accordée. Il ne peut pas s'escalader.
Puis-je voir ce qu'un ancien client faisait si je l'ai révoqué ? Oui. Le journal d'audit conserve les requêtes passées, même de clients révoqués.
Plusieurs clients peuvent-ils se connecter avec des portées qui se chevauchent ? Oui. Chaque client connecté a son propre jeton. Tu peux avoir Claude avec un accès complet ET ChatGPT en lecture seule.
Y a-t-il un moyen de cibler par cours ou par client (plus granulaire que les portées) ? Pas pour l'instant. Les portées sont la frontière ; nous ne prenons pas en charge "lire les réservations pour le cours X uniquement" ou des ACL similaires à grain fin. Nous pourrions l'ajouter s'il y a une demande.
Pourquoi n'y a-t-il pas de portée delete:account ?
La suppression de compte nécessite une confirmation par e-mail. Elle ne peut pas être faite via OAuth, même avec toutes les portées.
Prochaines étapes
- Serveur MCP : le principal consommateur d'OAuth.
- Applications connectées : gère tes autorisations.