Introduction
Bienvenue dans l'API Performance Hub. Cette API gère les données des clubs et les systèmes clés qui s'intègrent à votre club et à ses systèmes externes. Il ne s'agit pas d'une API publique. Pour en savoir plus sur l'utilisation des différents systèmes Performance Hub pris en charge par cette API, consultez l'entrée correspondant au système souhaité dans notre [documentation Performance Hub](https://docs.performancehub.co).
URL de base
https://portal.hub.gymsystems.co
Authentification
Les informations d'authentification vous seront communiquées une fois votre intégration approuvée.
Événement « tour de l'agent terminé » signalé par l'appareil (déclencheur de notification web push)
Appelé par le sidecar d'un appareil AI Agent appairé (jamais par un navigateur) lorsqu'une exécution de l'agent lancée depuis l'interface web se termine après avoir duré plus longtemps que le seuil de notification de l'appareil. Authentifié par un JWT HS256 de courte durée propre à l'appareil (aud 'events'). Dédoublonné par appareil+session+début et limité en débit par appareil, puis envoyé aux abonnements push HTML5 de l'utilisateur à l'origine de l'exécution, avec un lien direct vers la conversation.
Corps de la requête
Point de terminaison
POST /ai/events/agent-turn-complete
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/ai/events/agent-turn-complete \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Notification push initiée par l'agent (skill ph-notify)
Appelé par le sidecar d'un appareil AI Agent appairé pour le compte de l'agent embarqué (la skill ph-notify) afin d'envoyer une notification quelconque vers le navigateur et les appareils mobiles d'un utilisateur. Authentifié par un JWT HS256 de courte durée propre à l'appareil (aud 'events'). L'utilisateur cible doit avoir accès à l'appareil (politique d'accès par agent) ; s'il est omis, la notification est envoyée au propriétaire de l'appareil. Limité en débit par appareil, indépendamment des événements de fin de tour.
Corps de la requête
Point de terminaison
POST /ai/events/agent-notify
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/ai/events/agent-notify \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Envoyer une image de notification (skill ph-notify)
Accepte un corps d'image brut provenant d'un appareil appairé (JWT aud 'events') et le stocke dans le bucket public notify-media sous une clé UUID impossible à deviner. Les objets sont supprimés automatiquement après 7 jours (cycle de vie S3). Renvoie l'URL https publique à utiliser comme `imageUrl` dans /ai/events/agent-notify. Taille maximale de 5 Mo ; png/jpeg/gif/webp uniquement.
Corps de la requête
Point de terminaison
POST /ai/media/notify-image
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/ai/media/notify-image \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Relais MCP d'appareil pour Connected Apps (outils SaaS externes)
Point de terminaison MCP Streamable HTTP pour les appareils Agent IA appairés (serveur MCP "connected_apps" sur l'écouteur :8790 du sidecar de l'appareil). Authentifié par un JWT HS256 de courte durée propre à chaque appareil (aud 'mcp', même identifiant que /mcp) et conditionné par l'indicateur d'activation Connected Apps de l'AGENT (les connexions sont propres à chaque appareil agent, pas à chaque installation). Les requêtes sont transmises en flux au serveur MCP de session de la plateforme d'outils en amont de l'agent, avec les en-têtes de session injectés côté serveur ; les identifiants en amont n'atteignent jamais l'appareil. Les noms d'outils et la marque du fournisseur sont passés en marque blanche dans les deux sens pendant le transit. Une erreur 401/410 en amont (session expirée) déclenche une recréation de session et une nouvelle tentative.
Point de terminaison
POST /mcp/apps
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/mcp/apps \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Rechercher dans les journaux d'audit de l'API (accès au module IAM & Admin)
Recherchez et filtrez les journaux d'accès à l'API grâce à des options de filtrage avancées. Les utilisateurs ne voient que les journaux des organisations auxquelles ils ont accès.
Paramètres
organisationId `string` (facultatif) ID de l'organisation pour la vérification des ACL (obligatoire)Corps de la requête
Point de terminaison
POST /api/admin/audit-logs/search
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/admin/audit-logs/search \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Obtenir les statistiques des journaux d'audit mises en cache dans Redis (accès au module IAM & Admin)
Récupère les statistiques agrégées depuis le cache Redis pour un chargement instantané du tableau de bord
Paramètres
timeWindow `string` (facultatif) Fenêtre de temps des statistiques (12h par défaut)Point de terminaison
GET /api/admin/audit-logs/statistics-cached
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/admin/audit-logs/statistics-cached \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtenir les statistiques des journaux d'audit (accès au module IAM & Admin)
Récupère les statistiques agrégées pour le tableau de bord. Limité aux organisations de l'utilisateur.
Paramètres
startTime `number` (facultatif) Heure de début (horodatage Unix), par défaut il y a 24 heures endTime `number` (facultatif) Heure de fin (horodatage Unix), par défaut maintenantPoint de terminaison
GET /api/admin/audit-logs/statistics
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/admin/audit-logs/statistics \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtenir les séries temporelles des journaux d'audit (accès au module IAM & Admin)
Récupère des séries temporelles regroupées par intervalles pour la visualisation chronologique des requêtes
Paramètres
timeWindow `string` (facultatif) Fenêtre de temps des séries temporelles : - 1h : dernière heure (blocs de 10 minutes) - 12h : 12 dernières heures (blocs de 10 minutes) - 24h : 24 dernières heures (blocs de 10 minutes) - 7d : 7 derniers jours (blocs d'une heure) - 14d : 14 derniers jours (blocs d'une heure)Point de terminaison
GET /api/admin/audit-logs/timeseries
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/admin/audit-logs/timeseries \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtenir les organisations dont l'utilisateur peut consulter les journaux d'audit (accès au module IAM & Admin)
Renvoie la liste des organisations dont l'utilisateur actuel peut consulter les journaux d'audit
Point de terminaison
GET /api/admin/audit-logs/user-organisations
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/admin/audit-logs/user-organisations \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Appel initial pour créer un nouveau club. Notez que seul l'objet club « modèle » est créé : une seconde requête API est ensuite nécessaire pour compléter le club avec ses données, comme les horaires d'ouverture, l'emplacement, les URL des réseaux sociaux, etc.
Paramètres
body `string` (obligatoire) Objet JSON du nouveau club à ajouter au système.Point de terminaison
POST /api/admin/clubs/addclub
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/admin/clubs/addclub \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Ajoute un nouvel utilisateur au système
Paramètres
body `string` (obligatoire) Objet JSON des données utilisateur à ajouter ou mettre à jour.Point de terminaison
POST /api/users
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/users \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Répertorie tous les utilisateurs (comptes Google Apps) ayant accès au système et à l'API de back-office
Point de terminaison
GET /api/admin/users/listusers
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/admin/users/listusers \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Répertorie les clés MCP d'un utilisateur (masquées). Les utilisateurs peuvent répertorier leurs propres clés.
Paramètres
userId `string` (obligatoire)Point de terminaison
GET /api/users/{userId}/mcp-keys
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/users/{userId}/mcp-keys \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Crée une nouvelle clé API MCP pour un utilisateur. Les utilisateurs peuvent créer leurs propres clés.
Paramètres
userId `string` (obligatoire) body `object` (facultatif)Point de terminaison
POST /api/users/{userId}/mcp-keys
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/users/{userId}/mcp-keys \
-H "x-api-key: YOUR_API_KEY"
Révoque ou supprime une clé API MCP. Les utilisateurs peuvent supprimer leurs propres clés.
Paramètres
userId `string` (obligatoire) keyId `string` (obligatoire)Point de terminaison
DELETE /api/users/{userId}/mcp-keys/{keyId}
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/users/{userId}/mcp-keys/{keyId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Retirer un rôle à un utilisateur
Paramètres
userId `string` (facultatif) Adresse e-mail de l'utilisateur auquel retirer le rôle. roleId `string` (facultatif) ID du rôle à retirer à l'utilisateur.Point de terminaison
DELETE /api/users/{userId}/roles/{roleId}
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/users/{userId}/roles/{roleId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Met à jour les informations de profil d'un utilisateur existant (firstName, lastName, phoneNumber)
Paramètres
userId `string` (obligatoire) Adresse e-mail de l'utilisateur body `object` (obligatoire) Données du profil utilisateur à mettre à jourPoint de terminaison
PATCH /api/users/{userId}
Exemple de requête
curl -X PATCH https://portal.hub.gymsystems.co/api/users/{userId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Créer ou mettre à jour un rôle utilisateur
Paramètres
body `object` (facultatif)Point de terminaison
PUT /api/users/{userId}/roles
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/users/{userId}/roles \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Live Services exécutés sur l'AI Agent d'une installation (sélecteur de publication)
Récupère via le tunnel les Live Services détectés par le bridge de l'appareil, pour le sélecteur « Publish to Performance Hub » de l'applet. Nécessite le module ph-ai-agent ET un accès 'open' à l'appareil (même exigence que pour la publication). Chaque service est annoté avec publishedAppId lorsqu'une Custom App existe déjà pour son port.
Paramètres
club `string` (obligatoire) device `string` (obligatoire)Point de terminaison
GET /api/agent-apps/services/{club}/{device}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/services/{club}/{device} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Index des noms d'icônes MDI intégré à l'AI Agent d'une installation (sélecteur d'icônes)
Relaie via le tunnel l'index d'icônes MDI intégré au bridge de l'appareil (GET /__services/icons/mdi/index.json). Le sélecteur de publication et de modification utilise le catalogue fourni avec l'applet (même version épinglée 7.4.47) ; les SVG des applications publiées sont résolus à partir du paquet @mdi/js local de portal-server. Même exigence d'accès que le sélecteur de services (module ph-ai-agent + accès 'open' à l'appareil).
Paramètres
club `string` (obligatoire) device `string` (obligatoire)Point de terminaison
GET /api/agent-apps/mdi-index/{club}/{device}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/mdi-index/{club}/{device} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Récupérer un lot de SVG d'icônes MDI depuis l'AI Agent d'une installation (aperçus du sélecteur)
Résout en un seul appel jusqu'à 60 glyphes MDI nommés à partir du jeu d'icônes intégré à l'appareil, nettoyés côté serveur avec la même liste d'autorisation que les icônes d'application enregistrées. Utilisé par le sélecteur d'icônes pour afficher les résultats de recherche ; les noms inconnus renvoient null.
Paramètres
club `string` (obligatoire) device `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/agent-apps/mdi-icons/{club}/{device}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/agent-apps/mdi-icons/{club}/{device} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Audiences auxquelles le demandeur peut publier depuis cette installation
Périmètre d'audience que l'éditeur peut accorder, pour le sélecteur de publication et de modification : les installations couvertes par ses rôles ph-ai-agent (portée multi-installations), et s'il dispose du niveau organisation requis pour les audiences couvrant toute la marque ou toute l'organisation de cette installation. Les mêmes règles sont de nouveau appliquées côté serveur lors de la publication ou de la mise à jour (validatePublishAudience) : ce point de terminaison ne sert qu'à adapter l'interface.
Paramètres
club `string` (obligatoire)Point de terminaison
GET /api/agent-apps/audience-options/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/audience-options/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Suggestions d'utilisateurs pour l'audience nominative d'une application
Recherche UNIQUEMENT parmi les utilisateurs que le demandeur voit déjà : les personnes dont les rôles recoupent au moins une installation, région ou organisation de son propre accès ph-ai-agent. Une requête d'au moins 2 caractères et une limite de 10 résultats rendent ce point de terminaison inutilisable pour l'extraction de données ; le même périmètre est de nouveau appliqué côté serveur lors de l'enregistrement de l'audience.
Paramètres
club `string` (obligatoire) q `string` (obligatoire)Point de terminaison
GET /api/agent-apps/user-search/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/user-search/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Publier un Live Service AI Agent en tant que Custom App Performance Hub
Enregistre une application web hébergée par l'AI Agent de l'installation (un Live Service détecté par le bridge) comme élément du menu latéral « Custom Apps » pour l'audience choisie. Nécessite le module ph-ai-agent dans cette installation ET un accès 'open' à l'appareil ; l'audience est limitée par les portées de rôle de l'éditeur (vous ne pouvez jamais publier au-delà de ce que vous pouvez atteindre). L'identité du service est résolue EN DIRECT à partir de la liste /__services de l'appareil ; le schéma http/https n'est jamais enregistré.
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/agent-apps/publish/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/agent-apps/publish/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Custom Apps publiées visibles dans cette installation
Renvoie les applications publiées actives dont l'audience couvre cette installation, sous la forme affichée par le menu latéral (appId, name, icon, description). L'audience est de nouveau résolue en direct à chaque appel, si bien que les changements d'accès prennent effet immédiatement.
Paramètres
club `string` (obligatoire)Point de terminaison
GET /api/agent-apps/menu/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/menu/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Applications publiées gérées depuis cette installation (vue de l'éditeur)
Lignes complètes des applications dont l'installation d'ORIGINE est ce club, pour la liste de gestion « Published Apps » de l'applet. Chaque ligne est annotée avec canManage pour l'utilisateur demandeur (éditeur).
Paramètres
club `string` (obligatoire)Point de terminaison
GET /api/agent-apps/manage/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/manage/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Générer un jeton de consultation limité au service pour une Custom App publiée
Renvoie une URL signée de courte durée et un jeton que le navigateur utilise pour ouvrir UNE application publiée directement sur la passerelle relais régionale de l'appareil. Le jeton contient une revendication svc qui désigne le port du service, si bien que la passerelle limite la session à /__services/proxy/
Paramètres
club `string` (obligatoire) appId `string` (obligatoire)Point de terminaison
POST /api/agent-apps/access/{club}/{appId}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/agent-apps/access/{club}/{appId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Contact d'assistance d'une Custom App publiée (propriétaire)
Qui assure l'assistance de cette application publiée par un utilisateur : l'adresse e-mail de l'éditeur (ou, à défaut, du propriétaire de l'agent hôte). Affiché sur les panneaux hors ligne et d'erreur de l'utilisateur afin que les demandes d'assistance soient adressées au propriétaire de l'application plutôt qu'à Performance Hub : les applications publiées ne relèvent pas de l'assistance principale de PH. L'audience de l'application est vérifiée en premier ; les utilisateurs avec lesquels l'application n'a jamais été partagée n'obtiennent aucune information. Les applications en pause sont également résolues (les propriétaires reçoivent aussi les questions « pourquoi est-elle en pause ? »).
Paramètres
club `string` (obligatoire) appId `string` (obligatoire)Point de terminaison
GET /api/agent-apps/support-info/{club}/{appId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/support-info/{club}/{appId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Envoyer par e-mail une demande d'assistance au propriétaire d'une Custom App publiée
Envoie le message de l'utilisateur au contact d'assistance de l'application (l'éditeur, ou à défaut le propriétaire de l'agent) sous forme d'e-mail personnalisé : destinataire le propriétaire, copie à l'utilisateur (sa trace de la demande), réponse adressée à l'utilisateur afin que le propriétaire lui réponde directement. Les applications publiées sont gérées par les utilisateurs : leur assistance reste donc hors de la file de Performance Hub. L'audience est de nouveau vérifiée ; une demande par utilisateur et par application toutes les 15 minutes (délai d'attente Redis, ouvert en cas d'échec).
Paramètres
club `string` (obligatoire) appId `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/agent-apps/support-request/{club}/{appId}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/agent-apps/support-request/{club}/{appId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Mettre à jour une Custom App publiée (nom, icône, description, statut, audience)
Réservé à l'éditeur. Les modifications d'audience sont revalidées par rapport aux portées de rôle de la personne qui MODIFIE, avec les mêmes règles de limitation que pour la publication. Le statut bascule entre actif et en pause (les applications en pause disparaissent des menus et refusent la génération de jetons).
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/agent-apps/update/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/agent-apps/update/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Dépublier une Custom App (suppression logique)
Réservé à l'éditeur. Supprime logiquement la ligne du registre : l'application disparaît immédiatement des menus et la génération de jetons de consultation est refusée ; les sessions de passerelle déjà émises prennent fin à l'expiration du jeton.
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/agent-apps/unpublish/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/agent-apps/unpublish/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Transférer la propriété d'une Custom App publiée
Reprend le flux de réattribution du propriétaire de l'AI Agent : l'éditeur actuel ou un propriétaire de compte (module de facturation) peut confier l'application à un autre utilisateur, qui la gère ensuite. Le nouveau propriétaire doit avoir accès à l'installation du club d'origine de l'application.
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/agent-apps/transfer-owner/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/agent-apps/transfer-owner/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Rapport d'analyse complet (+ revue LLM) d'une version de skill
Liste complète des résultats d'une version, réservée à l'éditeur et aux administrateurs de l'organisation (revues d'approbation) ; les personnes qui installent la skill voient à la place les totaux résumés dans le détail de la skill.
Paramètres
club `string` (obligatoire) skillId `string` (obligatoire) version `string` (obligatoire)Point de terminaison
GET /api/agent-skills/scan-report/{club}/{skillId}/{version}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/scan-report/{club}/{skillId}/{version} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Soumettre une version brouillon de skill (publication ou mise en file d'approbation)
Fait avancer une version brouillon selon la gouvernance de l'organisation. Lorsque l'organisation a activé la revue LLM, la revue des instructions est exécutée d'abord (au mieux ; un verdict 'fail' entraîne le rejet, un verdict 'flag' impose la file d'approbation). Les partages au niveau de l'installation sont publiés immédiatement, sauf si la gouvernance exige une approbation ; les partages dans la bibliothèque de l'organisation (audience marque ou organisation) exigent une approbation par défaut. La publication définit le latestVersion de la skill : les installations en politique 'auto' la récupèrent lors du prochain cycle de réconciliation.
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/agent-skills/submit/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/submit/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Bibliothèque de skills visible dans cette installation (filtrée par audience)
Skills actives ayant au moins une version publiée dont l'audience couvre cette installation (ou désigne l'utilisateur), annotées avec le résumé de la dernière version publiée et l'adoption dans l'organisation (nombre d'installations distinctes, jamais le nombre brut d'installations de la skill). L'audience est de nouveau résolue en direct à chaque appel.
Paramètres
club `string` (obligatoire)Point de terminaison
GET /api/agent-skills/library/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/library/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Détail d'une skill (versions, prérequis, résumé d'analyse, adoption)
Détail complet d'une skill de la bibliothèque : historique des versions avec journaux des modifications et résumés d'analyse (les listes de points de terminaison par version alimentent la comparaison d'analyse lors des mises à jour), prérequis déclarés dans le manifeste, provenance de l'éditeur et indicateur d'adoption par nombre d'installations. L'audience est de nouveau vérifiée : les utilisateurs avec lesquels une skill n'a jamais été partagée n'obtiennent aucune information (l'éditeur et les administrateurs de l'organisation la voient toujours).
Paramètres
club `string` (obligatoire) skillId `string` (obligatoire)Point de terminaison
GET /api/agent-skills/skill/{club}/{skillId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/skill/{club}/{skillId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Skills publiées depuis cette installation (liste de gestion de l'éditeur)
Lignes complètes des skills dont l'installation d'ORIGINE est ce club, chacune annotée avec canManage pour l'utilisateur demandeur et le résumé de sa dernière version (brouillons et approbations en attente inclus : il s'agit de la vue de travail de l'éditeur).
Paramètres
club `string` (obligatoire)Point de terminaison
GET /api/agent-skills/manage/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/manage/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Installer une skill de la bibliothèque sur l'AI Agent d'une installation
Soumis à la gouvernance : les installSources de l'organisation doivent l'autoriser, l'audience de la skill doit couvrir cette installation (ou désigner le demandeur), la version doit être publiée et le demandeur doit satisfaire le niveau whoCanInstall de l'appareil cible (propriétaire / utilisateur autorisé / administrateur de l'installation / administrateur de l'organisation, voir la gouvernance). Écrit la ligne de cycle de vie de l'installation (la source de vérité) et effectue immédiatement un envoi au mieux ; la tâche cron de réconciliation garantit la livraison dès que l'appareil est joignable.
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/agent-skills/install/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/install/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Approuver une mise à jour de skill en attente pour une installation
Fait passer le desiredVersion de l'installation à la dernière version publiée (l'étape manuelle des politiques 'notify' et 'pinned', et le chemin suivi lorsque la gouvernance définit updatePosture sur 'approvalRequired'). Conserve la version actuelle comme cible de restauration en une étape et supprime tout blocage de mise à jour posé après une restauration (skipVersion). Même niveau d'autorisation whoCanInstall que pour l'installation.
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/agent-skills/update-approve/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/update-approve/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Restaurer la version précédente d'une skill installée
Définit desiredVersion sur la previousVersion de la ligne d'installation (conservée à chaque changement de version) et laisse le chemin de livraison normal la réinstaller. En une étape : les versions sont permutées, donc deux restaurations successives vous ramènent au point de départ. Bloque également les mises à jour (skipVersion = la version abandonnée) afin que les politiques auto/notify conservent la restauration ; le blocage est levé lorsqu'une version strictement plus récente est publiée, lors d'un update-approve ou d'un set-policy.
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/agent-skills/rollback/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/rollback/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Désinstaller une skill de l'AI Agent d'une installation
Marque la ligne d'installation comme en attente de désinstallation et envoie l'état souhaité ; la ligne est supprimée une fois que l'appareil confirme la suppression (relecture de réconciliation). Même niveau d'autorisation whoCanInstall que pour l'installation.
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/agent-skills/uninstall/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/uninstall/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Définir la politique de mise à jour d'une skill installée sur un appareil
auto (la réconciliation applique automatiquement les nouvelles versions publiées, sauf si le updatePosture de l'organisation exige une approbation), notify (le propriétaire est averti une fois par nouvelle version et l'applique manuellement) ou pinned (aucun changement sans update-approve explicite). Changer de politique supprime tout blocage de mise à jour posé après une restauration (skipVersion). Même niveau d'autorisation whoCanInstall que pour l'installation.
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/agent-skills/set-policy/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/set-policy/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Skills installées sur l'AI Agent d'une installation (onglet Skills)
Lignes de cycle de vie des installations d'un appareil, chacune annotée avec les champs de la fiche de la skill et l'existence éventuelle d'une version publiée plus récente. Nécessite un accès 'open' à l'appareil (l'onglet Skills se trouve dans le panneau de l'agent).
Paramètres
club `string` (obligatoire) device `string` (obligatoire)Point de terminaison
GET /api/agent-skills/installs/{club}/{device}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/installs/{club}/{device} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Versions de skills en attente d'approbation dans l'organisation de cette installation
File d'approbation des administrateurs de l'organisation : toutes les versions en attente d'approbation parmi les skills de l'organisation, avec la fiche de la skill et les résumés d'analyse et de revue LLM. Réservé aux administrateurs de l'organisation.
Paramètres
club `string` (obligatoire)Point de terminaison
GET /api/agent-skills/approvals/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/approvals/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Approuver une version de skill en attente (la publie)
Réservé aux administrateurs de l'organisation. La version est publiée, le latestVersion de la skill est mis à jour et l'éditeur est averti. Les installations en politique 'auto' récupèrent la version lors du prochain cycle de réconciliation.
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/agent-skills/approve/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/approve/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Refuser une version de skill en attente
Réservé aux administrateurs de l'organisation. La version est refusée avec le motif du réviseur et l'éditeur est averti : il peut corriger les problèmes relevés et soumettre une nouvelle version (les versions sont immuables).
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/agent-skills/reject/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/reject/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Gouvernance effective des Agent Skills pour l'organisation de cette installation
Politique enregistrée de l'organisation, fusionnée avec les valeurs par défaut de la plateforme (une organisation sans ligne enregistrée voit uniquement les valeurs par défaut). Réservé aux administrateurs de l'organisation.
Paramètres
club `string` (obligatoire)Point de terminaison
GET /api/agent-skills/governance/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/governance/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Mettre à jour la gouvernance des Agent Skills pour l'organisation de cette installation
Mise à jour partielle : seuls les champs fournis changent ; tout le reste conserve sa valeur enregistrée ou par défaut. Réservé aux administrateurs de l'organisation. Les exceptions par appareil se trouvent sur la ligne d'enregistrement, via les routes existantes de configuration des appareils.
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/agent-skills/governance/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/governance/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Obtenir les données environnementales d'une installation
Renvoie les conditions météo actuelles, y compris le lever et le coucher du soleil (via Open-Meteo), ainsi que la température intérieure de l'installation (issue des capteurs Duress) pour le club indiqué. Mis en cache dans Redis pendant 30 minutes.
Paramètres
clubId `string` (obligatoire) ID interne du club ou de l'installationPoint de terminaison
GET /api/clubs/{clubId}/environment
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/environment \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Ajoute ou associe un appareil IoT générique à un club.
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez ajouter l'appareil. body `string` (obligatoire) Objet JSON du nouvel écran à associer.Point de terminaison
POST /api/devices/addGenericDevice/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/addGenericDevice/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Retirer et réinitialiser un écran d'affichage aux paramètres d'usine
Supprime l'association active de l'écran à l'installation et programme une réinitialisation d'usine persistante. Un écran éteint applique la réinitialisation après sa prochaine mise sous tension et reconnexion, puis revient à sa page d'appairage HDMI. L'historique de facturation est conservé.
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/devices/display-screens/reset/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/display-screens/reset/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Associe un contrôleur de porte à une installation.
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/devices/door-controllers/associate/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/door-controllers/associate/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Met à jour les paramètres d'un contrôleur de porte pour une installation.
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/devices/door-controllers/update/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/door-controllers/update/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Met hors service un contrôleur de porte d'une installation.
Paramètres
club `string` (obligatoire)Point de terminaison
POST /api/devices/door-controllers/decommission/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/door-controllers/decommission/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la configuration des relais d'un contrôleur de porte.
Paramètres
uuid `string` (obligatoire)Point de terminaison
GET /api/devices/door-controllers/config/{uuid}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/door-controllers/config/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie les métadonnées de l'appareil
Paramètres
uuid `string` (obligatoire) ID unique de l'appareilPoint de terminaison
GET /api/devices/metadata/{uuid}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/metadata/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie les métadonnées de l'appareil. La réponse contient la ligne de métadonnées au premier niveau (ancienne forme), ainsi que `detectedType` (camera | ai-edge-processor | door-controller | ph-ai-agent | null) et `online` (true si l'appareil a été mis à jour au cours des 5 dernières minutes).
Paramètres
deviceSerialNumber `string` (obligatoire) Numéro de série de l'appareilPoint de terminaison
GET /api/devices/metadata/serial/{serialNo}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/metadata/serial/{serialNo} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie les données Smart Club du club.
Paramètres
club_id `string` (obligatoire) ID interne du club auquel vous souhaitez ajouter l'appareil.Point de terminaison
GET /api/clubs/{club_id}/smart-club-data
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club_id}/smart-club-data \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie tous les appareils associés à un club.
Paramètres
club `string` (obligatoire) ID interne du club dont vous souhaitez répertorier les appareils.Point de terminaison
GET /api/devices/list/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/list/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie toutes les versions d'application publiées pour nos appareils balena.
Point de terminaison
GET /api/devices/listReleases
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/listReleases \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Déplace un appareil vers une nouvelle installation (club) et met à jour les systèmes associés.
Paramètres
club `string` (obligatoire) ID de l'installation source (club dans lequel se trouve actuellement l'appareil) body `object` (obligatoire) Paramètres du déplacementPoint de terminaison
POST /api/devices/move/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/move/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Tente d'établir une connexion au routeur d'une installation en sélectionnant le meilleur appareil du club et en envoyant une commande MQTT pour créer un tunnel.
Paramètres
facilityID `string` (obligatoire) ID interne de l'installation pour laquelle la connexion au routeur est tentée.Point de terminaison
GET /api/devices/openRouterWebpage/{facilityID}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/openRouterWebpage/{facilityID} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Catalogue Cloud Agent (zones, tailles, prix de vente en direct)
Paramètres
club `string` (obligatoire)Point de terminaison
GET /api/devices/ph-ai-agent/cloud/catalog/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/catalog/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtenir un devis pour un Cloud Agent (logiciel + hébergement)
Point de terminaison
POST /api/devices/ph-ai-agent/cloud/quote/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/quote/{club} \
-H "x-api-key: YOUR_API_KEY"
Lancer un Cloud Agent (mise en file du provisionnement + association automatique)
Point de terminaison
POST /api/devices/ph-ai-agent/cloud/launch/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/launch/{club} \
-H "x-api-key: YOUR_API_KEY"
État de la tâche Cloud Agent
Point de terminaison
GET /api/devices/ph-ai-agent/cloud/jobs/{club}/{jobId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/jobs/{club}/{jobId} \
-H "x-api-key: YOUR_API_KEY"
Purger un Cloud Agent (VM + balena + enregistrement)
Point de terminaison
POST /api/devices/ph-ai-agent/cloud/delete/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/delete/{club} \
-H "x-api-key: YOUR_API_KEY"
Résoudre la suppression en attente d'un Cloud Agent (relancer la sauvegarde, supprimer sans sauvegarde ou annuler)
Point de terminaison
POST /api/devices/ph-ai-agent/cloud/delete-decision/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/delete-decision/{club} \
-H "x-api-key: YOUR_API_KEY"
Répertorier les Connected Apps d'un agent (suites + applications avec comptes connectés)
Renvoie l'état des Connected Apps de l'agent : l'indicateur d'activation, les synthèses par suite (Google Workspace, Microsoft 365) et le catalogue d'applications sélectionnées avec les comptes connectés de chaque application (multicompte : un agent peut avoir plusieurs comptes par application, chacun avec un alias facultatif), résolus à partir de la session en amont de l'agent.
Paramètres
facilityId `string` (obligatoire) deviceId `string` (obligatoire) UUID balena de l'appareil de l'agent.Point de terminaison
GET /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Catalogue complet de la marketplace Connected Apps pour un agent
Renvoie toutes les applications connectables (le catalogue complet des kits d'outils à authentification gérée, mis en cache côté serveur pendant ~12 h) avec leurs niveaux mis en avant ou suite, les comptes connectés de l'agent pour chaque application, ainsi que les synthèses par suite et les demandes de connexion en attente de l'agent : une seule charge utile pour la marketplace d'applications consultable côté client.
Paramètres
facilityId `string` (obligatoire) deviceId `string` (obligatoire) UUID balena de l'appareil de l'agent.Point de terminaison
GET /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/catalog
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/catalog \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Ignorer une demande de connexion en attente d'un agent
Marque comme ignorée la demande de connexion en attente de l'agent pour un kit d'outils (elle disparaît de la section « Requested by your agent » de la marketplace). Idempotent : ignorer une demande qui n'est pas en attente n'a aucun effet.
Paramètres
facilityId `string` (obligatoire) deviceId `string` (obligatoire) UUID balena de l'appareil de l'agent.Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/requests/dismiss
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/requests/dismiss \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Activer ou désactiver les Connected Apps pour un agent
Enregistre le paramètre Connected Apps de l'agent et envoie la variable d'appareil Balena PH_APPS_MCP_ENABLED à cet appareil uniquement (au mieux : l'indicateur côté PH est le verrou effectif du relais MCP).
Paramètres
facilityId `string` (obligatoire) deviceId `string` (obligatoire) UUID balena de l'appareil de l'agent.Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/enable
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/enable \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Commencer à connecter une application à un agent (flux OAuth Connect Link)
Lance un flux Connect Link hébergé pour un kit d'outils et renvoie l'URL vers laquelle rediriger l'utilisateur. Un alias facultatif nomme le nouveau compte (multicompte : connecter une application déjà connectée ajoute UN AUTRE compte, jusqu'à 10 par application). Passe par le même callback de chaînage que les connexions de suite (une suite d'un seul kit d'outils) : la fin du flux ramène donc sur la page de l'applet ph-ai-agent.
Paramètres
facilityId `string` (obligatoire) deviceId `string` (obligatoire) UUID balena de l'appareil de l'agent.Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Données de préparation de la connexion d'une application (mode, champs d'identifiants, guide de configuration)
Tout ce dont la boîte de dialogue de connexion a besoin avant de démarrer une connexion : le mode de connexion de l'application (oauth = flux de consentement hébergé, credentials = formulaire dans le produit), les champs d'identifiants à recueillir en mode credentials et le guide de configuration dans le produit (rédigé pour les applications prioritaires, sinon généré à partir des métadonnées des champs de l'application, jamais un lien vers une documentation externe). Les applications OAuth à fournir soi-même indiquent aussi si l'application OAuth du client est déjà enregistrée pour CET agent (byoConfigured) et l'URL de redirection à enregistrer auprès du fournisseur.
Paramètres
facilityId `string` (obligatoire) deviceId `string` (obligatoire) UUID balena de l'appareil de l'agent. toolkit `string` (obligatoire)Point de terminaison
GET /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-info/{toolkit}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-info/{toolkit} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Connecter une application avec des identifiants fournis par l'utilisateur (clé API, etc., sans OAuth)
Crée un compte connecté pour une application en mode credentials directement depuis le formulaire du produit, sans flux de consentement hébergé. Les champs d'identifiants proviennent des données connect-info de l'application ; tous les champs obligatoires doivent être fournis. Les identifiants sont validés auprès du fournisseur lorsque c'est possible (au mieux : certaines applications ne refusent une clé erronée qu'au premier appel d'outil de l'agent). Un alias facultatif nomme le nouveau compte (multicompte : connecter une application déjà connectée ajoute UN AUTRE compte).
Paramètres
facilityId `string` (obligatoire) deviceId `string` (obligatoire) UUID balena de l'appareil de l'agent.Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-credentials
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-credentials \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Enregistrer l'application OAuth du client pour une application BYO et lancer son flux de connexion
Pour les applications OAuth à fournir soi-même (Xero, Shopify...) : récupère l'ID client et le secret client de l'application OAuth que le client a créée auprès du fournisseur (en suivant le guide de configuration de l'application), l'enregistre pour CET agent (le secret est stocké uniquement auprès de la plateforme d'intégration en amont, jamais dans Performance Hub) et lance immédiatement le flux de connexion hébergé associé. Renvoie l'URL de consentement vers laquelle rediriger l'utilisateur, avec le même contrat que le point de terminaison de connexion. Une nouvelle soumission remplace l'application enregistrée de l'agent (par exemple après la rotation d'un secret) ; les comptes connectés existants continuent de fonctionner.
Paramètres
facilityId `string` (obligatoire) deviceId `string` (obligatoire) UUID balena de l'appareil de l'agent.Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-oauth-app
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-oauth-app \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Lancer la connexion en un clic d'une suite pour un agent (flux Connect Link chaînés)
Lance le flux de connexion chaîné pour une suite entière (par exemple google-workspace). L'URL renvoyée ouvre l'écran de consentement du premier kit d'outils ; chaque fin de flux redirige (302) directement vers le flux du kit suivant, et le tout se termine sur la page de l'applet ph-ai-agent. Les membres qui ont déjà un compte connecté sont IGNORÉS : une nouvelle tentative après un échec en cours de chaîne reprend donc avec les applications manquantes au lieu de créer des comptes en double. Lorsque tous les membres sont déjà connectés, toute la chaîne est de nouveau exécutée : c'est le flux explicite « ajouter un autre compte ».
Paramètres
facilityId `string` (obligatoire) deviceId `string` (obligatoire) UUID balena de l'appareil de l'agent.Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-suite
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-suite \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Déconnecter un compte connecté d'un agent
Supprime un seul compte connecté (multicompte : les autres comptes de la même application restent connectés). Le système vérifie que le compte appartient bien à cet agent avant la suppression ; s'il s'agissait du DERNIER compte de l'application, le kit d'outils est retiré de l'ensemble connecté de l'agent (la session est recréée à la demande afin de mettre à jour la liste d'outils de l'agent).
Paramètres
facilityId `string` (obligatoire) deviceId `string` (obligatoire) UUID balena de l'appareil de l'agent.Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/disconnect
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/disconnect \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Renommer (modifier l'alias de) l'un des comptes connectés d'un agent
Définit l'alias d'affichage d'un compte connecté. Les alias sont normalement définis automatiquement après l'OAuth (à partir de l'identité connectée) ; ce point de terminaison sert au renommage manuel dans la boîte de dialogue de détail de l'application. Un alias vide efface le libellé. Le système vérifie que le compte appartient bien à cet agent avant la mise à jour en amont.
Paramètres
facilityId `string` (obligatoire) deviceId `string` (obligatoire) UUID balena de l'appareil de l'agent.Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/rename-account
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/rename-account \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Activer ou désactiver un service Performance Hub intégré pour un agent
Active ou désactive pour cet agent un service intégré toujours disponible (Smart Search, Weather...). Les services intégrés ne nécessitent ni connexion ni OAuth : ils sont inclus avec chaque agent et activés par défaut ; ce paramètre enregistre l'exception propre à l'agent et recrée immédiatement sa session en amont afin de mettre à jour l'ensemble d'outils. Notez que le paramètre distinct « External apps » (la route /enable) désactive entièrement le serveur MCP des applications : lorsqu'il est désactivé, les services intégrés sont eux aussi indisponibles, quels que soient leurs paramètres individuels.
Paramètres
facilityId `string` (obligatoire) deviceId `string` (obligatoire) UUID balena de l'appareil de l'agent. slug `string` (obligatoire) Slug du service intégré.Corps de la requête
Point de terminaison
PATCH /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/built-in/{slug}
Exemple de requête
curl -X PATCH https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/built-in/{slug} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Associer un appareil AI Agent à une installation
Association fondée d'abord sur les métadonnées. Recherche l'appareil par son numéro de série dans les métadonnées en direct des appareils, exige qu'il soit en ligne, puis crée à la demande la ligne d'enregistrement, attribue une région de relais Chisel, un port de tunnel et un secret, enregistre cet emplacement sur le relais et envoie la configuration de l'installation et du tunnel à l'appareil via Balena. Les nouveaux appareils reçoivent aussi un compte de service MCP par défaut (activé, limité à cette installation, toutes capacités) ; un nouvel appairage conserve toute autorisation MCP existante. Des paramètres avancés facultatifs remplacent les valeurs par défaut lors de l'appairage (configuration de sauvegarde, MCP activé ou non, restriction d'accès), et `restoreFrom` initialise le nouvel appareil à partir de la sauvegarde cloud d'un autre appareil de l'installation (source active ou mise hors service ; met en file une restauration entre dépôts, renvoyée sous `restoreRequest` pour le suivi de la progression).
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/associate/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/associate/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Répertorier les appareils AI Agent d'une installation
Renvoie les appareils AI Agent de l'installation avec leur état en ligne et l'état du tunnel en direct (utilisé par le sélecteur d'appareils de l'applet).
Paramètres
club `string` (obligatoire)Point de terminaison
GET /api/devices/ph-ai-agent/list/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/list/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Mise à jour et état en ligne de l'AI Agent
Indique si l'appareil est en ligne, si une mise à jour est disponible ou en attente, ainsi que la version proposée (la version épinglée de la flotte si elle est épinglée ; la version la plus récente réussie si la flotte suit la dernière version).
Paramètres
club `string` (obligatoire) uuid `string` (obligatoire)Point de terminaison
GET /api/devices/ph-ai-agent/update-status/{club}/{uuid}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/update-status/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
État et métriques en direct de l'appareil AI Agent
Renvoie un instantané sélectionné pour la barre de métriques et le panneau de gestion de l'applet : champs d'identité et d'enregistrement, activité et connexion, versions logicielles et dernières métriques du signal de présence (processeur, température, mémoire, stockage par point de montage, durée de fonctionnement, réseau). Aplatit la balise de métadonnées de l'appareil et l'état de mise à jour Balena ; l'une ou l'autre partie peut manquer lors d'une panne passagère.
Paramètres
club `string` (obligatoire) uuid `string` (obligatoire)Point de terminaison
GET /api/devices/ph-ai-agent/device-status/{club}/{uuid}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/device-status/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Commentaire IA du rapport d'état de l'appareil
Renvoie une courte explication, destinée à l'opérateur, des problèmes d'état actuellement déduits. Les faits et les étapes de la procédure figurent toujours dans device-status ; ce paragraphe supplémentaire est fourni au mieux et peut être null.
Paramètres
club `string` (obligatoire) uuid `string` (obligatoire)Point de terminaison
POST /api/devices/ph-ai-agent/health/{club}/{uuid}/explain
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/health/{club}/{uuid}/explain \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Générer un jeton d'accès direct au relais pour un AI Agent
Renvoie une URL signée de courte durée que le navigateur utilise pour se connecter DIRECTEMENT à la passerelle relais régionale de l'appareil (en évitant le passage par PH/Sydney), ainsi que le jeton HS256. PH reste l'autorité (Google SSO + vérifications de module et d'installation ici) ; la passerelle relais vérifie le jeton. Le proxy /ai-agent-ui reste la solution de repli.
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/access/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/access/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Envoyer un message de chat dans une session AI Agent (réponse directe depuis la notification)
Relais côté serveur utilisé par l'action de réponse directe de la notification web push : le service worker envoie un POST ici (même origine, cookies SSO), si bien qu'une réponse fonctionne sans aucun onglet Performance Hub ouvert. PH résout la cible de relais de l'appareil (même recherche que pour le proxy /ai-agent-ui), ajoute x-ph-user pour l'attribution du tour (la notification de fin qui en résulte est renvoyée à cet utilisateur) et transmet la requête à /api/chat/start de l'appareil avec l'ID de session.
Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/reply
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/reply \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Lire les paramètres de contrôle d'accès d'un AI Agent (propriétaire)
Renvoie le bloc d'accès de l'appareil (mode, liste d'autorisation, visibilité, option d'assistance PH) ainsi que les demandes d'accès en attente. Accessible au propriétaire de l'appareil ; les autres utilisateurs reçoivent une erreur 403.
Paramètres
club `string` (obligatoire) uuid `string` (obligatoire)Point de terminaison
GET /api/devices/ph-ai-agent/access-settings/{club}/{uuid}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/access-settings/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Mettre à jour les paramètres de contrôle d'accès d'un AI Agent (propriétaire)
Écrit le mode (org/restricted), la liste d'autorisation restreinte, la visibilité de la liste (all/admins) et l'option « permit access from Performance Hub Support ». Autorisé pour le propriétaire de l'appareil. Le propriétaire lui-même ne peut être changé que via reallocate-owner. Les demandes d'accès approuvées sont persistantes : les demandeurs toujours approuvés sont réintégrés dans la liste d'autorisation enregistrée ; en retirer un de la liste soumise révoque son approbation (la demande passe à refusée ; il peut en faire une nouvelle).
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/access-settings/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/access-settings/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Réattribuer le propriétaire d'un AI Agent
Réattribue la propriété de l'appareil à un autre utilisateur Performance Hub. Réservé aux propriétaires de compte (accès au module de facturation SaaS) : c'est la solution de secours lorsque le propriétaire d'un agent restreint s'en va. L'ancien et le nouveau propriétaire sont tous deux avertis (dans l'application, par notification push et par e-mail).
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/reallocate-owner/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/reallocate-owner/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Liste des utilisateurs de l'installation pour les sélecteurs de liste d'autorisation et de propriétaire de l'AI Agent
Renvoie l'adresse e-mail et le nom (+ indicateurs isOrgAdmin) de chaque utilisateur dont le rôle donne accès à CETTE installation. Réservé au propriétaire de l'appareil et aux personnes habilitées à le réattribuer (propriétaire de compte), afin que les utilisateurs ordinaires ne puissent pas énumérer la base d'utilisateurs.
Paramètres
club `string` (obligatoire) uuid `string` (obligatoire)Point de terminaison
GET /api/devices/ph-ai-agent/org-users/{club}/{uuid}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/org-users/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Demander l'accès à un AI Agent restreint
Crée (ou rouvre) la demande d'accès du demandeur à un appareil restreint ; idempotent par utilisateur et par appareil. Le propriétaire est averti dans l'application, par notification web push et par e-mail, avec un lien direct vers le module de l'agent.
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/access-request/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/access-request/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Approuver ou refuser une demande d'accès à un AI Agent (propriétaire)
Traitement d'une demande en attente par le propriétaire de l'appareil. L'approbation ajoute le demandeur à la liste d'autorisation de l'appareil ; dans les deux cas, le demandeur est averti (dans l'application, par notification push et par e-mail).
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/access-request-resolve/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/access-request-resolve/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Autoriser et appliquer une mise à jour de l'AI Agent
Épingle l'appareil sur la version proposée (version épinglée de la flotte, ou version la plus récente réussie si la flotte suit la dernière version) et libère le verrou de mise à jour afin que le superviseur balena l'applique. Les données du volume de données de l'appareil sont conservées lors de la mise à jour.
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/update/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/update/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Planifier une mise à jour de l'AI Agent
Enregistre une heure d'installation planifiée dans l'enregistrement de l'appareil. Une tâche récurrente côté serveur (toutes les 5 minutes) applique la mise à jour (épinglage + déverrouillage) une fois l'heure planifiée passée. Toute nouvelle planification remplace la planification existante de l'appareil.
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/update-schedule/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/update-schedule/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Annuler une mise à jour planifiée de l'AI Agent
Supprime l'installation planifiée en attente de l'appareil (sans effet si rien n'est planifié).
Paramètres
club `string` (obligatoire) uuid `string` (obligatoire)Point de terminaison
DELETE /api/devices/ph-ai-agent/update-schedule/{club}/{uuid}
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/update-schedule/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Exécuter une commande à distance sur un appareil AI Agent
Publie une commande MQTT autorisée (redémarrage, redémarrage d'un conteneur, verrouillage ou déverrouillage des mises à jour, gestion du Wi-Fi) vers le device-controller exécuté sur l'AI Agent. L'appareil doit être associé à l'installation.
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/command/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/command/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Mettre à jour la configuration d'un AI Agent visible par l'installation
Enregistre les paramètres modifiables par l'opérateur pour un Agent IA associé : le nom de l'appareil, son emplacement physique et la fréquence des redémarrages planifiés. Le calendrier de redémarrage est aussi transmis à l'appareil sous forme de variable d'environnement Balena REBOOT_DEVICE (2 h, heure locale), comme pour les Display Screens.
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/config/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/config/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Installations vers lesquelles un Agent IA de cette installation peut être déplacé
Renvoie les installations de la même organisation auxquelles l'utilisateur connecté a accès (hors installation actuelle), pour le sélecteur « Déplacer vers une autre installation ». Le déplacement lui-même est effectué par POST /api/devices/move/:club, qui applique côté serveur les mêmes règles de même organisation et d'accès à la cible.
Paramètres
club `string` (obligatoire)Point de terminaison
GET /api/devices/ph-ai-agent/move-targets/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/move-targets/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
L'enveloppe d'accès MCP que le demandeur peut accorder aux Agents IA d'une installation
Renvoie ce que l'utilisateur connecté est autorisé à accorder au compte de service MCP d'un Agent IA dans l'organisation de cette installation : les installations et régions comprises dans son propre accès, la possibilité ou non d'accorder une portée à l'échelle de l'organisation, l'ensemble des modules dont il dispose et le catalogue complet des outils MCP (pour le masque avancé par outil). L'interface s'en sert pour que les utilisateurs ne voient jamais que des options comprises dans leur propre périmètre d'autorisations ; le point de terminaison POST mcp-access applique la même atténuation côté serveur.
Paramètres
club `string` (obligatoire)Point de terminaison
GET /api/devices/ph-ai-agent/mcp-grantable/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/mcp-grantable/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtenir la configuration du compte de service MCP d'un Agent IA
Renvoie la configuration d'accès MCP de l'appareil (portée, modules, masque d'outils, champs d'audit).
Paramètres
club `string` (obligatoire) uuid `string` (obligatoire)Point de terminaison
GET /api/devices/ph-ai-agent/mcp-access/{club}/{uuid}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/mcp-access/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Configurer le compte de service MCP d'un Agent IA
Enregistre la configuration d'accès MCP de l'appareil avec atténuation au moment de l'octroi. Les demandeurs ne peuvent accorder que des installations et régions comprises dans leur propre accès, une portée à l'échelle de l'organisation uniquement s'ils détiennent un rôle à l'échelle de l'organisation, et les modules dont ils disposent eux-mêmes dans l'organisation de l'installation. L'indicateur enabled est aussi transmis à l'appareil sous forme de variable d'environnement Balena PH_MCP_ENABLED.
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/mcp-access/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/mcp-access/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Obtenir la configuration VPN d'un Agent IA (masquée)
Renvoie l'indicateur de prise en charge VPN de l'appareil et la liste de ses connexions. Le contenu des profils et les valeurs des identifiants ne sont jamais renvoyés : uniquement les métadonnées enregistrées à l'importation (serveurs distants, routes, DNS) et des indicateurs de présence d'identifiants. L'état en direct de chaque connexion provient du point de terminaison device-status (beacon metadata.vpn).
Paramètres
club `string` (obligatoire) uuid `string` (obligatoire)Point de terminaison
GET /api/devices/ph-ai-agent/vpn-config/{club}/{uuid}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/vpn-config/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Activer ou désactiver la prise en charge VPN d'un Agent IA
Active ou désactive la fonction VPN de l'appareil. Transmet la variable d'appareil balena PH_VPN_ENABLED et notifie l'appareil (MQTT vpnConfigChanged) ; les connexions sont conservées lors de la désactivation (les tunnels s'arrêtent, la configuration reste pour une réactivation).
Paramètres
club `string` (obligatoire) uuid `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/vpn-config/{club}/{uuid}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/vpn-config/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Importer un ou plusieurs profils OpenVPN sur un Agent IA
Accepte des fichiers encodés en base64 : un seul fichier .ovpn/.conf, des lots de fichiers séparés (configuration + certificats/clés) et des archives (.zip, exports Pritunl .tar/.tgz, .tblk Tunnelblick, .visc/.visz Viscosity). Les profils sont normalisés sous une forme intégrée canonique ; chaque profil devient une connexion (importée à l'état déconnecté : saisissez les identifiants, puis connectez-vous). Des erreurs 400 exploitables sont renvoyées pour les fichiers inutilisables.
Paramètres
club `string` (obligatoire) uuid `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/vpn-import/{club}/{uuid}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/vpn-import/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Mettre à jour une connexion VPN d'un Agent IA (nom / identifiants / DNS fractionné)
Met à jour la connexion enregistrée. Les champs d'identifiants sont en écriture seule (omis = conserver la valeur enregistrée ; chaîne vide = effacer). Les modifications d'identifiants ou de DNS fractionné incrémentent la révision de la connexion, de sorte qu'un tunnel actif redémarre avec les nouvelles valeurs.
Paramètres
club `string` (obligatoire) uuid `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/vpn-connection/{club}/{uuid}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/vpn-connection/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Supprimer une connexion VPN d'un Agent IA
Retire la connexion de l'enregistrement et notifie l'appareil, qui ferme le tunnel et purge le profil et les identifiants en cache.
Paramètres
club `string` (obligatoire) uuid `string` (obligatoire) connectionId `string` (obligatoire)Point de terminaison
DELETE /api/devices/ph-ai-agent/vpn-connection/{club}/{uuid}/{connectionId}
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/vpn-connection/{club}/{uuid}/{connectionId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Connecter / déconnecter une connexion VPN d'un Agent IA
Modèle d'état souhaité : définit l'indicateur enabled de la connexion dans l'enregistrement et notifie l'appareil (MQTT vpnConfigChanged sans contenu) ; l'appareil récupère l'état de référence par son appel universal-api authentifié par JWT et rapproche ses tunnels. Une notification manquée est rattrapée lors de la synchronisation périodique.
Paramètres
club `string` (obligatoire) uuid `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/vpn-command/{club}/{uuid}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/vpn-command/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Obtenir la configuration et l'état de la sauvegarde cloud d'un Agent IA
Renvoie les paramètres de sauvegarde de l'appareil (activation, rétention, région de stockage), l'état courant des sauvegardes (dernière sauvegarde, taille, erreurs), la région automatique résolue et les régions de stockage disponibles pour le sélecteur. Le mot de passe du dépôt restic n'est jamais renvoyé.
Paramètres
club `string` (obligatoire) uuid `string` (obligatoire)Point de terminaison
GET /api/devices/ph-ai-agent/backup-config/{club}/{uuid}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-config/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Mettre à jour la configuration de sauvegarde cloud d'un Agent IA
Enregistre l'activation, la rétention et la région. Prend effet lors de la prochaine sauvegarde horaire de l'appareil (l'appareil demande son contexte d'exécution à PH avant chaque exécution) : aucun redémarrage de l'appareil n'est nécessaire.
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/backup-config/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-config/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Lister les sources de restauration de sauvegarde pour l'appairage d'un nouvel Agent IA
Vue à l'échelle de l'installation pour l'option « restaurer à partir d'une sauvegarde » de la boîte de dialogue d'ajout d'agent : chaque enregistrement de l'installation (actif ET mis hors service/remplacé) qui dispose encore d'un dépôt de sauvegarde déchiffrable et d'au moins un point de restauration utilisable, avec ses instantanés les plus récents. Renvoie aussi les listes d'options de configuration de sauvegarde (allowedRetentionDays, availableRegions), de sorte que la boîte de dialogue n'a besoin d'aucun UUID d'appareil pour remplir ses listes.
Paramètres
club `string` (obligatoire)Point de terminaison
GET /api/devices/ph-ai-agent/backup-sources/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-sources/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lister les points de restauration d'un Agent IA
Renvoie l'index des instantanés de l'appareil (du plus récent au plus ancien) depuis DynamoDB, sans aller-retour vers l'appareil ou le dépôt, ainsi que l'état actuel des demandes de sauvegarde manuelle ou de restauration pour l'interrogation du panneau. Les demandes obsolètes (jamais prises en charge, ou sans signal de progression) sont présentées comme ayant échoué, afin que l'interface puisse toujours en soumettre une nouvelle.
Paramètres
club `string` (obligatoire) uuid `string` (obligatoire)Point de terminaison
GET /api/devices/ph-ai-agent/backup-snapshots/{club}/{uuid}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-snapshots/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Demander immédiatement une sauvegarde manuelle d'un Agent IA
Écrit une demande d'exécution manuelle (avec la note de l'utilisateur) dans la ligne d'enregistrement et notifie l'appareil via MQTT. L'appareil récupère la demande vérifiée par son appel run-context universal-api authentifié par JWT ; même sans MQTT, elle est prise en charge au prochain cycle du planificateur. Refusée tant qu'une autre sauvegarde ou restauration est en cours.
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/backup-run/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-run/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Épingler ou désépingler un point de restauration d'un Agent IA
Les points de restauration épinglés sont protégés de l'élagage lié à la rétention : la maintenance nocturne de l'appareil reçoit les identifiants des instantanés épinglés par son appel run-context et les exclut de restic forget, et leurs lignes d'index n'expirent jamais par TTL. Le désépinglage rétablit le comportement de rétention normal.
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/backup-pin/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-pin/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Restaurer un Agent IA à partir d'un point de restauration
Écrit une demande de restauration dans la ligne d'enregistrement et notifie l'appareil. Les restaurations complètes écrasent /data et /home/hermeswebui (l'appareil prend d'abord un instantané de sécurité automatique avant restauration et arrête l'agent pendant la restauration) et exigent la saisie du nom de l'appareil en guise de confirmation. Transmettre `paths` effectue à la place une restauration non perturbatrice de ces seuls chemins, au niveau des fichiers. Peut aussi, en option, épingler l'appareil sur la version logicielle de l'instantané une fois la restauration des données terminée (voir backup-restore-release).
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/backup-restore/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-restore/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Appliquer la version logicielle enregistrée lors d'une restauration terminée
Dernière étape d'une restauration qui a demandé la version logicielle de l'instantané : une fois que l'appareil signale la fin de la restauration des données, ce point de terminaison épingle l'appareil sur la version enregistrée et déverrouille les mises à jour (même mécanisme que le point de terminaison de mise à jour). Déclenché par l'interrogation du panneau ; idempotent : l'épinglage enregistré est effacé une fois appliqué.
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/backup-restore-release/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-restore-release/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Parcourir les fichiers d'un point de restauration
Liste un niveau de répertoire d'un instantané restic, servi entièrement côté serveur depuis le dépôt Wasabi (fonctionne même si l'appareil est hors ligne). Seules les métadonnées de l'arborescence sont lues : aucune donnée de fichier n'est téléchargée pour les listes.
Paramètres
club `string` (obligatoire) uuid `string` (obligatoire) takenAt `number` (obligatoire) path `string` (facultatif)Point de terminaison
GET /api/devices/ph-ai-agent/backup-files/{club}/{uuid}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-files/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Rechercher des noms de fichiers dans un point de restauration
Recherche de noms de fichiers insensible à la casse à partir d'un répertoire et en descendant, servie côté serveur depuis les métadonnées de l'arborescence restic (aucune donnée de fichier n'est lue ; fonctionne même si l'appareil est hors ligne). Diffuse la liste et s'arrête aux 200 premiers résultats.
Paramètres
club `string` (obligatoire) uuid `string` (obligatoire) takenAt `number` (obligatoire) q `string` (obligatoire) path `string` (facultatif)Point de terminaison
GET /api/devices/ph-ai-agent/backup-search/{club}/{uuid}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-search/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Différences entre deux points de restauration
Exécute côté serveur un restic diff entre deux instantanés de l'appareil (métadonnées de l'arborescence uniquement) et renvoie la liste des fichiers ajoutés, supprimés ou modifiés (limitée à 500 modifications) ainsi que des statistiques récapitulatives. Les résultats sont mis en cache, car les instantanés sont immuables.
Paramètres
club `string` (obligatoire) uuid `string` (obligatoire) fromTakenAt `number` (obligatoire) toTakenAt `number` (obligatoire)Point de terminaison
GET /api/devices/ph-ai-agent/backup-diff/{club}/{uuid}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-diff/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Historique des versions d'un fichier sur tous les points de restauration
Un seul restic find côté serveur sur tous les instantanés du dépôt de l'appareil, réduit aux versions DISTINCTES (les résultats consécutifs de taille et mtime identiques sont fusionnés) et joint aux lignes de l'index des instantanés pour les dates, types et notes.
Paramètres
club `string` (obligatoire) uuid `string` (obligatoire) path `string` (obligatoire)Point de terminaison
GET /api/devices/ph-ai-agent/backup-file-versions/{club}/{uuid}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-file-versions/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Rechercher un nom de fichier dans tous les points de restauration des sauvegardes d'un appareil
Le chemin de récupération des fichiers supprimés : un seul restic find côté serveur sur TOUS les instantanés du dépôt (insensible à la casse, sous-chaîne ou glob), regroupé par chemin avec les points de restauration dans lesquels chaque fichier apparaît. Un fichier supprimé de l'appareil reste trouvable ici tant qu'un point de restauration le contient.
Paramètres
club `string` (obligatoire) uuid `string` (obligatoire) q `string` (obligatoire)Point de terminaison
GET /api/devices/ph-ai-agent/backup-find/{club}/{uuid}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-find/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Télécharger un fichier depuis un point de restauration
Diffuse un fichier directement du dépôt restic vers le navigateur (en pièce jointe). Les répertoires sont diffusés sous forme d'archive tar. Taille plafonnée ; servi côté serveur, donc fonctionne même si l'appareil est hors ligne.
Paramètres
club `string` (obligatoire) uuid `string` (obligatoire) takenAt `number` (obligatoire) path `string` (obligatoire)Point de terminaison
GET /api/devices/ph-ai-agent/backup-file-download/{club}/{uuid}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-file-download/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Mettre hors service un Agent IA d'une installation
Paramètres
club `string` (obligatoire)Point de terminaison
POST /api/devices/ph-ai-agent/decommission/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/decommission/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Retirer un Agent IA d'une installation et réinitialiser le matériel aux paramètres d'usine
Dissocie complètement l'appareil pour qu'il puisse être appairé dans N'IMPORTE QUELLE installation, et efface toutes les données du NUC. L'effacement est armé via la variable d'appareil balena PH_FACTORY_RESET (un nonce à usage unique) AVANT le démantèlement cloud, de sorte qu'il s'applique même si l'appareil est hors ligne au moment du retrait : l'effacement s'exécute à sa prochaine connexion. Une notification MQTT factoryReset rend le cas en ligne immédiat. Le démantèlement cloud révoque ensuite tous les identifiants et autorisations, supprime le rattachement de l'installation dans Balena (variables d'appareil + étiquette club) et le clubID des métadonnées, et supprime les demandes d'accès et l'enregistrement DNS LAN. Les sauvegardes cloud sont CONSERVÉES : l'index des instantanés et le mot de passe du dépôt restent sur l'enregistrement supprimé de manière logique, utilisables comme source de restauration lors de l'ajout d'un appareil de remplacement. Exige la saisie du nom de l'appareil en guise de confirmation.
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/reset/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/reset/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Remplacer un Agent IA défaillant par un nouveau NUC (reprise après sinistre)
Remplacement d'appareil en une seule opération : associe le NUC de remplacement (emplacement de tunnel, secrets, variables balena, amorçage de la sauvegarde), reprend le nom, l'emplacement, le calendrier de redémarrage, les paramètres de sauvegarde, le blocage d'accès et l'autorisation MCP de l'ancien appareil, réindexe l'ancien index d'instantanés sur le nouvel appareil (pour que tout l'historique de sauvegarde reste consultable), met hors service l'ancien enregistrement (marqué replacedBy / replacedFrom) et, sauf si `restore` vaut false, met en file d'attente une restauration complète du point de restauration choisi depuis le dépôt de sauvegarde de l'ANCIEN appareil vers le nouveau matériel. Fonctionne même si l'ancien appareil est défaillant ou hors ligne ; exige la saisie du nom de l'ancien appareil en guise de confirmation. Uniquement au sein de la même installation.
Paramètres
club `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/devices/ph-ai-agent/replace/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/replace/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Résout un lien court de QR code d'appareil Performance Hub vers le lien profond vers lequel il pointe, afin que le scanner Ajouter un appareil puisse détecter le type d'appareil. Seuls les hôtes performancehub.co sont suivis.
Paramètres
url `string` (obligatoire) Le lien court scannéPoint de terminaison
GET /api/devices/resolve-qr
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/resolve-qr \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Teste la connectivité au contrôleur Unifi d'une installation et la validité des identifiants.
Paramètres
facilityID `string` (obligatoire) ID interne de l'installation avec laquelle vous souhaitez tester la connectivité UnifiPoint de terminaison
GET /api/devices/testUnifiController/{facilityID}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/devices/testUnifiController/{facilityID} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Met à jour un appareil IoT générique associé à une installation.
Paramètres
club `string` (obligatoire) ID interne de l'installation dont vous souhaitez mettre à jour l'appareil. body `string` (obligatoire) Objet JSON des paramètres de mise à jour.Point de terminaison
PUT /api/devices/updateGenericDevice/{club}
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/devices/updateGenericDevice/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Indique le nombre d'accords en suspens nécessitant une action, selon l'utilisateur et les clubs qui lui sont associés
Point de terminaison
GET /api/agreements/agreements-outstanding
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/agreements/agreements-outstanding \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Répertorie tous les accords disponibles pour un club
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder. contracts-sort `string` (facultatif) Trie les accords par date d'effet ou par ordre alphabétique. Par défaut : date d'effet. contracts-acknowledgement `string` (facultatif) Filtre les accords : tous, acceptés ou non acceptés. Par défaut : tous. contracts-requirement `string` (facultatif) Filtre les accords : tous, signature, case à cocher, fenêtre contextuelle ou aucun. Par défaut : tous. contracts-status `string` (facultatif) Filtre les accords : tous, actifs ou archivés. Par défaut : tous.Point de terminaison
GET /api/agreements/list-agreements/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/agreements/list-agreements/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Signe un accord à partir de son ID.
Paramètres
club `string` (obligatoire) ID interne du club qui signe l'accord. agreementid `string` (obligatoire) ID de l'accord à signer. body `string` (obligatoire) Objet JSON contenant l'accord et les paramètres à ajouter ou envoyer au système...Point de terminaison
POST /api/agreements/sign/{club}/{agreementid}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/agreements/sign/{club}/{agreementid} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Résumé Model Router de l'installation (configuration, solde, dépenses).
Paramètres
clubID `string` (obligatoire) tz `string` (facultatif) Fuseau horaire IANA de l'utilisateur : solution de repli pour les fenêtres de dépenses journalières et mensuelles lorsque l'installation n'a pas de fuseau horaire.Point de terminaison
GET /api/clubs/{clubID}/ai-credits/overview
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/overview \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Catalogue des modèles disponibles avec leur état d'activation par installation (tous activés par défaut).
Paramètres
clubID `string` (obligatoire)Point de terminaison
GET /api/clubs/{clubID}/ai-credits/models
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/models \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Garde-fous disponibles et modèles prédéfinis PH.
Paramètres
clubID `string` (obligatoire)Point de terminaison
GET /api/clubs/{clubID}/ai-credits/guardrails
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/guardrails \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Services Model Router connectés. Comprend les appareils AI Agent appairés, les agents externes explicitement typés et le service Workflow de l'installation. La configuration se modifie via PATCH /keys/{keyHash}.
Paramètres
clubID `string` (obligatoire) tz `string` (facultatif) Fuseau horaire IANA de l'utilisateur : solution de repli pour les fenêtres de dépenses journalières et mensuelles lorsque l'installation n'a pas de fuseau horaire.Point de terminaison
GET /api/clubs/{clubID}/ai-credits/agents
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/agents \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Active Model Router pour une installation et provisionne son accès à l'inférence.
Paramètres
clubID `string` (obligatoire)Point de terminaison
POST /api/clubs/{clubID}/ai-credits/enable
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/enable \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Met à jour le forfait, la liste des modèles autorisés, les garde-fous, les filtres de contenu (masquage ou blocage par regex côté PH), la limite de dépenses et la configuration de rechargement automatique.
Paramètres
clubID `string` (obligatoire)Point de terminaison
PATCH /api/clubs/{clubID}/ai-credits/config
Exemple de requête
curl -X PATCH https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/config \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Remet à 0 le compteur du plafond absolu sur toute la durée (nouvelle référence égale aux dépenses actuelles) et consigne la période clôturée dans l'historique.
Paramètres
clubID `string` (obligatoire)Point de terminaison
POST /api/clubs/{clubID}/ai-credits/spend-limit/reset-total
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/spend-limit/reset-total \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Historique des réinitialisations du plafond absolu (les plus récentes d'abord) : plafond, montant dépensé et horodatages pour chaque période clôturée.
Paramètres
clubID `string` (obligatoire)Point de terminaison
GET /api/clubs/{clubID}/ai-credits/spend-limit/history
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/spend-limit/history \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Crée une nouvelle clé API phk_ pour l'installation (texte en clair renvoyé une seule fois). Accepte en option des plafonds de dépenses, une liste de modèles autorisés, des garde-fous, des filtres de contenu et des limites de débit rpmLimit/tpmLimit.
Paramètres
clubID `string` (obligatoire)Point de terminaison
POST /api/clubs/{clubID}/ai-credits/keys
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/keys \
-H "x-api-key: YOUR_API_KEY"
Met à jour les champs modifiables de la clé : libellé, plafonds de dépenses par clé, liste de modèles autorisés, garde-fous, filtres de contenu et limites de débit rpmLimit/tpmLimit (synchronisés avec la clé).
Paramètres
clubID `string` (obligatoire) keyHash `string` (obligatoire)Point de terminaison
PATCH /api/clubs/{clubID}/ai-credits/keys/{keyHash}
Exemple de requête
curl -X PATCH https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/keys/{keyHash} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Journaux d'inférence par requête pour l'installation (en direct, métadonnées uniquement).
Paramètres
clubID `string` (obligatoire) page `string` (facultatif) pageSize `string` (facultatif) status `string` (facultatif) model `string` (facultatif) provider `string` (facultatif) source `string` (facultatif) `key` ou `agent` keyHash `string` (facultatif) Filtre sur une seule clé ou un seul agent à partir de son keyHash PH. q `string` (facultatif) Recherche en texte libre sur l'ID de requête, le libellé de la clé ou de l'agent, le modèle, le fournisseur et l'utilisateur final. minutes `string` (facultatif) Fenêtre inférieure à une journée (par exemple Live=1440) ; remplace startDate/endDate. startTs `string` (facultatif) Début de la fenêtre en secondes epoch (clic pour zoomer) ; remplace les minutes et les dates. endTs `string` (facultatif) Fin de la fenêtre en secondes epoch (clic pour zoomer) ; remplace les minutes et les dates.Point de terminaison
GET /api/clubs/{clubID}/ai-credits/logs
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/logs \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Histogramme des requêtes dans le temps pour la vue Logs. Mêmes filtres que la route de liste, mais agrégés côté serveur par intervalles de temps (nombre de succès et d'échecs), de sorte que la réponse reste très légère quel que soit le volume de journaux. La taille des intervalles est choisie automatiquement en fonction de la période.
Paramètres
clubID `string` (obligatoire) status `string` (facultatif) model `string` (facultatif) provider `string` (facultatif) source `string` (facultatif) keyHash `string` (facultatif) q `string` (facultatif) minutes `string` (facultatif) startDate `string` (facultatif) endDate `string` (facultatif) startTs `string` (facultatif) endTs `string` (facultatif)Point de terminaison
GET /api/clubs/{clubID}/ai-credits/logs/histogram
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/logs/histogram \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Intervalles d'analyse de l'utilisation et totaux par modèle pour une période (en direct).
Paramètres
clubID `string` (obligatoire) range `string` (facultatif) 24h | 7 | 30 | 90 | year | all (ignoré si startDate/endDate sont fournis) startDate `string` (facultatif) endDate `string` (facultatif) groupBy `string` (facultatif) model (par défaut) | key | source | provider | status : dimension des intervalles et des groupes subgroupBy `string` (facultatif) seconde dimension facultative imbriquée dans chaque groupe (Explore) keyHash `string` (facultatif) filtre d'analyse détaillée : limite à une seule clé ou un seul agent model `string` (facultatif) filtre d'analyse détaillée : limite à un seul modèle provider `string` (facultatif) source `string` (facultatif) compare `string` (facultatif) définir sur "prev" pour renvoyer également groupsPrev (période de même durée immédiatement précédente)Point de terminaison
GET /api/clubs/{clubID}/ai-credits/stats
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/stats \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Calendrier d'activité quotidienne sur l'année glissante écoulée (environ 53 semaines, à la manière de GitHub).
Paramètres
clubID `string` (obligatoire)Point de terminaison
GET /api/clubs/{clubID}/ai-credits/activity
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/activity \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Débite la carte de facturation SaaS enregistrée pour ajouter du crédit Model Router prépayé.
Paramètres
clubID `string` (obligatoire) body `object` (facultatif)Point de terminaison
POST /api/clubs/{clubID}/ai-credits/topup
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/topup \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Finalise une recharge une fois que l'applet a terminé l'authentification 3DS.
Paramètres
clubID `string` (obligatoire)Point de terminaison
POST /api/clubs/{clubID}/ai-credits/topup/confirm
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/topup/confirm \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Résumé de la carte de facturation SaaS enregistrée qui sera débitée lors des recharges et des recharges automatiques.
Paramètres
clubID `string` (obligatoire)Point de terminaison
GET /api/clubs/{clubID}/ai-credits/payment-method
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/payment-method \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Transactions du registre de l'installation, les plus récentes d'abord. Filtrage facultatif par type (par exemple `types=topup,adjustment` pour l'historique des mouvements d'argent, ou `types=charge-reconcile` avec `from`/`to` pour les déductions d'utilisation d'un mois).
Paramètres
clubID `string` (obligatoire) limit `integer` (facultatif) Nombre maximal de lignes (50 par défaut, 200 au maximum) types `string` (facultatif) Types de transactions séparés par des virgules (topup, charge-reconcile, refund, adjustment, trueup-shortfall) from `integer` (facultatif) Uniquement les transactions avec createdAt >= from (secondes Unix) to `integer` (facultatif) Uniquement les transactions avec createdAt <= to (secondes Unix)Point de terminaison
GET /api/clubs/{clubID}/ai-credits/transactions
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/transactions \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Mois `YYYY-MM` distincts (UTC, les plus récents d'abord) contenant au moins une transaction des types demandés. Alimente les listes déroulantes de filtre par année et par mois afin que l'interface ne propose que les périodes qui contiennent réellement des données.
Paramètres
clubID `string` (obligatoire) types `string` (facultatif) Types de transactions séparés par des virgules (topup, charge-reconcile, refund, adjustment, trueup-shortfall)Point de terminaison
GET /api/clubs/{clubID}/ai-credits/transactions/available-periods
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/transactions/available-periods \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Reçu de paiement PDF personnalisé pour une transaction Model Router.
Paramètres
clubID `string` (obligatoire) txId `string` (obligatoire)Point de terminaison
GET /api/clubs/{clubID}/ai-credits/transactions/{txId}/receipt.pdf
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/transactions/{txId}/receipt.pdf \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Ensemble de reçus de paiement PDF personnalisés pour les transactions de recharge sélectionnées, au format ZIP. Chaque ID doit correspondre à une recharge de l'installation : les déductions d'utilisation et les ajustements administratifs n'ont pas de reçu et sont refusés.
Paramètres
clubID `string` (obligatoire) ids `string` (obligatoire) ID de transactions séparés par des virgules (50 au maximum)Point de terminaison
GET /api/clubs/{clubID}/ai-credits/transactions/receipts.zip
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/transactions/receipts.zip \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Cumuls par mois civil (UTC) des déductions d'utilisation de l'installation, les plus récents d'abord. Le mois en cours est toujours inclus et signalé par `isCurrentMonth` (depuis le début du mois).
Paramètres
clubID `string` (obligatoire) months `integer` (facultatif) Période d'historique en mois (12 par défaut, 24 au maximum ; ignorée lorsque `year` est défini) year `integer` (facultatif) Limite les cumuls à une année civile UTC (par exemple 2026)Point de terminaison
GET /api/clubs/{clubID}/ai-credits/usage-statements
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/usage-statements \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Relevé d'utilisation mensuel en PDF personnalisé : synthèse des déductions d'utilisation du mois (sous-totaux journaliers + total). Il ne s'agit explicitement ni d'une facture ni d'un reçu ; les déductions d'utilisation n'entraînent aucun encaissement.
Paramètres
clubID `string` (obligatoire) month `string` (obligatoire) Mois civil UTC, `YYYY-MM`Point de terminaison
GET /api/clubs/{clubID}/ai-credits/usage-statements/{month}/statement.pdf
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/usage-statements/{month}/statement.pdf \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lignes brutes de déduction d'utilisation d'un mois au format CSV (ID de transaction, horodatage UTC, montant, solde après opération, instantané des dépenses cumulées) : l'export détaillé qui se rapproche du total du relevé du mois.
Paramètres
clubID `string` (obligatoire) month `string` (obligatoire) Mois civil UTC, `YYYY-MM`Point de terminaison
GET /api/clubs/{clubID}/ai-credits/usage-statements/{month}/detail.csv
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/usage-statements/{month}/detail.csv \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Synthèse de l'utilisation et des dépenses de l'installation (en direct et registre rapproché).
Paramètres
clubID `string` (obligatoire) tz `string` (facultatif) Fuseau horaire IANA de l'utilisateur : solution de repli pour les fenêtres de dépenses journalières et mensuelles lorsque l'installation n'a pas de fuseau horaire.Point de terminaison
GET /api/clubs/{clubID}/ai-credits/usage
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/usage \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Associe ou met à jour un appareil AI Edge Processor pour un club
Paramètres
body `string` (obligatoire) Objet JSON de mise à jour de l'enregistrement de l'appareil AI Edge Processor.Point de terminaison
POST /api/ai-edge-processor/devices
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/ai-edge-processor/devices \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Associe un appareil AI Edge Processor à un club. Résout l'appareil en privilégiant les métadonnées (le signal de présence en direct l'emporte), complète la ligne d'enregistrement si l'appareil ne s'est jamais enregistré lui-même et nettoie les lignes d'enregistrement obsolètes laissées par du matériel reprovisionné.
Paramètres
body `string` (obligatoire) Objet JSON de mise à jour de l'enregistrement de l'appareil AI Edge Processor.Point de terminaison
POST /api/ai-edge-processor/devices/associate
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/ai-edge-processor/devices/associate \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des enregistrements d'envoi bbox d'un club
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder.Point de terminaison
GET /api/cctv/bbox-timeline/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/bbox-timeline/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Index de recherche de la base de données de caméras
Relaie l'index de recherche public camera-db de la documentation (fabricants, gammes, modèles, alias) utilisé par la boîte de dialogue Find my camera lors de l'ajout de caméras réseau. Mis en cache côté serveur pendant 12 heures.
Point de terminaison
GET /api/cctv/camera-db/search-index
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/camera-db/search-index \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Modèles de fabricant de la base de données de caméras
Relaie les modèles d'URL RTSP et les valeurs par défaut d'un fabricant depuis la base de données publique de caméras de la documentation. Le slug est validé pour empêcher toute traversée de chemin. Mis en cache côté serveur pendant 12 heures.
Paramètres
slug `string` (obligatoire) Slug du fabricant (par exemple hikvision)Point de terminaison
GET /api/cctv/camera-db/manufacturers/{slug}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/camera-db/manufacturers/{slug} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des données d'enregistrement des arrivées d'une installation
Paramètres
club `string` (obligatoire) ID interne du club ou de l'installation auquel vous souhaitez accéder. startDate `string` (facultatif) Date de début au format YYYY-MM-DD endDate `string` (facultatif) Date de fin au format YYYY-MM-DD timezone `string` (facultatif) Fuseau horaire utilisé pour interpréter les dates (Australia/Brisbane par défaut) nextToken `string` (facultatif) Jeton de pagination pour récupérer la page suivantePoint de terminaison
GET /api/cctv/check-ins/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/check-ins/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Récupérer la configuration du front-end ou de l'interface CCTV
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder.Point de terminaison
GET /api/cctv/config/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/config/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtenir la configuration de diffusion de contenu CCTV
Renvoie le domaine de contenu utilisé par les clients CCTV pour résoudre les fichiers multimédias. Le domaine est défini par la variable d'environnement CONTENT_DOMAIN, avec à défaut une valeur par défaut qui dépend de l'environnement (la production sert /cctv, les autres environnements servent /cctv-stg).
Point de terminaison
GET /api/cctv/content-config
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/content-config \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Modifier la configuration du front-end ou de l'interface CCTV
Paramètres
body `object` (obligatoire) Objet JSON du nouveau bloc de configuration à ajouter au système.Point de terminaison
PUT /api/cctv/config/:club/:section
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/cctv/config/:club/:section \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des régions de bucket disponibles pour la configuration du fournisseur de stockage CCTV
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder.Point de terminaison
GET /api/cctv/bucket-region/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/bucket-region/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Réinitialiser la collection de visages non identifiés
Réinitialise la collection CompreFace des personnes non identifiées de l'installation en supprimant tous les sujets. Les fiches de personnes DynamoDB, les détections de visages et les blocs de chronologie OpenSearch ne sont PAS affectés. Seules les données sous-jacentes de reconnaissance faciale sont effacées. De nouveaux profils fantômes sont créés automatiquement à mesure que le système traite de nouvelles détections des caméras.
Paramètres
facilityId `string` (obligatoire)Point de terminaison
DELETE /api/cctv/config/{facilityId}/unidentified-collection
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/config/{facilityId}/unidentified-collection \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtenir les informations de la collection des personnes non identifiées
Renvoie le nombre actuel de sujets de la collection CompreFace des personnes non identifiées de l'installation.
Paramètres
facilityId `string` (obligatoire)Point de terminaison
GET /api/cctv/config/{facilityId}/unidentified-collection-info
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/config/{facilityId}/unidentified-collection-info \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Ajoute une caméra réseau (caméra OEM/IP) via une URL de flux (RTSP, HTTP, HTTPS)
Paramètres
body `string` (obligatoire) Objet JSON pour l'ajout d'une caméra réseau.Point de terminaison
POST /api/cctv/devices/add-network-camera
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/add-network-camera \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Ajouter en masse des caméras réseau à un Edge Processor
Enregistre plusieurs caméras réseau RTSP/HTTP sur un même Edge Processor, puis envoie FEED_CONFIG une seule fois afin que l'appareil ne recharge sa configuration qu'une fois.
Paramètres
body `object` (obligatoire)Point de terminaison
POST /api/cctv/devices/add-network-cameras
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/add-network-cameras \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Associe ou met à jour un appareil pour un club
Paramètres
body `string` (obligatoire) Objet JSON de mise à jour de l'enregistrement de l'appareil CCTV.Point de terminaison
POST /api/cctv/devices
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Associe un appareil à un club
Paramètres
body `string` (obligatoire) Objet JSON de mise à jour de l'enregistrement de l'appareil CCTV.Point de terminaison
POST /api/cctv/devices/associate
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/associate \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Envoie une requête MQTT à l'UUID d'un appareil donné et attend en réponse (via websocket) les capacités disponibles de la caméra.
Paramètres
club `string` (obligatoire) ID interne du club propriétaire de l'appareil interrogé. body `string` (obligatoire) Objet JSON des paramètres de mise à jour.Point de terminaison
POST /api/cctv/devices/list-camera-capabilities/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/list-camera-capabilities/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Répertorier les enregistrements d'appareils
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder.Point de terminaison
GET /api/cctv/devices/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/devices/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Supprime une caméra réseau en la marquant comme supprimée et en la retirant du FEED_CONFIG de l'Edge Processor
Paramètres
club `string` (obligatoire) ID interne du club propriétaire de l'appareil. balenaUUID `string` (obligatoire) UUID de la caméra réseau à supprimer.Point de terminaison
DELETE /api/cctv/devices/remove-network-camera/{club}/{balenaUUID}
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/devices/remove-network-camera/{club}/{balenaUUID} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Enregistre tout ou partie des capacités configurées de la caméra et les applique à l'appareil sous forme de variable d'environnement (via balena)
Paramètres
club `string` (obligatoire) ID interne du club propriétaire de l'appareil interrogé. body `string` (obligatoire) Objet JSON des paramètres de mise à jour.Point de terminaison
POST /api/cctv/devices/save-camera-capabilities/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/save-camera-capabilities/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Enregistre un masque de mouvement (s'il est configuré) pour la caméra et l'applique à l'appareil sous forme de variable d'environnement (via balena)
Paramètres
club `string` (obligatoire) ID interne du club propriétaire de l'appareil interrogé. body `string` (obligatoire) Objet JSON du masque de la caméra.Point de terminaison
POST /api/cctv/devices/save-camera-mask/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/save-camera-mask/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Envoie une commande v4l2 précise (luminosité ou contraste, par exemple) à l'appareil physique
Paramètres
club `string` (obligatoire) ID interne du club propriétaire de l'appareil interrogé. body `string` (obligatoire) Objet JSON des paramètres de mise à jour.Point de terminaison
POST /api/cctv/devices/set-camera-capability/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/set-camera-capability/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Tester l'URL de flux d'une caméra réseau
Envoie une commande de test à un Edge Processor pour valider l'URL de flux d'une caméra avec ffprobe
Corps de la requête
Point de terminaison
POST /api/cctv/devices/test-stream
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/test-stream \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Supprime définitivement une détection de visage de la base de données. Sert à retirer les entrées de suivi erronées ou mal associées du journal d'activité d'une personne.
Paramètres
club `string` (obligatoire) fdID `string` (obligatoire)Point de terminaison
DELETE /api/cctv/face-detections/:club/:fdID
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/face-detections/:club/:fdID \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des données de détection de visages d'une personne
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder. personID `string` (obligatoire) ID de la personne dans le système d'identification facialePoint de terminaison
GET /api/cctv/face-detections/:club/:personID
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/face-detections/:club/:personID \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie les détections de visages qui font référence à une image recadrée de personne donnée, interrogées via le GSI personCropImage.
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder. personCropImage `string` (obligatoire) URL de l'image recadrée de la personne enregistrée dans la détection de visage. limit `string` (facultatif) Nombre maximal de détections à renvoyer. nextToken `string` (facultatif) Jeton de pagination issu d'une réponse précédente.Point de terminaison
GET /api/cctv/face-detections-by-person-crop-image/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/face-detections-by-person-crop-image/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des données de détection de visages d'un club, regroupées sur une plage relative à l'heure actuelle
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder.Point de terminaison
GET /api/cctv/face-detections/:club/timeline
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/face-detections/:club/timeline \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des données de détection de visages d'un club
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder.Point de terminaison
GET /api/cctv/face-detections/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/face-detections/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Rechercher des blocs de chronologie de détection de visages dans une installation avec OpenSearch
Paramètres
facilityId `string` (obligatoire) ID interne de l'installation dans laquelle effectuer la recherche timezone `string` (obligatoire) Fuseau horaire IANA pour la conversion des dates (par exemple Pacific/Auckland) startDate `string` (facultatif) Filtre de date de début (YYYY-MM-DD), converti en startUnix selon le fuseau horaire endDate `string` (facultatif) Filtre de date de fin (YYYY-MM-DD), converti en endUnix selon le fuseau horaire personId `string` (facultatif) Filtrer sur un ID de personne précis query `string` (facultatif) Recherche en texte libre (par exemple le nom d'une personne) limit `string` (facultatif) Résultats par page (20 par défaut, 100 au maximum) filters `string` (facultatif) Objet de filtres encodé en JSON (par exemple {"matchType":"identified"}) sortBy `string` (facultatif) Champ de tri (startUnix, endUnix, created). Par défaut : endUnix. page `string` (facultatif) Numéro de page pour la pagination (1 par défaut) sortOrder `string` (facultatif) Sens du tri (asc ou desc). Par défaut : desc.Point de terminaison
GET /api/cctv/search/face-detections/timeline-blocks/{facilityId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/search/face-detections/timeline-blocks/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des rapports concernant l'installation du club
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder.Point de terminaison
GET /api/cctv/facility/:club/reports
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/facility/:club/reports \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Déclenche à la demande la génération de cartes de chaleur. Appelle la même logique Starter que la tâche cron planifiée, mais permet de cibler une installation, une date/heure et un ensemble de périodes précis. Sans corps de requête, se comporte exactement comme la tâche cron : analyse toutes les installations éligibles et met en file chaque appareil.
Corps de la requête
Point de terminaison
POST /api/cctv/heatmaps/generate
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/cctv/heatmaps/generate \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Résout l'emplacement d'un PNG de carte de chaleur composé sur fenêtre glissante pour un appareil. Renvoie uniquement des métadonnées JSON : les octets du PNG se trouvent sur le domaine de contenu, et le front-end construit l'URL ainsi : `${contentDomain}/cctv/${storageService}/${region}/${filePath}?s=${token}` Ordre de résolution : 1. Correspondance dans l'index DynamoDB `composed#…` → renvoi immédiat (~10 ms). 2. HEAD Wasabi sur la clé de cache déterministe. En cas de correspondance, écrit une ligne d'index de complément et renvoie le résultat. 3. Repli sur une version obsolète : il existe un enregistrement composé pour ce tuple (appareil, plage, heure), même à une autre date. Renvoyé immédiatement avec `cache: 'HIT-STALE'` afin que le front-end puisse afficher *quelque chose*. Une nouvelle composition est lancée en asynchrone. 4. Chemin à froid : aucun enregistrement n'existe. La Lambda de composition est mise en file via `InvocationType: 'Event'` et le point de terminaison renvoie `202 { cache: 'PENDING' }`. Le front-end interroge jusqu'à l'arrivée d'un enregistrement (généralement 3 à 5 secondes). Gestion du jour courant : lorsque `endDate` correspond à « aujourd'hui » à l'heure locale de l'installation, le point de terminaison sert le PNG de la veille : les tranches du jour sont encore en cours d'écriture par la tâche cron Starter et une nouvelle composition serait incomplète. La réponse reprend la `endDate` demandée et inclut `endDateUsed` (= la veille). Énumération `cache` : - `HIT` : servi depuis l'index DDB pour la date demandée. - `HIT-FALLBACK` : jour courant demandé ; ligne d'index de la veille servie. - `HIT-BACKFILL` : absent de DDB mais Wasabi avait le PNG ; la ligne vient d'être écrite. - `HIT-FALLBACK-BACKFILL` : complément sur le repli à la veille. - `HIT-STALE` : aucun enregistrement pour la date demandée, mais il en existe un à une autre date pour ce tuple ; servi immédiatement et une nouvelle composition est mise en file en arrière-plan. - `PENDING` : aucun enregistrement ; la composition a été mise en file. Le front-end doit interroger de nouveau. La réponse est `202 Accepted`, sans `filePath`.
Paramètres
facilityId `string` (obligatoire) deviceUUID `string` (obligatoire) Appareil pour lequel composer. Les compositions sont propres à chaque appareil. hour `integer` (obligatoire) Heure de la journée (0 à 23) à composer sur la fenêtre d'historique. endDate `string` (facultatif) Dernière date de la fenêtre (YYYY-MM-DD). Par défaut, aujourd'hui (fuseau horaire de l'installation). range `string` (facultatif) Fenêtre d'historique. Doit faire partie des plages autorisées. nocache `integer` (facultatif) Définir sur `1` pour contourner les couches de cache DDB + HEAD et forcer une nouvelle composition.Point de terminaison
GET /api/cctv/heatmaps/hourly/{facilityId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/heatmaps/hourly/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Indique quelles heures de la journée disposent de tranches `1h` pour un appareil sur une fenêtre d'historique glissante. Le front-end s'en sert pour alimenter le sélecteur d'heure, à côté d'un sélecteur de date et de plage, avant d'appeler le point de terminaison de composition (`/api/cctv/heatmaps/hourly/...`). Exemple : `GET /api/cctv/heatmaps/query-hourly/Birkdale?deviceUUID=abc123&endDate=2026-04-16&range=30d` En interne : une requête de plage DynamoDB sur `cctvheatmaps` (`sk BETWEEN 1h#{start}-00 AND 1h#{end}-23`), regroupée par heure. Renvoie une entrée par heure comportant au moins une tranche, avec une image JPEG de référence représentative (issue du jour le plus récent de la fenêtre : la référence est commune à chaque appareil pour une même journée).
Paramètres
facilityId `string` (obligatoire) deviceUUID `string` (obligatoire) Appareil à interroger. Les tranches horaires sont propres à chaque appareil. endDate `string` (facultatif) Dernière date de la fenêtre (YYYY-MM-DD). Par défaut, aujourd'hui (fuseau horaire de l'installation). range `string` (facultatif) Fenêtre d'historique. Doit faire partie des plages autorisées.Point de terminaison
GET /api/cctv/heatmaps/query-hourly/{facilityId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/heatmaps/query-hourly/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Interroge les enregistrements de cartes de chaleur pré-générés d'une installation. **Tous les enregistrements d'un type de période :** - `/api/cctv/heatmaps/Birkdale?periodType=1y` - `/api/cctv/heatmaps/Birkdale?deviceUUID=abc123&periodType=1d` **Plage de dates, un seul type de période :** - `/api/cctv/heatmaps/Birkdale?periodType=1d&from=2026-03-01&to=2026-03-31` - `/api/cctv/heatmaps/Birkdale?periodType=6h&from=2026-03-31&to=2026-03-31` **Plage de dates, tous les types de période applicables (omettre periodType) :** - `/api/cctv/heatmaps/Birkdale?from=2026-03-01&to=2026-03-31` Renvoie les enregistrements annuels, semestriels, trimestriels, etc., jusqu'aux enregistrements 6h, qui chevauchent la plage indiquée. **Instant précis, les 9 types de période pour un appareil :** - `/api/cctv/heatmaps/Birkdale?deviceUUID=abc123&date=2026-03-15T14:30` Renvoie jusqu'à 9 enregistrements (1y, 6m, 3m, 2m, 1m, 1w, 1d, 12h, 6h).
Paramètres
facilityId `string` (obligatoire) Identifiant de l'installation. deviceUUID `string` (facultatif) Interroge un appareil précis. S'il est omis, la requête porte sur tous les appareils (GSI). periodType `string` (facultatif) Filtre sur un seul type de période. S'il est omis avec from/to, tous les types sont interrogés. from `string` (facultatif) Date de début (yyyy-mm-dd). Doit être utilisée avec `to`. to `string` (facultatif) Date de fin (yyyy-mm-dd). Doit être utilisée avec `from`. date `string` (facultatif) Recherche à un instant précis (yyyy-mm-dd ou yyyy-mm-ddTHH:mm). Nécessite deviceUUID. Renvoie un enregistrement par type de période.Point de terminaison
GET /api/cctv/heatmaps/{facilityId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/heatmaps/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtenir la miniature du flux en direct de l'appareil
Paramètres
club `string` (obligatoire) ID interne du club. deviceId `string` (obligatoire) ID interne de l'appareil CCTV.Point de terminaison
GET /api/cctv/livestream/:club/thumbnail/:deviceId
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/livestream/:club/thumbnail/:deviceId \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Indiquer au système CCTV que vous allez regarder un flux en direct
Paramètres
club `string` (obligatoire) ID interne du club. deviceId `string` (obligatoire) ID interne de l'appareil CCTV.Point de terminaison
POST /api/cctv/livestream/:club/iswatching/:deviceId
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/cctv/livestream/:club/iswatching/:deviceId \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Approuver une correspondance d'intersection
Définit le statut de la correspondance sur confirmé et enregistre le réviseur.
Paramètres
club `string` (obligatoire) matchId `string` (obligatoire)Point de terminaison
POST /api/cctv/matching/{club}/detail/{matchId}/approve
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/cctv/matching/{club}/detail/{matchId}/approve \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtenir une correspondance d'intersection avec le détail des visites
Renvoie l'enregistrement de la correspondance et la répartition des horaires par visite.
Paramètres
club `string` (obligatoire) matchId `string` (obligatoire)Point de terminaison
GET /api/cctv/matching/{club}/detail/{matchId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/matching/{club}/detail/{matchId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Associer manuellement une personne non reconnue à un membre
Associe un personId CCTV à un membre précis et définit la correspondance comme confirmée.
Paramètres
club `string` (obligatoire) matchId `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/cctv/matching/{club}/detail/{matchId}/link
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/cctv/matching/{club}/detail/{matchId}/link \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Répertorier les correspondances d'intersection d'une installation
Renvoie les correspondances paginées, filtrées par statut.
Paramètres
club `string` (obligatoire) status `string` (facultatif) limit `integer` (facultatif) nextToken `string` (facultatif)Point de terminaison
GET /api/cctv/matching/{club}/list
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/matching/{club}/list \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Refuser une correspondance d'intersection
Définit le statut de la correspondance sur refusé et enregistre le réviseur.
Paramètres
club `string` (obligatoire) matchId `string` (obligatoire)Point de terminaison
POST /api/cctv/matching/{club}/detail/{matchId}/reject
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/cctv/matching/{club}/detail/{matchId}/reject \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtenir les totaux récapitulatifs des correspondances d'intersection
Renvoie le nombre de correspondances de l'installation, regroupées par statut.
Paramètres
club `string` (obligatoire) ID de l'installationPoint de terminaison
GET /api/cctv/matching/{club}/summary
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/matching/{club}/summary \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Dissocier une correspondance de profil apprise automatiquement
Rétablit le statut refusé d'une correspondance associée et efface autoLearnedFrom dans la fiche du membre.
Paramètres
club `string` (obligatoire) matchId `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/cctv/matching/{club}/detail/{matchId}/unlink
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/cctv/matching/{club}/detail/{matchId}/unlink \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Lit l'état d'une opération « upsert identified person » en cours (création et modification). Lit la ligne directement dans la table `people-ops` gérée par cctv-rekognition-api, sans passer par une Lambda. Utilisé par le front-end CCTV pour suivre la progression après POST /api/cctv/people/{facility}/identified. Le chemin est voisin de `/cctv/people/...` (et non imbriqué dessous) afin que le routeur express ne puisse pas confondre `operationId` avec `:personID` sur `/cctv/people/:club/:personID`. Voir l'ordre des globs de createAPIRouter. Renvoie un espace réservé `pending` tant que la Lambda upsertIdentifiedPerson n'a pas encore écrit sa première étape (période de démarrage à froid). Le hook d'interrogation du front-end traite de la même façon l'espace réservé et l'état pending, ce qui garantit un contrat stable pour les appelants.
Paramètres
operationId `string` (obligatoire)Point de terminaison
GET /api/cctv/people-operations/{operationId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people-operations/{operationId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Ajoute une image de visage (issue d'une détection de suivi existante) au sujet de reconnaissance CompreFace de la personne et enregistre une référence dans la table des photos fantômes. N'envoie PAS l'image vers Wasabi : elle s'y trouve déjà en tant que capture de détection de visage.
Paramètres
club `string` (obligatoire) personID `string` (obligatoire) body `string` (obligatoire)Point de terminaison
POST /api/cctv/people/:club/:personID/add-face
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/:club/:personID/add-face \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Ajouter des photos fantômes à la fiche d'une personne
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder. personID `string` (obligatoire) ID d'enregistrement de la personne body `string` (obligatoire) Objet JSON du nouveau bloc de configuration à ajouter au système.Point de terminaison
POST /api/cctv/people/:club/shadow-photos/:personID
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/:club/shadow-photos/:personID \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Interroger les photos fantômes d'une personne
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder. personID `string` (obligatoire) ID d'enregistrement de la personnePoint de terminaison
GET /api/cctv/people/:club/shadow-photos/:personID
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/:club/shadow-photos/:personID \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Supprime définitivement un enregistrement de photo fantôme de CCTVShadowPhotosTable et retire le visage correspondant de CompreFace (si faceId est enregistré).
Paramètres
club `string` (obligatoire) personID `string` (obligatoire) id `string` (obligatoire) ID de l'enregistrement de photo fantôme (clé primaire)Point de terminaison
DELETE /api/cctv/people/:club/shadow-photos/:personID/:id
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/people/:club/shadow-photos/:personID/:id \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Supprime les références et les enregistrements Rekognition associés à partir d'un personID
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder. personID `string` (obligatoire) ID unique de la personne CCTV.Point de terminaison
DELETE /api/cctv/people/:club/:personID
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/people/:club/:personID \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la fiche d'une personne d'un club
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder. personID `string` (obligatoire) ID de la personne dans la base de données.Point de terminaison
GET /api/cctv/people/:club/:personID
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/:club/:personID \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtenir les zones d'accès correspondant au profil d'abonnement d'une personne
Résout le type de membre, les étiquettes et les formules d'abonnement de la personne, puis renvoie les zones d'accès réelles (origin=membership-plan, non absorbées) qui correspondent aux règles d'inclusion et d'exclusion. Le champ accessRestriction de chaque zone est réduit aux seules règles qui s'appliquent à la personne. Les caméras des zones enfants sont fusionnées dans les zones parentes.
Paramètres
club `string` (obligatoire) ID interne de l'installation personID `string` (obligatoire) ID de la personne dans la table des personnes CCTVPoint de terminaison
GET /api/cctv/people/{club}/{personID}/allowed-zones
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/{club}/{personID}/allowed-zones \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie l'état actuel d'une tâche de fusion, avec les résultats pour chaque source. Interrogez ce point de terminaison toutes les 3 à 5 secondes tant que le statut est IN_PROGRESS.
Paramètres
club `string` (obligatoire) mergeJobID `string` (obligatoire)Point de terminaison
GET /api/cctv/people/:club/merge-status/:mergeJobID
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/:club/merge-status/:mergeJobID \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lance en arrière-plan la fusion de plusieurs profils de personnes non identifiées en un seul profil conservé. Répond immédiatement 202 avec un mergeJobID. Interrogez /merge-status/:mergeJobID pour suivre la progression.
Paramètres
club `string` (obligatoire) body `string` (obligatoire)Point de terminaison
POST /api/cctv/people/:club/merge-unidentified
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/:club/merge-unidentified \
-H "x-api-key: YOUR_API_KEY"
Ajouter un visage à la collection de la liste noire d'une installation
Paramètres
facilityId `string` (obligatoire) ID interne de l'installationCorps de la requête
Point de terminaison
POST /api/cctv/people/{facilityId}/blacklist
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/{facilityId}/blacklist \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Crée ou met à jour une personne identifiée dans une installation : crée une nouvelle fiche ou met à jour une fiche existante. Relaie la requête à la Lambda upsertIdentifiedPerson, qui écrit la fiche de la personne, envoie la photo éventuellement fournie vers Wasabi et réindexe le visage dans CompreFace. Lorsque `isNewRecord` vaut true (par défaut), la Lambda exécute la branche de création (cctvPeople.save) et un `personID` est généré s'il n'est pas fourni. Lorsque `isNewRecord` vaut false, la Lambda exécute la branche de mise à jour (cctvPeople.update) : `personID` est alors obligatoire et doit identifier une fiche existante.
Paramètres
facilityId `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/cctv/people/{facilityId}/identified
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/{facilityId}/identified \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Met à jour l'ensemble des champs partenaires facultatifs synchronisés dans la table des personnes CCTV d'une installation.
Paramètres
facilityId `string` (obligatoire) ID interne de l'installationCorps de la requête
Point de terminaison
PUT /api/cctv/people/{facilityId}/sync-fields
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/cctv/people/{facilityId}/sync-fields \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Renvoie la liste des données des personnes d'un club
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder.Point de terminaison
GET /api/cctv/people/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Recherche des personnes dans une installation à partir d'une image de visage. Appelle la Lambda imageFaceSearch de cctv-rekognition-api avec l'image base64 envoyée et l'ID de l'installation indiqué dans le chemin. Renvoie les correspondances classées ainsi qu'une synthèse des attributs DeepFace.
Paramètres
club `string` (obligatoire) ID de l'installation ou du club body `string` (obligatoire)Point de terminaison
POST /api/cctv/people/{club}/search-by-face
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/{club}/search-by-face \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Rechercher des personnes dans une installation avec OpenSearch
Paramètres
facilityId `string` (obligatoire) ID interne de l'installation dans laquelle effectuer la recherche query `string` (facultatif) Terme de recherche (par exemple un nom) page `string` (facultatif) Numéro de page (1 par défaut) limit `string` (facultatif) Résultats par page (20 par défaut, 100 au maximum) filters `string` (facultatif) Objet de filtres encodé en JSON (par exemple {"membershipStatus":"active"}) sortBy `string` (facultatif) Champ de tri (created, lastName, firstName, membershipUpdatedOn). Par défaut : created. sortOrder `string` (facultatif) Sens du tri (asc ou desc). Par défaut : desc.Point de terminaison
GET /api/cctv/search/people/:facilityId
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/search/people/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Met à jour les détections de visages avec un nouveau personID et associe les enregistrements Rekognition
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder. body `string` (obligatoire) Objet JSON du nouveau bloc de configuration à ajouter au système.Point de terminaison
POST /api/cctv/people/:club/validate
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/:club/validate \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie un objet contenant tous les filtres disponibles pour les données d'enregistrements CCTV d'un club
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder.Point de terminaison
GET /api/cctv/recordings/filters/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/filters/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Diffuser l'enregistrement.
Point de terminaison
GET /api/cctv/recordings/:club/:dir/:filename
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/:club/:dir/:filename \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Mettre à jour les informations de l'enregistrement.
Point de terminaison
PUT /api/cctv/recordings/:club/:dir/:filename
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/cctv/recordings/:club/:dir/:filename \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie une synthèse des données d'enregistrements CCTV d'un club
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder.Point de terminaison
GET /api/cctv/recordings/:club/summary
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/:club/summary \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des données d'enregistrements CCTV d'un club sur une plage relative à l'heure actuelle
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder.Point de terminaison
GET /api/cctv/recordings/:club/timeline
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/:club/timeline \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des données d'enregistrements CCTV d'un club
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder.Point de terminaison
GET /api/cctv/recordings/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Les enregistrements sont supprimés automatiquement après une période définie : utilisez cette fonction pour les conserver
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder.Point de terminaison
POST /api/cctv/recordings/:club/:action
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/cctv/recordings/:club/:action \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Rechercher les instantanés de rapport d'une installation sur une plage de dates
Paramètres
facilityId `string` (obligatoire) ID interne de l'installation startDate `string` (obligatoire) Filtre de date de début (YYYY-MM-DD) endDate `string` (obligatoire) Filtre de date de fin (YYYY-MM-DD) deviceIds `string` (facultatif) Liste d'ID de caméras ou d'appareils, séparés par des virgules, sur lesquels filtrer view `string` (facultatif) Autre vue de rapport à calculer (transmise à la Lambda de rapport)Point de terminaison
GET /api/cctv/reports/search-report-snapshots/{facilityId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/reports/search-report-snapshots/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Recherche vectorielle dans les médias CCTV indexés d'une installation. Répond par un flux text/event-stream relayé depuis la Lambda searchAnything, afin que le client puisse afficher la progression pendant qu'un conteneur à froid charge l'encodeur. Les événements sont `status`, puis `result` ou `error`. Il existe trois façons d'interroger, dont deux avec ce verbe. Envoyez `query` pour une recherche en texte libre. Envoyez `seedIndex` + `seedKey` pour une recherche par l'exemple (« plus de résultats similaires ») à partir du vecteur d'une ligne déjà présente dans l'index : c'est ainsi que vous trouvez d'autres résultats semblables à celui que l'utilisateur consulte. Pour rechercher à partir d'une image dont dispose l'utilisateur, envoyez plutôt les octets en `POST` sur ce même chemin. Envoyez des mots avec une image pour affiner l'un par l'autre : **le texte filtre, l'image classe**. Les candidats proviennent de l'exemple, les mots déterminent lesquels sont conservés et la similarité visuelle détermine l'ordre : les résultats ressemblent donc toujours à l'image, et les mots écartent ceux qui ne correspondent pas. Les deux ne sont jamais fusionnés en un seul vecteur, c'est pourquoi `queryKind` reste `similar` pour une recherche combinée ; c'est la présence de `query` dans le résultat qui indique qu'un filtre textuel a été appliqué. Les recherches combinées ne renvoient assez souvent aucun résultat ; traitez ce cas comme un résultat à part entière : `perIndex.
Paramètres
facilityId `string` (obligatoire) ID interne de l'installation dans laquelle effectuer la recherche query `string` (facultatif) Description en texte libre de ce qu'il faut rechercher. Obligatoire sauf si warm=1 ou si un exemple est envoyé. Combinée à un exemple, elle ne sert plus au classement mais devient un filtre sur les candidats de l'exemple, en écartant ceux dont le score textuel est inférieur au seuil de pertinence de l'index. seedIndex `string` (facultatif) Recherche par l'exemple plutôt que par texte : l'index dans lequel se trouve la ligne d'exemple (person-crops, recording-frames, timelapse-frames). Il s'agit de l'`index` du résultat sur lequel l'utilisateur a cliqué. Doit être envoyé avec seedKey. seedKey `string` (facultatif) La `key` de la ligne d'exemple, reprise telle quelle du résultat. L'exemple est exclu de ses propres résultats : pour un enregistrement, cela concerne tout le clip, puisque ses autres images sont espacées de 2 s et quasi identiques. seedFrameId `string` (facultatif) Obligatoire lorsque seedIndex vaut recording-frames : cet index stocke une ligne par image échantillonnée et toutes partagent la clé du clip, si bien que la clé seule désigne un clip et non un moment. Envoyez le `frameId` du résultat. Les lignes plus anciennes n'en ont pas : envoyez alors seedOffsetMs. seedOffsetMs `string` (facultatif) Identifiant d'image de repli pour les exemples recording-frames dont la ligne est antérieure à `frame_id`. Envoyez l'`offsetMs` du résultat. Ignoré lorsque seedFrameId est fourni. warm `string` (facultatif) Préchauffe un conteneur Lambda sans exécuter de recherche. À déclencher au chargement de la page. warmTarget `string` (facultatif) Encodeur chargé par `warm` : `text` (par défaut), `image` ou `both`. Le modèle de vision pèse 355 Mo contre 283 Mo pour le modèle textuel ; son préchauffage est donc facultatif : ne demandez `image` qu'une fois que l'utilisateur a réellement préparé une image, pas au chargement de la page. index `string` (facultatif) Jeux de données à interroger, séparés par des virgules : person-crops, recording-frames, timelapse-frames. Les résultats sont fusionnés en une seule liste triée par score. Les trois sont interrogés par défaut ; passez une liste explicite pour restreindre la recherche. timelapse-frames couvre les caméras qui n'enregistrent rien et ne produisent qu'une image par minute, et son seuil de pertinence n'est pas encore calibré. model `string` (facultatif) Encodeur à utiliser pour la requête. Doit correspondre à l'encodeur utilisé pour indexer le jeu de données. limit `string` (facultatif) Nombre de résultats à renvoyer par index (50 par défaut, 100 au maximum) : il ne s'agit pas d'un total, une recherche sur les trois index peut donc renvoyer jusqu'à trois fois ce nombre. Pour les enregistrements, ce sont les clips qui sont comptés, et non les images correspondantes. from `string` (facultatif) Ne retient que les médias capturés à partir de cette heure, en millisecondes depuis l'epoch. Il s'agit de l'heure de capture, et non de l'heure d'envoi. to `string` (facultatif) Ne retient que les médias capturés avant cette heure (exclue), en millisecondes depuis l'epoch. cameraId `string` (facultatif) balenaUUID des caméras sur lesquelles restreindre la recherche, séparés par des virgules : le champ `balenaUUID` de chaque entrée renvoyée par /api/cctv/recordings/filters/:club. C'est le filtre de caméra à privilégier : tous les index stockent cette même valeur, si bien qu'un seul filtre les restreint tous. Notez que seules les images recadrées dont la jointure avec la détection de visage a abouti la contiennent (~1 % aujourd'hui) : restreindre les images recadrées par caméra renverra donc peu ou pas de résultats tant que le complément des images recadrées n'aura pas été exécuté ; les enregistrements sont entièrement renseignés et filtrés avec précision. camera `string` (facultatif) Noms des caméras sur lesquelles restreindre la recherche, séparés par des virgules. Ne concerne en pratique que les enregistrements : person-crops stocke un nom de caméra vide sur chaque ligne, si bien que toute valeur exclut toutes les images recadrées. Préférez cameraId. cameraGroup `string` (facultatif) Groupes de caméras sur lesquels restreindre la recherche, séparés par des virgules. Renseigné pour tous les enregistrements mais seulement pour ~1 % des images recadrées, pour la même raison que cameraId. minScore `string` (facultatif) Remplace le seuil cosinus par index qui filtre le bruit. À omettre en production ; chaque index dispose d'une valeur par défaut calibrée (et d'une autre, distincte et non calibrée, pour les recherches par l'exemple). Passez 0 pour voir les plus proches voisins sans filtre lors du débogage de la pertinence.Point de terminaison
GET /api/cctv/search/anything/:facilityId
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/search/anything/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Recherche à partir d'une image dont dispose l'utilisateur, plutôt que par des mots ou par un résultat déjà affiché. Identique au GET à tous les autres égards (mêmes paramètres de requête, même flux d'événements, même forme de résultat) : seule la différence est donc documentée ici. Envoyez les **octets du fichier d'origine** comme corps de requête avec un Content-Type `image/*`. Ne redimensionnez pas, ne recadrez pas et ne réencodez pas l'image dans le navigateur au préalable : le serveur reproduit un redimensionnement très précis (compression en 256x256 avec un noyau bilinéaire anticrénelé) utilisé pour construire les vecteurs indexés, alors que la mise à l'échelle par canvas en utilise un autre. Mesurée, cette substitution aboutit à une distance cosinus d'environ 0,93 par rapport à la bonne réponse, soit davantage qu'entre deux images réellement différentes : les résultats sont alors classés de façon plausible mais erronée, sans aucune erreur. Limite de 4 Mo, qui tient au transport et non à la qualité : les octets transitent dans la charge utile d'appel de la Lambda, plafonnée à 6 Mo, et le base64 en augmente la taille d'un tiers. Les résultats sont évalués d'image à image : `queryKind` vaut donc `image` et les scores sont sur la même échelle, bien plus élevée, qu'une recherche par l'exemple ; ils ne sont jamais comparables aux scores textuels. Attendez-vous à des scores légèrement *inférieurs* à ceux d'une recherche par l'exemple équivalente : le vecteur d'un exemple a été écrit par l'appareil lui-même, alors qu'une image envoyée est réencodée ici par un autre moteur, ce qui la place à quelques centièmes de l'endroit où l'appareil l'aurait placée. Mesurés, les résultats sont malgré tout de qualité égale ; ce n'est simplement pas exactement le même ensemble. Ajouter `query` filtre les résultats selon ces mots, exactement comme pour un exemple. L'envoi d'un exemple *et* d'une image est refusé : les deux constituent l'élément à classer, la combinaison n'a donc pas de sens. Il s'agit de la requête la plus coûteuse traitée par ce point de terminaison. Une image envoyée charge le modèle de vision, et l'ajout de mots charge aussi le modèle textuel, les deux sur un conteneur à froid. Appeler `warm=1&warmTarget=image` dès que l'utilisateur prépare une image retire ce coût du chemin critique.
Paramètres
facilityId `string` (obligatoire) ID interne de l'installation dans laquelle effectuer la recherche body `string` (obligatoire) Octets bruts de l'image, non modifiés, 4 Mo au maximum query `string` (facultatif) Mots facultatifs pour affiner les résultats de l'image, en écartant les correspondances dont le score textuel est inférieur au seuil de pertinence de l'index.Point de terminaison
POST /api/cctv/search/anything/:facilityId
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/cctv/search/anything/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie les informations de stockage et d'autres métriques de la vidéosurveillance du club
Point de terminaison
GET /api/cctv/storage-details/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/storage-details/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des enregistrements d'envoi de timelapses d'un club
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder.Point de terminaison
GET /api/cctv/timelapse/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/timelapse/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Répertorier les actions effectuées par les utilisateurs sur les enregistrements dans le front-end ou l'interface CCTV
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder.Point de terminaison
GET /api/cctv/ui/actions/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/ui/actions/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Consigner une action effectuée par un utilisateur sur les enregistrements dans le front-end ou l'interface CCTV
Paramètres
body `string` (obligatoire) Objet JSON du nouveau bloc de configuration à ajouter au système.Point de terminaison
POST /api/cctv/ui/actions/:club
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/cctv/ui/actions/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtenir le jeton utilisateur pour le front-end ou l'interface CCTV
Paramètres
club `string` (obligatoire) ID du clubPoint de terminaison
GET /api/cctv/ui/token/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/ui/token/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Générer un jeton d'accès temporaire ou invité
Paramètres
club `string` (obligatoire) Identifiant unique du club. body `string` (obligatoire) Objet JSON des détails du jeton à émettre.Point de terminaison
POST /api/cctv/token/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/cctv/token/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{
"accessID": "00000000-0000-0000-0000-000000000014"
}
Renvoie la liste des enregistrements de jetons d'accès temporaire ou invité
Paramètres
club `string` (obligatoire) Identifiant unique du club.Point de terminaison
GET /api/cctv/token/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/cctv/token/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtenir un jeton d'accès à partir d'un ID d'accès
Paramètres
accessID `string` (obligatoire) ID de l'enregistrement du jeton dans la base de données.Point de terminaison
POST /guest/cctv/token/:accessID
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/guest/cctv/token/:accessID \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Supprimer des horaires d'accès de l'installation
Paramètres
facilityId `string` (obligatoire) body `object` (obligatoire) Objet JSON des nouveaux horaires d'accès.Point de terminaison
DELETE /api/ai/computer-vision/access-hours/:facilityId
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/ai/computer-vision/access-hours/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des horaires d'accès de l'installation
Paramètres
facilityId `string` (obligatoire)Point de terminaison
GET /api/ai/computer-vision/access-hours/:facilityId
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/ai/computer-vision/access-hours/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Met à jour ou crée des horaires d'accès de l'installation
Paramètres
facilityId `string` (obligatoire) body `object` (obligatoire) Objet JSON des nouveaux horaires d'accès.Point de terminaison
POST /api/ai/computer-vision/access-hours/:facilityId
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/ai/computer-vision/access-hours/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Supprimer une zone d'accès de l'installation
Paramètres
facilityId `string` (obligatoire) body `object` (obligatoire) Objet JSON de la nouvelle zone d'accès.Point de terminaison
DELETE /api/ai/computer-vision/access-zones/:facilityId
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/ai/computer-vision/access-zones/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des zones d'accès de l'installation
Paramètres
facilityId `string` (obligatoire)Point de terminaison
GET /api/ai/computer-vision/access-zones/:facilityId
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/ai/computer-vision/access-zones/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Met à jour ou crée une zone d'accès de l'installation
Paramètres
facilityId `string` (obligatoire) body `object` (obligatoire) Objet JSON de la nouvelle zone d'accès.Point de terminaison
POST /api/ai/computer-vision/access-zones/:facilityId
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/ai/computer-vision/access-zones/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie l'union de tous les ID de modules d'administration des marques et installations d'une organisation, sous forme d'objets module.
Paramètres
organisationId `string` (obligatoire) ID de l'organisationPoint de terminaison
GET /api/organisations/{organisationId}/admin-modules
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/organisations/{organisationId}/admin-modules \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste de toutes les organisations
Paramètres
includeBrands `string` (facultatif) Inclure les marques associées à l'organisation includeFacilities `string` (facultatif) Inclure les installations associées à l'organisation includeRegions `string` (facultatif) Inclure les régions associées à l'organisationPoint de terminaison
GET /api/organisations
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/organisations \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Outil d'IA simple qui analyse le contenu d'un ticket d'assistance et propose des suggestions à partir des sujets disponibles, ainsi que des sujets de recherche Algolia suggérés...
Paramètres
messageBody `string` (obligatoire) Corps du message à envoyer topicData `string` (obligatoire) Objet ou tableau JSON des topicData renvoyées par osTicket (système de tickets et d'assistance) facilityId `string` (facultatif) ID interne du club, nécessaire pour déterminer l'index Algolia dans lequel effectuer la recherche.Point de terminaison
PUT /api/ai/helpers/analyse-support-ticket
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/ai/helpers/analyse-support-ticket \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
API simple de génération d'images
Paramètres
type `string` (obligatoire) Type d'image à générer name `string` (obligatoire) Nom de l'image maxSize `string` (facultatif) Taille maximale facultative de la réponse, par exemple 200KB, 1MB ou un nombre d'octets. L'image est redimensionnée ou compressée pour respecter cette taille.Point de terminaison
PUT /api/ai/images/:type/:name
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/ai/images/:type/:name \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Requête LLM simple
Point de terminaison léger pour des requêtes LLM simples et sans état. Utilise un modèle économique sans raisonnement (gpt-4o-mini) avec des limites de jetons strictes. Pas d'historique de conversation, pas d'outils, pas de streaming : un prompt en entrée, du texte en sortie.
Corps de la requête
Point de terminaison
POST /api/ai/llm/query
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/ai/llm/query \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Renvoie la configuration Algolia, notamment le nom de l'index, l'ID de l'application et la clé API.
Paramètres
facilityId `string` (obligatoire)Point de terminaison
GET /api/facilities/{facilityId}/algolia/config
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/algolia/config \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Initialise l'index Algolia des supports marketing imprimés
Paramètres
organisationId `string` (obligatoire)Point de terminaison
PUT /api/algolia/index
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/algolia/index \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Rechercher des supports marketing imprimés
Corps de la requête
Point de terminaison
POST /algolia/search-marketing-print
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/algolia/search-marketing-print \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Rechercher des supports marketing imprimés
Paramètres
club `string` (facultatif) ID du club searchTerms `string` (facultatif) Termes de recherche algoliaArgs `object` (facultatif) Arguments de recherche Algolia supplémentairesPoint de terminaison
GET /algolia/search-marketing-print
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/algolia/search-marketing-print \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Met à jour en masse les objets marketing imprimés d'un club donné
Point de terminaison
POST /algolia/bulk-update-marketing-print
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/algolia/bulk-update-marketing-print \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Récupère les supports marketing imprimés depuis Algolia.
Paramètres
organisationId `string` (obligatoire) search `string` (facultatif) limit `string` (facultatif) brand `string` (facultatif) tag `string` (facultatif)Point de terminaison
GET /api/algolia/marketing/assets
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/algolia/marketing/assets \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Initialise l'index Algolia des supports marketing imprimés avec la configuration de l'installation.
Paramètres
organisationId `string` (obligatoire)Point de terminaison
POST /api/algolia/marketing/assets
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/algolia/marketing/assets \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Effectue une recherche dans un index Algolia donné à partir de termes de recherche, d'un club et/ou d'une langue. La recherche peut être affinée avec des arguments Algolia supplémentaires.
Paramètres
searchTerms `string` (obligatoire) Termes à rechercher dans l'index Algolia. club `string` (facultatif) ID interne du club qui effectue la requête. S'il est indiqué, la recherche est filtrée selon la région associée au club. locale `string` (facultatif) Langue utilisée pour déterminer la région si aucun club n'est indiqué. Déduite de navigator.languages. algoliaArgs `string` (facultatif) Arguments supplémentaires ou personnalisés à transmettre à la requête de recherche Algolia.Point de terminaison
POST /api/algolia/search-wiki
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/algolia/search-wiki \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Répertorie toutes les annonces
Point de terminaison
GET /api/announcements/list
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/announcements/list \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Envoie un fichier vers un BUCKET S3 PUBLIC (via l'API d'envoi de fichiers), qui le post-traite et l'optimise, génère des miniatures, etc. *Remarque : les fichiers seront accessibles publiquement*
Paramètres
file `string` (facultatif) Nom du fichier à envoyer.Point de terminaison
POST /api/asset-upload
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/asset-upload \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie l'état de l'envoi à partir de l'UUID de l'enregistrement d'envoi
Paramètres
uuid `string` (obligatoire) UUID de l'enregistrement d'envoiPoint de terminaison
GET /api/asset-upload/:uuid
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/asset-upload/:uuid \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Envoyer une commande au système Sonos du club
Paramètres
body `object` (obligatoire) Objet JSON de la commande et des données à envoyer à Sonos.Point de terminaison
PUT /api/audio-control/command/:club
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/audio-control/command/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Récupérer la configuration du front-end Contrôle audio
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder.Point de terminaison
GET /api/audio-control/config/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/audio-control/config/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Modifier la configuration du front-end Contrôle audio
Paramètres
body `object` (obligatoire) Objet JSON du nouveau bloc de configuration à ajouter au système.Point de terminaison
PUT /api/audio-control/config/:club/:section
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/audio-control/config/:club/:section \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Récupère les paramètres d'une marque pour une région donnée
Paramètres
brandId `string` (facultatif) ID de la marque regionCode `string` (facultatif) Code ISO de la région dont récupérer les paramètresPoint de terminaison
GET /api/brands/{brandId}/regions/{regionCode}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId}/regions/{regionCode} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Met à jour plusieurs paramètres d'une marque pour une région donnée
Paramètres
brandId `string` (facultatif) ID de la marque à mettre à jour regionCode `string` (facultatif) Code ISO de la région dont mettre à jour les paramètres acceptFreeTrialBookingsVisibility `string` (facultatif) customTrackingCodeVisibility `string` (facultatif) displayDataSources `string` (facultatif) displayDefaultDataSource `string` (facultatif) displayDefaultUI `string` (facultatif) displayUIOptions `string` (facultatif) defaultAboutBusiness `string` (facultatif) defaultAboutBusinessFacebook `string` (facultatif) facilityCoverImage `string` (facultatif) digitalProfileSettingsVisibility `string` (facultatif) facilityHoursVisibility `string` (facultatif) facilityLocationVisibility `string` (facultatif) facilityPaymentMethods `string` (facultatif) facilityPrimaryLogo `string` (facultatif) facilityStatusVisibility `string` (facultatif) landingPagesVisibility `string` (facultatif) lineChatIntegrationVisibility `string` (facultatif) whatsAppIntegrationVisibility `string` (facultatif) defaultWhatsAppMessage `string` (facultatif) socialUrlsVisibility `string` (facultatif) yextApiKey `string` (facultatif) Clé API utilisée par l'intégration Yext pour cette marque et cette région. Consultée uniquement lorsque `directorySyncMode` vaut `yext`. directorySyncMode `string` (facultatif) Système de synchronisation à exécuter pour les installations de cette marque et de cette région. Vaut `yext` par défaut lorsqu'il est absent, pour la rétrocompatibilité avec les marques antérieures au déploiement de Directory Publishers. websiteUrl `string` (facultatif) androidAppUrl `string` (facultatif) iosAppUrl `string` (facultatif) featuredMessageDescription `string` (facultatif) yextCategoryIds `string` (facultatif) Ancienne clé de stockage : il s'agit en réalité d'ID de catégories Google Business Profile (par exemple gcid:gym). Le préfixe "yext" est antérieur à l'abandon de Yext ; il est conservé pour la rétrocompatibilité avec les lignes existantes de la base de données. customInputFields `string` (facultatif) customInputFieldsToRemove `string` (facultatif)Point de terminaison
PUT /api/brands/{brandId}/regions/{regionCode}
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/brands/{brandId}/regions/{regionCode} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Récupère les paramètres de marque d'une installation donnée
Paramètres
facilityId `string` (facultatif) ID de l'installation dont récupérer les paramètres de marquePoint de terminaison
GET /api/facilities/{facilityId}/brand-settings
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/brand-settings \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Crée une nouvelle marque
Paramètres
name `string` (obligatoire) Nom de la marque organisationId `string` (obligatoire) ID de l'organisation à laquelle appartient la marque redirectDashboard `string` (facultatif) URL de redirection après la connexion, à la place du tableau de bord par défautPoint de terminaison
POST /api/brands
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/brands \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste de toutes les marques
Point de terminaison
GET /api/brands
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/brands \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie l'objet marque
Paramètres
brandId `string` (obligatoire) ID de la marque à récupérer includeOrganisation `boolean` (facultatif) Indique s'il faut inclure les données de l'organisation dans la réponsePoint de terminaison
GET /api/brands/{brandId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Met à jour une marque à partir de son ID
Paramètres
brandId `string` (facultatif) ID de la marque à mettre à jour name `string` (obligatoire) Nom de la marque brandOrganisationId `string` (facultatif) ID de l'organisation à laquelle appartient la marque redirectDashboard `string` (facultatif) URL de redirection après la connexion, à la place du tableau de bord par défaut yextApiKey `string` (facultatif) Clé API utilisée pour accéder à l'API Yext pour cette marque customMenuLayout `object` (facultatif) Arborescence du menu latéral propre à la marque (sections / groupes / éléments faisant référence à des modules du système ou à des URL personnalisées). Ne peut être définie que par un administrateur de l'organisation de cette marque.Point de terminaison
PUT /api/brands/{brandId}
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/brands/{brandId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Répertorier les installations d'une marque
Renvoie une liste allégée des installations (ID, nom, code ISO de la région) appartenant à la marque. Sert à alimenter les sélecteurs de ciblage d'installations dans la configuration de la marque.
Paramètres
brandId `string` (obligatoire) ID de la marque dont répertorier les installationsPoint de terminaison
GET /api/brands/{brandId}/facilities
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId}/facilities \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste de toutes les marques associées à l'organisation du club.
Point de terminaison
GET /api/clubs/{club}/brands
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/brands \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste de tous les types de calendrier
Point de terminaison
GET /api/programs/calendars/calendar-types
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/programs/calendars/calendar-types \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie le fichier KYC d'un club.
Paramètres
clubId `string` (obligatoire) ID du club. key `string` (obligatoire) Clé du fichier KYC.Point de terminaison
GET /api/clubs/{clubId}/kyc-assets/{key}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/kyc-assets/{key} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie les informations KYC du club.
Point de terminaison
GET /api/clubs/{clubId}/kyc
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/kyc \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Met à jour les informations KYC du club.
Paramètres
clubId `string` (obligatoire) ID du club à mettre à jour. body `object` (obligatoire)Point de terminaison
PUT /api/clubs/{clubId}/kyc
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubId}/kyc \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Envoie un fichier KYC pour un club.
Paramètres
clubId `string` (obligatoire) ID du club. file `string` (obligatoire) Fichier à envoyer.Point de terminaison
POST /api/clubs/{clubId}/kyc-assets
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubId}/kyc-assets \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie les paramètres de préférences du club.
Point de terminaison
GET /api/club/preferences/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/club/preferences/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Crée ou met à jour une entrée de préférences du club.
Corps de la requête
Point de terminaison
POST /api/club/preferences/:club
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/club/preferences/:club \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Renvoie la liste des membres ayant un accord.
Point de terminaison
GET /api/clubpass/user/email/exist/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubpass/user/email/exist/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des membres ayant un accord.
Point de terminaison
GET /api/clubpass/user/phone/exist/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubpass/user/phone/exist/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des utilisateurs du club indiqué
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéderPoint de terminaison
GET /api/clubs/{club}/members
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/members \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Indique si le club est ouvert à la date donnée.
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder. date `string` (obligatoire) Date à vérifier, au format UnixPoint de terminaison
GET /api/club-busy-hours/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/club-busy-hours/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie toutes les métadonnées du club affichées sur les sites web Example Club.
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder.Point de terminaison
GET /api/clubs/clubpage/clubdata/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/clubpage/clubdata/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Met à jour les métadonnées d'un club avec les nouvelles données fournies par le front-end. Les champs absents du corps de la requête sont conservés (ni SET ni REMOVE). Les champs envoyés avec `null` ou une chaîne vide sont effacés. Passez `updateAll: false` pour utiliser le chemin dédié de fusion partielle ; dans les deux cas, les appelants n'ont jamais besoin d'envoyer des champs qui ne leur appartiennent pas.
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder. body `string` (obligatoire) Objet JSON des données du club à mettre à jour.Point de terminaison
POST /api/clubs/clubpage/updateclub/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/clubs/clubpage/updateclub/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
ajouter un nouvel enregistrement de suivi personnalisé
Paramètres
club `string` (obligatoire) ID du club body `string` (obligatoire) Tableau des éléments de suivi personnalisé.Point de terminaison
POST /api/clubs/{club}/customtracking
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{club}/customtracking \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie le suivi personnalisé d'un club donné
Point de terminaison
GET /api/clubs/customtracking/:clubID
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/customtracking/:clubID \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Mettre à jour les entrées de suivi personnalisé
Paramètres
club `string` (obligatoire) ID du club body `string` (obligatoire) Objet JSON des données du club à mettre à jour.Point de terminaison
POST /api/clubs/{club}/customtracking/update
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{club}/customtracking/update \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie l'image de devanture par défaut d'un club.
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder.Point de terminaison
GET /api/clubs/{club}/default-shop-front
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/default-shop-front \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Répertorier les portes disponibles dans l'installation
Paramètres
body `object` (obligatoire) Objet JSON des données du club à mettre à jour.Point de terminaison
POST /api/clubs/integrations/doors/:facilityId
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/clubs/integrations/doors/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Déverrouiller une porte donnée de l'installation
Paramètres
body `object` (obligatoire) Objet JSON des données du club à mettre à jour.Point de terminaison
POST /api/clubs/integrations/doors/unlock
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/clubs/integrations/doors/unlock \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie toutes les intégrations et leurs détails de configuration pour le club indiqué.
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder.Point de terminaison
GET /api/clubs/integrations/list/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/integrations/list/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Met à jour les métadonnées d'un club avec les nouvelles données fournies par le front-end.
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder. body `object` (obligatoire) Objet JSON des données du club à mettre à jour.Point de terminaison
POST /api/clubs/integrations/update/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/clubs/integrations/update/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie un booléen indiquant si le club se trouve dans un pays européen
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder. date `string` (obligatoire) Date à vérifier, au format UnixPoint de terminaison
GET /api/clubs/is-eu/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/is-eu/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie une liste générale de tous les clubs de notre base de données.
Point de terminaison
GET /api/clubs/listclubs
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/listclubs \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Indique si le club est ouvert à la date donnée.
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder. date `string` (obligatoire) Date à vérifier, au format UnixPoint de terminaison
GET /api/clubs/{club}/open-on/{date}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/open-on/{date} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Récupère les avis du club depuis DynamoDB.
Paramètres
club `string` (obligatoire) ID du clubPoint de terminaison
GET /api/clubs/{club}/reviews
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/reviews \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Récupère les paramètres des avis du club depuis DynamoDB.
Paramètres
facilityId `string` (obligatoire) ID de l'installationPoint de terminaison
GET /api/clubs/{club}/reviews-settings
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/reviews-settings \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Met à jour les paramètres des avis du club dans DynamoDB.
Paramètres
club `string` (obligatoire) ID du clubPoint de terminaison
PUT /api/clubs/{club}/reviews-settings
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews-settings \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Réactive la publication automatique dans les paramètres des avis.
Paramètres
club `string` (obligatoire) ID du clubPoint de terminaison
PUT /api/clubs/{club}/reviews/publish-recent-reviews
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/publish-recent-reviews \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Publie un avis
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder. review `string` (obligatoire) ID interne de l'avis à publier.Point de terminaison
PUT /api/clubs/{club}/reviews/{review}/publish
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/{review}/publish \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Réactive la publication automatique dans les paramètres des avis.
Paramètres
club `string` (obligatoire) ID du clubPoint de terminaison
PUT /api/clubs/{club}/reviews-settings/re-enable-auto-publish
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews-settings/re-enable-auto-publish \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Publie une réponse à un avis via la plateforme d'origine de l'avis (Google, etc.).
Paramètres
club `string` (obligatoire) ID de l'installation reviewId `string` (obligatoire) ID de l'avis PH (recherché dans la table club-social-reviews) body `string` (obligatoire)Point de terminaison
POST /api/clubs/{club}/reviews/{reviewId}/respond
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/{reviewId}/respond \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Dépublie un avis
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder. review `string` (obligatoire) ID interne de l'avis à dépublier.Point de terminaison
PUT /api/clubs/{club}/reviews/{review}/un-publish
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/{review}/un-publish \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des propriétaires du club indiqué depuis la base de données PH
Paramètres
clubID `string` (obligatoire) ID interne du club auquel vous souhaitez accéderPoint de terminaison
GET /api/clubs/{clubID}/owners
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/owners \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie toutes les formules d'abonnement de l'installation.
Paramètres
facilityId `string` (obligatoire) ID interne de l'installationPoint de terminaison
GET /api/facilities/membership-plans/:facilityId
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/facilities/membership-plans/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Met à jour une formule d'abonnement.
Paramètres
facilityId `string` (obligatoire) ID interne de l'installation body `object` (obligatoire) Objet JSON des données de la formule d'abonnement à mettre à jour.Point de terminaison
PUT /api/facilities/membership-plans/:facilityId
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/facilities/membership-plans/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Réactive la publication automatique dans les paramètres des avis.
Paramètres
club `string` (obligatoire) ID du clubPoint de terminaison
PUT /api/clubs/{club}/reviews/publish-recent-reviews
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/publish-recent-reviews \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Réactive la publication automatique dans les paramètres des avis.
Paramètres
club `string` (obligatoire) ID du clubPoint de terminaison
PUT /api/clubs/{club}/reviews-settings/re-enable-auto-publish
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews-settings/re-enable-auto-publish \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste de toutes les devises disponibles
Point de terminaison
GET /api/currencies
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/currencies \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la position géographique à partir d'une adresse IP.
Paramètres
ip `string` (obligatoire) Adresse IP à rechercherPoint de terminaison
GET /api/geo/ip-location/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/geo/ip-location/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la position géographique de l'utilisateur actuel d'après son adresse IP.
Point de terminaison
GET /api/geo/ip-current
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/geo/ip-current \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie uniquement l'adresse IP publique du client demandeur (aucune géolocalisation, aucun appel à une API tierce). Utilisé par l'applet Agent IA pour comparer l'adresse IP publique du navigateur à l'adresse IP WAN signalée par un appareil, afin de détecter s'ils sont sur le même réseau.
Point de terminaison
GET /api/geo/client-ip
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/geo/client-ip \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Analyseur de numéros de téléphone.
Paramètres
body `string` (obligatoire) Objet JSON du numéro à analyser.Point de terminaison
POST /api/phone/parser
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/phone/parser \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie l'appareil horloge maître
Paramètres
club_id `string` (obligatoire) ID interne du club auquel vous souhaitez ajouter l'appareil.Point de terminaison
GET /api/clubs/{club_id}/smart-club/health-check/master-clock
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club_id}/smart-club/health-check/master-clock \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie l'appareil Sonos maître
Paramètres
club_id `string` (obligatoire) ID interne du club auquel vous souhaitez ajouter l'appareil.Point de terminaison
GET /api/clubs/{club_id}/smart-club/health-check/sonos-mqtt
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club_id}/smart-club/health-check/sonos-mqtt \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
obtenir les notifications de batterie faible Duress pour un club donné.
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder.Point de terminaison
GET /api/clubs/{club}/smart-club/health-check/low-battery-duress
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/smart-club/health-check/low-battery-duress \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie les données d'analyse du réseau
Paramètres
club_id `string` (obligatoire) ID interne du club auquel vous souhaitez ajouter l'appareil.Point de terminaison
GET /api/clubs/{club_id}/smart-club/health-check/network-analysis
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club_id}/smart-club/health-check/network-analysis \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
envoyer les notifications de batterie faible Duress pour un club donné.
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder.Point de terminaison
GET /api/clubs/{club}/smart-club/health-check/send-low-battery-duress-notifs
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/smart-club/health-check/send-low-battery-duress-notifs \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie les données de test de débit des appareils pour chaque type d'appareil
Paramètres
club_id `string` (obligatoire) ID interne du club auquel vous souhaitez ajouter l'appareil.Point de terminaison
GET /api/clubs/{club_id}/smart-club/health-check/speed-test
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club_id}/smart-club/health-check/speed-test \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtenir les statistiques de fiche d'une installation. Renvoie par défaut les totaux quotidiens agrégés de tous les éditeurs, ou ceux d'un seul éditeur lorsque `publisherId` est fourni.
Paramètres
facilityId `string` (obligatoire) publisherId `string` (facultatif) startDate `string` (obligatoire) endDate `string` (obligatoire)Point de terminaison
GET /api/facilities/{facilityId}/directory-insights
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/directory-insights \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtenir les statistiques de fiche agrégées d'une marque pour tous les éditeurs.
Paramètres
brandId `string` (obligatoire) startDate `string` (obligatoire) endDate `string` (obligatoire)Point de terminaison
GET /api/brands/{brandId}/directory-insights
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId}/directory-insights \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Principaux mots-clés de recherche (avec répartition marque / hors marque) pour une installation, provenant actuellement de Google Business Profile.
Paramètres
facilityId `string` (obligatoire) publisherId `string` (facultatif) Valeur par défaut : "google" ; seul Google est pris en charge actuellement. startDate `string` (obligatoire) endDate `string` (obligatoire) limit `string` (facultatif)Point de terminaison
GET /api/facilities/{facilityId}/directory-search-keywords
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/directory-search-keywords \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Principaux mots-clés de recherche d'une marque, agrégés sur toutes les installations.
Paramètres
brandId `string` (obligatoire) startDate `string` (obligatoire) endDate `string` (obligatoire) limit `string` (facultatif)Point de terminaison
GET /api/brands/{brandId}/directory-search-keywords
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId}/directory-search-keywords \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lister les questions-réponses d'une installation.
Paramètres
facilityId `string` (obligatoire)Point de terminaison
GET /api/facilities/{facilityId}/qna
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/qna \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Répondre à une question.
Point de terminaison
POST /api/facilities/{facilityId}/qna/{questionId}/answer
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/facilities/{facilityId}/qna/{questionId}/answer \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Supprimer une réponse.
Point de terminaison
DELETE /api/facilities/{facilityId}/qna/{questionId}/answer/{answerId}
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/facilities/{facilityId}/qna/{questionId}/answer/{answerId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie les éditeurs activés pour l'organisation de l'installation, avec leur état de connexion.
Paramètres
facilityId `string` (obligatoire) organisationId `string` (obligatoire)Point de terminaison
GET /api/facilities/{facilityId}/directory-publishers/resolved
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/directory-publishers/resolved \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtenir les Access Policies d'une installation
La configuration d'accès existante est automatiquement convertie en stratégies appliquées équivalentes lors de la première lecture.
Paramètres
facilityId `string` (obligatoire)Point de terminaison
GET /api/door-access/policies/{facilityId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Remplacer les Access Policies avec contrôle de révision optimiste
Paramètres
facilityId `string` (obligatoire)Corps de la requête
Point de terminaison
PUT /api/door-access/policies/{facilityId}
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Créer une Access Policy
Paramètres
facilityId `string` (obligatoire)Point de terminaison
POST /api/door-access/policies/{facilityId}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Mettre à jour une Access Policy
Paramètres
facilityId `string` (obligatoire) policyId `string` (obligatoire)Point de terminaison
PATCH /api/door-access/policies/{facilityId}/{policyId}
Exemple de requête
curl -X PATCH https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/{policyId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Supprimer une Access Policy
Paramètres
facilityId `string` (obligatoire) policyId `string` (obligatoire) revision `integer` (obligatoire)Point de terminaison
DELETE /api/door-access/policies/{facilityId}/{policyId}
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/{policyId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Dupliquer une Access Policy avec un nouvel ID stable
Paramètres
facilityId `string` (obligatoire) policyId `string` (obligatoire)Point de terminaison
POST /api/door-access/policies/{facilityId}/{policyId}/duplicate
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/{policyId}/duplicate \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Compter les utilisateurs et les portes concernés par toutes les Access Policies
Paramètres
facilityId `string` (obligatoire)Point de terminaison
GET /api/door-access/policies/{facilityId}/impacts
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/impacts \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Compter les utilisateurs et les portes concernés par une Access Policy
Paramètres
facilityId `string` (obligatoire) policyId `string` (obligatoire)Point de terminaison
GET /api/door-access/policies/{facilityId}/{policyId}/impact
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/{policyId}/impact \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lister les contrôleurs de porte d'une installation avec leurs règles Door/Gate Access effectives
Paramètres
facilityId `string` (obligatoire)Point de terminaison
GET /api/door-access/doors/{facilityId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Enregistrer les remplacements par porte, l'icône et la configuration côté appareil
Point d'écriture unique pour tout ce que l'applet d'administration DGA modifie sur une porte : - `accessRulesOverride` / `geofenceOverride` : transmettez `null` pour effacer la valeur et revenir à la valeur par défaut de l'installation. - `icon` : clé de transmission stable (voir services/door-access/door-icons.js) ; les valeurs inconnues renvoient 400. - `holdTimeSeconds` (1 à 30), `maintenanceMode` (`off` / `force-open` / `force-closed`), `doorLocation` (texte libre, 64 caractères maximum), `playNotificationSoundOnRelayToggle` (booléen), `autoUnlockSchedule` (grille de créneaux hebdomadaires). Ces champs n'étaient auparavant modifiables que dans Gestion d'appareils, mais l'applet les écrit désormais sur place, pour que les administrateurs n'aient pas à quitter le panneau de la porte pour les modifications de configuration courantes. Lorsque l'un des champs côté appareil est modifié, la route transmet aussi les variables d'environnement Balena correspondantes (`RELAY_NOTIFICATION_SOUND`, `DOOR_MAINTENANCE_MODE`, `DOOR_AUTO_UNLOCK_SCHEDULE`) et envoie une commande MQTT `unlockUpdates`, afin que l'appareil applique la nouvelle configuration sans attendre la prochaine actualisation des variables Balena. Au mieux : la réponse est 200 même si Balena est temporairement injoignable.
Paramètres
facilityId `string` (obligatoire) doorId `string` (obligatoire)Corps de la requête
Point de terminaison
PUT /api/door-access/doors/{facilityId}/{doorId}/override
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId}/{doorId}/override \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Sonde légère de l'état Balena pour l'avis de rechargement du panneau de la porte
Le panneau de l'applet DGA récupère ces données à la demande lorsqu'un administrateur ouvre une porte, afin d'afficher le bon texte « l'enregistrement va recharger le contrôleur » : la variante par défaut « quelques secondes », ou la variante plus forte « plusieurs minutes » lorsqu'une mise à jour de version est aussi en attente. Renvoie un instantané à plat dérivé de `balena.models.device.get()`. En cas d'échec, renvoie `data: null` (plutôt qu'une erreur 5xx), de sorte qu'une panne de Balena dégrade le texte de l'avis au lieu d'empêcher l'ouverture du panneau.
Paramètres
facilityId `string` (obligatoire) doorId `string` (obligatoire)Point de terminaison
GET /api/door-access/doors/{facilityId}/{doorId}/device-status
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId}/{doorId}/device-status \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Forçage administrateur : déverrouiller une porte depuis l'applet
Active brièvement le relais selon le `holdTimeSeconds` actuel de la porte, et écrit une ligne d'audit `admin-override` dans ph-door-app-access-events afin que l'action soit attribuable dans les Journaux d'accès. Réussit toujours, même si `maintenanceMode === 'force-closed'` : c'est l'issue de secours de l'administrateur. Renvoie 200 dès que la publication MQTT est envoyée ; les états confirmé / échoué / expiré ne sont pas attendus ici (l'ancien flux /api/devices/door-controllers + /api/ics/devices/command fonctionne lui aussi sans attente de confirmation).
Paramètres
facilityId `string` (obligatoire) doorId `string` (obligatoire)Point de terminaison
POST /api/door-access/doors/{facilityId}/{doorId}/unlock
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId}/{doorId}/unlock \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Émettre une séquence de bips de localisation sur le contrôleur de porte
Publie une commande MQTT `beep` pour que le contrôleur émette trois bips de durée moyenne (environ 500 ms chacun, environ 350 ms d'intervalle, environ 2 s au total). Utilisé par les administrateurs pour localiser physiquement un contrôleur de porte sur site. L'ancien bouton de Gestion d'appareils utilise une salve d'environ 30 s de bips courts, mais le pilote du buzzer du firmware n'émet de façon fiable que le premier ; l'applet envoie donc une séquence plus courte et plus fiable. Aucune ligne d'audit : action de diagnostic sans effet sur le contrôle d'accès.
Paramètres
facilityId `string` (obligatoire) doorId `string` (obligatoire)Point de terminaison
POST /api/door-access/doors/{facilityId}/{doorId}/identify
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId}/{doorId}/identify \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Redémarrer à distance un contrôleur de porte
Publie la même commande MQTT `rebootDevice`, sans attente de confirmation, que le bouton « Remotely Reboot Device » de l'ancienne Gestion d'appareils, mais conditionnée par le module `door-gate-access`, pour que les administrateurs DGA puissent redémarrer un contrôleur depuis la section Advanced du panneau de la porte sans autorisation `device-management` distincte. Renvoie 200 dès que la publication est envoyée ; l'appareil passe hors ligne pendant le redémarrage.
Paramètres
facilityId `string` (obligatoire) doorId `string` (obligatoire)Point de terminaison
POST /api/door-access/doors/{facilityId}/{doorId}/reboot
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId}/{doorId}/reboot \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lister les lignes User Access d'une installation
Renvoie toutes les lignes user-access non supprimées de l'installation. Prend en charge des filtres côté client (source, search, accessEnabled, hasGrants). Le calcul côté serveur `hideExcluded` de la phase 4 sera ajouté lorsque l'évaluateur d'autorisations hybrides sera disponible ; pour l'instant, le paramètre est accepté mais l'ensemble complet est renvoyé.
Paramètres
facilityId `string` (obligatoire) search `string` (facultatif) source `string` (facultatif) accessEnabled `string` (facultatif) hasGrants `string` (facultatif) hideExcluded `boolean` (facultatif) Si true, les utilisateurs synchronisés (source != manual) qui ne peuvent franchir aucune porte de cette installation à aucun moment sont masqués. La réponse inclut une enveloppe `hidden: { count, sample }`.Point de terminaison
GET /api/door-access/users/{facilityId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/door-access/users/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Créer manuellement une ligne User Access dans une installation
Crée une nouvelle ligne avec `source: 'manual'`. Renvoie 409 avec `existingUserId` si le téléphone ou l'e-mail fourni correspond déjà à une ligne de cette installation.
Paramètres
facilityId `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/door-access/users/{facilityId}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Obtenir une ligne User Access
Paramètres
facilityId `string` (obligatoire) userId `string` (obligatoire)Point de terminaison
GET /api/door-access/users/{facilityId}/{userId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Mise à jour partielle d'une ligne User Access
Modifie n'importe quel sous-ensemble des champs d'identité et d'autorisation. Transmettez `null` pour effacer un champ facultatif. Renvoie 409 si le nouveau téléphone ou e-mail entre en conflit avec une autre ligne de la même installation. `appMessage` accepte la même structure que le message à l'échelle de l'installation de PUT /api/door-access/rules/{facilityId} : corps du texte, gravité, lien facultatif, calendrier de début et de fin facultatif. L'application mobile l'affiche sur le tableau de bord uniquement pour l'utilisateur ciblé.
Paramètres
facilityId `string` (obligatoire) userId `string` (obligatoire)Corps de la requête
Point de terminaison
PATCH /api/door-access/users/{facilityId}/{userId}
Exemple de requête
curl -X PATCH https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Supprimer de manière logique une ligne User Access
Marque la ligne `deleted: true` et désactive l'accès. Le lien du journal d'audit avec le userId est conservé ; les administrateurs peuvent réactiver l'accès manuellement.
Paramètres
facilityId `string` (obligatoire) userId `string` (obligatoire)Point de terminaison
DELETE /api/door-access/users/{facilityId}/{userId}
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Attribution des accès par porte pour un utilisateur
Pour chaque porte, renvoie l'autorisation déterministe actuelle (`allowedNow`, `allowedVia`, `deniedReason`) et les chemins configurés pour les Access Policies, les autorisations permanentes, les calendriers de stratégie, les autorisations par créneau horaire accordées par un administrateur et les créneaux récents mappés depuis la source partenaire. Renvoie aussi la disponibilité active ou suivante et la fraîcheur de la source. Le blockAllAccess de la porte et la maintenance sont évalués avant tous les chemins d'autorisation.
Paramètres
facilityId `string` (obligatoire) userId `string` (obligatoire)Point de terminaison
GET /api/door-access/users/{facilityId}/{userId}/effective-access
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/effective-access \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Créer en masse des lignes User Access à partir d'une importation CSV
Crée plusieurs lignes `source: 'manual'` en une seule requête, en réutilisant la même validation, la même normalisation du téléphone et de l'e-mail, le même contrôle de conflit par installation, la même messagerie automatique et la même logique d'invitation (facultative) que la création unitaire. Les lignes sont traitées dans l'ordre : une ligne ultérieure en conflit avec une ligne créée plus tôt est signalée comme doublon. Les autorisations sont fournies sous forme d'ID de porte ou de groupe déjà résolus (le client convertit les noms en ID). Les autorisations par créneau horaire sont volontairement refusées en masse et doivent être ajoutées via le point de terminaison de remplacement par utilisateur après l'importation. Ne lève jamais d'erreur par ligne ; le résultat de chaque ligne est signalé individuellement.
Paramètres
facilityId `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/door-access/users/{facilityId}/bulk
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/bulk \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Remplacer les autorisations additives Access Time Window d'une ligne User Access
Remplace uniquement `timeWindowGrants` ; les `grants` permanents et les `sourceTimeWindows` d'intégration ne sont pas modifiés. Chaque élément exige une portée (`facilityWide`, `doors` ou `groups`) et un `window` absolu ou hebdomadaire. L'envoi d'un tableau vide efface explicitement tous les créneaux d'administration.
Paramètres
facilityId `string` (obligatoire) userId `string` (obligatoire)Corps de la requête
Point de terminaison
PUT /api/door-access/users/{facilityId}/{userId}/time-window-grants
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/time-window-grants \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Figer une ligne User Access face aux mises à jour de synchronisation provenant de la source
Définit `decoupledFromSource: true`, efface tous les `sourceTimeWindows` gérés par l'intégration, et fait en sorte que la synchronisation (cron + flux) journalise et ignore cette ligne jusqu'à ce qu'un administrateur efface l'indicateur via /recouple.
Paramètres
facilityId `string` (obligatoire) userId `string` (obligatoire)Point de terminaison
POST /api/door-access/users/{facilityId}/{userId}/decouple
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/decouple \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Rattacher une ligne User Access aux mises à jour de synchronisation provenant de la source
Paramètres
facilityId `string` (obligatoire) userId `string` (obligatoire)Point de terminaison
POST /api/door-access/users/{facilityId}/{userId}/recouple
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/recouple \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Révoquer tous les jetons d'actualisation de l'application Door/Gate Access d'un utilisateur
Révoque selon le téléphone ou l'e-mail enregistré de l'utilisateur (la table des jetons d'actualisation est indexée par `sha256(plaintext)` ; les GSI byMobilePhone / byEmail permettent une suppression en éventail à partir d'un seul utilisateur). Les autres utilisateurs partageant le même téléphone ou e-mail dans une autre installation seraient aussi déconnectés.
Paramètres
facilityId `string` (obligatoire) userId `string` (obligatoire)Point de terminaison
POST /api/door-access/users/{facilityId}/{userId}/logout
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/logout \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
(Ré)envoyer l'e-mail d'invitation à l'application Door/Gate Access à un utilisateur
Force l'envoi de l'e-mail d'invitation au téléchargement de l'application à l'adresse e-mail enregistrée de l'utilisateur (e-mail uniquement, pas de SMS). Ignore les contrôles d'éligibilité et de déjà-envoyé utilisés par la synchronisation automatique : il s'agit d'une action explicite d'un administrateur. Renvoie 400 si aucun e-mail n'est enregistré pour l'utilisateur.
Paramètres
facilityId `string` (obligatoire) userId `string` (obligatoire)Point de terminaison
POST /api/door-access/users/{facilityId}/{userId}/resend-invite
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/resend-invite \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Prévisualiser les destinataires d'un envoi groupé d'invitations à l'application
Calcule l'ensemble des utilisateurs qui recevraient un e-mail d'invitation à l'application. Le groupe de base comprend tous les utilisateurs non supprimés disposant d'un e-mail et n'ayant jamais utilisé l'application (`appLastSeenAt` vide). Par défaut, le groupe est restreint aux utilisateurs qui ont actuellement accès (correspondance de règle ou autorisation) et n'ont jamais été invités ; `includeAlreadyInvited` et `includeNoAccess` l'élargissent. Aucun e-mail n'est envoyé : renvoie des totaux, un petit échantillon et les userIds candidats pour le point de terminaison d'exécution.
Paramètres
facilityId `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/door-access/users/{facilityId}/bulk-invite/preview
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/bulk-invite/preview \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Envoyer des e-mails d'invitation à l'application à un lot d'utilisateurs
Envoie l'e-mail d'invitation au téléchargement de l'application à chacun des userIds fournis (50 maximum par requête ; le client découpe en lots la liste complète des candidats issue de la prévisualisation). Chaque utilisateur est revalidé au moment de l'envoi : les lignes qui n'existent plus, sans e-mail ou dont l'utilisateur a utilisé l'application depuis la prévisualisation sont ignorées, jamais en échec. Le résultat de chaque utilisateur est signalé individuellement pour que le client puisse récapituler les envois réussis, échoués et ignorés.
Paramètres
facilityId `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/door-access/users/{facilityId}/bulk-invite
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/bulk-invite \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Lister les groupes de portes d'une installation
Paramètres
facilityId `string` (obligatoire)Point de terminaison
GET /api/door-access/door-groups/{facilityId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/door-access/door-groups/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Créer un groupe de portes
Paramètres
facilityId `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/door-access/door-groups/{facilityId}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/door-access/door-groups/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Obtenir un groupe de portes
Paramètres
facilityId `string` (obligatoire) groupId `string` (obligatoire)Point de terminaison
GET /api/door-access/door-groups/{facilityId}/{groupId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/door-access/door-groups/{facilityId}/{groupId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Mettre à jour un groupe de portes
Paramètres
facilityId `string` (obligatoire) groupId `string` (obligatoire)Corps de la requête
Point de terminaison
PATCH /api/door-access/door-groups/{facilityId}/{groupId}
Exemple de requête
curl -X PATCH https://portal.hub.gymsystems.co/api/door-access/door-groups/{facilityId}/{groupId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Supprimer de manière logique un groupe de portes
Paramètres
facilityId `string` (obligatoire) groupId `string` (obligatoire)Point de terminaison
DELETE /api/door-access/door-groups/{facilityId}/{groupId}
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/door-access/door-groups/{facilityId}/{groupId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lister les intégrations partenaires configurées dans une installation
Renvoie les intégrations partenaires de l'installation (id, name, logo, enabled) en joignant ph-facility-partner-config au catalogue ph-partners. Limité à door-gate-access (pour que les administrateurs sans accès external-integrations puissent quand même afficher les badges partenaires et la liste de synchronisation par partenaire).
Paramètres
facilityId `string` (obligatoire)Point de terminaison
GET /api/door-access/partners/{facilityId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/door-access/partners/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lire la configuration de synchronisation User Access d'une installation
Paramètres
facilityId `string` (obligatoire)Point de terminaison
GET /api/door-access/sync-config/{facilityId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/door-access/sync-config/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Mettre à jour la configuration de synchronisation User Access d'une installation
Seuls les champs contrôlés par l'administrateur (`enabled`, `requireIdentifier` et la table `partners` des partenaires) sont acceptés ; `lastRunAt` et `lastRunCounts` sont écrits par le moteur de synchronisation lui-même. `partner.partners` est une table d'activation par partenaire indexée par partnerId (désactivation explicite) : lorsque le `partner.enabled` principal est activé, un partenaire est synchronisé sauf s'il a ici une entrée explicite `{ enabled: false }`.
Paramètres
facilityId `string` (obligatoire)Corps de la requête
Point de terminaison
PUT /api/door-access/sync-config/{facilityId}
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/door-access/sync-config/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Lire la configuration de messagerie automatique par utilisateur d'une installation
Paramètres
facilityId `string` (obligatoire)Point de terminaison
GET /api/door-access/auto-messages/{facilityId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/door-access/auto-messages/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Mettre à jour la configuration de messagerie automatique par utilisateur d'une installation
Enregistre les règles, puis réévalue immédiatement chaque ligne User Access de l'installation, afin que les utilisateurs existants reçoivent ou perdent tout de suite leur message automatique. Les messages manuels et les lignes découplées ne sont pas modifiés.
Paramètres
facilityId `string` (obligatoire)Corps de la requête
Point de terminaison
PUT /api/door-access/auto-messages/{facilityId}
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/door-access/auto-messages/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
État de la réévaluation en arrière-plan des messages automatiques
Paramètres
facilityId `string` (obligatoire)Point de terminaison
GET /api/door-access/auto-messages/{facilityId}/sweep-status
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/door-access/auto-messages/{facilityId}/sweep-status \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lancer à la demande une synchronisation User Access pour une installation
Parcourt de façon synchrone chaque source activée (partenaire / vidéosurveillance) de l'installation et fait converger les lignes ph-door-access-users via la cascade de dédoublonnage. Renvoie des totaux par source. Les sources désactivées apparaissent sous la forme `skippedSyncDisabled: 1` plutôt que d'être absentes, afin que l'interface puisse afficher les deux lignes de façon cohérente.
Paramètres
facilityId `string` (obligatoire)Point de terminaison
POST /api/door-access/sync/{facilityId}/run
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/door-access/sync/{facilityId}/run \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Prévisualisation à blanc d'une suppression groupée des utilisateurs synchronisés par un partenaire
Renvoie le nombre et un échantillon des lignes user-access qui seraient supprimées de manière logique, ainsi qu'un confirmToken à renvoyer au point de terminaison d'exécution. Aucune donnée n'est modifiée. Les journaux d'accès ne sont jamais affectés.
Paramètres
facilityId `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/door-access/sync/{facilityId}/bulk-delete/preview
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/door-access/sync/{facilityId}/bulk-delete/preview \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Exécuter une suppression groupée des utilisateurs synchronisés par un partenaire (suppression logique)
Supprime de manière logique toutes les lignes user-access synchronisées par un partenaire comprises dans la portée. Exige le confirmToken renvoyé par la prévisualisation ; si l'ensemble réel a changé depuis la prévisualisation, le jeton ne correspond pas et la requête est refusée (409) pour que l'administrateur vérifie à nouveau. Les journaux d'accès sont conservés.
Paramètres
facilityId `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/door-access/sync/{facilityId}/bulk-delete
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/door-access/sync/{facilityId}/bulk-delete \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Activité récente de synchronisation User Access (journal de dépannage)
Renvoie les résultats de synchronisation les plus récents d'une installation (créé / ignoré / désactivé) avec leur motif, pour que les administrateurs puissent voir pourquoi un membre a été synchronisé ou non. Du plus récent au plus ancien.
Paramètres
facilityId `string` (obligatoire) limit `integer` (facultatif)Point de terminaison
GET /api/door-access/sync/{facilityId}/log
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/door-access/sync/{facilityId}/log \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lister les événements Door/Gate Access d'une installation
Renvoie les événements de déverrouillage mobiles, de forçage administrateur et de l'API Partner externe dans un seul flux antichronologique.
Paramètres
facilityId `string` (obligatoire) from `integer` (facultatif) to `integer` (facultatif) limit `integer` (facultatif)Point de terminaison
GET /api/door-access/events/{facilityId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/door-access/events/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Simuler une évaluation de géorepérage pour l'épingle du mode test administrateur
Corps de la requête
Point de terminaison
POST /api/door-access/geofence/test
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/door-access/geofence/test \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Obtenir l'état d'intégration et d'activation d'une installation
Alimente la page d'accueil « Get Started » de l'applet et la bannière de progression de la configuration. Renvoie le nombre actuel de portes et d'utilisateurs, les deux étapes principales dérivées (un utilisateur existe, une porte existe), les indicateurs facultatifs « reviewed » enregistrés, et si l'installation est activée (les deux étapes principales effectuées). La première fois qu'une installation est activée, l'horodatage activatedAt est enregistré.
Paramètres
facilityId `string` (obligatoire)Point de terminaison
GET /api/door-access/onboarding/{facilityId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/door-access/onboarding/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Mettre à jour les indicateurs facultatifs d'intégration « reviewed » d'une installation
Enregistre les indicateurs facultatifs de la liste de configuration cochés par un administrateur (règles d'accès, paramètres de synchronisation, géorepérage). Les étapes principales et l'activation sont dérivées en direct du nombre de données et ne peuvent pas être définies ici. Renvoie l'état d'intégration complet actualisé.
Paramètres
facilityId `string` (obligatoire)Corps de la requête
Point de terminaison
PUT /api/door-access/onboarding/{facilityId}
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/door-access/onboarding/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Renvoie une réponse JSON contenant les données d'analyse de l'installation.
Paramètres
clubId `string` (facultatif) L'ID de l'installation dont récupérer les données d'analyse. fromDate `string` (facultatif) La date de début des données d'analyse à récupérer. toDate `string` (facultatif) La date de fin des données d'analyse à récupérer.Point de terminaison
GET /clubs/{clubId}/lead-events
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/lead-events \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie une réponse JSON contenant les données d'analyse de l'installation.
Paramètres
clubId `string` (facultatif) L'ID de l'installation dont récupérer les données d'analyse. fromDate `string` (facultatif) La date de début des données d'analyse à récupérer. toDate `string` (facultatif) La date de fin des données d'analyse à récupérer.Point de terminaison
GET /clubs/{clubId}/analytics/page-views
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/page-views \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie une réponse JSON contenant les données d'analyse de l'installation.
Paramètres
clubId `string` (facultatif) L'ID de l'installation dont récupérer les données d'analyse. fromDate `string` (facultatif) La date de début des données d'analyse à récupérer. toDate `string` (facultatif) La date de fin des données d'analyse à récupérer.Point de terminaison
GET /clubs/{clubId}/analytics/referrers
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/referrers \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie une réponse JSON contenant les données d'analyse de l'installation.
Paramètres
clubId `string` (facultatif) L'ID de l'installation dont récupérer les données d'analyse. fromDate `string` (facultatif) La date de début des données d'analyse à récupérer. toDate `string` (facultatif) La date de fin des données d'analyse à récupérer.Point de terminaison
GET /clubs/{clubId}/analytics/socials
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/socials \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie une réponse JSON contenant les données d'analyse de l'installation.
Paramètres
clubId `string` (facultatif) L'ID de l'installation dont récupérer les données d'analyse. fromDate `string` (facultatif) La date de début des données d'analyse à récupérer. toDate `string` (facultatif) La date de fin des données d'analyse à récupérer.Point de terminaison
GET /clubs/{clubId}/analytics/top-cities
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/top-cities \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie une réponse JSON contenant les données d'analyse de l'installation.
Paramètres
clubId `string` (facultatif) L'ID de l'installation dont récupérer les données d'analyse. fromDate `string` (facultatif) La date de début des données d'analyse à récupérer. toDate `string` (facultatif) La date de fin des données d'analyse à récupérer.Point de terminaison
GET /clubs/{clubId}/analytics/total-page-views
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/total-page-views \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie une réponse JSON contenant les données d'analyse de l'installation.
Paramètres
clubId `string` (facultatif) L'ID de l'installation dont récupérer les données d'analyse. fromDate `string` (facultatif) La date de début des données d'analyse à récupérer. toDate `string` (facultatif) La date de fin des données d'analyse à récupérer.Point de terminaison
GET /clubs/{clubId}/analytics/traffic
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/traffic \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Génère un JWT (JSON Web Token) front-end temporaire pour les graphiques intégrables Google Analytics de la page front-end 'analytics'.
Point de terminaison
GET /api/ga/onetimetoken
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/ga/onetimetoken \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie les widgets de tableau de bord de 'The Training Camp' si l'installation compte des membres actifs.
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder.Point de terminaison
GET /api/reporting/apps/widgets/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/reporting/apps/widgets/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie tous les jours fériés de l'installation non encore vérifiés.
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder.Point de terminaison
GET /api/reporting/club/{club}/unreviewed-holidays
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/reporting/club/{club}/unreviewed-holidays \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Marquer comme vérifiés tous les jours fériés de l'installation non encore vérifiés.
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder.Point de terminaison
PUT /api/reporting/club/{club}/review-holidays
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/reporting/club/{club}/review-holidays \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie le rapport KPI au format CSV, ventilé mois par mois sur les 12 derniers mois. *NOTE* Cela crée un seul rapport pour TOUTES les installations du système. Ne l'exécutez pas plusieurs fois en parallèle, sous peine de surcharger GymMaster !
Paramètres
months `string` (facultatif) Nombre de mois (à partir de la date actuelle) à récupérer (12 par défaut)Point de terminaison
GET /api/reporting/gymmaster/all-clubs-kpi-report
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/reporting/gymmaster/all-clubs-kpi-report \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie le ou les graphiques de chiffre d'affaires du MMS pour une installation donnée.
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder. range `string` (facultatif) Plage en jours (en remontant à partir de la date actuelle) à récupérerPoint de terminaison
GET /api/reporting/gymmaster/revenuegraph/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/reporting/gymmaster/revenuegraph/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie les données et analyses MMS (Member Management System) du tableau de bord pour une installation donnée. Les données incluent les statistiques GymMaster/Perfect Gym ainsi que d'autres indicateurs internes collectés par notre système.
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder. range `string` (facultatif) Plage en jours (en remontant à partir de la date actuelle) à récupérerPoint de terminaison
GET /api/reporting/gymmaster/widgets/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/reporting/gymmaster/widgets/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie les données du widget Myzone du tableau de bord pour une installation donnée.
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder.Point de terminaison
GET /api/reporting/myzone/widgets/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/reporting/myzone/widgets/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie un objet des services considérés comme hors ligne par un ou plusieurs de nos points de terminaison de page d'état ou de surveillance, configurés via l'outil interne 'Uptime Kuma'.
Point de terminaison
GET /api/reporting/statuspage/events
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/reporting/statuspage/events \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie les réservations d'entraînement à venir pour les 7 prochains jours.
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder.Point de terminaison
GET /api/reporting/clubs/{club}/workout-bookings
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/reporting/clubs/{club}/workout-bookings \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste historique des jours fériés d'une installation.
Paramètres
clubId `string` (facultatif) ID du club fromDate `string` (facultatif) Horodatage Unix de la date de début de la plage de jours fériés à renvoyer. toDate `string` (facultatif) Horodatage Unix de la date de fin de la plage de jours fériés à renvoyer.Point de terminaison
GET /api/clubs/{clubId}/historical-holidays
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/historical-holidays \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie les automatisations d'appareils associées à l'installation.
Paramètres
club `string` (obligatoire) ID interne du club dont vous souhaitez répertorier les appareils.Point de terminaison
GET /api/ics/automations/list/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/ics/automations/list/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Met à jour la configuration d'un écran ou appareil existant.
Paramètres
club `string` (obligatoire) ID interne de l'installation dont vous souhaitez mettre à jour l'appareil. body `string` (obligatoire) Objet JSON des paramètres de mise à jour.Point de terminaison
POST /api/ics/automations/update/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/ics/automations/update/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Ajoute ou associe un écran ou ordinateur physique à votre installation.
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez ajouter l'appareil. body `string` (obligatoire) Objet JSON du nouvel écran à associer.Point de terminaison
POST /api/ics/devices/add/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/ics/devices/add/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Demande à l'appareil de se connecter à un nouveau SSID selon les paramètres.
Paramètres
club `string` (obligatoire) ID interne de l'installation dont vous souhaitez mettre à jour l'appareil. body `string` (obligatoire) Objet JSON des paramètres de mise à jour.Point de terminaison
POST /api/ics/devices/changewifi/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/ics/devices/changewifi/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Met à jour la configuration d'un écran ou appareil existant.
Paramètres
club `string` (obligatoire) ID interne de l'installation dont vous souhaitez mettre à jour l'appareil. body `string` (obligatoire) Objet JSON des paramètres de mise à jour.Point de terminaison
POST /api/ics/devices/command/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/ics/devices/command/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Charge une URL ou page web sur l'écran d'un appareil donné.
Paramètres
club `string` (obligatoire) ID interne de l'installation dont vous souhaitez mettre à jour l'appareil. body `string` (obligatoire) Objet JSON des paramètres de mise à jour.Point de terminaison
POST /api/ics/devices/loadurl/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/ics/devices/loadurl/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Met à jour la configuration d'un écran ou appareil existant.
Paramètres
club `string` (obligatoire) ID interne de l'installation dont vous souhaitez mettre à jour l'appareil. body `string` (obligatoire) Objet JSON des paramètres de mise à jour.Point de terminaison
PUT /api/ics/devices/update/{club}
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/ics/devices/update/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renomme un écran ou appareil. Enregistrement uniquement : contrairement au point de terminaison de mise à jour, rien n'est transmis à l'appareil ; il est donc aussi disponible pour les écrans exécutant une version logicielle en fin de vie.
Paramètres
club `string` (obligatoire) ID interne de l'installation à laquelle appartient l'appareil. body `string` (obligatoire) Objet JSON des paramètres de renommage.Point de terminaison
PUT /api/ics/devices/rename/{club}
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/ics/devices/rename/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtient les widgets et les liens vers les médias hors ligne d'une installation, selon la date fournie.
Paramètres
club `string` (obligatoire) ID interne de l'installation dont vous souhaitez changer le programme d'entraînement. date `string` (obligatoire) Date pour laquelle renvoyer les URL des widgets. Utilisez le format `YYYY-MM-DD`.Point de terminaison
GET /api/ics/external-resources/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/ics/external-resources/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtient les widgets et les liens vers les médias hors ligne d'une installation, selon la date fournie.
Paramètres
club `string` (obligatoire) ID interne de l'installation dont vous souhaitez changer le programme d'entraînement.Point de terminaison
GET /api/ics/list-scheduled-workouts/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/ics/list-scheduled-workouts/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Change le programme d'entraînement d'une installation donnée.
Paramètres
club `string` (obligatoire) ID interne de l'installation dont vous souhaitez changer le programme d'entraînement. body `string` (obligatoire) Objet JSON du nouvel entraînement à appliquer.Point de terminaison
POST /api/ics/loadprogram/{club}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/ics/loadprogram/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Récupère la configuration du programme d'un écran ou appareil existant.
Paramètres
club `string` (obligatoire) ID interne de l'installation dont vous souhaitez récupérer les données de programme.Point de terminaison
GET /api/ics/programs/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/ics/programs/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Met à jour la configuration du programme d'un écran ou appareil existant.
Paramètres
club `string` (obligatoire) ID interne de l'installation dont vous souhaitez mettre à jour l'appareil. body `string` (obligatoire) Objet JSON des paramètres de mise à jour.Point de terminaison
PUT /api/ics/programs/{club}
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/ics/programs/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Récupère les options de configuration du programme.
Point de terminaison
GET /api/ics/programs/options/{facilityID}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/ics/programs/options/{facilityID} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Chat avec contexte RAG. N'a pas accès aux outils : uniquement un outil simple de requête/réponse API qui permet d'extraire directement des connaissances de la base de connaissances.
Paramètres
organisationId `string` (facultatif) L'ID de l'organisation (détecté automatiquement s'il n'est pas fourni)Corps de la requête
Point de terminaison
POST /api/llm/chat
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/llm/chat \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Supprimer les embeddings d'un article du magasin vectoriel et mettre à jour l'état de suivi des embeddings
Corps de la requête
Point de terminaison
DELETE /api/llm/delete-article
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/llm/delete-article \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Lister les enregistrements du suivi des embeddings par organisation et par statut
Paramètres
organisationId `string` (facultatif) ID de l'organisation (résolu automatiquement s'il est omis) status `string` (obligatoire) Statut à filtrer (l'une des valeurs in_queue, done, anomaly, fail, deleted) Limit `string` (facultatif) Nombre maximal d'éléments par page LastEvaluatedKey `string` (facultatif) JSON du LastEvaluatedKey DynamoDB pour la paginationPoint de terminaison
GET /api/llm/embedding-track/by-org-and-status
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/llm/embedding-track/by-org-and-status \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lister les enregistrements du suivi des embeddings par organisation (filtre facultatif par type de ressource)
Paramètres
organisationId `string` (facultatif) ID de l'organisation (résolu automatiquement s'il est omis) resourceType `string` (facultatif) Type de ressource facultatif (par exemple "article"). S'il est fourni, filtre les enregistrements dont resourceTypeId commence par "{type}#". Limit `string` (facultatif) Nombre maximal d'éléments par page LastEvaluatedKey `string` (facultatif) JSON du LastEvaluatedKey DynamoDB pour la paginationPoint de terminaison
GET /api/llm/embedding-track/by-org
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/llm/embedding-track/by-org \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Initialiser la collection de base de données vectorielle de l'organisation
Paramètres
organisationId `string` (facultatif) L'ID de l'organisation (détecté automatiquement s'il n'est pas fourni)Point de terminaison
POST /api/llm/init-org
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/llm/init-org \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Recherche sémantique dans la base de connaissances
Paramètres
organisationId `string` (facultatif) L'ID de l'organisation (détecté automatiquement s'il n'est pas fourni)Corps de la requête
Point de terminaison
POST /api/llm/semantic-search
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/llm/semantic-search \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Lancer le traitement en flux des articles en file d'attente pour l'embedding, avec suivi de la progression en temps réel
Paramètres
organisationId `string` (facultatif) L'ID de l'organisation (détecté automatiquement s'il n'est pas fourni)Point de terminaison
POST /api/llm/start-embedding-stream
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/llm/start-embedding-stream \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Insérer ou mettre à jour les embeddings d'un article dans la base de données vectorielle
Gère l'embedding d'un article selon son état actuel : - Si l'article n'est pas publié OU est privé : supprime les embeddings - Si l'article est publié ET public : recalcule les embeddings avec le contenu complet Exige toujours le corps complet de l'article.
Paramètres
organisationId `string` (facultatif) L'ID de l'organisation (détecté automatiquement s'il n'est pas fourni)Corps de la requête
Point de terminaison
POST /api/llm/upsert-embeddings
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/llm/upsert-embeddings \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Point de terminaison de test pour supprimer par lot les embeddings d'articles par organisation et statut facultatif
Paramètres
organisationId `string` (facultatif) ID de l'organisation (résolu automatiquement à partir du contexte utilisateur s'il est omis) status `string` (facultatif) Statut à filtrer (facultatif ; s'il est omis, supprime TOUS les articles de l'organisation quel que soit leur statut) hardDelete `string` (facultatif) Indique s'il faut supprimer définitivement les enregistrements de suivi des embeddings (true) ou les supprimer de manière logique en mettant à jour le statut (false)Point de terminaison
DELETE /api/llm/test/batch-delete-by-status
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/llm/test/batch-delete-by-status \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Transformer et découper du texte avec des statistiques détaillées
Point de terminaison de test qui transforme du texte et le découpe en segments, puis fournit des statistiques détaillées sur la répartition des segments (nombre de caractères, pourcentages et indicateurs de qualité) pour aider à évaluer l'efficacité du découpage.
Corps de la requête
Point de terminaison
POST /api/llm/test/transform-chunk
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/llm/test/transform-chunk \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Obtenir le nombre total de vecteurs dans l'index vectoriel de l'organisation
Point de terminaison de test pour compter tous les vecteurs de l'index vectoriel de l'organisation de l'utilisateur actuel
Paramètres
organisationId `string` (facultatif) L'ID de l'organisation (détecté automatiquement s'il n'est pas fourni)Point de terminaison
GET /api/llm/test/vector-count
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/llm/test/vector-count \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Supprimer de l'index vectoriel tous les vecteurs d'un articleId donné
Point de terminaison de test pour supprimer de l'index vectoriel de l'organisation de l'utilisateur actuel tous les vecteurs associés à un articleId donné.
Paramètres
organisationId `string` (facultatif) L'ID de l'organisation (détecté automatiquement s'il n'est pas fourni) articleId `string` (obligatoire) L'articleId dont supprimer les vecteurs dryRun `string` (facultatif) Si true, affiche uniquement ce qui serait supprimé, sans rien supprimerPoint de terminaison
DELETE /api/llm/test/vector-delete-article
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/llm/test/vector-delete-article \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Tester le SDK Vector en listant tous les index
Point de terminaison de test pour vérifier la connectivité du SDK Vector et lister tous les index du bucket vectoriel
Point de terminaison
GET /api/llm/test/vector-indices
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/llm/test/vector-indices \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Initialiser l'index vectoriel d'une organisation
Crée le bucket et l'index vectoriels de l'organisation de l'utilisateur actuel
Paramètres
organisationId `string` (facultatif) L'ID de l'organisation (détecté automatiquement s'il n'est pas fourni)Point de terminaison
POST /api/llm/test/vector-init-index
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/llm/test/vector-init-index \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtenir toutes les métadonnées vectorielles d'un articleId donné
Point de terminaison de test pour récupérer dans l'index vectoriel tous les segments vectoriels et leurs métadonnées pour un articleId donné. Utile pour examiner comment un article est découpé et stocké. Le filtrage est géré par le service de magasin vectoriel.
Paramètres
organisationId `string` (facultatif) L'ID de l'organisation (détecté automatiquement s'il n'est pas fourni) articleId `string` (obligatoire) L'ID de l'article dont récupérer les métadonnées vectoriellesPoint de terminaison
GET /api/llm/test/vector-metadata-by-article
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/llm/test/vector-metadata-by-article \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtenir les vecteurs récents et leurs métadonnées depuis l'index vectoriel
Point de terminaison de test pour récupérer les 10 vecteurs les plus récents avec leurs métadonnées (mais sans les données vectorielles) depuis l'index vectoriel de l'organisation de l'utilisateur actuel. Utile pour examiner la structure des métadonnées.
Paramètres
organisationId `string` (facultatif) L'ID de l'organisation (détecté automatiquement s'il n'est pas fourni) limit `string` (facultatif) Nombre de vecteurs récents à renvoyer (100 maximum)Point de terminaison
GET /api/llm/test/vector-recent
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/llm/test/vector-recent \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Téléverse une ressource pour le Marketing Manager/Designer vers le stockage S3.
Paramètres
file `string` (facultatif) Nom du fichier à envoyer.Point de terminaison
POST /api/marketing/design/static/download
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/marketing/design/static/download \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la ressource au format JSON, à charger dans le gestionnaire de ressources.
Paramètres
id `string` (obligatoire) ID de la ressource à obtenir. organisationId `string` (obligatoire) L'ID de l'organisation de l'installation à laquelle appartient la ressource.Point de terminaison
GET /api/marketing/assets/get/{id}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/marketing/assets/get/{id} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie toutes les ressources de conception.
Paramètres
body `string` (obligatoire) Objet JSON des données de l'installation à enregistrer. organisationId `string` (obligatoire) L'ID de l'organisation de l'installation à laquelle appartient la ressource. useCache `string` (facultatif) search `string` (facultatif) La requête de recherche pour filtrer les ressources par nom ou étiquette. brand `string` (facultatif) La marque selon laquelle filtrer les ressources. tag `string` (facultatif) L'étiquette selon laquelle filtrer les ressources.Point de terminaison
GET /api/marketing/assets/get
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/marketing/assets/get \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie une page de ressources marketing imprimables d'une organisation. Utilise Algolia pour la recherche par pertinence et la pagination par page (avec totaux), et se rabat sur DynamoDB lorsqu'Algolia est indisponible.
Paramètres
organisationId `string` (obligatoire) L'ID de l'organisation de l'installation à laquelle appartiennent les ressources. search `string` (facultatif) La requête de recherche pour filtrer les ressources par nom ou étiquette. brand `string` (facultatif) La marque selon laquelle filtrer les ressources. tag `string` (facultatif) L'étiquette selon laquelle filtrer les ressources. page `string` (facultatif) Numéro de la page à récupérer (indexé à partir de zéro). limit `string` (facultatif) Nombre de ressources par page (300 maximum). useCache `string` (facultatif) Si false, contourne Algolia et interroge directement DynamoDB.Point de terminaison
GET /api/marketing/assets
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/marketing/assets \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des ressources disponibles téléversées via le gestionnaire de ressources.
Paramètres
organisationId `string` (obligatoire)Point de terminaison
GET /api/marketing/assets/list
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/marketing/assets/list \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Ajoute ou enregistre une ressource.
Paramètres
body `string` (obligatoire) Objet JSON des données de l'installation à enregistrer. organisationId `string` (obligatoire) L'ID de l'organisation de l'installation à laquelle appartient la ressource.Point de terminaison
PUT /api/marketing/assets/save
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/assets/save \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Téléverse une ressource pour le Marketing Manager/Designer vers le stockage S3.
Paramètres
file `string` (facultatif) Nom du fichier à envoyer. organisationId `string` (facultatif) L'ID de l'organisation à laquelle appartient la ressource.Point de terminaison
POST /api/marketing/assets/upload
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/marketing/assets/upload \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste de toutes les pages personnalisées d'une organisation.
Paramètres
organisationId `string` (obligatoire) ID interne de l'organisation dont renvoyer les pages personnalisées.Point de terminaison
GET /api/marketing/custom-pages
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/marketing/custom-pages \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Crée ou met à jour une page personnalisée pour une organisation.
Paramètres
organisationId `string` (obligatoire) ID interne de l'organisation dont renvoyer les pages personnalisées. body `object` (obligatoire) Données de la page personnalisée à créer ou mettre à jour.Point de terminaison
PUT /api/marketing/custom-pages
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/custom-pages \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste de toutes les pages personnalisées d'une installation.
Paramètres
facilityId `string` (obligatoire) ID interne de l'installation dont renvoyer les pages personnalisées.Point de terminaison
GET /api/facilities/{facilityId}/marketing/custom-pages
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/marketing/custom-pages \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie toutes les créations exportées ou rendues pour un ID d'installation donné.
Paramètres
club `string` (obligatoire) ID interne de l'installation qui effectue la requête. sort `string` (facultatif) Critère de tri des créations : 'oldest', 'newest' ou 'design'.Point de terminaison
GET /api/marketing/designs/{club}/exports
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/{club}/exports \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie le contenu HTML d'une création au format JSON, à charger dans l'éditeur.
Paramètres
id `string` (obligatoire) ID de la création à obtenir.Point de terminaison
GET /api/marketing/designs/get/{id}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/get/{id} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des correspondances de saisie des créations marketing et imprimées et des modèles de création
Paramètres
clubId `string` (obligatoire) ID interne de l'installation qui effectue la requête. availableFeatures `string` (facultatif) Renvoyer tous les éléments ayant des fonctionnalités données brand `string` (facultatif) Filtre les créations par marque features `string` (facultatif) Filtrer les résultats selon les fonctionnalitésPoint de terminaison
GET /api/marketing/designs/input-mapping/{clubId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/input-mapping/{clubId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des créations disponibles pour une installation donnée, utilisables dans les créations (Print Designs) réalisées dans l'éditeur marketing/impression du hub.
Paramètres
club `string` (obligatoire) ID interne de l'installation qui effectue la requête. designAdmin `string` (facultatif) Renvoyer toutes les données de création (vue administrateur ; l'utilisateur doit être administrateur). brand `string` (facultatif) Filtre les créations par marquePoint de terminaison
GET /api/marketing/designs/{club}/list
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/{club}/list \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Force le système à générer ou régénérer toutes les miniatures et prévisualisations des créations (utilisé principalement si des ressources « en amont » changent dans S3, etc.). **NOTE** Vous ne pouvez appeler cette fonction qu'une fois toutes les X minutes (et pas du tout si un rendu est déjà en cours). Cela évite de surcharger nos serveurs avec le rendu de toutes les créations.
Point de terminaison
GET /api/marketing/designs/render-all-thumbnails
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/render-all-thumbnails \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lance le rendu d'une création dynamique
Paramètres
body `string` (obligatoire) Objet JSON des données de l'installation à envoyer au processeur de rendu des créations.Point de terminaison
POST /api/marketing/designs/dynamic/render-design
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/marketing/designs/dynamic/render-design \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Ajoute, enregistre ou met à jour une création.
Paramètres
body `string` (obligatoire) Objet JSON des données de l'installation à enregistrer.Point de terminaison
PUT /api/marketing/designs/{club}/save
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/designs/{club}/save \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la création statique au format JSON, à charger
Paramètres
id `string` (obligatoire) ID de la création statique à obtenir.Point de terminaison
GET /api/marketing/designs/static/get/{id}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/static/get/{id} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Ajoute, enregistre ou met à jour un modèle de création statique.
Paramètres
body `string` (obligatoire) Objet JSON des données de l'installation à enregistrer.Point de terminaison
PUT /api/marketing/designs/static/{club}/save
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/designs/static/{club}/save \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Supprime du système une variable définie par l'utilisateur.
Paramètres
club `string` (obligatoire) ID interne de l'installation qui effectue la requête. body `string` (obligatoire) JSON contenant l'ID de la variable à supprimer.Point de terminaison
DELETE /api/marketing/variables/{club}/delete
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/marketing/variables/{club}/delete \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des variables disponibles pour une installation donnée, utilisables dans les créations (Print Designs) réalisées dans l'éditeur marketing/impression du hub.
Paramètres
club `string` (obligatoire) ID interne de l'installation qui effectue la requête.Point de terminaison
GET /api/marketing/variables/{club}/list
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/marketing/variables/{club}/list \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Crée une nouvelle « variable » utilisateur pour l'installation donnée.
Paramètres
club `string` (obligatoire) ID interne de l'installation qui effectue la requête. body `string` (obligatoire) Objet JSON de la nouvelle variable.Point de terminaison
POST /api/marketing/variables/{club}/new
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/marketing/variables/{club}/new \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Ajoute, enregistre ou met à jour une ou plusieurs variables de création dans le système via un tableau d'objets.
Paramètres
club `string` (obligatoire) ID interne de l'installation qui effectue la requête. body `string` (obligatoire) Tableau d'un ou plusieurs objets JSON à ajouter ou mettre à jour (permet d'enregistrer plusieurs éléments ou objets en une seule requête API).Point de terminaison
PUT /api/marketing/variables/{club}/save
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/variables/{club}/save \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie le manifeste de documentation MCP de l'utilisateur connecté
Alimente la page `/mcp-docs` de l'application. Renvoie l'URL du serveur MCP, les en-têtes d'authentification pris en charge, l'identité et l'indicateur administrateur de l'appelant, ainsi que la liste filtrée des outils (filtrée exactement comme `/mcp/tools/list`, afin que la page de documentation n'affiche jamais un outil que l'appelant ne peut pas réellement utiliser).
Point de terminaison
GET /api/mcp/docs-manifest
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/mcp/docs-manifest \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Créer un contrat utilisateur.
Paramètres
body `object` (obligatoire) Objet JSON des données de l'installation à enregistrer.Point de terminaison
POST /api/member-agreements/contracts-tna/:club
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des contrats.
Point de terminaison
GET /api/member-agreements/contracts-tna/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Supprimer un contrat utilisateur.
Point de terminaison
DELETE /api/member-agreements/contracts-tna/:club/:id
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club/:id \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie le détail d'un contrat.
Point de terminaison
GET /api/member-agreements/contracts-tna/:club/:id
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club/:id \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Mettre à jour un contrat utilisateur.
Paramètres
body `object` (obligatoire) Objet JSON des données de l'installation à enregistrer.Point de terminaison
PATCH /api/member-agreements/contracts-tna/:club/:id
Exemple de requête
curl -X PATCH https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club/:id \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtenir les contrats par défaut de l'installation.
Paramètres
body `object` (obligatoire) Objet JSON des données de l'installation à enregistrer.Point de terminaison
GET /api/member-agreements/default-tna/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/default-tna/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Définir le contrat par défaut de l'installation.
Paramètres
body `object` (obligatoire) Objet JSON des données de l'installation à enregistrer.Point de terminaison
POST /api/member-agreements/default-tna/:club
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/member-agreements/default-tna/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des contrats globaux ou régionaux.
Point de terminaison
GET /api/member-agreements/global-tna/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/global-tna/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des membres ayant un accord.
Point de terminaison
GET /api/member-agreements/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des membres de l'installation par saison pour l'application du camp d'entraînement.
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder. season `string` (facultatif) Saison du camp d'entraînement selon laquelle filtrer. userIds `string` (facultatif) Tableau d'ID utilisateur à filtrer. useCache `string` (facultatif) Indique s'il faut utiliser le cache. isUserMemberInfo `string` (facultatif) Si activé, filtre les données selon userIds (il est recommandé de n'utiliser qu'un seul ID utilisateur) et inclut les données nécessaires, comme le classement et les préférences de l'utilisateur.Point de terminaison
GET /api/members-leads/trainingcamp/club/season-members/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/members-leads/trainingcamp/club/season-members/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Supprime plusieurs prospects de réservation d'entraînement.
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder. body `string` (obligatoire)Point de terminaison
DELETE /api/members-leads/workout-booking/club/leads/{club}
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/members-leads/workout-booking/club/leads/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des prospects de réservation d'entraînement d'une installation.
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder. all `string` (facultatif) Afficher tous les prospects ou seulement les prochains.Point de terminaison
GET /api/members-leads/workout-booking/club/leads/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/members-leads/workout-booking/club/leads/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Met à jour un prospect de réservation d'entraînement.
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder. body `string` (obligatoire)Point de terminaison
PUT /api/members-leads/workout-booking/club/leads/{club}
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/members-leads/workout-booking/club/leads/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Active ou désactive le signalement d'un prospect de réservation d'entraînement.
Paramètres
club `string` (obligatoire) ID interne du club. body `string` (obligatoire)Point de terminaison
PATCH /api/members-leads/workout-booking/club/leads/{club}/flag
Exemple de requête
curl -X PATCH https://portal.hub.gymsystems.co/api/members-leads/workout-booking/club/leads/{club}/flag \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtenir les modules effectifs d'une installation
Renvoie tous les modules disponibles pour une installation en résolvant la hiérarchie : préférences de l'installation → modules de la marque → modules de l'organisation. Les résultats sont mis en cache dans Redis pour de meilleures performances.
Paramètres
facilityId `string` (obligatoire) L'ID de l'installation dont résoudre les modulesPoint de terminaison
GET /api/facilities/{facilityId}/modules
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/modules \
-H "x-api-key: YOUR_API_KEY"
Réponse
[]
Renvoie le catalogue des modules ainsi que la configuration d'affichage du menu latéral. La liste complète des modules est renvoyée pour que le moteur de rendu front-end décide de la visibilité par utilisateur ; le contrôle d'accès reste appliqué côté serveur via `auth.checkModuleAccess()`.
Point de terminaison
GET /api/modules
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/modules \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
obtenir les catégories de notifications.
Point de terminaison
GET /api/notification/categories
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/notification/categories \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Supprimer une notification consommée.
Point de terminaison
DELETE /api/club/notification/consumed/:club
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/club/notification/consumed/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
crée un message de notification.
Point de terminaison
POST /api/club/notification/consumed/:club
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/club/notification/consumed/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie un tableau des notifications consommées.
Point de terminaison
GET /api/club/notification/consumed/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/club/notification/consumed/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Supprimer un message de notification.
Point de terminaison
DELETE /api/club/notification/messages/:club
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/club/notification/messages/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie un tableau des messages de notification.
Point de terminaison
GET /api/club/notification/messages/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/club/notification/messages/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
met à jour un message de notification.
Point de terminaison
PATCH /api/club/notification/messages/:club
Exemple de requête
curl -X PATCH https://portal.hub.gymsystems.co/api/club/notification/messages/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
crée un message de notification.
Paramètres
body `string` (obligatoire)Point de terminaison
POST /api/club/notification/messages/:club
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/club/notification/messages/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
obtenir les destinataires d'une notification par installation.
Point de terminaison
POST /api/club/notification/viewers/:club
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/club/notification/viewers/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
obtenir les catégories de notifications par utilisateur.
Point de terminaison
GET /api/club/notification/user-categories/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/club/notification/user-categories/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
crée un message de notification.
Point de terminaison
POST /api/notification/webhook
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/notification/webhook \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtenir la clé publique VAPID pour les notifications push HTML5
Renvoie la clé publique VAPID utilisée pour créer les abonnements push du navigateur.
Point de terminaison
GET /html5-push/vapid-public-key
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/html5-push/vapid-public-key \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Enregistrer ou mettre à jour un abonnement push HTML5
Enregistre un abonnement push du navigateur pour l'utilisateur actuel.
Corps de la requête
Point de terminaison
POST /html5-push/subscribe
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/html5-push/subscribe \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Supprimer un abonnement push HTML5
Supprime un abonnement push du navigateur pour l'utilisateur actuel.
Corps de la requête
Point de terminaison
POST /html5-push/unsubscribe
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/html5-push/unsubscribe \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Obtenir l'état d'intégration du site pour l'utilisateur appelant
Renvoie les deux volets de l'intégration d'une installation (la configuration : coordonnées et sélection de produits, enregistrée dans les préférences de l'installation ; et le paiement : dérivé en direct de l'enregistrement payment-settings de la facturation SaaS), ainsi qu'un indicateur `required` personnalisé pour l'appelant, sur lequel se base l'interface de l'application. Sites à pile technologique uniquement ; les sites à pile métier renvoient toujours required=false.
Paramètres
facilityId `string` (obligatoire)Point de terminaison
GET /api/onboarding/{facilityId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/onboarding/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Enregistrer la progression en cours de l'assistant d'intégration d'une installation
Enregistre l'état partiel de l'assistant (sélection de produits, texte libre « Other », coordonnées de l'entreprise vérifiées, étape actuelle) afin qu'une actualisation ou un abandon reprenne là où l'utilisateur s'était arrêté. N'enregistre jamais la fin : voir le point de terminaison complete.
Paramètres
facilityId `string` (obligatoire)Corps de la requête
Point de terminaison
PUT /api/onboarding/{facilityId}
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/onboarding/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Générer des suggestions de préremplissage par IA pour l'assistant d'intégration
Utilise le contexte existant de l'installation, de la marque et de l'organisation pour proposer les coordonnées de l'installation (texte de présentation, champs de contact nettoyés), une sélection de produits suggérée et de courts conseils personnalisés. Les résultats sont mis en cache dans Redis pendant 7 jours. Les suggestions sont purement indicatives : le client les affiche dans un formulaire de vérification modifiable. Répond toujours 200 ; `suggestions` vaut null lorsque l'IA est indisponible, afin que l'assistant continue de fonctionner en mode dégradé.
Paramètres
facilityId `string` (obligatoire)Point de terminaison
POST /api/onboarding/{facilityId}/ai-prefill
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/onboarding/{facilityId}/ai-prefill \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Terminer le volet configuration de l'intégration du site
Valide les sélections et coordonnées confirmées, enregistre les coordonnées de l'entreprise dans la fiche de l'installation, initialise la disposition du menu technique de l'installation à partir de la sélection de produits (sauf si une disposition personnalisée existe déjà) et enregistre la fin de la configuration. Le volet paiement ne peut volontairement PAS être terminé ici : il est dérivé en direct de l'enregistrement payment-settings de la facturation SaaS, de sorte que l'obligation d'enregistrer une carte ne peut pas être contournée en appelant ce point de terminaison. Renvoie l'état actualisé.
Paramètres
facilityId `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/onboarding/{facilityId}/complete
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/onboarding/{facilityId}/complete \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Déclencher une action d'intégration partenaire déclarée pour une installation
Exécute une action « Run integration » déclarée dans la fiche du partenaire (ph-partners.actions[]), limitée à une installation. Un verrou Redis à exécution unique empêche les exécutions manuelles simultanées pour une même combinaison action + installation.
Paramètres
partnerId `string` (obligatoire) actionId `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/partners/{partnerId}/actions/{actionId}/run
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/partners/{partnerId}/actions/{actionId}/run \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Lire l'état d'exécution d'une action d'intégration partenaire
Indique si une exécution manuelle est en cours (verrou à exécution unique détenu) et renvoie la dernière exécution demandée, pour l'interrogation par le bouton des paramètres.
Paramètres
partnerId `string` (obligatoire) actionId `string` (obligatoire) facilityId `string` (obligatoire)Point de terminaison
GET /api/partners/{partnerId}/actions/{actionId}/status
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/partners/{partnerId}/actions/{actionId}/status \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtenir toutes les configurations partenaires d'une marque
Paramètres
brandId `string` (obligatoire) L'ID de la marquePoint de terminaison
GET /api/partners/brand-config/{brandId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/partners/brand-config/{brandId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
[]
Créer ou mettre à jour une configuration partenaire de marque
Paramètres
body `object` (obligatoire)Point de terminaison
PUT /api/partners/brand-config
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/partners/brand-config \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Migrer les données d'intégration GymMaster vers facility-partner-config
Interroge toutes les installations disposant des champs gymMasterAPI et gymMasterDomain et crée ou met à jour les enregistrements facility-partner-config correspondants. Il s'agit d'un point de terminaison de migration ponctuelle.
Paramètres
partnerId `string` (obligatoire) L'ID partenaire GymMaster à utiliser pour tous les enregistrements migrés dryRun `boolean` (facultatif) Si true, indique uniquement ce qui serait migré, sans écrire dans la base de donnéesPoint de terminaison
GET /api/partners/migrate-gymmaster
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/partners/migrate-gymmaster \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Activer un partenaire pour une organisation.
Paramètres
partnerId `string` (obligatoire) ID du partenairePoint de terminaison
POST /api/partners/organisation/enable
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/partners/organisation/enable \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lister les partenaires de l'organisation. Les administrateurs d'organisation ne voient que les partenaires de leur organisation.
Point de terminaison
GET /api/partners/organisation
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/partners/organisation \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Retirer un partenaire de l'organisation.
Paramètres
keyId `string` (obligatoire) ID de clé du partenaire de l'organisation organisationId `string` (obligatoire) ID de l'organisation du partenairePoint de terminaison
DELETE /api/partners/organisation/{keyId}
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/partners/organisation/{keyId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Mettre à jour le mode d'accès et les modules d'un partenaire de l'organisation.
Paramètres
keyId `string` (obligatoire) ID de clé du partenaire de l'organisation organisationId `string` (obligatoire) ID de l'organisation du partenaire partnerId `string` (obligatoire) ID du partenaire accessMode `string` (obligatoire) Mode d'accès du partenaire modules `string` (facultatif) Liste des modules pour le mode d'accès LIMITEDPoint de terminaison
PUT /api/partners/organisation/update-access
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/partners/organisation/update-access \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Créer des enregistrements d'arrivée pour une installation
Accepte un tableau d'objets d'enregistrement d'arrivée et les transmet à l'API Partner pour traitement. 25 enregistrements d'arrivée maximum par requête.
Corps de la requête
Point de terminaison
POST /api/partners/check-ins
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/partners/check-ins \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Supprimer une configuration partenaire d'une installation
Supprime la configuration d'une intégration partenaire dans une installation
Paramètres
facilityId `string` (obligatoire) ID de l'installation (ID club) partnerId `string` (obligatoire) ID du partenairePoint de terminaison
DELETE /api/partners/facility-config/{facilityId}/{partnerId}
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/partners/facility-config/{facilityId}/{partnerId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lister toutes les configurations partenaires d'une installation
Renvoie toutes les intégrations partenaires configurées pour l'installation donnée
Paramètres
facilityId `string` (obligatoire) ID de l'installation (ID club)Point de terminaison
GET /api/partners/facility-config/{facilityId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/partners/facility-config/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Créer ou mettre à jour une configuration partenaire pour une installation
Crée ou met à jour la configuration d'une intégration partenaire dans une installation
Corps de la requête
Point de terminaison
POST /api/partners/facility-config
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/partners/facility-config \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Supprimer un membre par memberId
Supprime une fiche membre existante à l'aide du memberId.
Paramètres
memberId `string` (obligatoire) Identifiant unique du membrePoint de terminaison
DELETE /api/partners/members/{memberId}
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/partners/members/{memberId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Mettre à jour un membre par memberId
Met à jour une fiche membre existante à l'aide du memberId.
Paramètres
memberId `string` (obligatoire) Identifiant unique du membreCorps de la requête
Point de terminaison
PUT /api/partners/members/{memberId}
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/partners/members/{memberId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Obtenir l'état d'une opération de synchronisation des membres
Renvoie l'état actuel d'une opération asynchrone de création ou de suppression de membre lancée via POST /api/partners/members ou DELETE /api/partners/members/{memberId}. Le front-end interroge ce point de terminaison pour remplacer l'ancien flux d'interrogation de liste et de correspondance par nom. NOTE Le cloisonnement partnerId/facilityId au niveau des lignes est exigé par les règles d'isolation multi-locataire, mais reporté à une PR de renforcement de la phase 3a.1 : les operationIds sont des UUID de 128 bits et la route est déjà conditionnée par l'accès au module `external-integrations`. Toute personne disposant d'un operationId valide et de l'accès au module d'administration peut en consulter l'état.
Paramètres
operationId `string` (obligatoire) UUID renvoyé par POST/DELETEPoint de terminaison
GET /api/partners/members/operations/{operationId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/partners/members/operations/{operationId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Créer ou mettre à jour des membres pour une installation
Accepte un tableau d'objets membre et les transmet à l'API Partner pour traitement. 25 membres maximum par requête.
Corps de la requête
Point de terminaison
POST /api/partners/members
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/partners/members \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Créer ou mettre à jour des formules d'adhésion pour une installation
Accepte un tableau d'objets formule d'adhésion et les transmet à l'API Partner pour traitement. 25 formules d'adhésion maximum par requête.
Corps de la requête
Point de terminaison
POST /api/partners/membership-plans
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/partners/membership-plans \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Crée un nouveau rôle
Paramètres
body `string` (obligatoire) Objet rôlePoint de terminaison
POST /api/roles
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/roles \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste de tous les rôles
Point de terminaison
GET /api/roles
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/roles \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Supprime un rôle par ID
Point de terminaison
DELETE /api/roles/{roleId}
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/roles/{roleId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Met à jour un rôle par ID
Paramètres
body `string` (obligatoire) Objet rôlePoint de terminaison
PUT /api/roles/{roleId}
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/roles/{roleId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Créer une nouvelle ligne supplémentaire pour la facture SaaS
Paramètres
organisationId `string` (facultatif) L'ID de l'organisation pour laquelle créer la ligne supplémentaire body `string` (facultatif) Corps de la requêtePoint de terminaison
POST /api/saas-billing/additional-line-items
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/saas-billing/additional-line-items \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des lignes supplémentaires de la facture SaaS
Paramètres
organisationId `string` (obligatoire) L'ID de l'organisationPoint de terminaison
GET /api/saas-billing/additional-line-items
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/additional-line-items \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des lignes supplémentaires de la facture SaaS de l'installation
Point de terminaison
GET /api/clubs/{clubId}/saas-billing/additional-line-items
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/saas-billing/additional-line-items \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Met à jour une ligne supplémentaire de la facture SaaS
Paramètres
itemId `string` (obligatoire) L'ID de la ligne supplémentaire à mettre à jour body `string` (obligatoire) Le corps de la requêtePoint de terminaison
PUT /api/saas-billing/additional-line-items/{itemId}
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/saas-billing/additional-line-items/{itemId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Tarifs horaires combinés des Cloud Agents pour Your Rates
Renvoie les tailles de Cloud Agent proposées avec un tarif horaire combiné unique (hébergement + logiciel). La répartition n'est pas incluse. usedPlans contient les SKU utilisés par cette installation au cours des 30 derniers jours.
Paramètres
clubID `string` (obligatoire)Point de terminaison
GET /api/clubs/{clubID}/saas-billing/cloud-agent-rates
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/cloud-agent-rates \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Supprimer un rapport mensuel importé
Paramètres
club `string` (facultatif) ID du club reportId `string` (facultatif) ID du rapportPoint de terminaison
DELETE /api/saas-billing/extended-access/monthly-usage-report/{reportId}
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/saas-billing/extended-access/monthly-usage-report/{reportId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtenir le dernier rapport de stockage de vidéosurveillance d'une installation
Renvoie l'instantané quotidien le plus récent du stockage de vidéosurveillance de l'installation à partir des journaux de facturation enregistrés (jusqu'aux 31 derniers jours). Inclut totalStorage, date et les frais liés au stockage.
Paramètres
club `string` (obligatoire) ID du clubPoint de terminaison
GET /api/saas-billing/extended-access/latest-cctv-storage-report/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/latest-cctv-storage-report/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie une facture PDF de l'installation pour la période donnée.
Paramètres
club `string` (facultatif) ID du club month `string` (facultatif) mois du rapport sous forme de nombre. 1 = janvier, 2 = février, etc. year `string` (facultatif) année du rapport sous forme de nombre, par exemple 2021Point de terminaison
GET /api/saas-billing/extended-access/monthly-usage-report/:club/invoice
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/monthly-usage-report/:club/invoice \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lot de factures PDF de la plateforme pour les mois d'utilisation sélectionnés, sous forme de ZIP. Équivalent groupé du point de terminaison unitaire .../invoice : alimente le téléchargement multiple de l'onglet Invoices & Receipts de l'applet Billing & Cost Management.
Paramètres
club `string` (facultatif) ID du club months `string` (facultatif) Mois d'utilisation ou de rapport séparés par des virgules, au format YYYY-MM (24 maximum)Point de terminaison
GET /api/saas-billing/extended-access/monthly-usage-report/{club}/invoices.zip
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/monthly-usage-report/{club}/invoices.zip \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie les rapports d'utilisation mensuels de plusieurs mois en un seul appel. Alimente le graphique Cost History et les écarts d'un mois sur l'autre dans l'applet Billing & Cost Management. Les mois sans utilisation renvoient report: null (comme le 404 → 0 $ du point de terminaison mensuel unitaire dans l'interface).
Paramètres
club `string` (facultatif) ID du club months `string` (facultatif) Mois d'utilisation séparés par des virgules, au format YYYY-MM (12 maximum)Point de terminaison
GET /api/saas-billing/extended-access/monthly-usage-report/{club}/batch
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/monthly-usage-report/{club}/batch \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Importer les rapports mensuels de l'installation.
Paramètres
club `string` (facultatif) ID du clubPoint de terminaison
PUT /api/saas-billing/extended-access/usage-report/:club
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/saas-billing/extended-access/usage-report/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie un rapport CSV de l'utilisation de la vidéosurveillance sur les 30 derniers jours pour toutes les installations.
Point de terminaison
GET /api/saas-billing/extended-access/usage-report/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/usage-report/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Liste tous les rapports quotidiens du mois pour l'installation.
Paramètres
club `string` (facultatif) ID du club month `string` (facultatif) mois du rapport sous forme de nombre. 1 = janvier, 2 = février, etc. year `string` (facultatif) année du rapport sous forme de nombre, par exemple 2021Point de terminaison
GET /api/saas-billing/extended-access/monthly-usage-report/{club}/daily-reports
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/monthly-usage-report/{club}/daily-reports \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des rapports mensuels importés pour l'administrateur
Paramètres
organisationId `string` (obligatoire) ID de l'organisationPoint de terminaison
GET /api/saas-billing/extended-access/usage-report/imported
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/usage-report/imported \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie un rapport CSV de l'utilisation de la vidéosurveillance sur les 30 derniers jours pour toutes les installations.
Paramètres
club `string` (facultatif) ID du club month `string` (facultatif) mois du rapport sous forme de nombre. 1 = janvier, 2 = février, etc. year `string` (facultatif) année du rapport sous forme de nombre, par exemple 2021Point de terminaison
GET /api/saas-billing/extended-access/monthly-usage-report/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/monthly-usage-report/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie le rapport d'utilisation périodique de l'installation.
Paramètres
club `string` (facultatif) ID du club periodStart `string` (facultatif) Début de la période au format YYYY-MM-DD periodEnd `string` (facultatif) Fin de la période au format YYYY-MM-DDPoint de terminaison
GET /api/saas-billing/extended-access/periodical-usage-report/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/periodical-usage-report/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lot de documents de facturation PDF dans un seul ZIP, mélangeant plusieurs types de documents : factures de la plateforme (par mois d'utilisation), reçus de recharge du portefeuille SaaS et reçus de recharge Model Router. Équivalent groupé des points de terminaison invoices.zip / receipts.zip par type, pour l'onglet consolidé Invoices & Receipts. Chaque mois ou ID demandé doit correspondre à un document appartenant à l'installation : une seule valeur incorrecte fait échouer tout le lot.
Paramètres
clubID `string` (obligatoire) invoiceMonths `string` (facultatif) Mois d'utilisation séparés par des virgules, au format YYYY-MM walletIds `string` (facultatif) ID de transactions de recharge du portefeuille SaaS séparés par des virgules aiIds `string` (facultatif) ID de transactions de recharge Model Router séparés par des virgulesPoint de terminaison
GET /api/clubs/{clubID}/saas-billing/documents.zip
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/documents.zip \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Ajouter une note à un enregistrement mensuel
Paramètres
recordID `string` (facultatif) L'ID de l'enregistrement à obtenir note `string` (facultatif) La note à ajouter à l'enregistrementPoint de terminaison
POST /api/saas-billing/monthly-records/{recordID}/notes
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/saas-billing/monthly-records/{recordID}/notes \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des enregistrements mensuels de facturation SaaS
Paramètres
club `string` (facultatif) L'ID de l'installation à obtenir month `string` (facultatif) Le mois de facturation au format YYYY-MMPoint de terminaison
GET /api/saas-billing/monthly-records/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/monthly-records/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des enregistrements mensuels de facturation SaaS en échec ou nécessitant 3D Secure
Paramètres
clubID `string` (facultatif) L'ID de l'installation dont obtenir les enregistrements mensuels en échecPoint de terminaison
GET /api/clubs/:clubID/saas-billing/flagged
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/:clubID/saas-billing/flagged \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie TOUS les enregistrements mensuels de facturation SaaS (le registre des factures) d'une installation, du mois de facturation le plus récent au plus ancien. Équivalent, limité à l'installation, du point de terminaison paginate-monthly-records réservé aux administrateurs : alimente l'onglet client « Invoices & Receipts » de l'applet Billing & Cost Management.
Paramètres
clubID `string` (facultatif) L'ID de l'installation dont lister les enregistrements mensuelsPoint de terminaison
GET /api/clubs/{clubID}/saas-billing/monthly-records
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/monthly-records \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des enregistrements mensuels de facturation SaaS
Paramètres
organisationId `string` (facultatif) ID de l'organisation month `string` (facultatif) Mois au format MM. year `string` (facultatif) Année au format YYYY. filters `string` (facultatif) Filtres de chaîne de requête créés par le tableau de données. order `string` (facultatif) Chaîne de requête créée par le tableau de données.Point de terminaison
GET /api/saas-billing/monthly-records
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/monthly-records \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Relancer les paiements en échec d'une installation
Paramètres
clubID `string` (facultatif) L'ID de l'installation dont obtenir les enregistrements mensuels en échecPoint de terminaison
PUT /api/clubs/:clubID/saas-billing/retry-failed-payments
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/:clubID/saas-billing/retry-failed-payments \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Mettre à jour un enregistrement mensuel
Paramètres
recordID `string` (facultatif) L'ID de l'enregistrement à obtenir status `string` (facultatif) Le statut à appliquer à l'enregistrementPoint de terminaison
PUT /api/saas-billing/monthly-records/{recordID}
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/saas-billing/monthly-records/{recordID} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Vérifie si les paiements ont abouti et met à jour le statut de l'enregistrement
Paramètres
clubID `string` (facultatif) recordID `string` (facultatif) L'ID de l'enregistrement à obtenirPoint de terminaison
PUT /api/clubs/{clubID}/saas-billing/monthly-records/{recordID}/validate
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/monthly-records/{recordID}/validate \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Ajouter un moyen de paiement pour une installation.
Paramètres
clubID `string` (facultatif)Point de terminaison
POST /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings/payment-methods \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Synchronise les moyens de paiement d'une installation avec Stripe.
Paramètres
clubID `string` (facultatif)Point de terminaison
PUT /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings/payment-methods \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie le budget de dépenses de l'installation ainsi que le cumul du mois et la prévision calculés.
Paramètres
clubID `string` (facultatif)Point de terminaison
GET /api/clubs/{clubID}/saas-billing/budget
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/budget \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Créer, mettre à jour ou effacer le budget de dépenses de l'installation.
Paramètres
clubID `string` (facultatif) body `object` (facultatif)Point de terminaison
PUT /api/clubs/{clubID}/saas-billing/budget
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/budget \
-H "x-api-key: YOUR_API_KEY"
Supprimer un moyen de paiement des paramètres de paiement de l'installation.
Paramètres
clubID `string` (facultatif) paymentMethodID `string` (facultatif)Point de terminaison
DELETE /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods/{paymentMethodID}
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings/payment-methods/{paymentMethodID} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtenir les paramètres de paiement d'une installation.
Paramètres
clubID `string` (facultatif)Point de terminaison
GET /api/clubs/{clubID}/saas-billing/payment-settings
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Mettre à jour les paramètres de paiement d'une installation.
Paramètres
clubID `string` (facultatif) lockedOut `boolean` (facultatif) Indique si l'accès de l'installation au système sera bloqué. pauseBilling `boolean` (facultatif) Indique si la facturation automatique de l'installation sera suspendue. customerID `string` (facultatif) Si renseigné, met à jour l'ID client Stripe de l'installation. deleteSourceID `string` (facultatif) Indique s'il faut supprimer le client source de Stripe.Point de terminaison
PUT /api/clubs/{clubID}/saas-billing/payment-settings
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtenir le premier mois facturé de toutes les installations.
Paramètres
clubID `string` (facultatif)Point de terminaison
GET /api/saas-billing/payment-settings/earliest-billed-month
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/payment-settings/earliest-billed-month \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lister les comptes pouvant lever un blocage de facturation pour une installation, par niveau : d'abord les utilisateurs disposant du module de facturation, puis les administrateurs d'organisation uniquement en dernier recours si personne n'en dispose.
Paramètres
clubID `string` (obligatoire)Point de terminaison
GET /api/clubs/{clubID}/saas-billing/lockout-contacts
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/lockout-contacts \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Parcourir par pages toutes les installations du système et renvoyer l'ID client de chacune.
Paramètres
clubID `string` (facultatif) organisationId `string` (facultatif) ID de l'organisationPoint de terminaison
GET /api/saas-billing/payment-settings/customer-ids
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/payment-settings/customer-ids \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Définir le moyen de paiement principal d'une installation.
Paramètres
clubID `string` (facultatif)Point de terminaison
PUT /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods/{paymentMethodID}/primary
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings/payment-methods/{paymentMethodID}/primary \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Mettre à jour le profil de facturation d'une installation.
Paramètres
clubID `string` (facultatif) invoiceEntity `string` (facultatif) billingContacts `string` (facultatif) Liste des UUID des contacts KYC ccEmails `string` (facultatif) Liste des e-mails à mettre en copie des facturesPoint de terminaison
PUT /api/clubs/{clubID}/saas-billing/payment-settings/billing-profile
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings/billing-profile \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Mettre à jour un moyen de paiement d'une installation.
Paramètres
clubID `string` (facultatif) cardID `string` (facultatif)Point de terminaison
PUT /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods/{cardID}
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings/payment-methods/{cardID} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie, par installation, la ventilation de tous les frais de produits applicables et des lignes supplémentaires pour l'export CSV. Résout la hiérarchie de remplacement globale/région/installation pour chaque installation à laquelle l'utilisateur a accès.
Paramètres
organisationId `string` (obligatoire) ID de l'organisation pour le contrôle d'accèsPoint de terminaison
GET /api/saas-billing/charges-config/export
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/charges-config/export \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la configuration des frais d'une cible donnée
Paramètres
clubId `string` (facultatif) L'ID de l'installation dont obtenir la configuration des fraisPoint de terminaison
GET /api/saas-billing/charges-config/{clubId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/charges-config/{clubId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Récapitulatif de facturation de l'organisation de cette installation : portée effective du payeur, éventuel changement de consolidation planifié, et possibilité ou non pour l'appelant de gérer l'option de consolidation.
Paramètres
clubID `string` (obligatoire)Point de terminaison
GET /api/clubs/{clubID}/saas-billing/org/summary
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/org/summary \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Enregistrements mensuels consolidés de l'organisation (relevés) avec la ventilation par installation, du plus récent au plus ancien. Vide jusqu'à la clôture du premier mois consolidé de l'organisation.
Paramètres
clubID `string` (obligatoire)Point de terminaison
GET /api/clubs/{clubID}/saas-billing/org/monthly-records
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/org/monthly-records \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Récapitulatif du portefeuille prépayé : solde, débits d'utilisation du mois en cours, configuration de la recharge automatique, mode de facturation.
Paramètres
clubID `string` (obligatoire)Point de terminaison
GET /api/clubs/{clubID}/saas-billing/wallet
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Registre du portefeuille, du plus récent au plus ancien. Les portefeuilles à l'échelle de l'organisation incluent les lignes de toutes les installations (chacune porte son clubID d'origine).
Paramètres
clubID `string` (obligatoire) limit `string` (facultatif) types `string` (facultatif) types de transactions séparés par des virgules from `string` (facultatif) to `string` (facultatif) cursor `string` (facultatif) nextCursor d'une page précédentePoint de terminaison
GET /api/clubs/{clubID}/saas-billing/wallet/transactions
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/transactions \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Reçu PDF à l'image de la marque pour une transaction unique du portefeuille (recharges et crédits).
Paramètres
clubID `string` (obligatoire) txId `string` (obligatoire)Point de terminaison
GET /api/clubs/{clubID}/saas-billing/wallet/transactions/{txId}/receipt.pdf
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/transactions/{txId}/receipt.pdf \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lot de reçus PDF à l'image de la marque pour les transactions de recharge du portefeuille sélectionnées, sous forme de ZIP. Chaque ID doit correspondre à une recharge (par carte ou sur facture) du portefeuille de cette installation : les débits d'utilisation et les ajustements n'ont pas de reçu et sont refusés.
Paramètres
clubID `string` (obligatoire) ids `string` (obligatoire) ID de transactions séparés par des virgules (50 au maximum)Point de terminaison
GET /api/clubs/{clubID}/saas-billing/wallet/transactions/receipts.zip
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/transactions/receipts.zip \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Débiter une carte enregistrée pour la facturation SaaS afin d'ajouter du solde prépayé. Renvoie requires_action + clientSecret lorsque 3DS est nécessaire.
Paramètres
clubID `string` (obligatoire) body `object` (facultatif)Point de terminaison
POST /api/clubs/{clubID}/saas-billing/wallet/topup
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/topup \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Finaliser une recharge du portefeuille une fois que l'applet a terminé l'authentification 3DS. Idempotent.
Paramètres
clubID `string` (obligatoire)Point de terminaison
POST /api/clubs/{clubID}/saas-billing/wallet/topup/confirm
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/topup/confirm \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Mettre à jour la règle de recharge automatique de l'installation (enregistrée dans sa ligne de remplacement du profil de facturation).
Paramètres
clubID `string` (obligatoire) body `object` (facultatif)Point de terminaison
PATCH /api/clubs/{clubID}/saas-billing/wallet/auto-topup
Exemple de requête
curl -X PATCH https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/auto-topup \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Factures de recharge du portefeuille de cette installation (mode de paiement sur facture), de la plus récente à la plus ancienne.
Paramètres
clubID `string` (obligatoire)Point de terminaison
GET /api/clubs/{clubID}/saas-billing/wallet/invoices
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/invoices \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Demander une facture de recharge payable par référence (mode de paiement sur facture uniquement). Une seule facture en attente au maximum par portefeuille : une deuxième demande renvoie la facture existante avec alreadyPending=true.
Paramètres
clubID `string` (obligatoire) body `string` (facultatif) { amountCents: number }Point de terminaison
POST /api/clubs/{clubID}/saas-billing/wallet/topup-invoice
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/topup-invoice \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des commandes de l'installation.
Paramètres
facilityID `string` (facultatif)Point de terminaison
GET /api/store/facilities/:facilityID/orders
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/store/facilities/:facilityID/orders \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie la liste des produits disponibles pour l'installation.
Paramètres
clubID `string` (obligatoire) search `string` (facultatif) limit `string` (facultatif) page `string` (facultatif) Le numéro de page pour la pagination (commence à 1).Point de terminaison
GET /api/store/clubs/{clubID}/products
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/store/clubs/{clubID}/products \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lister les enregistrements Stripe de l'installation.
Paramètres
club `string` (obligatoire) fromDate `string` (facultatif) Horodatage Unix toDate `string` (facultatif) Horodatage Unix socketID `string` (obligatoire) Identifiant unique de la requête socketPoint de terminaison
GET /api/club/{club}/stripe/records
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/club/{club}/stripe/records \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Annuler une intention de paiement
Paramètres
club `string` (obligatoire) paymentIntent `string` (facultatif)Point de terminaison
GET /api/club/{club}/stripe/payment-intent/:paymentIntent/cancel
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/club/{club}/stripe/payment-intent/:paymentIntent/cancel \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Créer une Account Session Stripe pour les composants intégrés
Crée une Account Session Stripe pour un compte connecté. Renvoie un client_secret utilisé pour initialiser les composants intégrés Connect (litiges, versements, gestion du compte, documents).
Corps de la requête
Point de terminaison
POST /api/stripe/account-session
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/stripe/account-session \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Génère un lien à usage unique vers la page KYC Stripe pour un compte connecté.
Paramètres
club `string` (obligatoire)Point de terminaison
GET /api/club/{club}/stripe/generate-kyc-token
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/club/{club}/stripe/generate-kyc-token \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtient les détails d'un compte connecté Stripe dans le cadre du processus KYC.
Paramètres
club `string` (obligatoire)Point de terminaison
GET /api/club/{club}/stripe/connect-account-details
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/club/{club}/stripe/connect-account-details \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renvoie tout l'historique des tickets d'après l'ID de l'installation
Paramètres
club `string` (obligatoire) ID interne du club auquel vous souhaitez accéder.Point de terminaison
GET /api/ticketing/clubtickets/{club}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/clubtickets/{club} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtient les services
Point de terminaison
GET /api/ticketing/departments
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/departments \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtient les détails d'un ticket
Paramètres
user `string` (obligatoire) e-mail de l'utilisateur. ticketNumber `string` (obligatoire) ID à 6 chiffres du ticket auquel vous souhaitez accéder. club `string` (obligatoire) l'ID de l'installation sélectionnée.Point de terminaison
GET /api/ticketing/ticket-details/:ticketNumber/:club
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/ticket-details/:ticketNumber/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtient les sujets
Point de terminaison
GET /api/ticketing/topics
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/topics \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtient tous les tickets créés par l'utilisateur actuellement connecté. Remarque : il est déterminé à partir des en-têtes fournis par notre service Google SSO.
Paramètres
user `string` (obligatoire) E-mail de l'utilisateur actuellement connectéPoint de terminaison
GET /api/ticketing/usertickets
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/usertickets \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Crée un nouveau ticket
Paramètres
club `string` (obligatoire) l'ID de l'installation sélectionnée.Point de terminaison
POST /api/ticketing/clubticket/:club
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/ticketing/clubticket/:club \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Crée un nouveau ticket
Paramètres
subject `string` (obligatoire) Objet du ticket. message `string` (obligatoire) Message complet du ticket.Point de terminaison
POST /api/ticketing/userticket
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/ticketing/userticket \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Crée une réponse à un ticket existant
Paramètres
subject `string` (obligatoire) Objet du ticket. message `string` (obligatoire) Message complet du ticket.Point de terminaison
POST /api/ticketing/user-reply
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/ticketing/user-reply \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Récupère les préférences d'un utilisateur
Point de terminaison
GET /api/user-preferences
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/user-preferences \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Met à jour les préférences d'un utilisateur
Paramètres
body `string` (obligatoire)Point de terminaison
PUT /api/user-preferences
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/user-preferences \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Changer le mot de passe de l'utilisateur
Change le mot de passe de l'utilisateur. Exige une vérification par code à usage unique si l'utilisateur a un numéro de téléphone, ou l'ajout d'un numéro de téléphone s'il n'en a pas.
Corps de la requête
Point de terminaison
POST /api/user/change-password
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/user/change-password \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Vérifier l'état de l'authentification à deux facteurs de l'utilisateur
Indique si l'authentification à deux facteurs est activée pour l'utilisateur et si l'un de ses rôles l'impose
Point de terminaison
GET /api/user/check-2fa-status
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/user/check-2fa-status \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lister les organisations, installations et régions auxquelles l'utilisateur a accès pour un module donné.
Paramètres
moduleId `string` (obligatoire)Point de terminaison
POST /api/user/me/modules/{moduleId}/org-access
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/user/me/modules/{moduleId}/org-access \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Crée une « demande d'association » d'un utilisateur final, qui demande à « rejoindre » une installation.
Paramètres
body `string` (obligatoire) Objet JSON du nouveau club à ajouter au système.Point de terminaison
POST /api/user/linkclub
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/user/linkclub \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Liste toutes les installations autorisées pour l'utilisateur.
Point de terminaison
GET /api/user/listauthorised
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/user/listauthorised \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Envoyer un code à usage unique sur deux canaux (e-mail + SMS)
Envoie des codes à usage unique à la fois à l'adresse e-mail de l'utilisateur et à un numéro de téléphone indiqué. Utilisé pour les opérations de haute sécurité, comme la première vérification d'un numéro de téléphone. Ce point de terminaison envoie uniquement les codes et ne modifie aucune donnée de l'utilisateur.
Corps de la requête
Point de terminaison
POST /api/user/send-dual-otp
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/user/send-dual-otp \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Envoyer un code à usage unique par téléphone ou par e-mail
Envoie un code à usage unique au numéro de téléphone (SMS) ou à l'adresse e-mail de l'utilisateur pour vérification
Corps de la requête
Point de terminaison
POST /api/user/send-otp
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/user/send-otp \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Vérifier si l'utilisateur dispose d'un accès valide aux pages sensibles
Indique si l'utilisateur dispose d'une session valide, vérifiée par code à usage unique, pour accéder aux pages sensibles
Point de terminaison
GET /api/user/sensitive-page-access
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/user/sensitive-page-access \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Vérifier le code à usage unique et accorder l'accès aux pages sensibles
Vérifie le code à usage unique et, s'il est valide, accorde un accès d'une heure aux pages sensibles
Corps de la requête
Point de terminaison
POST /api/user/sensitive-page-access/verify
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/user/sensitive-page-access/verify \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Révoquer l'accès aux pages sensibles (déconnexion des pages sensibles)
Révoque la session actuelle d'accès aux pages sensibles de l'utilisateur
Point de terminaison
POST /api/user/sensitive-page-access/revoke
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/user/sensitive-page-access/revoke \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Activer ou désactiver l'authentification à deux facteurs
Active ou désactive l'authentification à deux facteurs pour l'utilisateur. Exige un numéro de téléphone et une vérification par code à usage unique.
Corps de la requête
Point de terminaison
POST /api/user/toggle-2fa
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/user/toggle-2fa \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Mettre à jour son propre profil
Permet à un utilisateur de mettre à jour ses propres informations de profil (prénom, nom, numéro de téléphone). Lors du premier ajout d'un numéro de téléphone, une vérification par code à usage unique sur deux canaux est requise (codes par e-mail et par SMS). Lors du changement d'un numéro existant, seul le code par e-mail est requis.
Corps de la requête
Point de terminaison
PATCH /api/user/update-profile
Exemple de requête
curl -X PATCH https://portal.hub.gymsystems.co/api/user/update-profile \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Récupérer une icône à partir de l'URL.
Point de terminaison
GET /api/website-icon
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/website-icon \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lister les modèles d'entrées du coffre-fort de mots de passe
Paramètres
organisationId `string` (facultatif) Contexte d'organisation pour les contrôles d'accès aux modulesPoint de terminaison
GET /api/vault/templates
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/vault/templates \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lister les entrées visibles du coffre-fort de mots de passe
Paramètres
organisationId `string` (obligatoire) scope `string` (facultatif)Point de terminaison
GET /api/vault/entries
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/vault/entries \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Créer une entrée dans le coffre-fort de mots de passe
Point de terminaison
POST /api/vault/entries
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/vault/entries \
-H "x-api-key: YOUR_API_KEY"
Obtenir une entrée du coffre-fort de mots de passe sans révéler les valeurs secrètes
Paramètres
entryId `string` (obligatoire) organisationId `string` (obligatoire)Point de terminaison
GET /api/vault/entries/{entryId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/vault/entries/{entryId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Mettre à jour une entrée du coffre-fort de mots de passe
Point de terminaison
PUT /api/vault/entries/{entryId}
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/vault/entries/{entryId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Supprimer une entrée du coffre-fort de mots de passe
Point de terminaison
DELETE /api/vault/entries/{entryId}
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/vault/entries/{entryId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Révéler les champs masqués ou secrets sélectionnés
Point de terminaison
POST /api/vault/entries/{entryId}/reveal
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/vault/entries/{entryId}/reveal \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lister les récapitulatifs des dossiers du coffre-fort de mots de passe
Point de terminaison
GET /api/vault/folders
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/vault/folders \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lister les entrées avec codes d'authentification
Point de terminaison
GET /api/vault/authenticator
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/vault/authenticator \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lister les types de nœuds de workflow enregistrés
Point de terminaison
GET /api/workflow-engine/node-types
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/node-types \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtenir la projection des horaires de l'installation utilisée par les blocs de workflow
Paramètres
facilityId `string` (obligatoire)Point de terminaison
GET /api/workflow-engine/facility-hours/{facilityId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/facility-hours/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Prévisualiser l'expéditeur des e-mails de workflow à l'image de l'installation
Paramètres
facilityId `string` (obligatoire)Point de terminaison
GET /api/workflow-engine/email-branding/{facilityId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/email-branding/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lister les ressources de l'installation pour la configuration des déclencheurs
Paramètres
facilityId `string` (obligatoire) resourceType `string` (obligatoire)Point de terminaison
GET /api/workflow-engine/resources/{facilityId}/{resourceType}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/resources/{facilityId}/{resourceType} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lister les workflows d'une installation
Paramètres
facilityId `string` (obligatoire)Point de terminaison
GET /api/workflow-engine/workflows/{facilityId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Créer un brouillon de workflow à partir d'un graphe non vide
L'éditeur garde un nouveau workflow en local jusqu'à ce qu'il contienne au moins un bloc ; le premier enregistrement le crée donc avec son graphe en un seul appel. Un corps sans `nodes` est refusé au lieu d'être enregistré.
Paramètres
facilityId `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/workflow-engine/workflows/{facilityId}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Lister les identifiants que les workflows d'une installation peuvent utiliser
Renvoie les identifiants propres à l'installation ainsi que ceux partagés au niveau de sa marque ou de son organisation. Les secrets ne sont jamais renvoyés ; `hasValue` indique seulement qu'un secret est enregistré.
Paramètres
facilityId `string` (obligatoire)Point de terminaison
GET /api/workflow-engine/credentials/{facilityId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/credentials/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Créer un identifiant de workflow
Le niveau de portée provient de `scopeType` ; les ID de marque et d'organisation sont résolus à partir de l'installation au lieu d'être acceptés de l'appelant.
Paramètres
facilityId `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/workflow-engine/credentials/{facilityId}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/credentials/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Paramètres de workflow à l'échelle de l'installation (destinataires des notifications d'échec)
Paramètres
facilityId `string` (obligatoire)Point de terminaison
GET /api/workflow-engine/facility-settings/{facilityId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/facility-settings/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Enregistrer les destinataires des notifications d'échec à l'échelle de l'installation
Paramètres
facilityId `string` (obligatoire)Corps de la requête
Point de terminaison
PUT /api/workflow-engine/facility-settings/{facilityId}
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/workflow-engine/facility-settings/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Remplacer un identifiant de workflow
Un `secret` vide conserve le secret enregistré, de sorte qu'un identifiant peut être renommé sans le ressaisir. Il est impossible de relire un secret.
Paramètres
facilityId `string` (obligatoire) credentialId `string` (obligatoire)Point de terminaison
PUT /api/workflow-engine/credentials/{facilityId}/{credentialId}
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/workflow-engine/credentials/{facilityId}/{credentialId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Supprimer un identifiant de workflow
Les nœuds qui y font référence échouent de manière sécurisée lors de l'appel suivant, y compris dans les workflows déjà publiés, car un instantané n'enregistre que la référence.
Paramètres
facilityId `string` (obligatoire) credentialId `string` (obligatoire)Point de terminaison
DELETE /api/workflow-engine/credentials/{facilityId}/{credentialId}
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/workflow-engine/credentials/{facilityId}/{credentialId} \
-H "x-api-key: YOUR_API_KEY"
Obtenir l'URL de webhook d'un déclencheur de workflow
Paramètres
facilityId `string` (obligatoire) workflowId `string` (obligatoire) nodeId `string` (obligatoire)Point de terminaison
GET /api/workflow-engine/workflows/{facilityId}/{workflowId}/nodes/{nodeId}/webhook
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/nodes/{nodeId}/webhook \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Renouveler l'URL de webhook d'un déclencheur de workflow
Invalide immédiatement l'URL précédente.
Paramètres
facilityId `string` (obligatoire) workflowId `string` (obligatoire) nodeId `string` (obligatoire)Point de terminaison
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/nodes/{nodeId}/webhook/rotate
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/nodes/{nodeId}/webhook/rotate \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Obtenir un workflow par ID
Paramètres
facilityId `string` (obligatoire) workflowId `string` (obligatoire)Point de terminaison
GET /api/workflow-engine/workflows/{facilityId}/{workflowId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Créer ou mettre à jour un brouillon de workflow
Paramètres
facilityId `string` (obligatoire) workflowId `string` (obligatoire)Corps de la requête
Point de terminaison
PUT /api/workflow-engine/workflows/{facilityId}/{workflowId}
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Mettre à jour le nom et/ou la description d'un workflow
Paramètres
facilityId `string` (obligatoire) workflowId `string` (obligatoire)Corps de la requête
Point de terminaison
PATCH /api/workflow-engine/workflows/{facilityId}/{workflowId}
Exemple de requête
curl -X PATCH https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Supprimer un workflow et ses versions
Paramètres
facilityId `string` (obligatoire) workflowId `string` (obligatoire)Point de terminaison
DELETE /api/workflow-engine/workflows/{facilityId}/{workflowId}
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Dupliquer un workflow dans un nouveau brouillon inactif
Paramètres
facilityId `string` (obligatoire) workflowId `string` (obligatoire)Point de terminaison
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/duplicate
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/duplicate \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Publier le brouillon actuel (instantané de version immuable)
Paramètres
facilityId `string` (obligatoire) workflowId `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/publish
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/publish \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Rétablir le brouillon à la dernière version publiée
Paramètres
facilityId `string` (obligatoire) workflowId `string` (obligatoire)Point de terminaison
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/discard
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/discard \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Activer ou désactiver un workflow
Paramètres
facilityId `string` (obligatoire) workflowId `string` (obligatoire)Corps de la requête
Point de terminaison
PATCH /api/workflow-engine/workflows/{facilityId}/{workflowId}/active
Exemple de requête
curl -X PATCH https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/active \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Générer ou réviser un graphe de workflow avec l'IA
Paramètres
facilityId `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/workflow-engine/generate/{facilityId}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/generate/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Lister les modèles sur lesquels un nœud Agent peut s'exécuter pour cette installation
Paramètres
facilityId `string` (obligatoire)Point de terminaison
GET /api/workflow-engine/agent-models/{facilityId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/agent-models/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lister les outils MCP qu'un nœud Agent peut associer pour cette installation
Paramètres
facilityId `string` (obligatoire)Point de terminaison
GET /api/workflow-engine/agent-tools/{facilityId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/agent-tools/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Rechercher les conversations Agent enregistrées de cette installation (liaisons par Conversation key)
Paramètres
facilityId `string` (obligatoire) deviceId `string` (facultatif) Limiter aux conversations d'un seul appareil Agent (le deviceId configuré du nœud) q `string` (facultatif) Correspondance de sous-chaîne insensible à la casse sur la Conversation key, l'ID de session ou le nom de l'appareil limit `integer` (facultatif) offset `integer` (facultatif)Point de terminaison
GET /api/workflow-engine/agent-conversations/{facilityId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/agent-conversations/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Rechercher les conversations conservées sur l'appareil Agent de l'installation lui-même
Liste les sessions propres à l'appareil (les conversations de la barre latérale de l'interface Agent) afin qu'un workflow puisse poursuivre une conversation existante avec son contexte. L'appareil détient l'historique ; lorsque l'installation compte plusieurs appareils, `deviceId` choisit lequel (l'appareil configuré du nœud). Appareil injoignable → 502.
Paramètres
facilityId `string` (obligatoire) deviceId `string` (facultatif) L'appareil Agent configuré du nœud ; omettez-le pour résoudre l'appareil unique de l'installation q `string` (facultatif) Correspondance de sous-chaîne insensible à la casse sur le titre ou l'ID de la session limit `integer` (facultatif) offset `integer` (facultatif)Point de terminaison
GET /api/workflow-engine/agent-device-sessions/{facilityId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/agent-device-sessions/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Rechercher les tableaux du kanban de l'appareil Agent de l'installation
Alimente le sélecteur Board ID du bloc Agent: Kanban. Correspondance de sous-chaîne insensible à la casse sur le nom ou le slug du tableau ; `current` est le slug du tableau actif de l'appareil, pour que le sélecteur de tâches puisse en faire sa portée par défaut. Lorsque l'installation compte plusieurs appareils, `deviceId` choisit lequel. Appareil injoignable → 502.
Paramètres
facilityId `string` (obligatoire) deviceId `string` (facultatif) L'appareil Agent configuré du nœud ; omettez-le pour résoudre l'appareil unique de l'installation q `string` (facultatif) Correspondance de sous-chaîne insensible à la casse sur le nom ou le slug du tableau limit `integer` (facultatif) offset `integer` (facultatif)Point de terminaison
GET /api/workflow-engine/kanban-boards/{facilityId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/kanban-boards/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Rechercher les tâches d'un tableau du kanban de l'appareil Agent de l'installation
Alimente le sélecteur Task ID du bloc Agent: Kanban. Correspondance de sous-chaîne insensible à la casse sur l'ID, le titre ou le corps de la tâche ; les tâches sont propres à chaque tableau (l'appareil ne permet pas de recherche entre tableaux), donc `board` limite la récupération : omettez-le pour le tableau actif de l'appareil. Appareil injoignable → 502.
Paramètres
facilityId `string` (obligatoire) deviceId `string` (facultatif) L'appareil Agent configuré du nœud ; omettez-le pour résoudre l'appareil unique de l'installation board `string` (facultatif) Le slug du tableau à lister ; omettez-le pour le tableau actif de l'appareil q `string` (facultatif) Correspondance de sous-chaîne insensible à la casse sur l'ID, le titre ou le corps de la tâche limit `integer` (facultatif) offset `integer` (facultatif)Point de terminaison
GET /api/workflow-engine/kanban-tasks/{facilityId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/kanban-tasks/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lister les modèles de workflow sélectionnés, filtrés pour cette installation
Paramètres
facilityId `string` (obligatoire)Point de terminaison
GET /api/workflow-engine/templates/{facilityId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/templates/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Instancier un modèle en fragment de graphe pour le brouillon ouvert
Paramètres
facilityId `string` (obligatoire) templateId `string` (obligatoire)Point de terminaison
POST /api/workflow-engine/templates/{facilityId}/{templateId}
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/templates/{facilityId}/{templateId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Contexte du sélecteur de portée pour la page d'administration des modèles (niveaux d'administration)
Point de terminaison
GET /api/workflow-engine/template-admin/context
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/template-admin/context \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lister les modèles que l'appelant peut administrer, avec les indicateurs d'autorisation
Point de terminaison
GET /api/workflow-engine/template-admin
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/template-admin \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Créer un modèle (niveaux d'administration)
Corps de la requête
Point de terminaison
POST /api/workflow-engine/template-admin
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/template-admin \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Détail d'un modèle, graphe compris, pour l'éditeur d'administration
Point de terminaison
GET /api/workflow-engine/template-admin/{templateId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/template-admin/{templateId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Remplacer un modèle (organisation propriétaire)
Point de terminaison
PUT /api/workflow-engine/template-admin/{templateId}
Exemple de requête
curl -X PUT https://portal.hub.gymsystems.co/api/workflow-engine/template-admin/{templateId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Supprimer de manière logique un modèle (organisation propriétaire)
Point de terminaison
DELETE /api/workflow-engine/template-admin/{templateId}
Exemple de requête
curl -X DELETE https://portal.hub.gymsystems.co/api/workflow-engine/template-admin/{templateId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Dupliquer un modèle visible dans une portée cible que l'appelant peut utiliser
Corps de la requête
Point de terminaison
POST /api/workflow-engine/template-admin/{templateId}/duplicate
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/template-admin/{templateId}/duplicate \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Exécuter le graphe publié d'un workflow à partir d'un déclencheur manuel
Paramètres
facilityId `string` (obligatoire) workflowId `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/run
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/run \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Tester le brouillon enregistré sans le publier
Exécute le graphe du brouillon actuel et enregistre le résultat avec `mode: test` et sans `versionId`. La publication, l'indicateur d'activation et `publishedVersionId` ne sont jamais modifiés. Les effets de bord sont simulés par défaut ; `sideEffects: live` exige en plus `confirmLiveSideEffects: true`.
Paramètres
facilityId `string` (obligatoire) workflowId `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/test
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/test \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Tester un nœud de workflow autorisé
Exécute un nœud du brouillon enregistré testable indépendamment. Les valeurs des variables peuvent être fournies à partir d'étapes d'exécution enregistrées. Les méthodes HTTP qui modifient des données exigent une confirmation explicite.
Paramètres
facilityId `string` (obligatoire) workflowId `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/test-node
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/test-node \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Lister les exécutions récentes d'un workflow
Paramètres
facilityId `string` (obligatoire) workflowId `string` (obligatoire)Point de terminaison
GET /api/workflow-engine/workflows/{facilityId}/{workflowId}/runs
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/runs \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Lire une exécution (statut + étapes ordonnées)
Paramètres
facilityId `string` (obligatoire) workflowId `string` (obligatoire) executionId `string` (obligatoire)Point de terminaison
GET /api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Annuler le Delay en attente sur lequel une exécution est bloquée
Paramètres
facilityId `string` (obligatoire) workflowId `string` (obligatoire) executionId `string` (obligatoire)Point de terminaison
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId}/cancel
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId}/cancel \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Rejouer une exécution terminée à partir de la charge utile enregistrée de son déclencheur
`mode: published` réexécute exactement la version sur laquelle l'exécution d'origine était épinglée, avec de vrais effets de bord. `mode: draft-test` réexécute le brouillon actuel sous forme de test simulé. Une exécution dont la charge utile du déclencheur a été tronquée à l'écriture ne peut pas être rejouée.
Paramètres
facilityId `string` (obligatoire) workflowId `string` (obligatoire) executionId `string` (obligatoire)Corps de la requête
Point de terminaison
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId}/retry
Exemple de requête
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId}/retry \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Réponse
{}
Recherche indexée des workflows contenant un type de nœud
Paramètres
nodeType `string` (obligatoire) facilityId `string` (facultatif) organisationId `string` (facultatif)Point de terminaison
GET /api/workflow-engine/master-view/{nodeType}
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/master-view/{nodeType} \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Proxy de redirection OAuth en marque blanche (Connected Apps)
Redirection 302 publique non authentifiée qui transmet le rappel d'un fournisseur OAuth au rappel d'authentification de la plateforme d'outils en amont, en conservant la chaîne de requête. Permet aux applications OAuth détenues par PH d'enregistrer un URI de redirection performancehub.co, afin que le domaine du fournisseur en amont n'apparaisse jamais dans la barre d'adresse (nécessaire pour le futur projet d'applications OAuth personnalisées ; sans effet avec l'authentification gérée).
Point de terminaison
GET /guest/connected-apps/oauth-callback
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/guest/connected-apps/oauth-callback \
-H "x-api-key: YOUR_API_KEY"
Page de fin de la chaîne de connexion (Connected Apps)
Page d'arrivée légère « vous pouvez fermer cette fenêtre » pour l'onglet OAuth dans lequel une chaîne de connexion s'est exécutée. Renvoie le résultat (suite ou toolkit connecté et nouveaux ID de compte, ou toolkit en échec) à l'onglet de la marketplace via window.opener.postMessage de même origine ; si le lien avec l'onglet d'origine a été rompu, se rabat sur un lien profond vers l'applet ph-ai-agent qui reproduit la page d'arrivée de l'application. Purement informatif : ne contient aucun secret et n'effectue aucune écriture.
Paramètres
connected `string` (facultatif) ID de la suite ou slug du toolkit dont la connexion est terminée (cas de réussite). accounts `string` (facultatif) ID des comptes connectés créés par la chaîne, séparés par des virgules. connectError `string` (facultatif) Slug du toolkit dont l'étape a échoué (cas d'échec).Point de terminaison
GET /guest/connected-apps/finish
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/guest/connected-apps/finish \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}
Rappel d'enchaînement de la connexion d'une suite (Connected Apps)
Étape de rappel OAuth du flux de connexion d'une suite en un clic. Le JWT d'état signé (HS256, TTL de 30 min) encode { clubID, deviceId, suite, toolkits, step, caids } : les comptes se connectent à cet appareil agent unique, et caids accumule les ID de compte créés à chaque étape (la redirection finale vers l'applet les transporte pour que la marketplace puisse proposer d'étiqueter les nouveaux comptes). Marque le toolkit de l'étape comme connecté, puis redirige (302) vers le Connect Link du toolkit suivant, ou vers la page de l'applet ph-ai-agent (lien profond vers l'agent) lorsque la suite est terminée. Les connexions d'un seul toolkit passent par le même gestionnaire avec une suite d'un seul toolkit.
Paramètres
state `string` (obligatoire) JWT d'état signé de la chaîne de connexion.Point de terminaison
GET /guest/connected-apps/connect-next
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/guest/connected-apps/connect-next \
-H "x-api-key: YOUR_API_KEY"
Déclencher l'e-mail de configuration du mot de passe
Valide le lien signé d'un e-mail de bienvenue, déclenche un e-mail de réinitialisation du mot de passe et affiche une page de confirmation. Aucune authentification requise.
Paramètres
email `string` (obligatoire) Adresse e-mail de l'utilisateur sig `string` (obligatoire) Signature HMAC de l'e-mailPoint de terminaison
GET /guest/setup-password
Exemple de requête
curl -X GET https://portal.hub.gymsystems.co/guest/setup-password \
-H "x-api-key: YOUR_API_KEY"
Réponse
{}