Skip to content

Instructions pour agents IA

Cette page est le point d'entrée rapide pour un agent IA (Claude Code, Cursor, OpenCode ou équivalent) chargé de construire une intégration partenaire avec l'API Resamania. Considère-la comme la source de vérité pour les conventions et les valeurs par défaut, et suis les pages liées pour le détail de chaque sujet.

Ce qu'est Resamania

Resamania (par Xplor Technologies) est un SaaS multi-tenant de gestion de clubs de sport/fitness : adhérents (CRM), contrôle d'accès, planning et réservation de cours, ventes en ligne, facturation (CB, SEPA, BACS) et campagnes marketing. L'API REST publique (sécurisée en OAuth2, Symfony / API Platform) est ce que documente ce site. L'application mobile adhérent s'appelle Xplor Active.

Faits non négociables

  • Passe toujours par l'API Gateway. Depuis juin 2026, les appels directs à l'API Resamania ne sont plus supportés — toute requête passe par l'API Gateway. Voir API Gateway.
  • Chaque URL est scopée par tenant. Les requêtes sont de la forme https://{gateway_base_url}/{clientToken}/... — le clientToken identifie le client Resamania (club ou chaîne de clubs) avec lequel tu t'intègres. Ne l'invente jamais ; il est fourni lors de l'enregistrement de l'application partenaire.
  • Les identifiants sont des IRI, pas des nombres bruts. Référence les autres ressources par leur IRI complète (ex. /{clientToken}/clubs/22), jamais par un simple entier.
  • En-têtes requis sur chaque appel : authorization: Bearer {access_token}, x-gravitee-api-key, et x-user-club-id. Ajoute x-user-network-node-id dès que le client exploite une chaîne de clubs. Détail complet : composantes d'une requête.
  • Appelle l'API uniquement depuis ton backend. L'API Resamania ne doit jamais être appelée directement depuis un navigateur ou une application mobile. C'est ton serveur qui détient les identifiants et parle à Resamania ; il n'expose ensuite que ce dont ton propre front a besoin. Voir Sécurité et responsabilités du partenaire.
  • client_credentials est générique, pas personnalisé. Quand grant_type=client_credentials est utilisé, le token obtenu ne porte aucun contexte club/utilisateur implicite — chaque requête suivante effectuée avec ce token doit systématiquement définir à la fois x-user-club-id et x-user-network-node-id, même pour un client mono-club où le second en-tête est normalement optionnel. Voir la méthode "client_credentials".
  • Sandbox ≠ production. La sandbox ne contient que des données de test ; n'attends et ne demande jamais de vraies données adhérents dessus. L'accès en production n'est ouvert qu'après revue par l'équipe Resamania de tes appels en phase de test — voir Démarrage.

Choisir une méthode d'authentification

Resamania propose plusieurs grant types OAuth2 — le choix dépend de qui agit, pas d'une valeur par défaut :

Grant typeÀ utiliser quand
client_credentialsAccès serveur à serveur, non personnalisé (ton backend agissant pour lui-même)
codeUn utilisateur final autorise ton application de façon interactive
passwordTu collectes directement les identifiants d'un utilisateur final Resamania (usage legacy/limité)
http://clubclientcredentialsAccès serveur à serveur scopé à un club précis
http://contactclientcredentialsAccès pour le compte d'un contact/adhérent précis
refresh_tokenRenouveler une session existante sans ré-authentification

Détail complet : Authentification.

Implémenter un workflow métier

N'improvise pas l'enchaînement des appels — chaque domaine a un ordre documenté et obligatoire. Lis la page correspondante avant d'écrire le code, pas après :

Référence OpenAPI complète, une spec par domaine métier (catalogue, club, contact, comptabilité, vente, planning...) : API Reference.

Valeurs par défaut raisonnables quand le partenaire n'a pas précisé

  • Préfère les webhooks au polling pour être notifié des changements (voir Webhooks) ; si tu dois quand même faire du polling, respecte la politique de rate limiting et applique un backoff sur les 429.
  • Traite les appels de création de paiement (POST .../sales/{id}/payments) comme non idempotents et dangereux à rejouer sans précaution — un retry naïf après un timeout peut créer un paiement en double. Protège-toi explicitement contre ce cas.
  • Ne persiste ni ne logue jamais de données de carte, d'IBAN ou autres données de paiement au-delà de ce qui est strictement nécessaire au traitement en cours.
  • Traite les données adhérents comme des données personnelles au sens RGPD / UK GDPR : ne collecte que ce dont l'intégration a besoin, et respecte le signal d'anonymisation (isAnonymous) en anonymisant aussi ta propre copie des données.

Avant de demander l'accès en production

Fais tourner le skill de revue avant recette sur l'intégration que tu as construite. Il produit un inventaire des endpoints et un rapport de contrôle à remettre à l'équipe API de Resamania — le moyen le plus rapide de passer la phase de test décrite dans Démarrage.

Index complet du site

Pour tout ce qui n'est pas couvert ci-dessus, récupère llms.txt pour un index condensé de toutes les pages du site, ou parcours le menu latéral. La version anglaise de cette documentation est disponible à la racine du site (sans préfixe).