Einführung
Willkommen bei der Performance Hub API. Diese API verwaltet Club-Daten und zentrale Systeme, die mit Ihrem Club und dessen externen Systemen integriert sind, und ist keine öffentlich nutzbare API. Weitere Informationen zur Nutzung der verschiedenen Performance Hub-Systeme, die diese API unterstützt, finden Sie im jeweiligen Eintrag für das gewünschte System in unserer [Performance Hub-Dokumentation](https://docs.performancehub.co).
Basis-URL
https://portal.hub.gymsystems.co
Authentifizierung
Die Authentifizierungsdaten erhalten Sie, sobald Ihre Integration genehmigt wurde.
Vom Gerät gemeldetes Ereignis „Agent-Durchlauf abgeschlossen“ (Web-Push-Auslöser)
Wird vom Sidecar eines gekoppelten KI-Agent-Geräts aufgerufen (nie von Browsern), wenn ein über die Web-Oberfläche gestarteter Agent-Lauf endet und länger als der Benachrichtigungsschwellenwert des Geräts gedauert hat. Die Authentifizierung erfolgt mit einem kurzlebigen gerätespezifischen HS256-JWT (aud 'events'). Ereignisse werden pro Gerät+Sitzung+Start dedupliziert und pro Gerät ratenbegrenzt und dann mit einem Deep Link zur Unterhaltung an die HTML5-Push-Abonnements des auslösenden Benutzers zugestellt.
Anfragetext
Endpunkt
POST /ai/events/agent-turn-complete
Beispielanfrage
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 '{}'
Antwort
{}
Vom Agent ausgelöste Push-Benachrichtigung (Skill ph-notify)
Wird vom Sidecar eines gekoppelten KI-Agent-Geräts im Auftrag des Agents auf dem Gerät (Skill ph-notify) aufgerufen, um eine beliebige Benachrichtigung an den Browser und die Mobilgeräte eines Benutzers zu senden. Die Authentifizierung erfolgt mit einem kurzlebigen gerätespezifischen HS256-JWT (aud 'events'). Der Zielbenutzer muss Zugriff auf das Gerät haben (Zugriffsrichtlinie pro Agent); fehlt die Angabe, geht die Benachrichtigung an den Geräteinhaber. Ratenbegrenzt pro Gerät, getrennt von Turn-Complete-Ereignissen.
Anfragetext
Endpunkt
POST /ai/events/agent-notify
Beispielanfrage
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 '{}'
Antwort
{}
Benachrichtigungsbild hochladen (Skill ph-notify)
Nimmt einen unverarbeiteten Bildinhalt von einem gekoppelten Gerät entgegen (JWT mit aud 'events') und speichert ihn im öffentlichen Bucket notify-media unter einem nicht erratbaren UUID-Schlüssel. Objekte werden nach 7 Tagen automatisch gelöscht (S3-Lebenszyklus). Gibt die öffentliche https-URL zur Verwendung als `imageUrl` in /ai/events/agent-notify zurück. Maximal 5 MB; nur png/jpeg/gif/webp.
Anfragetext
Endpunkt
POST /ai/media/notify-image
Beispielanfrage
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 '{}'
Antwort
{}
Geräte-MCP-Relay für Connected Apps (externe SaaS-Tools)
Streamable-HTTP-MCP-Endpunkt für gekoppelte KI-Agent-Geräte (MCP-Server "connected_apps" am Listener :8790 des Geräte-Sidecars). Authentifiziert mit einem kurzlebigen HS256-JWT pro Gerät (aud 'mcp', dieselben Anmeldedaten wie für /mcp) und abhängig vom Flag für aktivierte Connected Apps des AGENTEN (Verbindungen gelten pro Agent-Gerät, nicht pro Einrichtung). Anfragen werden an den eigenen MCP-Server der vorgelagerten Tool-Plattform-Sitzung des Agenten durchgereicht, wobei die Sitzungs-Header serverseitig eingefügt werden; vorgelagerte Anmeldedaten erreichen das Gerät nie. Toolnamen und Anbieter-Branding werden bei der Übertragung in beide Richtungen per White-Label ersetzt. Ein vorgelagerter 401/410-Fehler (abgelaufene Sitzung) löst eine Neuerstellung der Sitzung und einen erneuten Versuch aus.
Endpunkt
POST /mcp/apps
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/mcp/apps \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
API-Audit-Protokolle durchsuchen (Zugriff über das Modul IAM & Admin)
Durchsuchen und filtern Sie API-Zugriffsprotokolle mit erweiterten Filteroptionen. Benutzer sehen nur Protokolle für Organisationen, auf die sie Zugriff haben.
Parameter
organisationId `string` (optional) Organisations-ID für die ACL-Prüfung (erforderlich)Anfragetext
Endpunkt
POST /api/admin/audit-logs/search
Beispielanfrage
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 '{}'
Antwort
{}
Zwischengespeicherte Statistiken der Audit-Protokolle aus Redis abrufen (Zugriff über das Modul IAM & Admin)
Aggregierte Statistiken aus dem Redis-Cache abrufen, damit das Dashboard sofort lädt
Parameter
timeWindow `string` (optional) Zeitfenster für die Statistiken (Standard: 12h)Endpunkt
GET /api/admin/audit-logs/statistics-cached
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/admin/audit-logs/statistics-cached \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Statistiken der Audit-Protokolle abrufen (Zugriff über das Modul IAM & Admin)
Aggregierte Statistiken für das Dashboard abrufen. Beschränkt auf die Organisationen des Benutzers.
Parameter
startTime `number` (optional) Startzeit (Unix-Zeitstempel), Standard: vor 24 Stunden endTime `number` (optional) Endzeit (Unix-Zeitstempel), Standard: jetztEndpunkt
GET /api/admin/audit-logs/statistics
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/admin/audit-logs/statistics \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Zeitreihendaten für Audit-Protokolle abrufen (Zugriff über das Modul IAM & Admin)
In Zeitblöcke gruppierte Zeitreihendaten für die Darstellung der Anfrage-Zeitachse abrufen
Parameter
timeWindow `string` (optional) Zeitfenster für die Zeitreihendaten: - 1h: letzte Stunde (10-Minuten-Blöcke) - 12h: letzte 12 Stunden (10-Minuten-Blöcke) - 24h: letzte 24 Stunden (10-Minuten-Blöcke) - 7d: letzte 7 Tage (1-Stunden-Blöcke) - 14d: letzte 14 Tage (1-Stunden-Blöcke)Endpunkt
GET /api/admin/audit-logs/timeseries
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/admin/audit-logs/timeseries \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Organisationen abrufen, für die der Benutzer Zugriff auf Audit-Protokolle hat (Zugriff über das Modul IAM & Admin)
Gibt die Liste der Organisationen zurück, deren Audit-Protokolle der aktuelle Benutzer einsehen kann
Endpunkt
GET /api/admin/audit-logs/user-organisations
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/admin/audit-logs/user-organisations \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Der erste Aufruf zum Anlegen eines neuen Clubs. Hinweis: Es wird nur das Club-Objekt als „Vorlage“ erstellt. Anschließend ist eine zweite API-Anfrage erforderlich, um den Club mit seinen Daten wie Öffnungszeiten, Standort, Social-Media-URLs usw. zu aktualisieren.
Parameter
body `string` (erforderlich) JSON-Objekt des neuen Clubs, der dem System hinzugefügt werden soll.Endpunkt
POST /api/admin/clubs/addclub
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/admin/clubs/addclub \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Fügt dem System einen neuen Benutzer hinzu
Parameter
body `string` (erforderlich) JSON-Objekt der Benutzerdaten, die Sie hinzufügen/aktualisieren möchten.Endpunkt
POST /api/users
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/users \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Listet alle Benutzer (Google Apps-Konten) auf, die Zugriff auf das Backoffice-System bzw. die API haben
Endpunkt
GET /api/admin/users/listusers
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/admin/users/listusers \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
MCP-Schlüssel eines Benutzers auflisten (geschwärzt). Benutzer können ihre eigenen Schlüssel auflisten.
Parameter
userId `string` (erforderlich)Endpunkt
GET /api/users/{userId}/mcp-keys
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/users/{userId}/mcp-keys \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Neuen MCP-API-Schlüssel für einen Benutzer erstellen. Benutzer können ihre eigenen Schlüssel erstellen.
Parameter
userId `string` (erforderlich) body `object` (optional)Endpunkt
POST /api/users/{userId}/mcp-keys
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/users/{userId}/mcp-keys \
-H "x-api-key: YOUR_API_KEY"
MCP-API-Schlüssel widerrufen/entfernen. Benutzer können ihre eigenen Schlüssel löschen.
Parameter
userId `string` (erforderlich) keyId `string` (erforderlich)Endpunkt
DELETE /api/users/{userId}/mcp-keys/{keyId}
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/users/{userId}/mcp-keys/{keyId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Rolle von einem Benutzer entfernen
Parameter
userId `string` (optional) Die E-Mail-Adresse des Benutzers, von dem Sie die Rolle entfernen möchten. roleId `string` (optional) Die ID der Rolle, die Sie vom Benutzer entfernen möchten.Endpunkt
DELETE /api/users/{userId}/roles/{roleId}
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/users/{userId}/roles/{roleId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Aktualisiert die Profildaten eines bestehenden Benutzers (firstName, lastName, phoneNumber)
Parameter
userId `string` (erforderlich) E-Mail-Adresse des Benutzers body `object` (erforderlich) Zu aktualisierende BenutzerprofildatenEndpunkt
PATCH /api/users/{userId}
Beispielanfrage
curl -X PATCH https://portal.hub.gymsystems.co/api/users/{userId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Benutzerrolle anlegen oder aktualisieren
Parameter
body `object` (optional)Endpunkt
PUT /api/users/{userId}/roles
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/users/{userId}/roles \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Live Services, die auf dem KI-Agent einer Einrichtung laufen (Veröffentlichungsauswahl)
Ruft über den Tunnel die von der Bridge des Geräts erkannten Live Services für die Auswahl „Publish to Performance Hub“ des Applets ab. Erfordert das Modul ph-ai-agent UND den gerätespezifischen Zugriff 'open' (dieselbe Hürde wie für das Veröffentlichen selbst). Jeder Dienst wird mit publishedAppId versehen, wenn für seinen Port bereits eine Custom App existiert.
Parameter
club `string` (erforderlich) device `string` (erforderlich)Endpunkt
GET /api/agent-apps/services/{club}/{device}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/services/{club}/{device} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Im KI-Agent einer Einrichtung integrierter Index der MDI-Symbolnamen (Symbolauswahl)
Leitet den integrierten MDI-Symbolindex der Geräte-Bridge (GET /__services/icons/mdi/index.json) über den Tunnel weiter. Die Auswahl zum Veröffentlichen/Bearbeiten verwendet den im Applet gebündelten Katalog (dieselbe fixierte Version 7.4.47); SVGs veröffentlichter Apps werden aus dem lokalen @mdi/js-Paket von portal-server aufgelöst. Dieselbe Zugriffshürde wie bei der Dienstauswahl (Modul ph-ai-agent + gerätespezifischer Zugriff 'open').
Parameter
club `string` (erforderlich) device `string` (erforderlich)Endpunkt
GET /api/agent-apps/mdi-index/{club}/{device}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/mdi-index/{club}/{device} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Mehrere MDI-Symbol-SVGs vom KI-Agent einer Einrichtung abrufen (Vorschauen in der Auswahl)
Löst in einem Aufruf bis zu 60 benannte MDI-Glyphen aus dem integrierten Symbolsatz des Geräts auf und bereinigt sie serverseitig mit derselben Allowlist, die für gespeicherte App-Symbole gilt. Wird von der Symbolauswahl zur Anzeige von Suchergebnissen verwendet; für unbekannte Namen wird null zurückgegeben.
Parameter
club `string` (erforderlich) device `string` (erforderlich)Anfragetext
Endpunkt
POST /api/agent-apps/mdi-icons/{club}/{device}
Beispielanfrage
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 '{}'
Antwort
{}
Zielgruppenbereiche, für die der Anfragende aus dieser Einrichtung veröffentlichen darf
Der Rahmen der Zielgruppen, die der Veröffentlichende in der Auswahl zum Veröffentlichen/Bearbeiten vergeben darf: die Einrichtungen, die seine ph-ai-agent-Rollen erreichen (Bereich über mehrere Einrichtungen), sowie die Angabe, ob er die Berechtigung auf Organisationsebene besitzt, die für Zielgruppen der gesamten Marke bzw. Organisation dieser Einrichtung erforderlich ist. Dieselben Regeln werden beim Veröffentlichen/Aktualisieren serverseitig erneut durchgesetzt (validatePublishAudience) – dieser Endpunkt dient nur der Gestaltung der Oberfläche.
Parameter
club `string` (erforderlich)Endpunkt
GET /api/agent-apps/audience-options/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/audience-options/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Autovervollständigung von Kollegen für eine App-Zielgruppe mit benannten Benutzern
Durchsucht NUR die Benutzer, die der Anfragende bereits sehen kann – Personen, deren Rollen sich mit mindestens einer Einrichtung/Region/Organisation des eigenen ph-ai-agent-Zugriffs des Anfragenden überschneiden. Eine Mindestlänge der Suche von 2 Zeichen und eine Obergrenze von 10 Ergebnissen machen den Endpunkt für Scraping unbrauchbar; dieselbe Erreichbarkeitsmenge wird beim Speichern der Zielgruppe serverseitig erneut durchgesetzt.
Parameter
club `string` (erforderlich) q `string` (erforderlich)Endpunkt
GET /api/agent-apps/user-search/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/user-search/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Live Service eines KI-Agents als Performance Hub Custom App veröffentlichen
Registriert eine vom KI-Agent der Einrichtung gehostete Web-App (einen von der Bridge erkannten Live Service) als Eintrag „Custom Apps“ im Seitenmenü für die gewählte Zielgruppe. Erfordert das Modul ph-ai-agent in dieser Einrichtung UND den gerätespezifischen Zugriff 'open'; die Zielgruppe ist auf die eigenen Rollenbereiche des Veröffentlichenden begrenzt (Sie können nie weiter veröffentlichen, als Sie selbst erreichen). Die Identität des Dienstes wird LIVE aus der /__services-Liste des Geräts aufgelöst; das Schema http/https wird nie gespeichert.
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/agent-apps/publish/{club}
Beispielanfrage
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 '{}'
Antwort
{}
In dieser Einrichtung sichtbare veröffentlichte Custom Apps
Gibt die aktiven veröffentlichten Apps, deren Zielgruppe diese Einrichtung umfasst, in der Form zurück, in der das Seitenmenü sie darstellt (appId, name, icon, description). Die Zielgruppe wird bei jedem Aufruf live neu aufgelöst, sodass Zugriffsänderungen sofort wirksam werden.
Parameter
club `string` (erforderlich)Endpunkt
GET /api/agent-apps/menu/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/menu/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Von dieser Einrichtung aus verwaltete veröffentlichte Apps (Ansicht des Veröffentlichenden)
Vollständige App-Zeilen für Apps, deren HEIMAT-Einrichtung dieser Club ist, für die Verwaltungsliste „Published Apps“ des Applets. Jede Zeile wird für den anfragenden Benutzer (Veröffentlichenden) mit canManage versehen.
Parameter
club `string` (erforderlich)Endpunkt
GET /api/agent-apps/manage/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/manage/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Auf einen Dienst beschränktes Betrachter-Token für eine veröffentlichte Custom App ausstellen
Gibt eine kurzlebige signierte URL + ein Token zurück, mit denen der Browser EINE veröffentlichte App direkt auf dem regionalen Relay-Gateway des Geräts öffnet. Das Token enthält einen svc-Claim mit dem Port des Dienstes, sodass das Gateway die Sitzung auf /__services/proxy/
Parameter
club `string` (erforderlich) appId `string` (erforderlich)Endpunkt
POST /api/agent-apps/access/{club}/{appId}
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/agent-apps/access/{club}/{appId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Support-Zuständigkeit für eine veröffentlichte Custom App (Kontakt des Inhabers)
Wer diese von einem Benutzer veröffentlichte App betreut: die E-Mail-Adresse des Veröffentlichenden (ersatzweise der Inhaber des hostenden Agents). Wird in den Offline-/Fehlerbereichen des Betrachters angezeigt, damit Supportanfragen an den Inhaber der App statt an Performance Hub gehen – veröffentlichte Apps sind nicht Teil des PH-Kernsupports. Zuerst wird die Zielgruppe der App erneut geprüft; Betrachter, mit denen die App nie geteilt wurde, erfahren nichts. Pausierte Apps werden weiterhin aufgelöst (Inhaber beantworten auch Fragen wie „Warum ist das pausiert?“).
Parameter
club `string` (erforderlich) appId `string` (erforderlich)Endpunkt
GET /api/agent-apps/support-info/{club}/{appId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/support-info/{club}/{appId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Supportanfrage per E-Mail an den Inhaber einer veröffentlichten Custom App senden
Sendet die Nachricht des Betrachters als gebrandete E-Mail an den Supportkontakt der App (Veröffentlichender, ersatzweise der Agent-Inhaber) – An den Inhaber, CC an den Betrachter (als dessen Nachweis der Anfrage), Reply-To an den Betrachter, damit der Inhaber direkt ihm antwortet. Veröffentlichte Apps werden von Benutzern gepflegt, daher bleibt ihr Support so aus der Warteschlange von Performance Hub heraus. Die Zielgruppe wird erneut geprüft; eine Anfrage pro Betrachter und App alle 15 Minuten (Redis-Cooldown, fail-open).
Parameter
club `string` (erforderlich) appId `string` (erforderlich)Anfragetext
Endpunkt
POST /api/agent-apps/support-request/{club}/{appId}
Beispielanfrage
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 '{}'
Antwort
{}
Veröffentlichte Custom App aktualisieren (Name, Symbol, Beschreibung, Status, Zielgruppe)
Nur für den Veröffentlichenden. Änderungen der Zielgruppe werden mit denselben Begrenzungsregeln wie beim Veröffentlichen erneut anhand der Rollenbereiche des BEARBEITENDEN geprüft. Der Status wechselt zwischen aktiv und pausiert (pausierte Apps verschwinden aus den Menüs und lehnen die Token-Ausstellung ab).
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/agent-apps/update/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Veröffentlichung einer Custom App aufheben (vorläufiges Löschen)
Nur für den Veröffentlichenden. Löscht die Registry-Zeile vorläufig – die App verschwindet sofort aus den Menüs und die Ausstellung von Betrachter-Token wird abgelehnt; bereits ausgestellte Gateway-Sitzungen enden mit Ablauf des Tokens.
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/agent-apps/unpublish/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Inhaberschaft einer veröffentlichten Custom App übertragen
Entspricht dem Ablauf zum Neuzuweisen des Inhabers beim KI-Agent: Der aktuelle Veröffentlichende oder ein Kontoinhaber (Abrechnungsmodul) kann die App an einen anderen Benutzer übergeben, der sie dann verwaltet. Der neue Inhaber muss Zugriff auf die Einrichtung des Heimat-Clubs der App haben.
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/agent-apps/transfer-owner/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Vollständiger Prüfbericht (+ LLM-Prüfung) für eine Skill-Version
Die vollständige Liste der Befunde für eine Version – nur für den Veröffentlichenden und Organisationsadministratoren (Genehmigungsprüfungen); Installierende sehen stattdessen die zusammengefassten Zahlen in den Skill-Details.
Parameter
club `string` (erforderlich) skillId `string` (erforderlich) version `string` (erforderlich)Endpunkt
GET /api/agent-skills/scan-report/{club}/{skillId}/{version}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/scan-report/{club}/{skillId}/{version} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Entwurfsversion eines Skills einreichen (veröffentlichen oder zur Genehmigung einreihen)
Bringt eine Entwurfsversion gemäß den Governance-Regeln der Organisation voran. Hat sich die Organisation für die LLM-Prüfung entschieden, läuft zuerst die Prüfung der Anweisungen (nach bestem Bemühen; das Urteil 'fail' lehnt ab, das Urteil 'flag' erzwingt die Genehmigungswarteschlange). Freigaben auf Einrichtungsebene werden sofort veröffentlicht, sofern die Governance keine Genehmigung verlangt; Freigaben in der Organisationsbibliothek (Zielgruppe Marke/Organisation) erfordern standardmäßig eine Genehmigung. Die Veröffentlichung setzt die latestVersion des Skills – Installationen mit der Richtlinie 'auto' übernehmen sie beim nächsten Abgleichlauf.
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/agent-skills/submit/{club}
Beispielanfrage
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 '{}'
Antwort
{}
In dieser Einrichtung sichtbare Skill-Bibliothek (nach Zielgruppe gefiltert)
Aktive Skills mit mindestens einer veröffentlichten Version, deren Zielgruppe diese Einrichtung umfasst (oder den Betrachter nennt), ergänzt um die Zusammenfassung der neuesten veröffentlichten Version und die Verbreitung in der Organisation (Anzahl unterschiedlicher Einrichtungen, nie reine Installationszahlen). Die Zielgruppe wird bei jedem Aufruf live neu aufgelöst.
Parameter
club `string` (erforderlich)Endpunkt
GET /api/agent-skills/library/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/library/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Skill-Details (Versionen, Anforderungen, Prüfzusammenfassung, Verbreitung)
Vollständige Details zu einem Bibliotheks-Skill: Versionsverlauf mit Changelogs und Prüfzusammenfassungen (die Endpunktlisten pro Version speisen den Prüfvergleich bei Updates), deklarierte Anforderungen aus dem Manifest, Herkunft des Veröffentlichenden und die Verbreitung als Anzahl der Einrichtungen. Die Zielgruppe wird erneut geprüft – Betrachter, mit denen ein Skill nie geteilt wurde, erfahren nichts (der Veröffentlichende und Organisationsadministratoren sehen ihn immer).
Parameter
club `string` (erforderlich) skillId `string` (erforderlich)Endpunkt
GET /api/agent-skills/skill/{club}/{skillId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/skill/{club}/{skillId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Von dieser Einrichtung veröffentlichte Skills (Verwaltungsliste des Veröffentlichenden)
Vollständige Skill-Zeilen, deren HEIMAT-Einrichtung dieser Club ist, jeweils ergänzt um canManage für den anfragenden Benutzer und die Zusammenfassung der neuesten Version (einschließlich Entwürfen und ausstehender Genehmigungen – dies ist die Arbeitsansicht des Veröffentlichenden).
Parameter
club `string` (erforderlich)Endpunkt
GET /api/agent-skills/manage/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/manage/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Bibliotheks-Skill auf dem KI-Agent einer Einrichtung installieren
Durch Governance geschützt: Die installSources der Organisation müssen es zulassen, die Zielgruppe des Skills muss diese Einrichtung umfassen (oder den Anfragenden nennen), die Version muss veröffentlicht sein und der Anfragende muss die whoCanInstall-Stufe für das Zielgerät erfüllen (Inhaber / zugelassener Benutzer / Einrichtungsadministrator / Organisationsadministrator – siehe Governance). Schreibt die Zeile zum Installationslebenszyklus (die maßgebliche Quelle) und sendet sofort einen Push nach bestem Bemühen; der Abgleich-Cron garantiert die Zustellung, sobald das Gerät erreichbar ist.
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/agent-skills/install/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Ausstehendes Skill-Update für eine Installation genehmigen
Setzt die desiredVersion der Installation auf die neueste veröffentlichte Version (der manuelle Schritt der Richtlinien 'notify' und 'pinned' sowie der Weg, wenn die Governance updatePosture auf 'approvalRequired' setzt). Behält die aktuelle Version als Ziel für ein Rollback um einen Schritt und hebt eine nach einem Rollback gesetzte Update-Sperre (skipVersion) auf. Dieselbe whoCanInstall-Berechtigungsstufe wie bei der Installation.
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/agent-skills/update-approve/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Installierten Skill auf die vorherige Version zurücksetzen
Setzt desiredVersion auf die previousVersion der Installationszeile (wird bei jedem Versionswechsel gespeichert) und lässt sie über den normalen Zustellweg neu installieren. Nur ein Schritt: Die Versionen werden getauscht, ein zweifaches Rollback führt also zum Ausgangspunkt zurück. Sperrt außerdem Updates (skipVersion = die Version, von der zurückgesetzt wurde), damit die Richtlinien auto/notify das Rollback bestehen lassen – die Sperre wird aufgehoben, wenn eine echt neuere Version veröffentlicht wird, bei update-approve oder bei set-policy.
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/agent-skills/rollback/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Skill vom KI-Agent einer Einrichtung deinstallieren
Markiert die Installationszeile als pending-uninstall und überträgt den gewünschten Zustand; die Zeile wird gelöscht, sobald das Gerät die Entfernung bestätigt (Rücklesen beim Abgleich). Dieselbe whoCanInstall-Berechtigungsstufe wie bei der Installation.
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/agent-skills/uninstall/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Update-Richtlinie pro Installation für einen Skill auf einem Gerät festlegen
auto (der Abgleich übernimmt neue veröffentlichte Versionen automatisch, sofern die updatePosture der Organisation keine Genehmigung verlangt), notify (der Inhaber wird einmal pro neuer Version benachrichtigt und übernimmt sie manuell) oder pinned (wechselt nie ohne ausdrückliches update-approve). Eine Änderung der Richtlinie hebt eine nach einem Rollback gesetzte Update-Sperre (skipVersion) auf. Dieselbe whoCanInstall-Berechtigungsstufe wie bei der Installation.
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/agent-skills/set-policy/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Skill-Installationen auf dem KI-Agent einer Einrichtung (Registerkarte Skills)
Die Zeilen zum Installationslebenszyklus eines Geräts, jeweils ergänzt um die Eintragsfelder des Skills und die Angabe, ob eine neuere veröffentlichte Version existiert. Erfordert den gerätespezifischen Zugriff 'open' (die Registerkarte Skills befindet sich im Agent-Bereich).
Parameter
club `string` (erforderlich) device `string` (erforderlich)Endpunkt
GET /api/agent-skills/installs/{club}/{device}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/installs/{club}/{device} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Skill-Versionen, die in der Organisation dieser Einrichtung auf Genehmigung warten
Die Genehmigungswarteschlange der Organisationsadministratoren: alle auf Genehmigung wartenden Versionen aller Skills der Organisation, mit Skill-Eintrag und Zusammenfassungen von Prüfung/LLM. Nur für Organisationsadministratoren.
Parameter
club `string` (erforderlich)Endpunkt
GET /api/agent-skills/approvals/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/approvals/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Ausstehende Skill-Version genehmigen (veröffentlicht sie)
Nur für Organisationsadministratoren. Die Version wird veröffentlicht, die latestVersion des Skills wird aktualisiert und der Veröffentlichende wird benachrichtigt. Installationen mit der Richtlinie 'auto' übernehmen die Version beim nächsten Abgleichlauf.
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/agent-skills/approve/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Ausstehende Skill-Version ablehnen
Nur für Organisationsadministratoren. Die Version wird mit der Begründung des Prüfenden abgelehnt und der Veröffentlichende wird benachrichtigt – er kann die Befunde beheben und eine neue Version einreichen (Versionen sind unveränderlich).
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/agent-skills/reject/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Wirksame Agent-Skill-Governance für die Organisation dieser Einrichtung
Die gespeicherte Richtlinie der Organisation, zusammengeführt mit den Plattformstandards (eine Organisation ohne gespeicherte Zeile sieht nur die Standards). Nur für Organisationsadministratoren.
Parameter
club `string` (erforderlich)Endpunkt
GET /api/agent-skills/governance/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/governance/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Agent-Skill-Governance für die Organisation dieser Einrichtung aktualisieren
Teilaktualisierung – nur die übergebenen Felder ändern sich; alles andere behält seinen gespeicherten bzw. Standardwert. Nur für Organisationsadministratoren. Gerätespezifische Überschreibungen liegen in der Registrierungszeile und werden über die vorhandenen Routen zur Gerätekonfiguration gepflegt.
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/agent-skills/governance/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Umgebungsdaten einer Einrichtung abrufen
Gibt für den angegebenen Club die aktuellen Wetterbedingungen einschließlich Sonnenauf- und -untergang (über Open-Meteo) sowie die Innentemperatur der Einrichtung (von Duress-Sensoren) zurück. Wird 30 Minuten in Redis zwischengespeichert.
Parameter
clubId `string` (erforderlich) Interne ID des Clubs bzw. der EinrichtungEndpunkt
GET /api/clubs/{clubId}/environment
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/environment \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Fügt einem Club ein allgemeines IoT-Gerät hinzu bzw. ordnet es ihm zu.
Parameter
club `string` (erforderlich) Interne ID des Clubs, unter dem Sie das Gerät hinzufügen möchten. body `string` (erforderlich) JSON-Objekt des neuen Bildschirms, der zugeordnet werden soll.Endpunkt
POST /api/devices/addGenericDevice/{club}
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/devices/addGenericDevice/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Display Screen entfernen und auf Werkseinstellungen zurücksetzen
Entfernt die aktive Zuordnung des Bildschirms zu einer Einrichtung und plant ein dauerhaftes Zurücksetzen auf die Werkseinstellungen ein. Ein ausgeschalteter Bildschirm führt das Zurücksetzen aus, sobald er wieder eingeschaltet und verbunden ist, und kehrt dann zu seiner HDMI-Kopplungsseite zurück. Historische Abrechnungsdatensätze bleiben erhalten.
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/devices/display-screens/reset/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Ordnet einen Türcontroller einer Einrichtung zu.
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/devices/door-controllers/associate/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Aktualisiert die Türcontroller-Einstellungen einer Einrichtung.
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/devices/door-controllers/update/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Nimmt einen Türcontroller einer Einrichtung außer Betrieb.
Parameter
club `string` (erforderlich)Endpunkt
POST /api/devices/door-controllers/decommission/{club}
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/devices/door-controllers/decommission/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt die Relaiskonfiguration eines Türcontrollers zurück.
Parameter
uuid `string` (erforderlich)Endpunkt
GET /api/devices/door-controllers/config/{uuid}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/devices/door-controllers/config/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt die Metadaten des Geräts zurück
Parameter
uuid `string` (erforderlich) Eindeutige ID des GerätsEndpunkt
GET /api/devices/metadata/{uuid}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/devices/metadata/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt die Metadaten des Geräts zurück. Die Antwort ist die Metadatenzeile auf oberster Ebene (alte Struktur) plus `detectedType` (camera | ai-edge-processor | door-controller | ph-ai-agent | null) und `online` (true, wenn innerhalb von 5 Minuten aktualisiert).
Parameter
deviceSerialNumber `string` (erforderlich) Seriennummer des GerätsEndpunkt
GET /api/devices/metadata/serial/{serialNo}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/devices/metadata/serial/{serialNo} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt die Smart Club-Daten des Clubs zurück.
Parameter
club_id `string` (erforderlich) Interne ID des Clubs, unter dem Sie das Gerät hinzufügen möchten.Endpunkt
GET /api/clubs/{club_id}/smart-club-data
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club_id}/smart-club-data \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt alle Geräte zurück, die einem einzelnen Club zugeordnet sind.
Parameter
club `string` (erforderlich) Interne ID des Clubs, dessen Geräte Sie auflisten möchten.Endpunkt
GET /api/devices/list/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/devices/list/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt alle Anwendungs-Releases (Versionen) für unsere balena-Geräte zurück.
Endpunkt
GET /api/devices/listReleases
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/devices/listReleases \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Verschiebt ein Gerät in eine neue Einrichtung (Club) und aktualisiert die zugehörigen Systeme.
Parameter
club `string` (erforderlich) ID der Quelleinrichtung (aktueller Club des Geräts) body `object` (erforderlich) Parameter für das VerschiebenEndpunkt
POST /api/devices/move/{club}
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/devices/move/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Versucht, eine Verbindung zum Router einer Einrichtung herzustellen, indem das am besten geeignete Gerät vor Ort ausgewählt und ein MQTT-Befehl zum Aufbau eines Tunnels gesendet wird.
Parameter
facilityID `string` (erforderlich) Interne ID der Einrichtung, für die die Router-Verbindung versucht wird.Endpunkt
GET /api/devices/openRouterWebpage/{facilityID}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/devices/openRouterWebpage/{facilityID} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Cloud Agent-Katalog (Zonen, Größen, aktuelle Verkaufspreise)
Parameter
club `string` (erforderlich)Endpunkt
GET /api/devices/ph-ai-agent/cloud/catalog/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/catalog/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Angebot für einen Cloud Agent erstellen (Software + Hosting)
Endpunkt
POST /api/devices/ph-ai-agent/cloud/quote/{club}
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/quote/{club} \
-H "x-api-key: YOUR_API_KEY"
Cloud Agent starten (Bereitstellung einreihen + automatisch zuordnen)
Endpunkt
POST /api/devices/ph-ai-agent/cloud/launch/{club}
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/launch/{club} \
-H "x-api-key: YOUR_API_KEY"
Auftragsstatus des Cloud Agent
Endpunkt
GET /api/devices/ph-ai-agent/cloud/jobs/{club}/{jobId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/jobs/{club}/{jobId} \
-H "x-api-key: YOUR_API_KEY"
Cloud Agent vollständig entfernen (VM + balena + Registrierung)
Endpunkt
POST /api/devices/ph-ai-agent/cloud/delete/{club}
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/delete/{club} \
-H "x-api-key: YOUR_API_KEY"
Zurückgestellte Entfernung eines Cloud Agent auflösen (Sicherung erneut versuchen, ohne Sicherung löschen oder abbrechen)
Endpunkt
POST /api/devices/ph-ai-agent/cloud/delete-decision/{club}
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/delete-decision/{club} \
-H "x-api-key: YOUR_API_KEY"
Connected Apps eines Agents auflisten (Suiten + Apps mit verbundenen Konten)
Gibt den Zustand der Connected Apps des Agents zurück: das Aktivierungsflag, Zusammenfassungen pro Suite (Google Workspace, Microsoft 365) und den kuratierten App-Katalog mit den verbundenen Konten jeder App (mehrere Konten – ein Agent kann pro App mehrere Konten haben, jeweils mit optionalem Alias), aufgelöst aus der Upstream-Sitzung des Agents.
Parameter
facilityId `string` (erforderlich) deviceId `string` (erforderlich) Die balena-UUID des Agent-Geräts.Endpunkt
GET /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Vollständiger Marketplace-Katalog der Connected Apps für einen Agent
Gibt jede verbindbare App zurück (den vollständigen Katalog der Managed-Auth-Toolkits, serverseitig ca. 12h zwischengespeichert) mit Featured- und Suite-Stufen und den verbundenen Konten des Agents pro App sowie Zusammenfassungen pro Suite und die ausstehenden Verbindungsanfragen des Agents – eine einzige Nutzlast für den clientseitig durchsuchbaren App-Marketplace.
Parameter
facilityId `string` (erforderlich) deviceId `string` (erforderlich) Die balena-UUID des Agent-Geräts.Endpunkt
GET /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/catalog
Beispielanfrage
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"
Antwort
{}
Ausstehende Verbindungsanfrage eines Agents verwerfen
Markiert die ausstehende Verbindungsanfrage des Agents für ein Toolkit als verworfen (sie verschwindet aus dem Bereich „Requested by your agent“ des Marketplace). Idempotent – das Verwerfen einer nicht ausstehenden Anfrage bewirkt nichts.
Parameter
facilityId `string` (erforderlich) deviceId `string` (erforderlich) Die balena-UUID des Agent-Geräts.Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/requests/dismiss
Beispielanfrage
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 '{}'
Antwort
{}
Connected Apps für einen Agent aktivieren oder deaktivieren
Speichert den Connected Apps-Schalter des Agents und überträgt die Balena-Gerätevariable PH_APPS_MCP_ENABLED an genau dieses Gerät (nach bestem Bemühen – das Flag auf PH-Seite ist die verbindliche Sperre für das MCP-Relay).
Parameter
facilityId `string` (erforderlich) deviceId `string` (erforderlich) Die balena-UUID des Agent-Geräts.Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/enable
Beispielanfrage
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 '{}'
Antwort
{}
Verbindung einer einzelnen App mit einem Agent starten (OAuth-Ablauf über Connect Link)
Startet einen gehosteten Connect Link-Ablauf für ein Toolkit und gibt die URL zurück, an die der Benutzer weitergeleitet wird. Ein optionaler Alias benennt das neue Konto (mehrere Konten – das Verbinden einer bereits verbundenen App fügt ein WEITERES Konto hinzu, bis zu 10 pro App). Läuft über denselben verketteten Callback wie Suite-Verbindungen (eine Suite mit einem Toolkit), sodass der Abschluss wieder auf der Applet-Seite ph-ai-agent landet.
Parameter
facilityId `string` (erforderlich) deviceId `string` (erforderlich) Die balena-UUID des Agent-Geräts.Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect
Beispielanfrage
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 '{}'
Antwort
{}
Vorbereitungsdaten für die Verbindung einer App (Modus, Anmeldedatenfelder, Einrichtungsanleitung)
Alles, was der Verbindungsdialog vor dem Herstellen einer Verbindung benötigt: wie sich die App verbindet (oauth = gehosteter Zustimmungsablauf, credentials = Formular im Produkt), die im credentials-Modus abzufragenden Anmeldedatenfelder und die Einrichtungsanleitung im Produkt (für priorisierte Apps redaktionell erstellt, andernfalls aus den Feldmetadaten der App generiert – nie ein Link zu externer Dokumentation). Bei Apps mit eigener OAuth-App (Bring Your Own) wird zusätzlich angegeben, ob die OAuth-App des Kunden bereits für DIESEN Agent registriert ist (byoConfigured), sowie die Weiterleitungs-URL, die beim Anbieter zu registrieren ist.
Parameter
facilityId `string` (erforderlich) deviceId `string` (erforderlich) Die balena-UUID des Agent-Geräts. toolkit `string` (erforderlich)Endpunkt
GET /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-info/{toolkit}
Beispielanfrage
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"
Antwort
{}
App mit vom Benutzer angegebenen Anmeldedaten verbinden (API-Schlüssel usw., ohne OAuth)
Erstellt für eine App im credentials-Modus direkt aus dem Formular im Produkt ein verbundenes Konto – ohne gehosteten Zustimmungsablauf. Die Anmeldedatenfelder stammen aus den connect-info-Daten der App; alle Pflichtfelder müssen angegeben werden. Die Anmeldedaten werden, sofern unterstützt, beim Anbieter geprüft (nach bestem Bemühen – manche Apps lehnen einen falschen Schlüssel erst beim ersten Tool-Aufruf des Agents ab). Ein optionaler Alias benennt das neue Konto (mehrere Konten – das Verbinden einer bereits verbundenen App fügt ein WEITERES Konto hinzu).
Parameter
facilityId `string` (erforderlich) deviceId `string` (erforderlich) Die balena-UUID des Agent-Geräts.Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-credentials
Beispielanfrage
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 '{}'
Antwort
{}
Eigene OAuth-App des Kunden für eine BYO-App registrieren und deren Verbindungsablauf starten
Für Apps mit eigener OAuth-App (Xero, Shopify, ...): Übernimmt Client-ID und Client-Secret der OAuth-App, die der Kunde beim Anbieter erstellt hat (mithilfe der Einrichtungsanleitung der App), registriert sie für DIESEN Agent (das Secret wird nur bei der Upstream-Integrationsplattform gespeichert – nie in Performance Hub) und startet sofort den gehosteten Anmeldeablauf damit. Gibt die Zustimmungs-URL zurück, an die der Benutzer weitergeleitet wird, mit demselben Vertrag wie der Verbindungsendpunkt. Ein erneutes Einreichen ersetzt die registrierte App des Agents (z. B. nach einer Rotation des Secrets) – bestehende verbundene Konten funktionieren weiter.
Parameter
facilityId `string` (erforderlich) deviceId `string` (erforderlich) Die balena-UUID des Agent-Geräts.Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-oauth-app
Beispielanfrage
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 '{}'
Antwort
{}
Suite-Verbindung mit einem Klick für einen Agent starten (verkettete Connect Link-Abläufe)
Startet den verketteten Verbindungsablauf für eine ganze Suite (z. B. google-workspace). Die zurückgegebene URL öffnet den Zustimmungsbildschirm des ersten Toolkits; jeder Abschluss leitet per 302 direkt in den Ablauf des nächsten Toolkits weiter und endet auf der Applet-Seite ph-ai-agent. Mitglieder, die bereits ein verbundenes Konto haben, werden ÜBERSPRUNGEN, sodass ein erneuter Versuch nach einem Fehler mitten in der Kette mit den fehlenden Apps fortfährt, statt doppelte Konten anzulegen. Sind bereits alle Mitglieder verbunden, läuft die gesamte Kette erneut – das ist der ausdrückliche Ablauf „weiteres Konto hinzufügen“.
Parameter
facilityId `string` (erforderlich) deviceId `string` (erforderlich) Die balena-UUID des Agent-Geräts.Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-suite
Beispielanfrage
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 '{}'
Antwort
{}
Ein verbundenes Konto von einem Agent trennen
Löscht ein einzelnes verbundenes Konto (mehrere Konten – andere Konten derselben App bleiben verbunden). Vor dem Löschen wird geprüft, ob das Konto zu diesem Agent gehört; war es das LETZTE Konto der App, wird das Toolkit aus den verbundenen Toolkits des Agents entfernt (die Sitzung wird verzögert neu erstellt, damit sich die Tool-Liste des Agents aktualisiert).
Parameter
facilityId `string` (erforderlich) deviceId `string` (erforderlich) Die balena-UUID des Agent-Geräts.Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/disconnect
Beispielanfrage
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 '{}'
Antwort
{}
Eines der verbundenen Konten eines Agents umbenennen (neuer Alias)
Legt den angezeigten Alias eines einzelnen verbundenen Kontos fest. Aliasse werden normalerweise nach OAuth automatisch gesetzt (aus der angemeldeten Identität); dieser Endpunkt steht hinter der manuellen Umbenennung im Detaildialog der App. Ein leerer Alias entfernt die Bezeichnung. Vor der Upstream-Aktualisierung wird geprüft, ob das Konto zu diesem Agent gehört.
Parameter
facilityId `string` (erforderlich) deviceId `string` (erforderlich) Die balena-UUID des Agent-Geräts.Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/rename-account
Beispielanfrage
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 '{}'
Antwort
{}
Integrierten Performance Hub-Dienst für einen Agent ein- oder ausschalten
Schaltet einen ständig verfügbaren integrierten Dienst (Smart Search, Weather, ...) für diesen Agent ein oder aus. Integrierte Dienste benötigen keine Verbindung und kein OAuth – sie sind in jedem Agent enthalten und standardmäßig aktiviert; dieser Schalter speichert die Überschreibung pro Agent und erstellt die Upstream-Sitzung des Agents sofort neu, damit sich die Tools aktualisieren. Beachten Sie, dass der separate Schalter „External apps“ (die Route /enable) den gesamten Apps-MCP-Server verbindlich abschaltet – ist er aus, sind auch integrierte Dienste unabhängig von ihren einzelnen Schaltern nicht verfügbar.
Parameter
facilityId `string` (erforderlich) deviceId `string` (erforderlich) Die balena-UUID des Agent-Geräts. slug `string` (erforderlich) Slug des integrierten Dienstes.Anfragetext
Endpunkt
PATCH /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/built-in/{slug}
Beispielanfrage
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 '{}'
Antwort
{}
KI-Agent-Gerät einer Einrichtung zuordnen
Zuordnung vorrangig über Metadaten. Sucht das Gerät anhand der Seriennummer in den aktuellen Gerätemetadaten, setzt voraus, dass es online ist, erstellt dann bei Bedarf die Registrierungszeile, weist eine Chisel-Relay-Region + Tunnel-Port + Secret zu, registriert diesen Platz am Relay und überträgt die Einrichtungs- und Tunnelkonfiguration über Balena an das Gerät. Neue Geräte erhalten außerdem ein Standard-MCP-Dienstkonto (aktiviert, auf diese Einrichtung beschränkt, alle Funktionen); beim erneuten Koppeln bleibt eine vorhandene MCP-Berechtigung erhalten. Optionale erweiterte Einstellungen überschreiben beim Koppeln die gesetzten Standardwerte – Sicherungskonfiguration, MCP ein/aus, Zugriffsbeschränkung –, und `restoreFrom` befüllt das neue Gerät aus der Cloud-Sicherung eines anderen Geräts der Einrichtung (aktive oder außer Betrieb genommene Quelle; reiht eine repository-übergreifende Wiederherstellung ein, die als `restoreRequest` zur Fortschrittsabfrage zurückgegeben wird).
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/associate/{club}
Beispielanfrage
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 '{}'
Antwort
{}
KI-Agent-Geräte einer Einrichtung auflisten
Gibt die KI-Agent-Geräte der Einrichtung mit aktuellem Online- und Tunnelstatus zurück (wird von der Geräteauswahl des Applets verwendet).
Parameter
club `string` (erforderlich)Endpunkt
GET /api/devices/ph-ai-agent/list/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/list/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Update- und Online-Status des KI-Agents
Gibt zurück, ob das Gerät online ist, ob ein Update verfügbar bzw. ausstehend ist, und das angebotene Release (die fixierte Flottenversion, wenn die Flotte fixiert ist; die höchste erfolgreiche Version, wenn die Flotte der neuesten Version folgt).
Parameter
club `string` (erforderlich) uuid `string` (erforderlich)Endpunkt
GET /api/devices/ph-ai-agent/update-status/{club}/{uuid}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/update-status/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Aktueller Gerätestatus und Kennzahlen des KI-Agents
Gibt eine kuratierte Momentaufnahme für die Kennzahlenleiste und den Verwaltungsbereich des Applets zurück: Identitäts- und Registrierungsfelder, Erreichbarkeit und Verbindung, Softwareversionen und die neuesten Heartbeat-Kennzahlen (CPU, Temperatur, Arbeitsspeicher, Speicher pro Mount, Betriebszeit, Netzwerk). Führt das Metadaten-Signal des Geräts und den Balena-Updatestatus zusammen; bei einem vorübergehenden Ausfall kann eine der beiden Hälften fehlen.
Parameter
club `string` (erforderlich) uuid `string` (erforderlich)Endpunkt
GET /api/devices/ph-ai-agent/device-status/{club}/{uuid}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/device-status/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
KI-Beschreibung für den Gerätezustandsbericht
Gibt eine kurze Erklärung der aktuell abgeleiteten Zustandsprobleme für Betreiber zurück. Fakten und Playbook-Schritte stehen immer in device-status; dieser zusätzliche Absatz wird nach bestem Bemühen erstellt und kann null sein.
Parameter
club `string` (erforderlich) uuid `string` (erforderlich)Endpunkt
POST /api/devices/ph-ai-agent/health/{club}/{uuid}/explain
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/health/{club}/{uuid}/explain \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Zugriffstoken für die direkte Relay-Verbindung zu einem KI-Agent ausstellen
Gibt eine kurzlebige signierte URL zurück, mit der sich der Browser DIREKT mit dem regionalen Relay-Gateway des Geräts verbindet (ohne den globalen Umweg über PH/Sydney), sowie das HS256-Token. PH bleibt die maßgebliche Instanz (Google SSO + Modul- und Einrichtungsprüfungen hier); das Relay-Gateway prüft das Token. Der Proxy /ai-agent-ui bleibt die Ausweichlösung.
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/access/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Chatnachricht in eine KI-Agent-Sitzung senden (direkte Antwort aus der Benachrichtigung)
Serverseitiges Relay für die direkte Antwortaktion der Web-Push-Benachrichtigung – der Service Worker sendet per POST hierher (gleicher Ursprung, SSO-Cookies), sodass eine Antwort auch ohne geöffneten Performance Hub-Tab funktioniert. PH ermittelt das Relay-Ziel des Geräts (dieselbe Suche wie beim Proxy /ai-agent-ui), setzt x-ph-user zur Zuordnung des Durchlaufs (der daraus resultierende Abschluss-Push geht an diesen Benutzer zurück) und leitet mit der Sitzungs-ID an /api/chat/start des Geräts weiter.
Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/reply
Beispielanfrage
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 '{}'
Antwort
{}
Zugriffssteuerungseinstellungen eines KI-Agents lesen (Inhaber)
Gibt den Zugriffsblock des Geräts (Modus, Allowlist, Sichtbarkeit, Schalter für PH Support) sowie ausstehende Zugriffsanfragen zurück. Für den Geräteinhaber lesbar; andere Benutzer erhalten 403.
Parameter
club `string` (erforderlich) uuid `string` (erforderlich)Endpunkt
GET /api/devices/ph-ai-agent/access-settings/{club}/{uuid}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/access-settings/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Zugriffssteuerungseinstellungen eines KI-Agents aktualisieren (Inhaber)
Schreibt den Modus (org/restricted), die eingeschränkte Allowlist, die Sichtbarkeit der Liste (all/admins) und den Schalter „Permit access from Performance Hub Support“. Für den Geräteinhaber zulässig. Der Inhaber selbst kann nur über reallocate-owner geändert werden. Genehmigte Zugriffsanfragen bleiben bestehen – weiterhin genehmigte Anfragende werden wieder in die gespeicherte Allowlist aufgenommen; wird einer aus der übermittelten Liste entfernt, wird seine Genehmigung widerrufen (die Anfrage wechselt zu abgelehnt; er kann erneut anfragen).
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/access-settings/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Inhaber eines KI-Agents neu zuweisen
Weist die Inhaberschaft des Geräts einem anderen Performance Hub-Benutzer zu. Auf Kontoinhaber beschränkt (Zugriff auf das Modul SaaS-Abrechnung) – der Ausweg, wenn der Inhaber eines eingeschränkten Agents ausscheidet. Sowohl der bisherige als auch der neue Inhaber werden benachrichtigt (in der App + Push + E-Mail).
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/reallocate-owner/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Benutzerliste der Einrichtung für die Allowlist- und Inhaberauswahl des KI-Agents
Gibt E-Mail-Adresse + Name (+ isOrgAdmin-Flags) für jeden Benutzer zurück, dessen Rolle Zugriff auf DIESE Einrichtung gewährt. Nur für den Geräteinhaber und Berechtigte zur Neuzuweisung (Kontoinhaber) verfügbar, damit normale Benutzer den Benutzerbestand nicht auflisten können.
Parameter
club `string` (erforderlich) uuid `string` (erforderlich)Endpunkt
GET /api/devices/ph-ai-agent/org-users/{club}/{uuid}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/org-users/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Zugriff auf einen eingeschränkten KI-Agent anfragen
Erstellt die Zugriffsanfrage des Anfragenden für ein eingeschränktes Gerät (oder öffnet sie erneut) – idempotent pro Benutzer+Gerät. Der Inhaber wird in der App, per Web-Push und per E-Mail mit einem Deep Link zum Agent-Modul benachrichtigt.
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/access-request/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Zugriffsanfrage für einen KI-Agent genehmigen oder ablehnen (Inhaber)
Entscheidung des Geräteinhabers über eine ausstehende Anfrage. Bei Genehmigung wird der Anfragende zur Allowlist des Geräts hinzugefügt; in beiden Fällen wird der Anfragende benachrichtigt (in der App + Push + E-Mail).
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/access-request-resolve/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Update eines KI-Agents zulassen und anwenden
Fixiert das Gerät auf das angebotene Release (fixierte Flottenversion oder die höchste erfolgreiche Version, wenn die Flotte der neuesten Version folgt) und gibt die Update-Sperre frei, damit der balena-Supervisor es anwendet. Der Zustand auf dem Datenvolume des Geräts bleibt beim Update erhalten.
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/update/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Update eines KI-Agents für später planen
Speichert einen geplanten Installationszeitpunkt in der Registrierung des Geräts. Ein wiederkehrender Backend-Job (alle 5 Minuten) wendet das Update an (fixieren + entsperren), sobald der geplante Zeitpunkt erreicht ist. Eine neue Planung ersetzt eine vorhandene Planung für das Gerät.
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/update-schedule/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Geplantes Update eines KI-Agents abbrechen
Entfernt die ausstehende geplante Installation für das Gerät (bewirkt nichts, wenn nichts geplant ist).
Parameter
club `string` (erforderlich) uuid `string` (erforderlich)Endpunkt
DELETE /api/devices/ph-ai-agent/update-schedule/{club}/{uuid}
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/update-schedule/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Remote-Befehl auf einem KI-Agent-Gerät ausführen
Sendet einen zugelassenen MQTT-Befehl (Neustart, Neustart eines Containers, Updates sperren/entsperren, Wi-Fi-Verwaltung) an den device-controller, der auf dem KI-Agent läuft. Das Gerät muss der Einrichtung zugeordnet sein.
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/command/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Einrichtungsbezogene Konfiguration eines KI-Agents aktualisieren
Speichert vom Bediener bearbeitbare Einstellungen für einen zugeordneten KI-Agent: den Gerätenamen, den physischen Gerätestandort und den Rhythmus für geplante Neustarts. Der Neustartzeitplan wird außerdem als Balena-Umgebungsvariable REBOOT_DEVICE (2 Uhr Ortszeit) an das Gerät übertragen, entsprechend dem Verhalten von Display Screens.
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/config/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Einrichtungen, in die ein KI-Agent dieser Einrichtung verschoben werden kann
Gibt die Einrichtungen derselben Organisation zurück, auf die der angemeldete Benutzer zugreifen kann (ohne die aktuelle Einrichtung), für die Auswahl "Move to another facility". Die Verschiebung selbst erfolgt über POST /api/devices/move/:club, der dieselben Regeln (gleiche Organisation + Zugriff auf das Ziel) serverseitig durchsetzt.
Parameter
club `string` (erforderlich)Endpunkt
GET /api/devices/ph-ai-agent/move-targets/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/move-targets/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Der vom Anfragenden gewährbare MCP-Zugriffsrahmen für die KI-Agenten einer Einrichtung
Gibt zurück, was der angemeldete Benutzer einem MCP-Dienstkonto eines KI-Agent in der Organisation dieser Einrichtung gewähren darf: die Einrichtungen/Regionen innerhalb seines eigenen Zugriffs, ob er organisationsweiten Zugriff gewähren darf, die Module, über die er verfügt, und den vollständigen MCP-Toolkatalog (für die erweiterte Maske pro Tool). Die Oberfläche verwendet dies, damit Benutzer nur Optionen innerhalb ihres eigenen Berechtigungsrahmens sehen; der POST-Endpunkt mcp-access setzt dieselbe Einschränkung serverseitig durch.
Parameter
club `string` (erforderlich)Endpunkt
GET /api/devices/ph-ai-agent/mcp-grantable/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/mcp-grantable/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
MCP-Dienstkontokonfiguration eines KI-Agent abrufen
Gibt die MCP-Zugriffskonfiguration des Geräts zurück (Bereich, Module, Toolmaske, Audit-Felder).
Parameter
club `string` (erforderlich) uuid `string` (erforderlich)Endpunkt
GET /api/devices/ph-ai-agent/mcp-access/{club}/{uuid}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/mcp-access/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
MCP-Dienstkonto eines KI-Agent konfigurieren
Speichert die MCP-Zugriffskonfiguration des Geräts mit Einschränkung zum Zeitpunkt der Gewährung. Anfragende können nur Einrichtungen/Regionen innerhalb ihres eigenen Zugriffs gewähren, Organisationsbereich nur, wenn sie eine organisationsweite Rolle haben, und nur Module, über die sie selbst in der Organisation der Einrichtung verfügen. Das Flag enabled wird außerdem als Balena-Umgebungsvariable PH_MCP_ENABLED an das Gerät übertragen.
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/mcp-access/{club}
Beispielanfrage
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 '{}'
Antwort
{}
VPN-Konfiguration eines KI-Agent abrufen (geschwärzt)
Gibt das VPN-Unterstützungsflag und die Verbindungsliste des Geräts zurück. Profilinhalte und Anmeldedaten werden nie zurückgegeben, nur beim Import erfasste Metadaten (Remotes, Routen, DNS) und Flags für vorhandene Anmeldedaten. Der aktuelle Status jeder Verbindung stammt vom Gerätestatus-Endpunkt (beacon metadata.vpn).
Parameter
club `string` (erforderlich) uuid `string` (erforderlich)Endpunkt
GET /api/devices/ph-ai-agent/vpn-config/{club}/{uuid}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/vpn-config/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
VPN-Unterstützung eines KI-Agent ein- oder ausschalten
Schaltet die VPN-Funktion des Geräts ein oder aus. Überträgt die Balena-Gerätevariable PH_VPN_ENABLED und benachrichtigt das Gerät (MQTT vpnConfigChanged); beim Ausschalten bleiben die Verbindungen erhalten (Tunnel werden beendet, die Konfiguration bleibt für das erneute Aktivieren bestehen).
Parameter
club `string` (erforderlich) uuid `string` (erforderlich)Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/vpn-config/{club}/{uuid}
Beispielanfrage
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 '{}'
Antwort
{}
OpenVPN-Profil(e) auf einen KI-Agent importieren
Akzeptiert base64-codierte Uploads: einzelne .ovpn/.conf-Dateien, aufgeteilte Dateipakete (Konfiguration + Zertifikate/Schlüssel) und Archive (.zip, .tar/.tgz-Exporte aus Pritunl, .tblk aus Tunnelblick, .visc/.visz aus Viscosity). Profile werden in eine kanonische Inline-Form normalisiert; jedes Profil wird zu einer Verbindung (getrennt importiert: Anmeldedaten eingeben, dann verbinden). Bei unbrauchbaren Uploads werden 400-Fehler mit Handlungshinweisen zurückgegeben.
Parameter
club `string` (erforderlich) uuid `string` (erforderlich)Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/vpn-import/{club}/{uuid}
Beispielanfrage
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 '{}'
Antwort
{}
VPN-Verbindung eines KI-Agent aktualisieren (Name / Anmeldedaten / Split-DNS)
Aktualisiert die gespeicherte Verbindung. Anmeldedatenfelder sind nur schreibbar (weggelassen = gespeicherten Wert behalten; leere Zeichenfolge = löschen). Änderungen an Anmeldedaten oder Split-DNS erhöhen die Revision der Verbindung, sodass ein aktiver Tunnel mit den neuen Werten neu startet.
Parameter
club `string` (erforderlich) uuid `string` (erforderlich)Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/vpn-connection/{club}/{uuid}
Beispielanfrage
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 '{}'
Antwort
{}
VPN-Verbindung eines KI-Agent löschen
Entfernt die Verbindung aus der Registrierung und benachrichtigt das Gerät, das den Tunnel abbaut und sein zwischengespeichertes Profil sowie die Anmeldedaten löscht.
Parameter
club `string` (erforderlich) uuid `string` (erforderlich) connectionId `string` (erforderlich)Endpunkt
DELETE /api/devices/ph-ai-agent/vpn-connection/{club}/{uuid}/{connectionId}
Beispielanfrage
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"
Antwort
{}
VPN-Verbindung eines KI-Agent verbinden / trennen
Soll-Zustandsmodell: Setzt das Flag enabled der Verbindung in der Registrierung und benachrichtigt das Gerät (MQTT vpnConfigChanged ohne Nutzdaten); das Gerät ruft den maßgeblichen Zustand über seinen JWT-authentifizierten universal-api-Aufruf ab und gleicht seine Tunnel ab. Eine verpasste Benachrichtigung wird bei der regelmäßigen Synchronisierung ausgeglichen.
Parameter
club `string` (erforderlich) uuid `string` (erforderlich)Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/vpn-command/{club}/{uuid}
Beispielanfrage
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 '{}'
Antwort
{}
Cloud-Backup-Konfiguration und -Status eines KI-Agent abrufen
Gibt die Backup-Einstellungen des Geräts (aktiviert, Aufbewahrung, Speicherregion), den laufenden Backup-Status (letztes Backup, Größe, Fehler), die automatisch ermittelte Region und die verfügbaren Speicherregionen für die Auswahl zurück. Das restic-Repository-Passwort wird nie zurückgegeben.
Parameter
club `string` (erforderlich) uuid `string` (erforderlich)Endpunkt
GET /api/devices/ph-ai-agent/backup-config/{club}/{uuid}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-config/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Cloud-Backup-Konfiguration eines KI-Agent aktualisieren
Speichert Aktivierung/Aufbewahrung/Region. Wird beim nächsten stündlichen Backup-Durchlauf des Geräts wirksam (das Gerät fragt vor jedem Durchlauf seinen Ausführungskontext bei PH ab), daher ist kein Geräteneustart erforderlich.
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/backup-config/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Backup-Wiederherstellungsquellen zum Koppeln eines neuen KI-Agent auflisten
Einrichtungsweite Ansicht für die Option "restore from a backup" im Dialog zum Hinzufügen eines Agenten: jede Registrierung in der Einrichtung (aktive UND außer Betrieb genommene/ersetzte), die noch ein entschlüsselbares Backup-Repository und mindestens einen nutzbaren Wiederherstellungspunkt hat, mit ihren neuesten Snapshots. Gibt außerdem die Optionslisten der Backup-Konfiguration zurück (allowedRetentionDays, availableRegions), damit der Dialog keine Geräte-UUID benötigt, um seine Auswahlfelder zu füllen.
Parameter
club `string` (erforderlich)Endpunkt
GET /api/devices/ph-ai-agent/backup-sources/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-sources/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Backup-Wiederherstellungspunkte eines KI-Agent auflisten
Gibt den Snapshot-Index des Geräts (neueste zuerst) aus DynamoDB zurück, ohne Abfrage beim Gerät oder Repository, sowie den aktuellen Status manueller Backup- und Wiederherstellungsanfragen für die Abfrage im Seitenbereich. Veraltete Anfragen (nie übernommen oder ohne Fortschrittssignal) werden als fehlgeschlagen dargestellt, damit die Oberfläche jederzeit eine neue senden kann.
Parameter
club `string` (erforderlich) uuid `string` (erforderlich)Endpunkt
GET /api/devices/ph-ai-agent/backup-snapshots/{club}/{uuid}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-snapshots/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Sofort ein manuelles Backup eines KI-Agent anfordern
Schreibt eine Anfrage für einen manuellen Durchlauf (mit der Notiz des Benutzers) in die Registrierungszeile und benachrichtigt das Gerät über MQTT. Das Gerät ruft die verifizierte Anfrage über seinen JWT-authentifizierten universal-api-Aufruf für den Ausführungskontext ab; auch ohne MQTT wird sie beim nächsten Scheduler-Durchlauf übernommen. Wird abgelehnt, solange ein anderes Backup oder eine Wiederherstellung läuft.
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/backup-run/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Wiederherstellungspunkt eines KI-Agent anheften oder lösen
Angeheftete Wiederherstellungspunkte sind vor dem Bereinigen durch die Aufbewahrungsregeln geschützt: Die nächtliche Wartung des Geräts erhält die IDs der angehefteten Snapshots über ihren Aufruf für den Ausführungskontext und schließt sie von restic forget aus, und ihre Indexzeilen laufen nie per TTL ab. Durch das Lösen wird das normale Aufbewahrungsverhalten wiederhergestellt.
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/backup-pin/{club}
Beispielanfrage
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 '{}'
Antwort
{}
KI-Agent aus einem Backup-Wiederherstellungspunkt wiederherstellen
Schreibt eine Wiederherstellungsanfrage in die Registrierungszeile und benachrichtigt das Gerät. Vollständige Wiederherstellungen überschreiben /data und /home/hermeswebui (das Gerät erstellt zuvor automatisch einen Sicherheits-Snapshot und stoppt den Agenten während der Wiederherstellung) und erfordern die Eingabe des Gerätenamens als Bestätigung. Wird `paths` übergeben, erfolgt stattdessen eine unterbrechungsfreie Wiederherstellung nur dieser Pfade auf Dateiebene. Optional wird das Gerät nach Abschluss der Datenwiederherstellung wieder auf das Software-Release des Snapshots festgelegt (siehe backup-restore-release).
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/backup-restore/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Das bei einer abgeschlossenen Wiederherstellung erfasste Software-Release anwenden
Letzter Schritt einer Wiederherstellung, bei der die Softwareversion des Snapshots angefordert wurde: Sobald das Gerät den Abschluss der Datenwiederherstellung meldet, wird das Gerät auf das gespeicherte Release festgelegt und Updates werden freigegeben (gleiche Mechanik wie beim Update-Endpunkt). Wird durch die Abfrage im Seitenbereich ausgelöst; idempotent, die gespeicherte Festlegung wird nach der Anwendung gelöscht.
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/backup-restore-release/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Dateien in einem Backup-Wiederherstellungspunkt durchsuchen
Listet eine Verzeichnisebene eines restic-Snapshots auf, vollständig serverseitig aus dem Wasabi-Repository bereitgestellt (funktioniert auch, wenn das Gerät offline ist). Es werden nur Baum-Metadaten gelesen; für Auflistungen werden keine Dateidaten heruntergeladen.
Parameter
club `string` (erforderlich) uuid `string` (erforderlich) takenAt `number` (erforderlich) path `string` (optional)Endpunkt
GET /api/devices/ph-ai-agent/backup-files/{club}/{uuid}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-files/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Dateinamen in einem Backup-Wiederherstellungspunkt suchen
Dateinamensuche ohne Beachtung der Groß-/Kleinschreibung ab einem Verzeichnis abwärts, serverseitig aus den Baum-Metadaten von restic bereitgestellt (es werden keine Dateidaten gelesen; funktioniert auch, wenn das Gerät offline ist). Streamt die Auflistung und stoppt nach den ersten 200 Treffern.
Parameter
club `string` (erforderlich) uuid `string` (erforderlich) takenAt `number` (erforderlich) q `string` (erforderlich) path `string` (optional)Endpunkt
GET /api/devices/ph-ai-agent/backup-search/{club}/{uuid}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-search/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Was sich zwischen zwei Backup-Wiederherstellungspunkten geändert hat
Führt serverseitig einen restic diff zwischen zwei Snapshots des Geräts aus (nur Baum-Metadaten) und gibt die Liste der hinzugefügten/entfernten/geänderten Dateien (begrenzt auf 500 Änderungen) sowie Zusammenfassungsstatistiken zurück. Die Ergebnisse werden zwischengespeichert, da Snapshots unveränderlich sind.
Parameter
club `string` (erforderlich) uuid `string` (erforderlich) fromTakenAt `number` (erforderlich) toTakenAt `number` (erforderlich)Endpunkt
GET /api/devices/ph-ai-agent/backup-diff/{club}/{uuid}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-diff/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Versionsverlauf einer Datei über alle Wiederherstellungspunkte
Ein serverseitiges restic find über alle Snapshots im Repository des Geräts, zusammengefasst zu UNTERSCHIEDLICHEN Versionen (aufeinanderfolgende Treffer mit identischer Größe+mtime werden zusammengeführt) und mit den Snapshot-Indexzeilen für Datum/Art/Notizen verknüpft.
Parameter
club `string` (erforderlich) uuid `string` (erforderlich) path `string` (erforderlich)Endpunkt
GET /api/devices/ph-ai-agent/backup-file-versions/{club}/{uuid}
Beispielanfrage
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"
Antwort
{}
Alle Wiederherstellungspunkte der Backups eines Geräts nach Dateiname durchsuchen
Der Weg zur Wiederherstellung gelöschter Dateien: ein serverseitiges restic find über ALLE Snapshots im Repository (ohne Beachtung der Groß-/Kleinschreibung, Teilzeichenfolge oder Glob), gruppiert nach Pfad mit den Wiederherstellungspunkten, in denen jede Datei vorkommt. Eine vom Gerät gelöschte Datei ist hier auffindbar, solange ein Wiederherstellungspunkt sie enthält.
Parameter
club `string` (erforderlich) uuid `string` (erforderlich) q `string` (erforderlich)Endpunkt
GET /api/devices/ph-ai-agent/backup-find/{club}/{uuid}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-find/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Einzelne Datei aus einem Backup-Wiederherstellungspunkt herunterladen
Streamt eine Datei direkt aus dem restic-Repository an den Browser (als Anhang). Verzeichnisse werden als tar-Archiv gestreamt. Größenbegrenzt; serverseitig bereitgestellt, daher funktioniert es auch, wenn das Gerät offline ist.
Parameter
club `string` (erforderlich) uuid `string` (erforderlich) takenAt `number` (erforderlich) path `string` (erforderlich)Endpunkt
GET /api/devices/ph-ai-agent/backup-file-download/{club}/{uuid}
Beispielanfrage
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"
Antwort
{}
KI-Agent aus einer Einrichtung außer Betrieb nehmen
Parameter
club `string` (erforderlich)Endpunkt
POST /api/devices/ph-ai-agent/decommission/{club}
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/decommission/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
KI-Agent aus einer Einrichtung entfernen und die Hardware auf Werkseinstellungen zurücksetzen
Hebt die Zuordnung des Geräts vollständig auf, sodass es in JEDER Einrichtung gekoppelt werden kann, und löscht alle Daten auf dem NUC. Die Löschung wird über die Balena-Gerätevariable PH_FACTORY_RESET (eine einmalige Nonce) VOR dem Abbau in der Cloud vorbereitet, sodass sie auch greift, wenn das Gerät beim Entfernen offline ist: Die Löschung erfolgt bei der nächsten Verbindung. Eine MQTT-Benachrichtigung factoryReset sorgt dafür, dass sie bei einem Online-Gerät sofort erfolgt. Der Abbau in der Cloud widerruft anschließend alle Anmeldedaten und Berechtigungen, entfernt die Balena-Bindung an die Einrichtung (Gerätevariablen + club-Tag) und die clubID in den Metadaten und löscht Zugriffsanfragen sowie den LAN-DNS-Eintrag. Cloud-Backups werden BEIBEHALTEN: Der Snapshot-Index und das Repository-Passwort bleiben in der vorläufig gelöschten Registrierung erhalten und können beim Hinzufügen eines Ersatzgeräts als Wiederherstellungsquelle verwendet werden. Erfordert die Eingabe des Gerätenamens als Bestätigung.
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/reset/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Defekten KI-Agent durch einen neuen NUC ersetzen (Notfallwiederherstellung)
Geräteaustausch in einem Schritt: ordnet den Ersatz-NUC zu (Tunnel-Slot, Secrets, Balena-Variablen, Backup-Initialisierung), übernimmt Namen, Standort, Neustartzeitplan, Backup-Einstellungen, Zugriffssperre und MCP-Berechtigung des alten Geräts, ordnet den alten Snapshot-Index dem neuen Gerät zu (damit sein vollständiger Backup-Verlauf durchsuchbar bleibt), nimmt die alte Registrierung außer Betrieb (markiert mit replacedBy / replacedFrom) und stellt, sofern `restore` nicht false ist, eine vollständige Wiederherstellung des gewählten Wiederherstellungspunkts aus dem Backup-Repository des ALTEN Geräts auf die neue Hardware in die Warteschlange. Funktioniert, auch wenn das alte Gerät defekt/offline ist; erfordert die Eingabe des Namens des alten Geräts als Bestätigung. Nur innerhalb derselben Einrichtung.
Parameter
club `string` (erforderlich)Anfragetext
Endpunkt
POST /api/devices/ph-ai-agent/replace/{club}
Beispielanfrage
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 '{}'
Antwort
{}
Löst einen QR-Kurzlink eines Performance Hub-Geräts in den Deep Link auf, auf den er verweist, damit der Scanner unter Add Device den Gerätetyp erkennen kann. Es werden nur performancehub.co-Hosts aufgerufen.
Parameter
url `string` (erforderlich) Der gescannte KurzlinkEndpunkt
GET /api/devices/resolve-qr
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/devices/resolve-qr \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Testet die Verbindung zum Unifi Controller einer Einrichtung und ob die Anmeldedaten korrekt sind.
Parameter
facilityID `string` (erforderlich) Interne ID der Einrichtung, für die Sie die Unifi-Verbindung testen möchtenEndpunkt
GET /api/devices/testUnifiController/{facilityID}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/devices/testUnifiController/{facilityID} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Aktualisiert ein generisches IoT-Gerät mit einer Einrichtung.
Parameter
club `string` (erforderlich) Interne ID der Einrichtung, für die Sie das Gerät aktualisieren möchten. body `string` (erforderlich) JSON-Objekt der Aktualisierungsparameter.Endpunkt
PUT /api/devices/updateGenericDevice/{club}
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/devices/updateGenericDevice/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt die Anzahl der offenen, handlungsbedürftigen Vereinbarungen für einen Benutzer und die ihm zugeordneten Clubs zurück
Endpunkt
GET /api/agreements/agreements-outstanding
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/agreements/agreements-outstanding \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Listet alle für einen Club verfügbaren Vereinbarungen auf
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten. contracts-sort `string` (optional) Vereinbarungen nach date-effective oder alphabetisch sortieren. Standard: date-effective. contracts-acknowledgement `string` (optional) Vereinbarungen nach all, acknowledged oder unacknowledged filtern. Standard: all. contracts-requirement `string` (optional) Vereinbarungen nach all, signature, checkbox, popup oder none filtern. Standard: all. contracts-status `string` (optional) Vereinbarungen nach all, active oder archived filtern. Standard: all.Endpunkt
GET /api/agreements/list-agreements/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/agreements/list-agreements/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Unterzeichnet eine Vereinbarung anhand ihrer ID.
Parameter
club `string` (erforderlich) Interne ID des Clubs, der die Vereinbarung unterzeichnet. agreementid `string` (erforderlich) ID der Vereinbarung, die unterzeichnet wird. body `string` (erforderlich) JSON-Objekt mit der Vereinbarung und den Parametern, die dem System hinzugefügt bzw. hochgeladen werden sollen.Endpunkt
POST /api/agreements/sign/{club}/{agreementid}
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/agreements/sign/{club}/{agreementid} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Model Router-Übersicht der Einrichtung (Konfiguration, Guthaben, Ausgaben).
Parameter
clubID `string` (erforderlich) tz `string` (optional) IANA-Zeitzone des Betrachters – Ersatzwert für Tages- und Monatsfenster der Ausgaben, wenn für die Einrichtung keine Zeitzonendaten vorliegen.Endpunkt
GET /api/clubs/{clubID}/ai-credits/overview
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/overview \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Katalog der verfügbaren Modelle mit dem Aktivierungsstatus pro Einrichtung (standardmäßig alle aktiviert).
Parameter
clubID `string` (erforderlich)Endpunkt
GET /api/clubs/{clubID}/ai-credits/models
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/models \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Verfügbare Guardrails und PH-Vorlagen.
Parameter
clubID `string` (erforderlich)Endpunkt
GET /api/clubs/{clubID}/ai-credits/guardrails
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/guardrails \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Verbundene Model Router-Dienste. Umfasst gekoppelte KI-Agent-Geräte, ausdrücklich typisierte externe Agents und den Workflow-Dienst der Einrichtung. Die Konfiguration wird über PATCH /keys/{keyHash} bearbeitet.
Parameter
clubID `string` (erforderlich) tz `string` (optional) IANA-Zeitzone des Betrachters – Ersatzwert für Tages- und Monatsfenster der Ausgaben, wenn für die Einrichtung keine Zeitzonendaten vorliegen.Endpunkt
GET /api/clubs/{clubID}/ai-credits/agents
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/agents \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Model Router für eine Einrichtung aktivieren und ihren Inferenzzugriff bereitstellen.
Parameter
clubID `string` (erforderlich)Endpunkt
POST /api/clubs/{clubID}/ai-credits/enable
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/enable \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Tarif, Modell-Allowlist, Guardrails, Inhaltsfilter (Regex-basiertes Schwärzen/Blockieren auf PH-Seite), Ausgabenlimit und Konfiguration der automatischen Aufladung aktualisieren.
Parameter
clubID `string` (erforderlich)Endpunkt
PATCH /api/clubs/{clubID}/ai-credits/config
Beispielanfrage
curl -X PATCH https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/config \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Den Zähler der festen Gesamtobergrenze auf 0 zurücksetzen (neue Basis sind die aktuellen Ausgaben) und den abgeschlossenen Zeitraum im Verlauf protokollieren.
Parameter
clubID `string` (erforderlich)Endpunkt
POST /api/clubs/{clubID}/ai-credits/spend-limit/reset-total
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/spend-limit/reset-total \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Verlauf der Rücksetzungen der festen Obergrenze (neueste zuerst) – Obergrenze, Ausgaben und Zeitstempel pro abgeschlossenem Zeitraum.
Parameter
clubID `string` (erforderlich)Endpunkt
GET /api/clubs/{clubID}/ai-credits/spend-limit/history
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/spend-limit/history \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Neuen phk_-API-Schlüssel für die Einrichtung erstellen (der Klartext wird einmalig zurückgegeben). Akzeptiert optionale Ausgabenobergrenzen, Modell-Allowlist, Guardrails, Inhaltsfilter und die Ratenlimits rpmLimit/tpmLimit.
Parameter
clubID `string` (erforderlich)Endpunkt
POST /api/clubs/{clubID}/ai-credits/keys
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/keys \
-H "x-api-key: YOUR_API_KEY"
Bearbeitbare Schlüsselfelder aktualisieren: Bezeichnung, Ausgabenobergrenzen pro Schlüssel, Modell-Allowlist, Guardrails, Inhaltsfilter und die Ratenlimits rpmLimit/tpmLimit (werden mit dem Schlüssel synchronisiert).
Parameter
clubID `string` (erforderlich) keyHash `string` (erforderlich)Endpunkt
PATCH /api/clubs/{clubID}/ai-credits/keys/{keyHash}
Beispielanfrage
curl -X PATCH https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/keys/{keyHash} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Inferenzprotokolle pro Anfrage für die Einrichtung (live, nur Metadaten).
Parameter
clubID `string` (erforderlich) page `string` (optional) pageSize `string` (optional) status `string` (optional) model `string` (optional) provider `string` (optional) source `string` (optional) `key` oder `agent` keyHash `string` (optional) Auf einen einzelnen Schlüssel/Agent anhand seines PH-keyHash filtern. q `string` (optional) Freitextsuche über Anfrage-ID, Schlüssel-/Agent-Bezeichnung, Modell, Anbieter und Endbenutzer. minutes `string` (optional) Zeitfenster unter einem Tag (z. B. Live=1440); überschreibt startDate/endDate. startTs `string` (optional) Beginn des Zeitfensters in Epochensekunden (Zoom per Klick); überschreibt Minuten/Datumsangaben. endTs `string` (optional) Ende des Zeitfensters in Epochensekunden (Zoom per Klick); überschreibt Minuten/Datumsangaben.Endpunkt
GET /api/clubs/{clubID}/ai-credits/logs
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/logs \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Histogramm der Anfragen im Zeitverlauf für die Protokollansicht. Dieselben Filter wie bei der Listenroute, jedoch serverseitig in Zeitblöcke aggregiert (Anzahl Erfolge/Fehler), sodass die Antwort unabhängig vom Protokollvolumen sehr klein bleibt. Die Blockgröße wird automatisch für die Zeitspanne gewählt.
Parameter
clubID `string` (erforderlich) status `string` (optional) model `string` (optional) provider `string` (optional) source `string` (optional) keyHash `string` (optional) q `string` (optional) minutes `string` (optional) startDate `string` (optional) endDate `string` (optional) startTs `string` (optional) endTs `string` (optional)Endpunkt
GET /api/clubs/{clubID}/ai-credits/logs/histogram
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/logs/histogram \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Nutzungsanalysen in Zeitblöcken + Summen pro Modell für einen Zeitraum (live).
Parameter
clubID `string` (erforderlich) range `string` (optional) 24h | 7 | 30 | 90 | year | all (wird ignoriert, wenn startDate/endDate angegeben sind) startDate `string` (optional) endDate `string` (optional) groupBy `string` (optional) model (Standard) | key | source | provider | status – Dimension für Zeitblöcke + Gruppen subgroupBy `string` (optional) optionale zweite Dimension, die unter jeder Gruppe verschachtelt ist (Explore) keyHash `string` (optional) Detailfilter – auf einen einzelnen Schlüssel/Agent beschränken model `string` (optional) Detailfilter – auf ein einzelnes Modell beschränken provider `string` (optional) source `string` (optional) compare `string` (optional) auf "prev" setzen, um zusätzlich groupsPrev zurückzugeben (unmittelbar vorhergehender Zeitraum gleicher Länge)Endpunkt
GET /api/clubs/{clubID}/ai-credits/stats
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/stats \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Täglicher Aktivitätskalender über das rollierende letzte Jahr (im GitHub-Stil, ca. 53 Wochen).
Parameter
clubID `string` (erforderlich)Endpunkt
GET /api/clubs/{clubID}/ai-credits/activity
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/activity \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Die hinterlegte Karte für die SaaS-Abrechnung belasten, um vorausbezahltes Model Router-Guthaben aufzuladen.
Parameter
clubID `string` (erforderlich) body `object` (optional)Endpunkt
POST /api/clubs/{clubID}/ai-credits/topup
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/topup \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Eine Aufladung abschließen, nachdem das Applet die 3DS-Authentifizierung abgeschlossen hat.
Parameter
clubID `string` (erforderlich)Endpunkt
POST /api/clubs/{clubID}/ai-credits/topup/confirm
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/topup/confirm \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Übersicht über die hinterlegte Karte für die SaaS-Abrechnung, die bei Aufladungen bzw. automatischer Aufladung belastet wird.
Parameter
clubID `string` (erforderlich)Endpunkt
GET /api/clubs/{clubID}/ai-credits/payment-method
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/payment-method \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Buchungen der Einrichtung, neueste zuerst. Optional nach Typ gefiltert (z. B. `types=topup,adjustment` für den Verlauf der Geldbewegungen oder `types=charge-reconcile` mit `from`/`to` für die Nutzungsabzüge eines Monats).
Parameter
clubID `string` (erforderlich) limit `integer` (optional) Maximale Anzahl Zeilen (Standard 50, maximal 200) types `string` (optional) Kommagetrennte Transaktionstypen (topup, charge-reconcile, refund, adjustment, trueup-shortfall) from `integer` (optional) Nur Transaktionen mit createdAt >= from (Unix-Sekunden) to `integer` (optional) Nur Transaktionen mit createdAt <= to (Unix-Sekunden)Endpunkt
GET /api/clubs/{clubID}/ai-credits/transactions
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/transactions \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Unterschiedliche Monate im Format `YYYY-MM` (UTC, neueste zuerst), die mindestens eine Transaktion der angeforderten Typen enthalten. Speist die datenbasierten Dropdown-Filter für Jahr/Monat, sodass die Oberfläche nur Zeiträume anbietet, für die tatsächlich Daten vorliegen.
Parameter
clubID `string` (erforderlich) types `string` (optional) Kommagetrennte Transaktionstypen (topup, charge-reconcile, refund, adjustment, trueup-shortfall)Endpunkt
GET /api/clubs/{clubID}/ai-credits/transactions/available-periods
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/transactions/available-periods \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gebrandeter PDF-Zahlungsbeleg für eine einzelne Model Router-Transaktion.
Parameter
clubID `string` (erforderlich) txId `string` (erforderlich)Endpunkt
GET /api/clubs/{clubID}/ai-credits/transactions/{txId}/receipt.pdf
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/transactions/{txId}/receipt.pdf \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Paket gebrandeter PDF-Zahlungsbelege für die ausgewählten Aufladungstransaktionen als ZIP. Jede ID muss eine Aufladung der Einrichtung sein – Nutzungsabzüge und administrative Korrekturen haben keine Belege und werden abgelehnt.
Parameter
clubID `string` (erforderlich) ids `string` (erforderlich) Kommagetrennte Transaktions-IDs (maximal 50)Endpunkt
GET /api/clubs/{clubID}/ai-credits/transactions/receipts.zip
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/transactions/receipts.zip \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Zusammenfassungen der Nutzungsabzüge der Einrichtung pro Kalendermonat (UTC), neueste zuerst. Der aktuelle Monat ist immer enthalten und mit `isCurrentMonth` gekennzeichnet (Monat bis heute).
Parameter
clubID `string` (erforderlich) months `integer` (optional) Rückblickzeitraum in Monaten (Standard 12, maximal 24; wird ignoriert, wenn `year` gesetzt ist) year `integer` (optional) Zusammenfassungen auf ein UTC-Kalenderjahr beschränken (z. B. 2026)Endpunkt
GET /api/clubs/{clubID}/ai-credits/usage-statements
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/usage-statements \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gebrandete monatliche Nutzungsaufstellung als PDF – eine Zusammenfassung der Nutzungsabzüge des Monats (tägliche Zwischensummen + Gesamtsumme). Ausdrücklich keine Rechnung und kein Beleg; durch Nutzungsabzüge wird keine Zahlung eingezogen.
Parameter
clubID `string` (erforderlich) month `string` (erforderlich) UTC-Kalendermonat, `YYYY-MM`Endpunkt
GET /api/clubs/{clubID}/ai-credits/usage-statements/{month}/statement.pdf
Beispielanfrage
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"
Antwort
{}
Einzelposten der Nutzungsabzüge eines Monats als CSV (Transaktions-ID, UTC-Zeitstempel, Betrag, Saldo danach, Momentaufnahme der Gesamtausgaben) – der Detailexport, der mit der Gesamtsumme der Monatsaufstellung übereinstimmt.
Parameter
clubID `string` (erforderlich) month `string` (erforderlich) UTC-Kalendermonat, `YYYY-MM`Endpunkt
GET /api/clubs/{clubID}/ai-credits/usage-statements/{month}/detail.csv
Beispielanfrage
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"
Antwort
{}
Übersicht über Nutzung/Ausgaben der Einrichtung (live plus abgeglichenes Buchungsjournal).
Parameter
clubID `string` (erforderlich) tz `string` (optional) IANA-Zeitzone des Betrachters – Ersatzwert für Tages- und Monatsfenster der Ausgaben, wenn für die Einrichtung keine Zeitzonendaten vorliegen.Endpunkt
GET /api/clubs/{clubID}/ai-credits/usage
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/usage \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Ordnet ein AI Edge Processor-Gerät einem Club zu bzw. aktualisiert die Zuordnung
Parameter
body `string` (erforderlich) JSON-Objekt zum Aktualisieren der Registrierung eines AI Edge Processor-Geräts.Endpunkt
POST /api/ai-edge-processor/devices
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/ai-edge-processor/devices \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Ordnet ein AI Edge Processor-Gerät einem Club zu. Löst das Gerät vorrangig über Metadaten auf (ein aktueller Heartbeat hat Vorrang), ergänzt die Registrierungszeile, falls sich das Gerät nie selbst registriert hat, und bereinigt veraltete Registrierungszeilen, die von neu bereitgestellter Hardware zurückgeblieben sind.
Parameter
body `string` (erforderlich) JSON-Objekt zum Aktualisieren der Registrierung eines AI Edge Processor-Geräts.Endpunkt
POST /api/ai-edge-processor/devices/associate
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/ai-edge-processor/devices/associate \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste der bbox-Upload-Datensätze eines Clubs zurück
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten.Endpunkt
GET /api/cctv/bbox-timeline/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/bbox-timeline/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Suchindex der Kameradatenbank
Leitet den öffentlichen Suchindex camera-db der Dokumentation weiter (Hersteller, Serien, Modelle, Aliasse), den der Dialog „Find my camera“ beim Hinzufügen von Netzwerkkameras verwendet. Wird serverseitig 12 Stunden zwischengespeichert.
Endpunkt
GET /api/cctv/camera-db/search-index
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/camera-db/search-index \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Herstellervorlagen der Kameradatenbank
Leitet die RTSP-URL-Vorlagen und Standardwerte eines einzelnen Herstellers aus der öffentlichen Kameradatenbank der Dokumentation weiter. Der Slug wird validiert, um Path Traversal zu verhindern. Wird serverseitig 12 Stunden zwischengespeichert.
Parameter
slug `string` (erforderlich) Slug des Herstellers (z. B. hikvision)Endpunkt
GET /api/cctv/camera-db/manufacturers/{slug}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/camera-db/manufacturers/{slug} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste der Check-in-Daten einer Einrichtung zurück
Parameter
club `string` (erforderlich) Interne ID des Clubs bzw. der Einrichtung, auf den bzw. die Sie zugreifen möchten. startDate `string` (optional) Startdatum im Format YYYY-MM-DD endDate `string` (optional) Enddatum im Format YYYY-MM-DD timezone `string` (optional) Zeitzone für die Auslegung der Datumsangaben (Standard: Australia/Brisbane) nextToken `string` (optional) Paginierungstoken zum Abrufen der nächsten SeiteEndpunkt
GET /api/cctv/check-ins/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/check-ins/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Konfiguration für das Frontend bzw. die Oberfläche der Videoüberwachung abrufen
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten.Endpunkt
GET /api/cctv/config/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/config/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Konfiguration der Inhaltsauslieferung für die Videoüberwachung abrufen
Gibt die Inhaltsdomain zurück, über die Videoüberwachungs-Clients Medien-Assets auflösen. Die Domain wird über die Umgebungsvariable CONTENT_DOMAIN gesteuert, ersatzweise gilt ein von der Stage abhängiger Standard (Produktion liefert /cctv aus, andere Stages /cctv-stg).
Endpunkt
GET /api/cctv/content-config
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/content-config \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Konfiguration für das Frontend bzw. die Oberfläche der Videoüberwachung ändern
Parameter
body `object` (erforderlich) JSON-Objekt des neuen Konfigurationsblocks, der dem System hinzugefügt werden soll.Endpunkt
PUT /api/cctv/config/:club/:section
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/cctv/config/:club/:section \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste der verfügbaren Bucket-Regionen für die Konfiguration des Speicheranbieters der Videoüberwachung zurück
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten.Endpunkt
GET /api/cctv/bucket-region/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/bucket-region/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Sammlung nicht identifizierter Gesichter zurücksetzen
Setzt die CompreFace-Sammlung nicht identifizierter Personen der Einrichtung zurück, indem alle Subjekte gelöscht werden. Personendatensätze in DynamoDB, Gesichtserkennungen und Zeitachsenblöcke in OpenSearch sind davon NICHT betroffen. Es werden nur die zugrunde liegenden Gesichtserkennungsdaten gelöscht. Neue Schattenprofile werden automatisch erstellt, sobald das System neue Kameraerkennungen verarbeitet.
Parameter
facilityId `string` (erforderlich)Endpunkt
DELETE /api/cctv/config/{facilityId}/unidentified-collection
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/config/{facilityId}/unidentified-collection \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Informationen zur Sammlung nicht identifizierter Personen abrufen
Gibt die aktuelle Anzahl der Subjekte in der CompreFace-Sammlung nicht identifizierter Personen der Einrichtung zurück.
Parameter
facilityId `string` (erforderlich)Endpunkt
GET /api/cctv/config/{facilityId}/unidentified-collection-info
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/config/{facilityId}/unidentified-collection-info \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Fügt eine Netzwerkkamera (OEM-/IP-Kamera) über eine Stream-URL hinzu (RTSP, HTTP, HTTPS)
Parameter
body `string` (erforderlich) JSON-Objekt zum Hinzufügen einer Netzwerkkamera.Endpunkt
POST /api/cctv/devices/add-network-camera
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/add-network-camera \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Mehrere Netzwerkkameras zu einem Edge Processor hinzufügen
Registriert mehrere RTSP-/HTTP-Netzwerkkameras an einem Edge Processor und überträgt dann FEED_CONFIG einmalig, sodass das Gerät die Konfiguration nur ein einziges Mal neu lädt.
Parameter
body `object` (erforderlich)Endpunkt
POST /api/cctv/devices/add-network-cameras
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/add-network-cameras \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Ordnet ein Gerät einem Club zu bzw. aktualisiert die Zuordnung
Parameter
body `string` (erforderlich) JSON-Objekt zum Aktualisieren der Registrierung eines Videoüberwachungsgeräts.Endpunkt
POST /api/cctv/devices
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Ordnet ein Gerät einem Club zu
Parameter
body `string` (erforderlich) JSON-Objekt zum Aktualisieren der Registrierung eines Videoüberwachungsgeräts.Endpunkt
POST /api/cctv/devices/associate
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/associate \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Sendet eine MQTT-Anfrage an eine bestimmte Geräte-UUID und erwartet (über WebSocket) eine Antwort mit den verfügbaren Funktionen der Kamera.
Parameter
club `string` (erforderlich) Interne ID des Clubs, dem das abgefragte Gerät gehört. body `string` (erforderlich) JSON-Objekt der Aktualisierungsparameter.Endpunkt
POST /api/cctv/devices/list-camera-capabilities/{club}
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/list-camera-capabilities/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Geräteregistrierungen auflisten
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten.Endpunkt
GET /api/cctv/devices/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/devices/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Entfernt eine Netzwerkkamera, indem sie als gelöscht markiert und aus der FEED_CONFIG des Edge Processor entfernt wird
Parameter
club `string` (erforderlich) Interne ID des Clubs, dem das Gerät gehört. balenaUUID `string` (erforderlich) UUID der zu entfernenden Netzwerkkamera.Endpunkt
DELETE /api/cctv/devices/remove-network-camera/{club}/{balenaUUID}
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/devices/remove-network-camera/{club}/{balenaUUID} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Speichert alle konfigurierten Kamerafunktionen und wendet sie als Umgebungsvariable auf das Gerät an (über balena)
Parameter
club `string` (erforderlich) Interne ID des Clubs, dem das abgefragte Gerät gehört. body `string` (erforderlich) JSON-Objekt der Aktualisierungsparameter.Endpunkt
POST /api/cctv/devices/save-camera-capabilities/{club}
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/save-camera-capabilities/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Speichert eine Bewegungsmaske (sofern konfiguriert) für die Kamera und wendet sie als Umgebungsvariable auf das Gerät an (über balena)
Parameter
club `string` (erforderlich) Interne ID des Clubs, dem das abgefragte Gerät gehört. body `string` (erforderlich) JSON-Objekt der Kameramaske.Endpunkt
POST /api/cctv/devices/save-camera-mask/{club}
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/save-camera-mask/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Sendet einen bestimmten v4l2-Befehl (etwa für Helligkeit oder Kontrast) an das physische Gerät
Parameter
club `string` (erforderlich) Interne ID des Clubs, dem das abgefragte Gerät gehört. body `string` (erforderlich) JSON-Objekt der Aktualisierungsparameter.Endpunkt
POST /api/cctv/devices/set-camera-capability/{club}
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/set-camera-capability/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Stream-URL einer Netzwerkkamera testen
Sendet einen Testbefehl an einen Edge Processor, um eine Kamera-Stream-URL mit ffprobe zu validieren
Anfragetext
Endpunkt
POST /api/cctv/devices/test-stream
Beispielanfrage
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 '{}'
Antwort
{}
Löscht einen einzelnen Gesichtserkennungsdatensatz dauerhaft aus der Datenbank. Wird verwendet, um falsch zugeordnete oder fehlerhafte Track-Einträge aus dem Aktivitätsprotokoll einer Person zu entfernen.
Parameter
club `string` (erforderlich) fdID `string` (erforderlich)Endpunkt
DELETE /api/cctv/face-detections/:club/:fdID
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/face-detections/:club/:fdID \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste der Gesichtserkennungsdaten einer Person zurück
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten. personID `string` (erforderlich) ID der Person im GesichtsidentifizierungssystemEndpunkt
GET /api/cctv/face-detections/:club/:personID
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/face-detections/:club/:personID \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt Gesichtserkennungen zurück, die auf ein bestimmtes Personen-Ausschnittbild verweisen, abgefragt über den GSI personCropImage.
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten. personCropImage `string` (erforderlich) URL des Personen-Ausschnittbilds, die im Gesichtserkennungsdatensatz gespeichert ist. limit `string` (optional) Maximale Anzahl der zurückzugebenden Erkennungen. nextToken `string` (optional) Paginierungstoken aus einer vorherigen Antwort.Endpunkt
GET /api/cctv/face-detections-by-person-crop-image/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/face-detections-by-person-crop-image/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste der Gesichtserkennungsdaten eines Clubs zurück, gruppiert nach einem Zeitraum relativ zur aktuellen Zeit
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten.Endpunkt
GET /api/cctv/face-detections/:club/timeline
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/face-detections/:club/timeline \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste der Gesichtserkennungsdaten eines Clubs zurück
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten.Endpunkt
GET /api/cctv/face-detections/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/face-detections/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Zeitachsenblöcke der Gesichtserkennung in einer Einrichtung mit OpenSearch durchsuchen
Parameter
facilityId `string` (erforderlich) Interne ID der zu durchsuchenden Einrichtung timezone `string` (erforderlich) IANA-Zeitzone für die Datumsumrechnung (z. B. Pacific/Auckland) startDate `string` (optional) Filter für das Startdatum (YYYY-MM-DD), wird anhand der Zeitzone in startUnix umgerechnet endDate `string` (optional) Filter für das Enddatum (YYYY-MM-DD), wird anhand der Zeitzone in endUnix umgerechnet personId `string` (optional) Nach einer bestimmten Personen-ID filtern query `string` (optional) Freitextsuche (z. B. Name der Person) limit `string` (optional) Ergebnisse pro Seite (Standard 20, maximal 100) filters `string` (optional) JSON-codiertes Filterobjekt (z. B. {"matchType":"identified"}) sortBy `string` (optional) Feld für die Sortierung (startUnix, endUnix, created). Standard ist endUnix. page `string` (optional) Seitennummer für die Paginierung (Standard 1) sortOrder `string` (optional) Sortierrichtung (asc oder desc). Standard ist desc.Endpunkt
GET /api/cctv/search/face-detections/timeline-blocks/{facilityId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/search/face-detections/timeline-blocks/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste der Berichte über die Club-Einrichtung zurück
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten.Endpunkt
GET /api/cctv/facility/:club/reports
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/facility/:club/reports \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Heatmap-Generierung bei Bedarf auslösen. Ruft dieselbe Starter-Logik auf, die der geplante Cron verwendet, ermöglicht aber die Auswahl einer bestimmten Einrichtung, eines Datums/einer Uhrzeit und einer Reihe von Zeiträumen. Ohne Anfragetext aufgerufen, verhält sich der Endpunkt genau wie der Cron – er durchsucht alle infrage kommenden Einrichtungen und reiht jedes Gerät ein.
Anfragetext
Endpunkt
POST /api/cctv/heatmaps/generate
Beispielanfrage
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 '{}'
Antwort
{}
Ermittelt den Speicherort eines zusammengesetzten Heatmap-PNG mit rollierendem Zeitfenster für ein einzelnes Gerät. Gibt nur JSON-Metadaten zurück – die PNG-Daten liegen auf der Inhaltsdomain, das Frontend setzt die URL so zusammen: `${contentDomain}/cctv/${storageService}/${region}/${filePath}?s=${token}` Reihenfolge der Auflösung: 1. Treffer im DynamoDB-Index `composed#…` → sofortige Rückgabe (~10 ms). 2. Wasabi HEAD auf den deterministischen Cache-Schlüssel. Bei einem Treffer wird eine Backfill-Indexzeile geschrieben und das Ergebnis zurückgegeben. 3. Veralteter Ersatz: Für dieses Tupel (Gerät, Zeitraum, Stunde) existiert ein zusammengesetzter Datensatz, auch von einem anderen Datum. Wird sofort mit `cache: 'HIT-STALE'` zurückgegeben, damit das FE *irgendetwas* anzeigen kann. Eine neue Zusammensetzung wird asynchron gestartet. 4. Kalter Pfad: Es existiert überhaupt kein Datensatz. Die Compose-Lambda wird über `InvocationType: 'Event'` eingereiht und der Endpunkt gibt `202 { cache: 'PENDING' }` zurück. Das FE fragt regelmäßig ab, bis ein Datensatz vorliegt (in der Regel 3–5 Sekunden). Umgang mit dem heutigen Tag: Ist `endDate` das lokale „Heute“ der Einrichtung, liefert der Endpunkt stattdessen das PNG von gestern aus – die heutigen Abschnitte werden noch vom Starter-Cron geschrieben, und eine neue Zusammensetzung wäre unvollständig. Die Antwort gibt das angeforderte `endDate` zurück und enthält `endDateUsed` (= gestern). `cache`-Enum: - `HIT` – aus dem DDB-Index für das angeforderte Datum ausgeliefert. - `HIT-FALLBACK` – heute angefordert; Indexzeile von gestern ausgeliefert. - `HIT-BACKFILL` – kein Treffer in DDB, aber Wasabi hatte das PNG; die Zeile wurde gerade geschrieben. - `HIT-FALLBACK-BACKFILL` – Backfill beim Ersatz durch gestern. - `HIT-STALE` – kein Datensatz für das angeforderte Datum, aber ein Datensatz von einem anderen Datum für dieses Tupel; sofort ausgeliefert, eine neue Zusammensetzung wird im Hintergrund eingereiht. - `PENDING` – überhaupt kein Datensatz; die Zusammensetzung wurde eingereiht. Das FE sollte regelmäßig abfragen. Die Antwort ist `202 Accepted`, ohne `filePath`.
Parameter
facilityId `string` (erforderlich) deviceUUID `string` (erforderlich) Gerät, für das zusammengesetzt wird. Zusammensetzungen erfolgen pro Gerät. hour `integer` (erforderlich) Tagesstunde (0–23), die über den Rückblickzeitraum zusammengesetzt wird. endDate `string` (optional) Letztes Datum im Zeitfenster (YYYY-MM-DD). Standard ist heute (Zeitzone der Einrichtung). range `string` (optional) Rückblickzeitraum. Muss einer der zugelassenen Zeiträume sein. nocache `integer` (optional) Auf `1` setzen, um die Cache-Ebenen DDB + HEAD zu umgehen und eine neue Zusammensetzung zu erzwingen.Endpunkt
GET /api/cctv/heatmaps/hourly/{facilityId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/heatmaps/hourly/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Ermittelt, für welche Tagesstunden es `1h`-Abschnittsdatensätze für ein Gerät in einem rollierenden Rückblickzeitraum gibt. Das Frontend nutzt dies, um die Stundenauswahl neben der Datums- und Zeitraumauswahl zu füllen, bevor der Endpunkt für die Zusammensetzung (`/api/cctv/heatmaps/hourly/...`) aufgerufen wird. Beispiel: `GET /api/cctv/heatmaps/query-hourly/Birkdale?deviceUUID=abc123&endDate=2026-04-16&range=30d` Intern: eine DynamoDB-Bereichsabfrage auf `cctvheatmaps` (`sk BETWEEN 1h#{start}-00 AND 1h#{end}-23`), gruppiert nach Stunde. Gibt einen Eintrag pro Stunde mit mindestens einem Abschnitt zurück, einschließlich eines repräsentativen Referenz-JPEG (vom jüngsten Tag im Zeitfenster – die Referenz gilt pro Gerät und Tag).
Parameter
facilityId `string` (erforderlich) deviceUUID `string` (erforderlich) Abzufragendes Gerät. Stündliche Abschnitte gelten pro Gerät. endDate `string` (optional) Letztes Datum im Zeitfenster (YYYY-MM-DD). Standard ist heute (Zeitzone der Einrichtung). range `string` (optional) Rückblickzeitraum. Muss einer der zugelassenen Zeiträume sein.Endpunkt
GET /api/cctv/heatmaps/query-hourly/{facilityId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/heatmaps/query-hourly/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Vorab generierte Heatmap-Datensätze für eine Einrichtung abfragen. **Alle Datensätze für einen Zeitraumtyp:** - `/api/cctv/heatmaps/Birkdale?periodType=1y` - `/api/cctv/heatmaps/Birkdale?deviceUUID=abc123&periodType=1d` **Datumsbereich – ein einzelner Zeitraumtyp:** - `/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` **Datumsbereich – alle zutreffenden Zeitraumtypen (periodType weglassen):** - `/api/cctv/heatmaps/Birkdale?from=2026-03-01&to=2026-03-31` Gibt jährliche, halbjährliche, vierteljährliche usw. bis hin zu 6h-Datensätzen zurück, die sich mit dem angegebenen Bereich überschneiden. **Zeitpunkt – alle 9 Zeitraumtypen für ein Gerät:** - `/api/cctv/heatmaps/Birkdale?deviceUUID=abc123&date=2026-03-15T14:30` Gibt bis zu 9 Datensätze zurück (1y, 6m, 3m, 2m, 1m, 1w, 1d, 12h, 6h).
Parameter
facilityId `string` (erforderlich) Die Kennung der Einrichtung. deviceUUID `string` (optional) Ein bestimmtes Gerät abfragen. Ohne Angabe werden alle Geräte abgefragt (GSI). periodType `string` (optional) Auf einen einzelnen Zeitraumtyp filtern. Wird die Angabe bei from/to weggelassen, werden alle Typen abgefragt. from `string` (optional) Startdatum (yyyy-mm-dd). Muss zusammen mit `to` verwendet werden. to `string` (optional) Enddatum (yyyy-mm-dd). Muss zusammen mit `from` verwendet werden. date `string` (optional) Abfrage zu einem Zeitpunkt (yyyy-mm-dd oder yyyy-mm-ddTHH:mm). Erfordert deviceUUID. Gibt einen Datensatz pro Zeitraumtyp zurück.Endpunkt
GET /api/cctv/heatmaps/{facilityId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/heatmaps/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Miniaturansicht des Livestreams des Geräts abrufen
Parameter
club `string` (erforderlich) Interne ID des Clubs. deviceId `string` (erforderlich) Interne ID des Videoüberwachungsgeräts.Endpunkt
GET /api/cctv/livestream/:club/thumbnail/:deviceId
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/livestream/:club/thumbnail/:deviceId \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Dem Videoüberwachungssystem mitteilen, dass Sie einen Livestream ansehen werden
Parameter
club `string` (erforderlich) Interne ID des Clubs. deviceId `string` (erforderlich) Interne ID des Videoüberwachungsgeräts.Endpunkt
POST /api/cctv/livestream/:club/iswatching/:deviceId
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/cctv/livestream/:club/iswatching/:deviceId \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Abgleichstreffer genehmigen
Setzt den Trefferstatus auf bestätigt und speichert den Prüfenden.
Parameter
club `string` (erforderlich) matchId `string` (erforderlich)Endpunkt
POST /api/cctv/matching/{club}/detail/{matchId}/approve
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/cctv/matching/{club}/detail/{matchId}/approve \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Einzelnen Abgleichstreffer mit Besuchsdetails abrufen
Gibt den Trefferdatensatz und seine zeitliche Aufschlüsselung pro Besuch zurück.
Parameter
club `string` (erforderlich) matchId `string` (erforderlich)Endpunkt
GET /api/cctv/matching/{club}/detail/{matchId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/matching/{club}/detail/{matchId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Nicht zugeordnete Person manuell mit einem Mitglied verknüpfen
Ordnet eine personId der Videoüberwachung einem bestimmten Mitglied zu und setzt den Treffer auf bestätigt.
Parameter
club `string` (erforderlich) matchId `string` (erforderlich)Anfragetext
Endpunkt
POST /api/cctv/matching/{club}/detail/{matchId}/link
Beispielanfrage
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 '{}'
Antwort
{}
Abgleichstreffer einer Einrichtung auflisten
Gibt nach Status gefilterte Treffer seitenweise zurück.
Parameter
club `string` (erforderlich) status `string` (optional) limit `integer` (optional) nextToken `string` (optional)Endpunkt
GET /api/cctv/matching/{club}/list
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/matching/{club}/list \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Abgleichstreffer ablehnen
Setzt den Trefferstatus auf abgelehnt und speichert den Prüfenden.
Parameter
club `string` (erforderlich) matchId `string` (erforderlich)Endpunkt
POST /api/cctv/matching/{club}/detail/{matchId}/reject
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/cctv/matching/{club}/detail/{matchId}/reject \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Zusammenfassende Zahlen zum Abgleich abrufen
Gibt die Anzahl der Treffer der Einrichtung gruppiert nach Status zurück.
Parameter
club `string` (erforderlich) Einrichtungs-IDEndpunkt
GET /api/cctv/matching/{club}/summary
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/matching/{club}/summary \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Verknüpfung eines automatisch gelernten Profiltreffers aufheben
Setzt einen verknüpften Treffer wieder auf den Status abgelehnt zurück und leert autoLearnedFrom im Mitgliedsdatensatz.
Parameter
club `string` (erforderlich) matchId `string` (erforderlich)Anfragetext
Endpunkt
POST /api/cctv/matching/{club}/detail/{matchId}/unlink
Beispielanfrage
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 '{}'
Antwort
{}
Den Status eines laufenden Vorgangs „identifizierte Person anlegen/aktualisieren“ lesen (umfasst Erstellen und Bearbeiten). Liest die Zeile direkt aus der Tabelle `people-ops`, die cctv-rekognition-api gehört; kein Umweg über Lambda. Wird vom Videoüberwachungs-Frontend verwendet, um nach POST /api/cctv/people/{facility}/identified den Fortschritt abzufragen. Der Pfad liegt neben `/cctv/people/...` (nicht darunter verschachtelt), damit der Express-Router `operationId` nicht fälschlich als `:personID` in `/cctv/people/:club/:personID` erkennt. Siehe die Glob-Reihenfolge in createAPIRouter. Gibt einen Platzhalter `pending` zurück, solange die Lambda upsertIdentifiedPerson ihren ersten Stufeneintrag noch nicht geschrieben hat (Kaltstartphase). Der Polling-Hook im FE behandelt Platzhalter und pending gleich, sodass der Vertrag für Aufrufer stabil bleibt.
Parameter
operationId `string` (erforderlich)Endpunkt
GET /api/cctv/people-operations/{operationId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people-operations/{operationId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Fügt ein Gesichtsbild (aus einer vorhandenen Track-Erkennung) dem CompreFace-Erkennungssubjekt der Person hinzu und speichert eine Referenz in der Tabelle der Schattenfotos. Lädt das Bild NICHT zu Wasabi hoch – es liegt dort bereits als Aufnahme der Gesichtserkennung.
Parameter
club `string` (erforderlich) personID `string` (erforderlich) body `string` (erforderlich)Endpunkt
POST /api/cctv/people/:club/:personID/add-face
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/:club/:personID/add-face \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Schattenfotos zu einem Personendatensatz hinzufügen
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten. personID `string` (erforderlich) Datensatz-ID der Person body `string` (erforderlich) JSON-Objekt des neuen Konfigurationsblocks, der dem System hinzugefügt werden soll.Endpunkt
POST /api/cctv/people/:club/shadow-photos/:personID
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/:club/shadow-photos/:personID \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Schattenfotos einer Person abfragen
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten. personID `string` (erforderlich) Datensatz-ID der PersonEndpunkt
GET /api/cctv/people/:club/shadow-photos/:personID
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/:club/shadow-photos/:personID \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Entfernt einen Schattenfoto-Datensatz dauerhaft aus CCTVShadowPhotosTable und entfernt das zugehörige Gesicht aus CompreFace (sofern faceId gespeichert ist).
Parameter
club `string` (erforderlich) personID `string` (erforderlich) id `string` (erforderlich) Die ID des Schattenfoto-Datensatzes (Primärschlüssel)Endpunkt
DELETE /api/cctv/people/:club/shadow-photos/:personID/:id
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/people/:club/shadow-photos/:personID/:id \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Löscht Referenzen und zugehörige Rekognition-Datensätze anhand einer personID
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten. personID `string` (erforderlich) Eindeutige ID der Person in der Videoüberwachung.Endpunkt
DELETE /api/cctv/people/:club/:personID
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/people/:club/:personID \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt einen Personendatensatz eines Clubs zurück
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten. personID `string` (erforderlich) Datenbank-ID der Person.Endpunkt
GET /api/cctv/people/:club/:personID
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/:club/:personID \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Zugangszonen abrufen, die zum Mitgliedschaftsprofil einer Person passen
Ermittelt Mitgliedstyp, Tags und Mitgliedschaftstarife der Person und gibt dann die tatsächlichen Zugangszonen zurück (origin=membership-plan, nicht absorbiert), die den Ein- und Ausschlussregeln entsprechen. Die accessRestriction jeder Zone wird auf die Regeln reduziert, die auf die Person zutreffen. Kameras untergeordneter Zonen werden in die übergeordneten Zonen übernommen.
Parameter
club `string` (erforderlich) Interne ID der Einrichtung personID `string` (erforderlich) Personen-ID aus der Personentabelle der VideoüberwachungEndpunkt
GET /api/cctv/people/{club}/{personID}/allowed-zones
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/{club}/{personID}/allowed-zones \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt den aktuellen Status eines Zusammenführungsauftrags einschließlich der Ergebnisse pro Quelle zurück. Fragen Sie diesen Endpunkt alle 3–5 Sekunden ab, solange der Status IN_PROGRESS ist.
Parameter
club `string` (erforderlich) mergeJobID `string` (erforderlich)Endpunkt
GET /api/cctv/people/:club/merge-status/:mergeJobID
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/:club/merge-status/:mergeJobID \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Startet im Hintergrund die Zusammenführung mehrerer Profile nicht identifizierter Personen in ein verbleibendes Profil. Antwortet sofort mit 202 und einer mergeJobID. Fragen Sie den Fortschritt über /merge-status/:mergeJobID ab.
Parameter
club `string` (erforderlich) body `string` (erforderlich)Endpunkt
POST /api/cctv/people/:club/merge-unidentified
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/:club/merge-unidentified \
-H "x-api-key: YOUR_API_KEY"
Ein Gesicht zur Sperrlisten-Sammlung einer Einrichtung hinzufügen
Parameter
facilityId `string` (erforderlich) Interne ID der EinrichtungAnfragetext
Endpunkt
POST /api/cctv/people/{facilityId}/blacklist
Beispielanfrage
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 '{}'
Antwort
{}
Identifizierte Person in einer Einrichtung anlegen oder aktualisieren – erstellt einen neuen Datensatz oder aktualisiert einen vorhandenen. Leitet an die Lambda upsertIdentifiedPerson weiter, die den Personendatensatz schreibt, ein übergebenes Foto zu Wasabi hochlädt und das Gesicht in CompreFace neu indexiert. Ist `isNewRecord` true (Standard), führt die Lambda den Erstellungszweig aus (cctvPeople.save), und eine `personID` wird erzeugt, falls keine angegeben ist. Ist `isNewRecord` false, führt die Lambda den Aktualisierungszweig aus (cctvPeople.update) – `personID` ist dann erforderlich und muss einen vorhandenen Datensatz bezeichnen.
Parameter
facilityId `string` (erforderlich)Anfragetext
Endpunkt
POST /api/cctv/people/{facilityId}/identified
Beispielanfrage
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 '{}'
Die optionalen Partnerfelder aktualisieren, die für eine Einrichtung in die Personentabelle der Videoüberwachung synchronisiert werden.
Parameter
facilityId `string` (erforderlich) Interne ID der EinrichtungAnfragetext
Endpunkt
PUT /api/cctv/people/{facilityId}/sync-fields
Beispielanfrage
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 '{}'
Antwort
{}
Gibt eine Liste der Personendaten eines Clubs zurück
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten.Endpunkt
GET /api/cctv/people/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Personen in einer Einrichtung anhand eines Gesichtsbilds suchen. Ruft die Lambda imageFaceSearch von cctv-rekognition-api mit dem hochgeladenen base64-Bild und der Einrichtungs-ID aus dem Pfad auf. Gibt nach Rang sortierte Treffer sowie eine Zusammenfassung der DeepFace-Attribute zurück.
Parameter
club `string` (erforderlich) Einrichtungs- / Club-ID body `string` (erforderlich)Endpunkt
POST /api/cctv/people/{club}/search-by-face
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/{club}/search-by-face \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Personen in einer Einrichtung mit OpenSearch suchen
Parameter
facilityId `string` (erforderlich) Interne ID der zu durchsuchenden Einrichtung query `string` (optional) Suchbegriff (z. B. Name) page `string` (optional) Seitennummer (Standard 1) limit `string` (optional) Ergebnisse pro Seite (Standard 20, maximal 100) filters `string` (optional) JSON-codiertes Filterobjekt (z. B. {"membershipStatus":"active"}) sortBy `string` (optional) Feld für die Sortierung (created, lastName, firstName, membershipUpdatedOn). Standard ist created. sortOrder `string` (optional) Sortierrichtung (asc oder desc). Standard ist desc.Endpunkt
GET /api/cctv/search/people/:facilityId
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/search/people/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Aktualisiert Gesichtserkennungseinträge mit einer neuen personID und ordnet Rekognition-Datensätze zu
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten. body `string` (erforderlich) JSON-Objekt des neuen Konfigurationsblocks, der dem System hinzugefügt werden soll.Endpunkt
POST /api/cctv/people/:club/validate
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/:club/validate \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt ein Objekt mit allen verfügbaren Filtern für die Videoüberwachungsaufnahmen eines Clubs zurück
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten.Endpunkt
GET /api/cctv/recordings/filters/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/filters/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Aufnahme streamen.
Endpunkt
GET /api/cctv/recordings/:club/:dir/:filename
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/:club/:dir/:filename \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Informationen zur Aufnahme aktualisieren.
Endpunkt
PUT /api/cctv/recordings/:club/:dir/:filename
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/cctv/recordings/:club/:dir/:filename \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Zusammenfassung der Videoüberwachungsaufnahmen eines Clubs zurück
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten.Endpunkt
GET /api/cctv/recordings/:club/summary
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/:club/summary \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste der Videoüberwachungsaufnahmen eines Clubs für einen Zeitraum relativ zur aktuellen Zeit zurück
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten.Endpunkt
GET /api/cctv/recordings/:club/timeline
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/:club/timeline \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste der Videoüberwachungsaufnahmen eines Clubs zurück
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten.Endpunkt
GET /api/cctv/recordings/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Aufnahmen werden nach einem festgelegten Zeitraum automatisch gelöscht; verwenden Sie diese Funktion, um Aufnahmen aufzubewahren
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten.Endpunkt
POST /api/cctv/recordings/:club/:action
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/cctv/recordings/:club/:action \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Berichts-Momentaufnahmen einer Einrichtung innerhalb eines Datumsbereichs durchsuchen
Parameter
facilityId `string` (erforderlich) Interne ID der Einrichtung startDate `string` (erforderlich) Filter für das Startdatum (YYYY-MM-DD) endDate `string` (erforderlich) Filter für das Enddatum (YYYY-MM-DD) deviceIds `string` (optional) Kommagetrennte Liste der Kamera-/Geräte-IDs, nach denen gefiltert wird view `string` (optional) Alternative Berichtsansicht, die berechnet werden soll (wird an die Berichts-Lambda weitergeleitet)Endpunkt
GET /api/cctv/reports/search-report-snapshots/{facilityId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/reports/search-report-snapshots/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Vektorsuche in den indexierten Videoüberwachungsmedien einer Einrichtung. Antwortet mit einem text/event-stream, der von der Lambda searchAnything weitergeleitet wird, damit der Client den Fortschritt anzeigen kann, während ein kalter Container den Encoder lädt. Die Ereignisse sind `status`, danach entweder `result` oder `error`. Es gibt drei Arten der Abfrage, zwei davon über dieses Verb. Senden Sie `query`, um per Freitext zu suchen. Senden Sie `seedIndex` + `seedKey`, um anhand eines Beispiels zu suchen – „mehr davon“ – mit dem Vektor einer bereits im Index vorhandenen Zeile; so finden Sie weitere Ergebnisse wie das, das der Benutzer gerade ansieht. Um mit einem Bild des Benutzers zu suchen, senden Sie die Bytes stattdessen per `POST` an denselben Pfad. Senden Sie Wörter zusammen mit einem Bild, um das eine durch das andere einzugrenzen: **Text filtert, Bild bestimmt den Rang**. Die Kandidaten stammen vom Seed, die Wörter entscheiden, welche davon übrig bleiben, und die visuelle Ähnlichkeit bestimmt die Reihenfolge – die Ergebnisse sehen also weiterhin wie das Bild aus, und die Wörter sortieren die nicht passenden aus. Beides wird nie zu einem Vektor vermischt, weshalb `queryKind` bei einer kombinierten Suche `similar` bleibt; ob ein Textfilter angewendet wurde, erkennen Sie am Vorhandensein von `query` im Ergebnis. Kombinierte Suchen liefern recht häufig nichts zurück; behandeln Sie das als eigenes Ergebnis: `perIndex.
Parameter
facilityId `string` (erforderlich) Interne ID der zu durchsuchenden Einrichtung query `string` (optional) Freitextbeschreibung dessen, wonach gesucht werden soll. Erforderlich, sofern nicht warm=1 oder ein Seed gesendet wird. In Kombination mit einem Seed wird der Text nicht mehr bewertet, sondern dient als Filter über die Kandidaten des Seeds und verwirft diejenigen, deren Textbewertung unter dem Relevanzschwellenwert des Index liegt. seedIndex `string` (optional) Anhand eines Beispiels statt per Text suchen: der Index, in dem sich die Seed-Zeile befindet (person-crops, recording-frames, timelapse-frames). Dies ist der `index` des Treffers, auf den der Benutzer geklickt hat. Muss zusammen mit seedKey gesendet werden. seedKey `string` (optional) Der `key` der Seed-Zeile, unverändert aus dem Treffer übernommen. Der Seed wird aus seinen eigenen Ergebnissen ausgeschlossen – bei einer Aufnahme betrifft das den ganzen Clip, da dessen übrige Frames 2s auseinanderliegen und nahezu identisch sind. seedFrameId `string` (optional) Erforderlich, wenn seedIndex recording-frames ist: Dieser Index speichert eine Zeile pro erfasstem Frame, und alle teilen sich den Schlüssel des Clips, sodass der Schlüssel allein einen Clip und keinen Moment bezeichnet. Senden Sie die `frameId` des Treffers. Ältere Zeilen haben keine – senden Sie stattdessen seedOffsetMs. seedOffsetMs `string` (optional) Ersatzkennung des Frames für recording-frames-Seeds, deren Zeile älter als `frame_id` ist. Senden Sie den `offsetMs` des Treffers. Wird ignoriert, wenn seedFrameId angegeben ist. warm `string` (optional) Einen Lambda-Container vorwärmen, ohne eine Suche auszuführen. Rufen Sie dies beim Laden der Seite auf. warmTarget `string` (optional) Welchen Encoder `warm` lädt: `text` (Standard), `image` oder `both`. Der Vision-Tower umfasst 355 MB gegenüber 283 MB beim Text-Tower, daher ist sein Vorwärmen optional – fordern Sie `image` erst an, wenn der Benutzer tatsächlich ein Bild bereitgestellt hat, nicht beim Laden der Seite. index `string` (optional) Kommagetrennte zu durchsuchende Datensätze: person-crops, recording-frames, timelapse-frames. Die Ergebnisse werden zu einer nach Bewertung sortierten Liste zusammengeführt. Standardmäßig werden alle drei durchsucht; geben Sie eine explizite Liste an, um die Suche einzugrenzen. timelapse-frames deckt Kameras ab, die nichts aufzeichnen und nur ein Bild pro Minute liefern; sein Relevanzschwellenwert ist noch nicht kalibriert. model `string` (optional) Encoder für die Abfrage. Muss dem Encoder entsprechen, mit dem der Datensatz indexiert wurde. limit `string` (optional) Anzahl der Ergebnisse pro Index (Standard 50, maximal 100) – keine Gesamtzahl, eine Suche über alle drei Indizes kann also bis zum Dreifachen zurückgeben. Bei Aufnahmen werden Clips statt passender Frames gezählt. from `string` (optional) Nur Medien berücksichtigen, die zu oder nach diesem Zeitpunkt aufgenommen wurden, in Millisekunden seit der Epoche. Hinweis: Dies ist die Aufnahmezeit, nicht die Upload-Zeit. to `string` (optional) Nur Medien berücksichtigen, die vor diesem Zeitpunkt (ausschließlich) aufgenommen wurden, in Millisekunden seit der Epoche. cameraId `string` (optional) Kommagetrennte balenaUUIDs der Kameras, auf die eingegrenzt wird – das Feld `balenaUUID` jedes von /api/cctv/recordings/filters/:club zurückgegebenen Eintrags. Der bevorzugte Kamerafilter: Jeder Index speichert diesen Wert identisch, sodass ein Filter alle eingrenzt. Hinweis: Nur Ausschnitte, deren Verknüpfung mit der Gesichtserkennung aufgelöst wurde, enthalten ihn (derzeit ca. 1 %); eine Eingrenzung der Ausschnitte nach Kamera liefert daher wenige oder keine Ergebnisse, bis das Backfill der Ausschnitte gelaufen ist. Aufnahmen sind vollständig befüllt und werden exakt gefiltert. camera `string` (optional) Kommagetrennte Kameranamen, auf die eingegrenzt wird. Wirkt praktisch nur bei Aufnahmen: person-crops speichert in jeder Zeile einen leeren Kameranamen, sodass jeder Wert hier alle Ausschnitte ausschließt. Verwenden Sie bevorzugt cameraId. cameraGroup `string` (optional) Kommagetrennte Kameragruppen, auf die eingegrenzt wird. Bei allen Aufnahmen befüllt, aber nur bei ca. 1 % der Ausschnitte, aus demselben Grund wie bei cameraId. minScore `string` (optional) Den Kosinus-Schwellenwert pro Index überschreiben, der Rauschen herausfiltert. In der Produktion weglassen; jeder Index hat einen kalibrierten Standardwert (und einen separaten, nicht kalibrierten für Seed-Suchen). Übergeben Sie 0, um bei der Fehlersuche zur Relevanz die ungefilterten nächsten Nachbarn zu sehen.Endpunkt
GET /api/cctv/search/anything/:facilityId
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/search/anything/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Mit einem Bild des Benutzers suchen statt mit Wörtern oder einem bereits angezeigten Ergebnis. In allen anderen Punkten identisch mit GET – dieselben Abfrageparameter, derselbe Ereignisstream, dieselbe Ergebnisstruktur –, daher wird hier nur dokumentiert, was sich unterscheidet. Senden Sie die **ursprünglichen Dateibytes** als Anfragetext mit einem Content-Type `image/*`. Skalieren, beschneiden oder codieren Sie das Bild nicht vorher im Browser neu: Der Server bildet eine ganz bestimmte Skalierung nach (ein Stauchen auf 256x256 mit einem geglätteten bilinearen Kernel), mit der die indexierten Vektoren erstellt wurden, und die Canvas-Skalierung verwendet eine andere. Gemessen liegt diese Abweichung etwa 0,93 Kosinus von der richtigen Antwort entfernt, also weiter als zwei tatsächlich verschiedene Bilder – die Ergebnisse kommen dann plausibel, aber falsch sortiert und ohne Fehlermeldung zurück. Begrenzt auf 4 MB, was eine Transport- und keine Qualitätsbeschränkung ist: Die Bytes werden in der Nutzlast des Lambda-Aufrufs übertragen, die auf 6 MB begrenzt ist, und base64 vergrößert sie um ein Drittel. Die Ergebnisse werden Bild-zu-Bild bewertet, daher ist `queryKind` `image`, und die Bewertungen liegen auf derselben, deutlich höheren Skala wie bei einer Seed-Suche – nie vergleichbar mit Textbewertungen. Rechnen Sie damit, dass sie etwas *unter* einer gleichwertigen Seed-Suche liegen: Der Vektor eines Seeds wurde vom Gerät selbst geschrieben, ein Upload wird hier dagegen von einer anderen Engine neu codiert und landet dadurch einige Hundertstel neben der Stelle, an die das Gerät ihn gesetzt hätte. Gemessen ist die Qualität der Ergebnisse trotzdem gleichwertig; es ist nur nicht exakt dieselbe Menge. Das Hinzufügen von `query` filtert die Ergebnisse nach diesen Wörtern, genau wie bei einem Seed. Das gleichzeitige Senden eines Seeds *und* eines Bildes wird abgelehnt: Beide wären das, was bewertet wird, daher ergibt das Paar keinen Sinn. Dies ist die teuerste Anfrage, die der Endpunkt bedient. Ein hochgeladenes Bild lädt den Vision-Tower, und mit Wörtern wird zusätzlich der Text-Tower geladen – beides in einem kalten Container. `warm=1&warmTarget=image`, sobald der Benutzer ein Bild bereitstellt, nimmt dies aus dem kritischen Pfad.
Parameter
facilityId `string` (erforderlich) Interne ID der zu durchsuchenden Einrichtung body `string` (erforderlich) Unveränderte Bildrohdaten, maximal 4 MB query `string` (optional) Optionale Wörter zur Eingrenzung der Bildergebnisse; Treffer, deren Textbewertung unter dem Relevanzschwellenwert des Index liegt, werden verworfen.Endpunkt
POST /api/cctv/search/anything/:facilityId
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/cctv/search/anything/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt Speicherdetails und weitere Kennzahlen zur Videoüberwachung eines Clubs zurück
Endpunkt
GET /api/cctv/storage-details/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/storage-details/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste der Zeitraffer-Upload-Datensätze eines Clubs zurück
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten.Endpunkt
GET /api/cctv/timelapse/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/timelapse/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Benutzeraktionen auflisten, die im Frontend bzw. in der Oberfläche der Videoüberwachung an Aufnahmen ausgeführt wurden
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten.Endpunkt
GET /api/cctv/ui/actions/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/ui/actions/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Eine Benutzeraktion protokollieren, die im Frontend bzw. in der Oberfläche der Videoüberwachung an Aufnahmen ausgeführt wurde
Parameter
body `string` (erforderlich) JSON-Objekt des neuen Konfigurationsblocks, der dem System hinzugefügt werden soll.Endpunkt
POST /api/cctv/ui/actions/:club
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/cctv/ui/actions/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Benutzertoken für das Frontend bzw. die Oberfläche der Videoüberwachung abrufen
Parameter
club `string` (erforderlich) Club-IDEndpunkt
GET /api/cctv/ui/token/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/ui/token/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Token für temporären Zugriff oder Gastzugriff generieren
Parameter
club `string` (erforderlich) Die eindeutige Kennung des Clubs. body `string` (erforderlich) JSON-Objekt mit den Details des auszustellenden Tokens.Endpunkt
POST /api/cctv/token/{club}
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/cctv/token/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{
"accessID": "00000000-0000-0000-0000-000000000014"
}
Gibt eine Liste der Datensätze zu Token für temporären Zugriff oder Gastzugriff zurück
Parameter
club `string` (erforderlich) Die eindeutige Kennung des Clubs.Endpunkt
GET /api/cctv/token/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/cctv/token/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Zugriffstoken über die Zugriffs-ID abrufen
Parameter
accessID `string` (erforderlich) ID des Token-Datensatzes in der Datenbank.Endpunkt
POST /guest/cctv/token/:accessID
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/guest/cctv/token/:accessID \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Zugangszeiten einer Einrichtung löschen
Parameter
facilityId `string` (erforderlich) body `object` (erforderlich) JSON-Objekt der neuen Zugangszeiten.Endpunkt
DELETE /api/ai/computer-vision/access-hours/:facilityId
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/ai/computer-vision/access-hours/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste der Zugangszeiten einer Einrichtung zurück
Parameter
facilityId `string` (erforderlich)Endpunkt
GET /api/ai/computer-vision/access-hours/:facilityId
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/ai/computer-vision/access-hours/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Aktualisiert oder erstellt Zugangszeiten einer Einrichtung
Parameter
facilityId `string` (erforderlich) body `object` (erforderlich) JSON-Objekt der neuen Zugangszeiten.Endpunkt
POST /api/ai/computer-vision/access-hours/:facilityId
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/ai/computer-vision/access-hours/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Zugangszone einer Einrichtung löschen
Parameter
facilityId `string` (erforderlich) body `object` (erforderlich) JSON-Objekt der neuen Zugangszone.Endpunkt
DELETE /api/ai/computer-vision/access-zones/:facilityId
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/ai/computer-vision/access-zones/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste der Zugangszonen einer Einrichtung zurück
Parameter
facilityId `string` (erforderlich)Endpunkt
GET /api/ai/computer-vision/access-zones/:facilityId
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/ai/computer-vision/access-zones/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Aktualisiert oder erstellt eine Zugangszone einer Einrichtung
Parameter
facilityId `string` (erforderlich) body `object` (erforderlich) JSON-Objekt der neuen Zugangszone.Endpunkt
POST /api/ai/computer-vision/access-zones/:facilityId
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/ai/computer-vision/access-zones/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt die Vereinigung aller Admin-Modul-IDs über Marken und Einrichtungen einer Organisation zurück, aufgefüllt als Modulobjekte.
Parameter
organisationId `string` (erforderlich) Organisations-IDEndpunkt
GET /api/organisations/{organisationId}/admin-modules
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/organisations/{organisationId}/admin-modules \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste aller Organisationen zurück
Parameter
includeBrands `string` (optional) Der Organisation zugeordnete Marken einbeziehen includeFacilities `string` (optional) Der Organisation zugeordnete Einrichtungen einbeziehen includeRegions `string` (optional) Der Organisation zugeordnete Regionen einbeziehenEndpunkt
GET /api/organisations
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/organisations \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Eine einfache KI-Hilfsfunktion, die den Inhalt eines Supporttickets analysiert und Vorschläge auf Basis verfügbarer Themen sowie vorgeschlagener Algolia-Suchthemen erstellt.
Parameter
messageBody `string` (erforderlich) Inhalt der zu sendenden Nachricht topicData `string` (erforderlich) JSON-Objekt/-Array der von osTicket (Ticket-/Supportsystem) zurückgegebenen topicData facilityId `string` (optional) Die interne ID des Clubs, die benötigt wird, um den richtigen Algolia-Index für die Suche zu bestimmen.Endpunkt
PUT /api/ai/helpers/analyse-support-ticket
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/ai/helpers/analyse-support-ticket \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Eine einfache API zur Bildgenerierung
Parameter
type `string` (erforderlich) Art des zu generierenden Bildes name `string` (erforderlich) Bildname maxSize `string` (optional) Optionale maximale Antwortgröße, z. B. 200KB, 1MB oder eine reine Byteanzahl. Das Bild wird entsprechend verkleinert/komprimiert.Endpunkt
PUT /api/ai/images/:type/:name
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/ai/images/:type/:name \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Einfache LLM-Abfrage
Schlanker Endpunkt für einfache, zustandslose LLM-Abfragen. Verwendet ein günstiges Modell ohne Reasoning (gpt-4o-mini) mit strikten Token-Limits. Kein Gesprächsverlauf, keine Tools, kein Streaming – nur Prompt rein, Text raus.
Anfragetext
Endpunkt
POST /api/ai/llm/query
Beispielanfrage
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 '{}'
Antwort
{}
Gibt die Algolia-Konfiguration einschließlich Indexname, App-ID und API-Schlüssel zurück.
Parameter
facilityId `string` (erforderlich)Endpunkt
GET /api/facilities/{facilityId}/algolia/config
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/algolia/config \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Initialisiert den Algolia-Index für Marketing-Druckmaterialien
Parameter
organisationId `string` (erforderlich)Endpunkt
PUT /api/algolia/index
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/algolia/index \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Nach Marketing-Druckmaterialien suchen
Anfragetext
Endpunkt
POST /algolia/search-marketing-print
Beispielanfrage
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 '{}'
Antwort
{}
Nach Marketing-Druckmaterialien suchen
Parameter
club `string` (optional) Club-ID searchTerms `string` (optional) Suchbegriffe algoliaArgs `object` (optional) Zusätzliche Algolia-SuchargumenteEndpunkt
GET /algolia/search-marketing-print
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/algolia/search-marketing-print \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Marketing-Druckobjekte eines bestimmten Clubs in einem Schritt aktualisieren
Endpunkt
POST /algolia/bulk-update-marketing-print
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/algolia/bulk-update-marketing-print \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Ruft Marketing-Druckmaterialien aus Algolia ab.
Parameter
organisationId `string` (erforderlich) search `string` (optional) limit `string` (optional) brand `string` (optional) tag `string` (optional)Endpunkt
GET /api/algolia/marketing/assets
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/algolia/marketing/assets \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Initialisiert den Algolia-Index für Marketing-Druckmaterialien mit der Konfiguration der Einrichtung.
Parameter
organisationId `string` (erforderlich)Endpunkt
POST /api/algolia/marketing/assets
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/algolia/marketing/assets \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Führt eine Suche in einem angegebenen Algolia-Index anhand von Suchbegriffen, Club und/oder Gebietsschema durch. Die Suche lässt sich mit zusätzlichen Algolia-Argumenten weiter anpassen.
Parameter
searchTerms `string` (erforderlich) Die Begriffe, nach denen im Algolia-Index gesucht werden soll. club `string` (optional) Interne ID des Clubs, der die Anfrage stellt. Wenn angegeben, wird die Suche nach der dem Club zugeordneten Region gefiltert. locale `string` (optional) Das Gebietsschema, mit dem die Region bestimmt wird, wenn kein Club angegeben ist. Wird aus navigator.languages abgeleitet. algoliaArgs `string` (optional) Zusätzliche/benutzerdefinierte Argumente, die an die Algolia-Suchanfrage weitergegeben werden.Endpunkt
POST /api/algolia/search-wiki
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/algolia/search-wiki \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Listet alle Ankündigungen auf
Endpunkt
GET /api/announcements/list
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/announcements/list \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Lädt ein Asset in einen ÖFFENTLICHEN S3-BUCKET hoch (über die Upload-API), der die Datei anschließend nachbearbeitet/optimiert, Miniaturansichten erzeugt usw. *Hinweis: Assets sind öffentlich verfügbar*
Parameter
file `string` (optional) Name der hochzuladenden Datei bzw. des hochzuladenden Assets.Endpunkt
POST /api/asset-upload
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/asset-upload \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt den Status eines Uploads anhand der angegebenen UUID des Upload-Datensatzes zurück
Parameter
uuid `string` (erforderlich) UUID des Upload-DatensatzesEndpunkt
GET /api/asset-upload/:uuid
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/asset-upload/:uuid \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Befehl an das Sonos-System des Clubs senden
Parameter
body `object` (erforderlich) JSON-Objekt mit dem Befehl und den Eingaben, die an Sonos gesendet werden.Endpunkt
PUT /api/audio-control/command/:club
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/audio-control/command/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Konfiguration für das Frontend der Audiosteuerung abrufen
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten.Endpunkt
GET /api/audio-control/config/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/audio-control/config/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Konfiguration für das Frontend der Audiosteuerung ändern
Parameter
body `object` (erforderlich) JSON-Objekt des neuen Konfigurationsblocks, der dem System hinzugefügt werden soll.Endpunkt
PUT /api/audio-control/config/:club/:section
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/audio-control/config/:club/:section \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Ruft die Markeneinstellungen für eine bestimmte Region ab
Parameter
brandId `string` (optional) Die ID der Marke regionCode `string` (optional) Der ISO-Code der Region, deren Einstellungen abgerufen werden sollenEndpunkt
GET /api/brands/{brandId}/regions/{regionCode}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId}/regions/{regionCode} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Aktualisiert mehrere Markeneinstellungen für eine bestimmte Region
Parameter
brandId `string` (optional) Die ID der zu aktualisierenden Marke regionCode `string` (optional) Der ISO-Code der Region, deren Einstellungen aktualisiert werden sollen acceptFreeTrialBookingsVisibility `string` (optional) customTrackingCodeVisibility `string` (optional) displayDataSources `string` (optional) displayDefaultDataSource `string` (optional) displayDefaultUI `string` (optional) displayUIOptions `string` (optional) defaultAboutBusiness `string` (optional) defaultAboutBusinessFacebook `string` (optional) facilityCoverImage `string` (optional) digitalProfileSettingsVisibility `string` (optional) facilityHoursVisibility `string` (optional) facilityLocationVisibility `string` (optional) facilityPaymentMethods `string` (optional) facilityPrimaryLogo `string` (optional) facilityStatusVisibility `string` (optional) landingPagesVisibility `string` (optional) lineChatIntegrationVisibility `string` (optional) whatsAppIntegrationVisibility `string` (optional) defaultWhatsAppMessage `string` (optional) socialUrlsVisibility `string` (optional) yextApiKey `string` (optional) API-Schlüssel, den die Yext-Integration für diese Marken-Region verwendet. Wird nur herangezogen, wenn `directorySyncMode` auf `yext` steht. directorySyncMode `string` (optional) Welches Synchronisierungs-Backend für Einrichtungen dieser Marken-Region laufen soll. Fehlt die Angabe, gilt aus Gründen der Abwärtskompatibilität mit Marken, die vor der Einführung von Directory Publishers angelegt wurden, standardmäßig `yext`. websiteUrl `string` (optional) androidAppUrl `string` (optional) iosAppUrl `string` (optional) featuredMessageDescription `string` (optional) yextCategoryIds `string` (optional) Veralteter Speicherschlüssel – es handelt sich tatsächlich um Kategorie-IDs von Google Business Profile (z. B. gcid:gym). Das Präfix "yext" stammt aus der Zeit vor der Abkündigung von Yext und wird aus Gründen der Abwärtskompatibilität mit vorhandenen Datenbankzeilen beibehalten. customInputFields `string` (optional) customInputFieldsToRemove `string` (optional)Endpunkt
PUT /api/brands/{brandId}/regions/{regionCode}
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/brands/{brandId}/regions/{regionCode} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Ruft die Markeneinstellungen für eine bestimmte Einrichtung ab
Parameter
facilityId `string` (optional) Die ID der Einrichtung, deren Markeneinstellungen abgerufen werden sollenEndpunkt
GET /api/facilities/{facilityId}/brand-settings
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/brand-settings \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Erstellt eine neue Marke
Parameter
name `string` (erforderlich) Der Name der Marke organisationId `string` (erforderlich) Die ID der Organisation, zu der die Marke gehört redirectDashboard `string` (optional) Die URL, zu der nach der Anmeldung statt zum Standard-Dashboard weitergeleitet wirdEndpunkt
POST /api/brands
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/brands \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste aller Marken zurück
Endpunkt
GET /api/brands
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/brands \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt das Markenobjekt zurück
Parameter
brandId `string` (erforderlich) Die ID der abzurufenden Marke includeOrganisation `boolean` (optional) Ob die Organisationsdaten in die Antwort aufgenommen werden sollenEndpunkt
GET /api/brands/{brandId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Aktualisiert eine Marke anhand ihrer ID
Parameter
brandId `string` (optional) Die ID der zu aktualisierenden Marke name `string` (erforderlich) Der Name der Marke brandOrganisationId `string` (optional) Die ID der Organisation, zu der die Marke gehört redirectDashboard `string` (optional) Die URL, zu der nach der Anmeldung statt zum Standard-Dashboard weitergeleitet wird yextApiKey `string` (optional) Der API-Schlüssel für den Zugriff auf die Yext API für diese Marke customMenuLayout `object` (optional) Layoutbaum des Seitenmenüs pro Marke (Abschnitte / Gruppen / Einträge mit Verweisen auf Systemmodule oder benutzerdefinierte URLs). Kann nur von einem Organisationsadministrator der Organisation dieser Marke festgelegt werden.Endpunkt
PUT /api/brands/{brandId}
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/brands/{brandId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Einrichtungen einer Marke auflisten
Gibt eine schlanke Liste der Einrichtungen (ID, Name, ISO-Code der Region) zurück, die zur Marke gehören. Wird verwendet, um die Auswahlfelder für Zieleinrichtungen in der Markenkonfiguration zu füllen.
Parameter
brandId `string` (erforderlich) Die ID der Marke, deren Einrichtungen aufgelistet werden sollenEndpunkt
GET /api/brands/{brandId}/facilities
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId}/facilities \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste aller Marken zurück, die der Organisation des Clubs zugeordnet sind.
Endpunkt
GET /api/clubs/{club}/brands
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/brands \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste aller Kalendertypen zurück
Endpunkt
GET /api/programs/calendars/calendar-types
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/programs/calendars/calendar-types \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt das KYC-Asset eines Clubs zurück.
Parameter
clubId `string` (erforderlich) Die ID des Clubs. key `string` (erforderlich) Der Schlüssel des KYC-Assets.Endpunkt
GET /api/clubs/{clubId}/kyc-assets/{key}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/kyc-assets/{key} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt die KYC-Informationen des Clubs zurück.
Endpunkt
GET /api/clubs/{clubId}/kyc
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/kyc \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Aktualisiert die KYC-Informationen des Clubs.
Parameter
clubId `string` (erforderlich) Die ID des zu aktualisierenden Clubs. body `object` (erforderlich)Endpunkt
PUT /api/clubs/{clubId}/kyc
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubId}/kyc \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Lädt ein KYC-Asset für einen Club hoch.
Parameter
clubId `string` (erforderlich) Die ID des Clubs. file `string` (erforderlich) Die hochzuladende Datei.Endpunkt
POST /api/clubs/{clubId}/kyc-assets
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubId}/kyc-assets \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt die Club-Einstellungen zurück.
Endpunkt
GET /api/club/preferences/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/club/preferences/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Erstellt oder aktualisiert einen Eintrag der Club-Einstellungen.
Anfragetext
Endpunkt
POST /api/club/preferences/:club
Beispielanfrage
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 '{}'
Antwort
{}
Gibt eine Liste der Mitglieder mit Vereinbarung zurück.
Endpunkt
GET /api/clubpass/user/email/exist/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubpass/user/email/exist/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste der Mitglieder mit Vereinbarung zurück.
Endpunkt
GET /api/clubpass/user/phone/exist/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubpass/user/phone/exist/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste der Benutzer zurück, die zum angegebenen Club gehören
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchtenEndpunkt
GET /api/clubs/{club}/members
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/members \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt zurück, ob der Club am angegebenen Datum geöffnet ist.
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten. date `string` (erforderlich) Zu prüfendes Datum im Unix-FormatEndpunkt
GET /api/club-busy-hours/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/club-busy-hours/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt alle Metadaten des Clubs zurück, die auf den Example Club-Websites angezeigt werden.
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten.Endpunkt
GET /api/clubs/clubpage/clubdata/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/clubpage/clubdata/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Aktualisiert die Metadaten eines Clubs mit neuen Daten aus dem Frontend. Felder, die im Anfragetext fehlen, bleiben erhalten (kein SET, kein REMOVE). Felder, die als `null` oder leere Zeichenfolge gesendet werden, werden geleert. Übergeben Sie `updateAll: false`, um den dedizierten Pfad für teilweises Zusammenführen zu verwenden; in beiden Fällen müssen Aufrufer nie Felder senden, die ihnen nicht gehören.
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten. body `string` (erforderlich) JSON-Objekt der Club-Daten, die Sie aktualisieren möchten.Endpunkt
POST /api/clubs/clubpage/updateclub/{club}
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/clubs/clubpage/updateclub/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
neuen benutzerdefinierten Tracking-Datensatz hinzufügen
Parameter
club `string` (erforderlich) ID des Clubs body `string` (erforderlich) Array benutzerdefinierter Tracking-Einträge.Endpunkt
POST /api/clubs/{club}/customtracking
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{club}/customtracking \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt das benutzerdefinierte Tracking eines bestimmten Clubs zurück
Endpunkt
GET /api/clubs/customtracking/:clubID
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/customtracking/:clubID \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Benutzerdefinierte Tracking-Einträge aktualisieren
Parameter
club `string` (erforderlich) ID des Clubs body `string` (erforderlich) JSON-Objekt der Club-Daten, die Sie aktualisieren möchten.Endpunkt
POST /api/clubs/{club}/customtracking/update
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{club}/customtracking/update \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt das Standardbild der Ladenfront eines Clubs zurück.
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten.Endpunkt
GET /api/clubs/{club}/default-shop-front
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/default-shop-front \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
In der Einrichtung verfügbare Türen auflisten
Parameter
body `object` (erforderlich) JSON-Objekt der Club-Daten, die Sie aktualisieren möchten.Endpunkt
POST /api/clubs/integrations/doors/:facilityId
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/clubs/integrations/doors/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Eine bestimmte Tür in der Einrichtung entriegeln
Parameter
body `object` (erforderlich) JSON-Objekt der Club-Daten, die Sie aktualisieren möchten.Endpunkt
POST /api/clubs/integrations/doors/unlock
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/clubs/integrations/doors/unlock \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt alle Integrationen und deren Konfigurationsdetails für den angegebenen Club zurück.
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten.Endpunkt
GET /api/clubs/integrations/list/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/integrations/list/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Aktualisiert die Metadaten eines Clubs mit neuen Daten aus dem Frontend.
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten. body `object` (erforderlich) JSON-Objekt der Club-Daten, die Sie aktualisieren möchten.Endpunkt
POST /api/clubs/integrations/update/{club}
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/clubs/integrations/update/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt als booleschen Wert zurück, ob sich der Club in einem europäischen Land befindet
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten. date `string` (erforderlich) Zu prüfendes Datum im Unix-FormatEndpunkt
GET /api/clubs/is-eu/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/is-eu/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Übersichtsliste aller Clubs in unserer Datenbank zurück.
Endpunkt
GET /api/clubs/listclubs
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/listclubs \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt zurück, ob der Club am angegebenen Datum geöffnet ist.
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten. date `string` (erforderlich) Zu prüfendes Datum im Unix-FormatEndpunkt
GET /api/clubs/{club}/open-on/{date}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/open-on/{date} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Die Bewertungen des Clubs aus DynamoDB abrufen.
Parameter
club `string` (erforderlich) Club-IDEndpunkt
GET /api/clubs/{club}/reviews
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/reviews \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Die Bewertungseinstellungen des Clubs aus DynamoDB abrufen.
Parameter
facilityId `string` (erforderlich) Einrichtungs-IDEndpunkt
GET /api/clubs/{club}/reviews-settings
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/reviews-settings \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Die Bewertungseinstellungen des Clubs in DynamoDB aktualisieren.
Parameter
club `string` (erforderlich) Club-IDEndpunkt
PUT /api/clubs/{club}/reviews-settings
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews-settings \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Automatisches Veröffentlichen in den Bewertungseinstellungen wieder aktivieren.
Parameter
club `string` (erforderlich) Club-IDEndpunkt
PUT /api/clubs/{club}/reviews/publish-recent-reviews
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/publish-recent-reviews \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Veröffentlicht eine Bewertung
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten. review `string` (erforderlich) Interne ID der Bewertung, die Sie veröffentlichen möchten.Endpunkt
PUT /api/clubs/{club}/reviews/{review}/publish
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/{review}/publish \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Automatisches Veröffentlichen in den Bewertungseinstellungen wieder aktivieren.
Parameter
club `string` (erforderlich) Club-IDEndpunkt
PUT /api/clubs/{club}/reviews-settings/re-enable-auto-publish
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews-settings/re-enable-auto-publish \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Eine Antwort auf eine Bewertung über die Plattform veröffentlichen, von der sie stammt (Google usw.).
Parameter
club `string` (erforderlich) Einrichtungs-ID reviewId `string` (erforderlich) PH-Bewertungs-ID (wird in der Tabelle club-social-reviews nachgeschlagen) body `string` (erforderlich)Endpunkt
POST /api/clubs/{club}/reviews/{reviewId}/respond
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/{reviewId}/respond \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Hebt die Veröffentlichung einer Bewertung auf
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten. review `string` (erforderlich) Interne ID der Bewertung, deren Veröffentlichung Sie aufheben möchten.Endpunkt
PUT /api/clubs/{club}/reviews/{review}/un-publish
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/{review}/un-publish \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt aus der PH-Datenbank eine Liste der Inhaber zurück, die zum angegebenen Club gehören
Parameter
clubID `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchtenEndpunkt
GET /api/clubs/{clubID}/owners
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/owners \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt alle Mitgliedschaftstarife der Einrichtung zurück.
Parameter
facilityId `string` (erforderlich) Interne ID der EinrichtungEndpunkt
GET /api/facilities/membership-plans/:facilityId
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/facilities/membership-plans/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Aktualisiert einen Datensatz eines Mitgliedschaftstarifs.
Parameter
facilityId `string` (erforderlich) Interne ID der Einrichtung body `object` (erforderlich) JSON-Objekt der Tarifdaten, die Sie aktualisieren möchten.Endpunkt
PUT /api/facilities/membership-plans/:facilityId
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/facilities/membership-plans/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Automatisches Veröffentlichen in den Bewertungseinstellungen wieder aktivieren.
Parameter
club `string` (erforderlich) Club-IDEndpunkt
PUT /api/clubs/{club}/reviews/publish-recent-reviews
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/publish-recent-reviews \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Automatisches Veröffentlichen in den Bewertungseinstellungen wieder aktivieren.
Parameter
club `string` (erforderlich) Club-IDEndpunkt
PUT /api/clubs/{club}/reviews-settings/re-enable-auto-publish
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews-settings/re-enable-auto-publish \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste aller verfügbaren Währungen zurück
Endpunkt
GET /api/currencies
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/currencies \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt den geografischen Standort anhand der IP-Adresse zurück.
Parameter
ip `string` (erforderlich) Nachzuschlagende IP-AdresseEndpunkt
GET /api/geo/ip-location/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/geo/ip-location/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt den geografischen Standort des aktuellen Benutzers anhand seiner IP-Adresse zurück.
Endpunkt
GET /api/geo/ip-current
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/geo/ip-current \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt nur die öffentliche IP-Adresse des anfragenden Clients zurück (keine Geolokalisierung, kein Aufruf einer Drittanbieter-API). Wird vom KI-Agent-Applet verwendet, um die öffentliche IP-Adresse des Browsers mit der vom Gerät gemeldeten WAN-IP zu vergleichen und so ein gemeinsames Netzwerk zu erkennen.
Endpunkt
GET /api/geo/client-ip
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/geo/client-ip \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Telefonnummern-Parser.
Parameter
body `string` (erforderlich) JSON-Objekt der Nummer, die Sie parsen möchten.Endpunkt
POST /api/phone/parser
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/phone/parser \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt das Master-Uhrengerät zurück
Parameter
club_id `string` (erforderlich) Interne ID des Clubs, unter dem Sie das Gerät hinzufügen möchten.Endpunkt
GET /api/clubs/{club_id}/smart-club/health-check/master-clock
Beispielanfrage
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"
Antwort
{}
Gibt das Sonos-Master-Gerät zurück
Parameter
club_id `string` (erforderlich) Interne ID des Clubs, unter dem Sie das Gerät hinzufügen möchten.Endpunkt
GET /api/clubs/{club_id}/smart-club/health-check/sonos-mqtt
Beispielanfrage
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"
Antwort
{}
Duress-Benachrichtigungen zu niedrigem Akkustand für einen bestimmten Club abrufen.
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten.Endpunkt
GET /api/clubs/{club}/smart-club/health-check/low-battery-duress
Beispielanfrage
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"
Antwort
{}
Gibt Daten der Netzwerkanalyse zurück
Parameter
club_id `string` (erforderlich) Interne ID des Clubs, unter dem Sie das Gerät hinzufügen möchten.Endpunkt
GET /api/clubs/{club_id}/smart-club/health-check/network-analysis
Beispielanfrage
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"
Antwort
{}
Duress-Benachrichtigungen zu niedrigem Akkustand für einen bestimmten Club senden.
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten.Endpunkt
GET /api/clubs/{club}/smart-club/health-check/send-low-battery-duress-notifs
Beispielanfrage
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"
Antwort
{}
Gibt Geschwindigkeitstestdaten der Geräte für jeden Gerätetyp zurück
Parameter
club_id `string` (erforderlich) Interne ID des Clubs, unter dem Sie das Gerät hinzufügen möchten.Endpunkt
GET /api/clubs/{club_id}/smart-club/health-check/speed-test
Beispielanfrage
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"
Antwort
{}
Listing-Insights für eine Einrichtung abrufen. Gibt standardmäßig aggregierte Tagessummen über alle Publisher zurück oder einen einzelnen Publisher, wenn `publisherId` angegeben ist.
Parameter
facilityId `string` (erforderlich) publisherId `string` (optional) startDate `string` (erforderlich) endDate `string` (erforderlich)Endpunkt
GET /api/facilities/{facilityId}/directory-insights
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/directory-insights \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Aggregierte Listing-Insights für eine Marke über alle Publisher abrufen.
Parameter
brandId `string` (erforderlich) startDate `string` (erforderlich) endDate `string` (erforderlich)Endpunkt
GET /api/brands/{brandId}/directory-insights
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId}/directory-insights \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Top-Suchbegriffe (aufgeteilt nach Marken- und Nicht-Marken-Suchen) für eine Einrichtung, derzeit aus Google Business Profile bezogen.
Parameter
facilityId `string` (erforderlich) publisherId `string` (optional) Standardwert ist "google"; derzeit wird nur Google unterstützt. startDate `string` (erforderlich) endDate `string` (erforderlich) limit `string` (optional)Endpunkt
GET /api/facilities/{facilityId}/directory-search-keywords
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/directory-search-keywords \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Top-Suchbegriffe für eine Marke, aggregiert über alle Einrichtungen.
Parameter
brandId `string` (erforderlich) startDate `string` (erforderlich) endDate `string` (erforderlich) limit `string` (optional)Endpunkt
GET /api/brands/{brandId}/directory-search-keywords
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId}/directory-search-keywords \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Fragen und Antworten für eine Einrichtung auflisten.
Parameter
facilityId `string` (erforderlich)Endpunkt
GET /api/facilities/{facilityId}/qna
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/qna \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Eine Frage beantworten.
Endpunkt
POST /api/facilities/{facilityId}/qna/{questionId}/answer
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/facilities/{facilityId}/qna/{questionId}/answer \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Eine Antwort löschen.
Endpunkt
DELETE /api/facilities/{facilityId}/qna/{questionId}/answer/{answerId}
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/facilities/{facilityId}/qna/{questionId}/answer/{answerId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt die für die Organisation der Einrichtung aktivierten Publisher mit ihrem Verbindungsstatus zurück.
Parameter
facilityId `string` (erforderlich) organisationId `string` (erforderlich)Endpunkt
GET /api/facilities/{facilityId}/directory-publishers/resolved
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/directory-publishers/resolved \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Access Policies für eine Einrichtung abrufen
Bestehende Zugriffskonfigurationen werden beim ersten Lesen automatisch in gleichwertige, durchgesetzte Richtlinien umgewandelt.
Parameter
facilityId `string` (erforderlich)Endpunkt
GET /api/door-access/policies/{facilityId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Access Policies mit optimistischer Revisionsprüfung ersetzen
Parameter
facilityId `string` (erforderlich)Anfragetext
Endpunkt
PUT /api/door-access/policies/{facilityId}
Beispielanfrage
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 '{}'
Antwort
{}
Access Policy erstellen
Parameter
facilityId `string` (erforderlich)Endpunkt
POST /api/door-access/policies/{facilityId}
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Eine Access Policy aktualisieren
Parameter
facilityId `string` (erforderlich) policyId `string` (erforderlich)Endpunkt
PATCH /api/door-access/policies/{facilityId}/{policyId}
Beispielanfrage
curl -X PATCH https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/{policyId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Eine Access Policy löschen
Parameter
facilityId `string` (erforderlich) policyId `string` (erforderlich) revision `integer` (erforderlich)Endpunkt
DELETE /api/door-access/policies/{facilityId}/{policyId}
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/{policyId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Access Policy mit einer neuen stabilen ID duplizieren
Parameter
facilityId `string` (erforderlich) policyId `string` (erforderlich)Endpunkt
POST /api/door-access/policies/{facilityId}/{policyId}/duplicate
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/{policyId}/duplicate \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Betroffene Benutzer und Türen für alle Access Policies zählen
Parameter
facilityId `string` (erforderlich)Endpunkt
GET /api/door-access/policies/{facilityId}/impacts
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/impacts \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Von einer Access Policy betroffene Benutzer und Türen zählen
Parameter
facilityId `string` (erforderlich) policyId `string` (erforderlich)Endpunkt
GET /api/door-access/policies/{facilityId}/{policyId}/impact
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/{policyId}/impact \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Türcontroller einer Einrichtung mit ihren wirksamen Door/Gate Access-Regeln auflisten
Parameter
facilityId `string` (erforderlich)Endpunkt
GET /api/door-access/doors/{facilityId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Überschreibungen pro Tür, Symbol und geräteseitige Konfiguration speichern
Einzige Schreibschnittstelle für alles, was das DGA-Admin-Applet an einer Tür bearbeitet: - `accessRulesOverride` / `geofenceOverride`: Übergeben Sie `null`, um den Wert zu löschen und auf den Standard der Einrichtung zurückzufallen. - `icon`: stabiler Schlüssel (siehe services/door-access/door-icons.js); unbekannte Werte ergeben 400. - `holdTimeSeconds` (1\u201330), `maintenanceMode` (`off` / `force-open` / `force-closed`), `doorLocation` (freier Text, \u226464 Zeichen), `playNotificationSoundOnRelayToggle` (boolesch), `autoUnlockSchedule` (wöchentliches Zeitfensterraster). Diese waren früher reine Device-Management-Felder, aber das Applet schreibt sie jetzt direkt, damit Admins den Tür-Seitenbereich für alltägliche Konfigurationsänderungen nicht verlassen müssen. Wenn eines der geräteseitigen Felder geändert wird, überträgt die Route außerdem die passenden Balena-Umgebungsvariablen (`RELAY_NOTIFICATION_SOUND`, `DOOR_MAINTENANCE_MODE`, `DOOR_AUTO_UNLOCK_SCHEDULE`) und sendet einen MQTT-Befehl `unlockUpdates`, damit das Gerät die neue Konfiguration übernimmt, ohne auf die nächste Balena-Aktualisierung der Umgebung zu warten. Best-Effort \u2014 die Antwort ist 200, auch wenn Balena vorübergehend nicht erreichbar ist.
Parameter
facilityId `string` (erforderlich) doorId `string` (erforderlich)Anfragetext
Endpunkt
PUT /api/door-access/doors/{facilityId}/{doorId}/override
Beispielanfrage
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 '{}'
Antwort
{}
Einfache Balena-Statusabfrage für den Neuladehinweis im Tür-Seitenbereich
Der Seitenbereich des DGA-Applets ruft dies verzögert ab, wenn ein Admin eine Tür öffnet, damit er den richtigen Hinweis "saving will reload the controller" anzeigen kann: die Standardvariante "a few seconds" oder die stärkere Variante "several minutes", wenn zusätzlich ein Release-Update aussteht. Gibt einen flachen Snapshot zurück, abgeleitet aus `balena.models.device.get()`. Fällt bei Fehlern auf `data: null` zurück (statt 5xx zurückzugeben), sodass ein Balena-Ausfall nur den Hinweistext verschlechtert, statt das Öffnen des Seitenbereichs zu blockieren.
Parameter
facilityId `string` (erforderlich) doorId `string` (erforderlich)Endpunkt
GET /api/door-access/doors/{facilityId}/{doorId}/device-status
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId}/{doorId}/device-status \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Admin-Übersteuerung: Tür über das Applet entriegeln
Schaltet das Relais kurz mit der aktuellen `holdTimeSeconds` der Tür um und schreibt eine Audit-Zeile `admin-override` in ph-door-app-access-events, damit die Aktion in den Zugriffsprotokollen zugeordnet werden kann. Ist immer erfolgreich, unabhängig von `maintenanceMode === 'force-closed'`: Dies ist der Notausgang für Admins. Gibt 200 zurück, sobald die MQTT-Veröffentlichung gesendet wurde; auf die Zustände bestätigt / fehlgeschlagen / timed_out wird hier nicht gewartet (der bisherige Ablauf /api/devices/door-controllers + /api/ics/devices/command arbeitet ebenfalls nach dem Fire-and-Forget-Prinzip).
Parameter
facilityId `string` (erforderlich) doorId `string` (erforderlich)Endpunkt
POST /api/door-access/doors/{facilityId}/{doorId}/unlock
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId}/{doorId}/unlock \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Ortungs-Piepmuster am Türcontroller abspielen
Veröffentlicht einen MQTT-Befehl `beep`, damit der Controller drei mittellange Pieptöne ausgibt (je ~500 ms, ~350 ms Pause, ~2 s insgesamt). Wird von Admins verwendet, um einen Türcontroller vor Ort physisch zu finden. Die bisherige Schaltfläche in Device Management verwendet eine ~30 s lange Folge kurzer Pieptöne, aber der Summertreiber der Firmware gibt zuverlässig nur den ersten aus, daher sendet das Applet stattdessen ein kürzeres, zuverlässigeres Muster. Keine Audit-Zeile \u2014 Diagnoseaktion ohne Auswirkung auf die Zugriffskontrolle.
Parameter
facilityId `string` (erforderlich) doorId `string` (erforderlich)Endpunkt
POST /api/door-access/doors/{facilityId}/{doorId}/identify
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId}/{doorId}/identify \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Türcontroller per Fernzugriff neu starten
Veröffentlicht denselben Fire-and-Forget-MQTT-Befehl `rebootDevice`, den die bisherige Schaltfläche "Remotely Reboot Device" in Device Management sendet, jedoch über das Modul `door-gate-access` freigegeben, sodass DGA-Admins einen Controller im Bereich Advanced des Tür-Seitenbereichs neu starten können, ohne eine separate Berechtigung für `device-management`. Gibt 200 zurück, sobald die Veröffentlichung gesendet wurde; das Gerät ist für die Dauer des Neustarts offline.
Parameter
facilityId `string` (erforderlich) doorId `string` (erforderlich)Endpunkt
POST /api/door-access/doors/{facilityId}/{doorId}/reboot
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId}/{doorId}/reboot \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
User Access-Zeilen einer Einrichtung auflisten
Gibt jede nicht gelöschte User Access-Zeile der Einrichtung zurück. Unterstützt clientseitige Filter (source, search, accessEnabled, hasGrants). Die serverseitige Berechnung `hideExcluded` aus Phase 4 wird ergänzt, sobald die hybride Berechtigungsauswertung verfügbar ist; vorerst wird der Parameter akzeptiert, aber es wird die vollständige Menge zurückgegeben.
Parameter
facilityId `string` (erforderlich) search `string` (optional) source `string` (optional) accessEnabled `string` (optional) hasGrants `string` (optional) hideExcluded `boolean` (optional) Wenn true, werden synchronisierte Benutzer (source != manual), die zu keiner Zeit eine Tür dieser Einrichtung passieren könnten, ausgeblendet. Die Antwort enthält einen Umschlag `hidden: { count, sample }`.Endpunkt
GET /api/door-access/users/{facilityId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/door-access/users/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
User Access-Zeile in einer Einrichtung manuell erstellen
Erstellt eine neue Zeile mit `source: 'manual'`. Gibt 409 mit `existingUserId` zurück, wenn die angegebene Telefonnummer oder E-Mail-Adresse bereits einer Zeile in dieser Einrichtung zugeordnet ist.
Parameter
facilityId `string` (erforderlich)Anfragetext
Endpunkt
POST /api/door-access/users/{facilityId}
Beispielanfrage
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 '{}'
Einzelne User Access-Zeile abrufen
Parameter
facilityId `string` (erforderlich) userId `string` (erforderlich)Endpunkt
GET /api/door-access/users/{facilityId}/{userId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Teilaktualisierung einer User Access-Zeile
Bearbeitet eine beliebige Teilmenge der Identitäts- und Berechtigungsfelder. Übergeben Sie `null`, um ein optionales Feld zu löschen. Gibt 409 zurück, wenn die neue Telefonnummer oder E-Mail-Adresse mit einer anderen Zeile in derselben Einrichtung kollidiert. `appMessage` akzeptiert dieselbe Struktur wie die einrichtungsweite Nachricht unter PUT /api/door-access/rules/{facilityId}: Nachrichtentext, Schweregrad, optionaler Link, optionaler Start-/Endzeitplan. Die mobile App zeigt dies nur dem betreffenden Benutzer im Dashboard an.
Parameter
facilityId `string` (erforderlich) userId `string` (erforderlich)Anfragetext
Endpunkt
PATCH /api/door-access/users/{facilityId}/{userId}
Beispielanfrage
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 '{}'
Antwort
{}
User Access-Zeile vorläufig löschen
Markiert die Zeile mit `deleted: true` und deaktiviert den Zugriff. Die Verknüpfung im Audit-Protokoll mit der userId bleibt erhalten; Admins können den Zugriff manuell wieder aktivieren.
Parameter
facilityId `string` (erforderlich) userId `string` (erforderlich)Endpunkt
DELETE /api/door-access/users/{facilityId}/{userId}
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Zugriffszuordnung pro Tür für einen Benutzer
Gibt für jede Tür die aktuelle deterministische Berechtigung (`allowedNow`, `allowedVia`, `deniedReason`) und die konfigurierten Wege über Access Policies, dauerhafte Berechtigungen, Richtlinienzeitpläne, Admin-Zeitfensterberechtigungen und aktuelle zugeordnete Zeitfenster aus Partnerquellen zurück. Gibt außerdem die aktive/nächste Verfügbarkeit und die Aktualität der Quellen zurück. blockAllAccess und Wartung der Tür werden vor allen Zulassungswegen ausgewertet.
Parameter
facilityId `string` (erforderlich) userId `string` (erforderlich)Endpunkt
GET /api/door-access/users/{facilityId}/{userId}/effective-access
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/effective-access \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
User Access-Zeilen per CSV-Import in großer Zahl erstellen
Erstellt mehrere Zeilen mit `source: 'manual'` in einer Anfrage und verwendet dabei dieselbe Validierung, Normalisierung von Telefonnummer/E-Mail, Kollisionsprüfung pro Einrichtung, automatische Benachrichtigung und (optionale) Einladungslogik wie die Einzelerstellung. Zeilen werden der Reihe nach verarbeitet, sodass eine spätere Zeile, die mit einer zuvor erstellten kollidiert, als Duplikat gemeldet wird. Berechtigungen werden als bereits aufgelöste Tür-/Gruppen-IDs übergeben (der Client löst Namen in IDs auf). Zeitfensterberechtigungen werden bei der Massenerstellung absichtlich abgelehnt und müssen nach dem Import über den Ersetzungsendpunkt pro Benutzer hinzugefügt werden. Löst nie pro Zeile einen Fehler aus; das Ergebnis jeder Zeile wird einzeln gemeldet.
Parameter
facilityId `string` (erforderlich)Anfragetext
Endpunkt
POST /api/door-access/users/{facilityId}/bulk
Beispielanfrage
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 '{}'
Antwort
{}
Zusätzliche Access Time Window-Berechtigungen einer User Access-Zeile ersetzen
Ersetzt nur `timeWindowGrants`; dauerhafte `grants` und `sourceTimeWindows` aus Integrationen bleiben unverändert. Jedes Element erfordert einen Bereich (`facilityWide`, `doors` oder `groups`) und ein absolutes oder wöchentliches `window`. Ein leeres Array löscht ausdrücklich alle Admin-Zeitfenster.
Parameter
facilityId `string` (erforderlich) userId `string` (erforderlich)Anfragetext
Endpunkt
PUT /api/door-access/users/{facilityId}/{userId}/time-window-grants
Beispielanfrage
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 '{}'
Antwort
{}
User Access-Zeile gegen quellgesteuerte Synchronisierungsupdates sperren
Setzt `decoupledFromSource: true`, löscht alle `sourceTimeWindows` aus Integrationen und bewirkt, dass die Synchronisierung (Cron + Streams) diese Zeile protokolliert und überspringt, bis ein Admin das Flag über /recouple zurücksetzt.
Parameter
facilityId `string` (erforderlich) userId `string` (erforderlich)Endpunkt
POST /api/door-access/users/{facilityId}/{userId}/decouple
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/decouple \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
User Access-Zeile wieder an quellgesteuerte Synchronisierungsupdates anbinden
Parameter
facilityId `string` (erforderlich) userId `string` (erforderlich)Endpunkt
POST /api/door-access/users/{facilityId}/{userId}/recouple
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/recouple \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Alle Refresh-Tokens der Door/Gate Access-App für einen Benutzer widerrufen
Widerruft anhand der gespeicherten Telefonnummer/E-Mail-Adresse des Benutzers (die Refresh-Token-Tabelle ist nach `sha256(plaintext)` indiziert; die GSIs byMobilePhone / byEmail ermöglichen das Löschen über einen einzelnen Benutzer). Andere Benutzer mit derselben Telefonnummer/E-Mail-Adresse in einer anderen Einrichtung würden ebenfalls abgemeldet.
Parameter
facilityId `string` (erforderlich) userId `string` (erforderlich)Endpunkt
POST /api/door-access/users/{facilityId}/{userId}/logout
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/logout \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Einladungs-E-Mail für die Door/Gate Access-App an einen Benutzer (erneut) senden
Erzwingt das Senden der Einladungs-E-Mail zum App-Download an die gespeicherte E-Mail-Adresse des Benutzers (nur E-Mail, keine SMS). Ignoriert die Prüfungen auf Berechtigung und bereits erfolgten Versand, die die automatische Synchronisierung verwendet: Dies ist eine ausdrückliche Admin-Aktion. Gibt 400 zurück, wenn für den Benutzer keine E-Mail-Adresse hinterlegt ist.
Parameter
facilityId `string` (erforderlich) userId `string` (erforderlich)Endpunkt
POST /api/door-access/users/{facilityId}/{userId}/resend-invite
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/resend-invite \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Vorschau der Empfänger eines Massenversands von App-Einladungen
Ermittelt die Benutzer, die eine Einladungs-E-Mail für die App erhalten würden. Die Basismenge umfasst alle nicht gelöschten Benutzer mit E-Mail-Adresse, die die App noch nie verwendet haben (`appLastSeenAt` leer). Standardmäßig wird die Menge auf Benutzer eingegrenzt, die derzeit Zugang haben (Regeltreffer oder Berechtigung) und noch nie eingeladen wurden; `includeAlreadyInvited` und `includeNoAccess` erweitern sie. Es werden keine E-Mails gesendet: Gibt Anzahlen, eine kleine Stichprobe und die infrage kommenden userIds für den Ausführungsendpunkt zurück.
Parameter
facilityId `string` (erforderlich)Anfragetext
Endpunkt
POST /api/door-access/users/{facilityId}/bulk-invite/preview
Beispielanfrage
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 '{}'
Antwort
{}
App-Einladungs-E-Mails an eine Gruppe von Benutzern senden
Sendet die Einladungs-E-Mail zum App-Download an jede der angegebenen userIds (max. 50 pro Anfrage; der Client teilt die vollständige Kandidatenliste aus der Vorschau in Gruppen auf). Jeder Benutzer wird beim Senden erneut geprüft: Zeilen, die nicht mehr existieren, keine E-Mail-Adresse haben oder seit der Vorschau die App verwendet haben, werden übersprungen, nie als fehlgeschlagen gewertet. Die Ergebnisse pro Benutzer werden einzeln gemeldet, damit der Client gesendet / fehlgeschlagen / übersprungen zusammenfassen kann.
Parameter
facilityId `string` (erforderlich)Anfragetext
Endpunkt
POST /api/door-access/users/{facilityId}/bulk-invite
Beispielanfrage
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 '{}'
Antwort
{}
Türgruppen einer Einrichtung auflisten
Parameter
facilityId `string` (erforderlich)Endpunkt
GET /api/door-access/door-groups/{facilityId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/door-access/door-groups/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Türgruppe erstellen
Parameter
facilityId `string` (erforderlich)Anfragetext
Endpunkt
POST /api/door-access/door-groups/{facilityId}
Beispielanfrage
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 '{}'
Einzelne Türgruppe abrufen
Parameter
facilityId `string` (erforderlich) groupId `string` (erforderlich)Endpunkt
GET /api/door-access/door-groups/{facilityId}/{groupId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/door-access/door-groups/{facilityId}/{groupId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Türgruppe aktualisieren
Parameter
facilityId `string` (erforderlich) groupId `string` (erforderlich)Anfragetext
Endpunkt
PATCH /api/door-access/door-groups/{facilityId}/{groupId}
Beispielanfrage
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 '{}'
Antwort
{}
Türgruppe vorläufig löschen
Parameter
facilityId `string` (erforderlich) groupId `string` (erforderlich)Endpunkt
DELETE /api/door-access/door-groups/{facilityId}/{groupId}
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/door-access/door-groups/{facilityId}/{groupId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
In einer Einrichtung konfigurierte Partnerintegrationen auflisten
Gibt die Partnerintegrationen der Einrichtung zurück (id, name, logo, enabled), indem ph-facility-partner-config mit dem Katalog ph-partners verknüpft wird. Auf Door/Gate Access beschränkt (damit Admins ohne Zugriff auf externe Integrationen trotzdem Partner-Badges und die Synchronisierungsliste pro Partner anzeigen können).
Parameter
facilityId `string` (erforderlich)Endpunkt
GET /api/door-access/partners/{facilityId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/door-access/partners/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
User Access-Synchronisierungskonfiguration einer Einrichtung lesen
Parameter
facilityId `string` (erforderlich)Endpunkt
GET /api/door-access/sync-config/{facilityId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/door-access/sync-config/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
User Access-Synchronisierungskonfiguration einer Einrichtung aktualisieren
Es werden nur die vom Admin gesteuerten Felder (`enabled`, `requireIdentifier` und die Partnerzuordnung `partners`) akzeptiert; `lastRunAt` und `lastRunCounts` schreibt die Synchronisierungs-Engine selbst. `partner.partners` ist eine Aktivierungszuordnung pro Partner mit partnerId als Schlüssel (Opt-out): Wenn das übergeordnete `partner.enabled` aktiv ist, wird ein Partner synchronisiert, sofern er hier keinen ausdrücklichen Eintrag `{ enabled: false }` hat.
Parameter
facilityId `string` (erforderlich)Anfragetext
Endpunkt
PUT /api/door-access/sync-config/{facilityId}
Beispielanfrage
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 '{}'
Antwort
{}
Konfiguration für automatische Nachrichten pro Benutzer einer Einrichtung lesen
Parameter
facilityId `string` (erforderlich)Endpunkt
GET /api/door-access/auto-messages/{facilityId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/door-access/auto-messages/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Konfiguration für automatische Nachrichten pro Benutzer einer Einrichtung aktualisieren
Speichert die Regeln und wertet anschließend sofort jede User Access-Zeile der Einrichtung neu aus, sodass bestehende Benutzer ihre automatische Nachricht sofort erhalten bzw. verlieren. Manuelle Nachrichten und entkoppelte Zeilen bleiben unverändert.
Parameter
facilityId `string` (erforderlich)Anfragetext
Endpunkt
PUT /api/door-access/auto-messages/{facilityId}
Beispielanfrage
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 '{}'
Antwort
{}
Status der Neuauswertung automatischer Nachrichten im Hintergrund
Parameter
facilityId `string` (erforderlich)Endpunkt
GET /api/door-access/auto-messages/{facilityId}/sweep-status
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/door-access/auto-messages/{facilityId}/sweep-status \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
User Access-Synchronisierung für eine Einrichtung bei Bedarf ausführen
Durchläuft synchron jede aktivierte Quelle (partner / cctv) der Einrichtung und führt die Zeilen in ph-door-access-users über die Deduplizierungs- Kaskade zusammen. Gibt Anzahlen pro Quelle zurück. Deaktivierte Quellen erscheinen als `skippedSyncDisabled: 1` statt zu fehlen, damit die Oberfläche beide Zeilen einheitlich darstellen kann.
Parameter
facilityId `string` (erforderlich)Endpunkt
POST /api/door-access/sync/{facilityId}/run
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/door-access/sync/{facilityId}/run \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Probelauf-Vorschau einer Massenlöschung partnersynchronisierter Einträge
Gibt die Anzahl und eine Stichprobe der User Access-Zeilen zurück, die vorläufig gelöscht würden, sowie ein confirmToken, das an den Ausführungsendpunkt zurückgegeben werden muss. Es werden keine Daten geändert. Zugriffsprotokolle sind nie betroffen.
Parameter
facilityId `string` (erforderlich)Anfragetext
Endpunkt
POST /api/door-access/sync/{facilityId}/bulk-delete/preview
Beispielanfrage
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 '{}'
Antwort
{}
Massenlöschung partnersynchronisierter Einträge ausführen (vorläufiges Löschen)
Löscht jede partnersynchronisierte User Access-Zeile im Bereich vorläufig. Erfordert das von der Vorschau zurückgegebene confirmToken; hat sich die aktuelle Menge seit der Vorschau geändert, stimmt das Token nicht überein und die Anfrage wird abgelehnt (409), damit der Admin erneut prüft. Zugriffsprotokolle bleiben erhalten.
Parameter
facilityId `string` (erforderlich)Anfragetext
Endpunkt
POST /api/door-access/sync/{facilityId}/bulk-delete
Beispielanfrage
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 '{}'
Antwort
{}
Aktuelle User Access-Synchronisierungsaktivität (Protokoll zur Fehlerbehebung)
Gibt die neuesten Synchronisierungsergebnisse einer Einrichtung zurück (erstellt / übersprungen / deaktiviert) mit Grund, damit Admins sehen, warum ein Mitglied synchronisiert wurde oder nicht. Neueste zuerst.
Parameter
facilityId `string` (erforderlich) limit `integer` (optional)Endpunkt
GET /api/door-access/sync/{facilityId}/log
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/door-access/sync/{facilityId}/log \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Door/Gate Access-Ereignisse einer Einrichtung auflisten
Gibt Entriegelungsereignisse über Mobilgeräte, Admin-Übersteuerungen und die externe Partner API in einem umgekehrt chronologischen Feed zurück.
Parameter
facilityId `string` (erforderlich) from `integer` (optional) to `integer` (optional) limit `integer` (optional)Endpunkt
GET /api/door-access/events/{facilityId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/door-access/events/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Probelauf einer Geofence-Auswertung für den Admin-Testmodus-Pin
Anfragetext
Endpunkt
POST /api/door-access/geofence/test
Beispielanfrage
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 '{}'
Antwort
{}
Onboarding- bzw. Aktivierungsstatus einer Einrichtung abrufen
Steuert die Startseite "Get Started" des Applets und das Banner zum Einrichtungsfortschritt. Gibt aktuelle Tür- und Benutzeranzahlen, die zwei abgeleiteten Kernschritte (ein Benutzer existiert, eine Tür existiert), die gespeicherten optionalen "reviewed"-Flags und zurück, ob die Einrichtung aktiviert ist (beide Kernschritte erledigt). Wenn eine Einrichtung zum ersten Mal aktiviert wird, wird der Zeitstempel activatedAt gesetzt.
Parameter
facilityId `string` (erforderlich)Endpunkt
GET /api/door-access/onboarding/{facilityId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/door-access/onboarding/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Optionale Onboarding-Flags "reviewed" einer Einrichtung aktualisieren
Speichert die optionalen Checklisten-Flags, die ein Admin abhakt (Zugriffs- regeln, Synchronisierungseinstellungen, Geofencing). Die Kernschritte und die Aktivierung werden laufend aus den Datenanzahlen abgeleitet und können hier nicht gesetzt werden. Gibt den vollständigen aktualisierten Onboarding-Status zurück.
Parameter
facilityId `string` (erforderlich)Anfragetext
Endpunkt
PUT /api/door-access/onboarding/{facilityId}
Beispielanfrage
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 '{}'
Antwort
{}
Gibt eine JSON-Antwort mit Analysedaten der Einrichtung zurück.
Parameter
clubId `string` (optional) Die club-ID der Einrichtung, für die Analysedaten abgerufen werden sollen. fromDate `string` (optional) Das Startdatum der abzurufenden Analysedaten. toDate `string` (optional) Das Enddatum der abzurufenden Analysedaten.Endpunkt
GET /clubs/{clubId}/lead-events
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/lead-events \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine JSON-Antwort mit Analysedaten der Einrichtung zurück.
Parameter
clubId `string` (optional) Die club-ID der Einrichtung, für die Analysedaten abgerufen werden sollen. fromDate `string` (optional) Das Startdatum der abzurufenden Analysedaten. toDate `string` (optional) Das Enddatum der abzurufenden Analysedaten.Endpunkt
GET /clubs/{clubId}/analytics/page-views
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/page-views \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine JSON-Antwort mit Analysedaten der Einrichtung zurück.
Parameter
clubId `string` (optional) Die club-ID der Einrichtung, für die Analysedaten abgerufen werden sollen. fromDate `string` (optional) Das Startdatum der abzurufenden Analysedaten. toDate `string` (optional) Das Enddatum der abzurufenden Analysedaten.Endpunkt
GET /clubs/{clubId}/analytics/referrers
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/referrers \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine JSON-Antwort mit Analysedaten der Einrichtung zurück.
Parameter
clubId `string` (optional) Die club-ID der Einrichtung, für die Analysedaten abgerufen werden sollen. fromDate `string` (optional) Das Startdatum der abzurufenden Analysedaten. toDate `string` (optional) Das Enddatum der abzurufenden Analysedaten.Endpunkt
GET /clubs/{clubId}/analytics/socials
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/socials \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine JSON-Antwort mit Analysedaten der Einrichtung zurück.
Parameter
clubId `string` (optional) Die club-ID der Einrichtung, für die Analysedaten abgerufen werden sollen. fromDate `string` (optional) Das Startdatum der abzurufenden Analysedaten. toDate `string` (optional) Das Enddatum der abzurufenden Analysedaten.Endpunkt
GET /clubs/{clubId}/analytics/top-cities
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/top-cities \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine JSON-Antwort mit Analysedaten der Einrichtung zurück.
Parameter
clubId `string` (optional) Die club-ID der Einrichtung, für die Analysedaten abgerufen werden sollen. fromDate `string` (optional) Das Startdatum der abzurufenden Analysedaten. toDate `string` (optional) Das Enddatum der abzurufenden Analysedaten.Endpunkt
GET /clubs/{clubId}/analytics/total-page-views
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/total-page-views \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine JSON-Antwort mit Analysedaten der Einrichtung zurück.
Parameter
clubId `string` (optional) Die club-ID der Einrichtung, für die Analysedaten abgerufen werden sollen. fromDate `string` (optional) Das Startdatum der abzurufenden Analysedaten. toDate `string` (optional) Das Enddatum der abzurufenden Analysedaten.Endpunkt
GET /clubs/{clubId}/analytics/traffic
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/traffic \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Erzeugt ein temporäres Front-End-JWT (JSON Web Token) für einbettbare Google Analytics-Diagramme auf der Front-End-Seite 'analytics'.
Endpunkt
GET /api/ga/onetimetoken
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/ga/onetimetoken \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt Dashboard-Widgets von 'The Training Camp' zurück, wenn die Einrichtung aktive Mitglieder hat.
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten.Endpunkt
GET /api/reporting/apps/widgets/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/reporting/apps/widgets/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt alle ungeprüften Feiertage der Einrichtung zurück.
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten.Endpunkt
GET /api/reporting/club/{club}/unreviewed-holidays
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/reporting/club/{club}/unreviewed-holidays \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Alle ungeprüften Feiertage der Einrichtung als geprüft markieren.
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten.Endpunkt
PUT /api/reporting/club/{club}/review-holidays
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/reporting/club/{club}/review-holidays \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt den KPI-Bericht im CSV-Format zurück, aufgeschlüsselt nach Monaten über die letzten 12 Monate. *HINWEIS* Dies erstellt einen einzigen Bericht für ALLE Einrichtungen im System. Führen Sie dies nicht mehrfach parallel aus, da GymMaster sonst überlastet wird!
Parameter
months `string` (optional) Anzahl der abzurufenden Monate (ab dem aktuellen Datum, Standard 12)Endpunkt
GET /api/reporting/gymmaster/all-clubs-kpi-report
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/reporting/gymmaster/all-clubs-kpi-report \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt die Umsatzdiagramme des MMS für eine bestimmte Einrichtung zurück.
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten. range `string` (optional) Zeitraum in Tagen (rückwärts ab dem aktuellen Datum), der abgerufen werden sollEndpunkt
GET /api/reporting/gymmaster/revenuegraph/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/reporting/gymmaster/revenuegraph/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt die MMS-Daten bzw. -Analysen (Member Management System) des Dashboards für eine bestimmte Einrichtung zurück. Die Daten umfassen GymMaster-/Perfect Gym-Statistiken sowie weitere interne Kennzahlen, die unser System erfasst.
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten. range `string` (optional) Zeitraum in Tagen (rückwärts ab dem aktuellen Datum), der abgerufen werden sollEndpunkt
GET /api/reporting/gymmaster/widgets/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/reporting/gymmaster/widgets/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt die Myzone-Widget-Daten des Dashboards für eine bestimmte Einrichtung zurück.
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten.Endpunkt
GET /api/reporting/myzone/widgets/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/reporting/myzone/widgets/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt ein Objekt mit Diensten zurück, die von einem oder mehreren unserer Statusseiten- bzw. Überwachungsendpunkte als offline eingestuft werden (konfiguriert über das interne Tool 'Uptime Kuma').
Endpunkt
GET /api/reporting/statuspage/events
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/reporting/statuspage/events \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt bevorstehende Trainingsbuchungen für die nächsten 7 Tage zurück.
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten.Endpunkt
GET /api/reporting/clubs/{club}/workout-bookings
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/reporting/clubs/{club}/workout-bookings \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste vergangener Feiertage einer Einrichtung zurück.
Parameter
clubId `string` (optional) Club-ID fromDate `string` (optional) Unix-Zeitstempel des Startdatums des Zeitraums der zurückzugebenden Feiertage. toDate `string` (optional) Unix-Zeitstempel des Enddatums des Zeitraums der zurückzugebenden Feiertage.Endpunkt
GET /api/clubs/{clubId}/historical-holidays
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/historical-holidays \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt die der Einrichtung zugeordneten Geräteautomatisierungen zurück.
Parameter
club `string` (erforderlich) Interne ID des Clubs, dessen Geräte Sie auflisten möchten.Endpunkt
GET /api/ics/automations/list/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/ics/automations/list/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Aktualisiert die Gerätekonfiguration eines bestehenden Displays/Geräts.
Parameter
club `string` (erforderlich) Interne ID der Einrichtung, für die Sie das Gerät aktualisieren möchten. body `string` (erforderlich) JSON-Objekt der Aktualisierungsparameter.Endpunkt
POST /api/ics/automations/update/{club}
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/ics/automations/update/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Fügt Ihrer Einrichtung ein physisches Bildschirmgerät bzw. einen Computer hinzu und ordnet es zu.
Parameter
club `string` (erforderlich) Interne ID des Clubs, unter dem Sie das Gerät hinzufügen möchten. body `string` (erforderlich) JSON-Objekt des neuen Bildschirms, der zugeordnet werden soll.Endpunkt
POST /api/ics/devices/add/{club}
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/ics/devices/add/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Weist das Gerät an, sich anhand der Parameter mit einer neuen SSID zu verbinden.
Parameter
club `string` (erforderlich) Interne ID der Einrichtung, für die Sie das Gerät aktualisieren möchten. body `string` (erforderlich) JSON-Objekt der Aktualisierungsparameter.Endpunkt
POST /api/ics/devices/changewifi/{club}
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/ics/devices/changewifi/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Aktualisiert die Gerätekonfiguration eines bestehenden Displays/Geräts.
Parameter
club `string` (erforderlich) Interne ID der Einrichtung, für die Sie das Gerät aktualisieren möchten. body `string` (erforderlich) JSON-Objekt der Aktualisierungsparameter.Endpunkt
POST /api/ics/devices/command/{club}
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/ics/devices/command/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Lädt eine URL/Webseite auf einem bestimmten Gerätebildschirm.
Parameter
club `string` (erforderlich) Interne ID der Einrichtung, für die Sie das Gerät aktualisieren möchten. body `string` (erforderlich) JSON-Objekt der Aktualisierungsparameter.Endpunkt
POST /api/ics/devices/loadurl/{club}
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/ics/devices/loadurl/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Aktualisiert die Gerätekonfiguration eines bestehenden Displays/Geräts.
Parameter
club `string` (erforderlich) Interne ID der Einrichtung, für die Sie das Gerät aktualisieren möchten. body `string` (erforderlich) JSON-Objekt der Aktualisierungsparameter.Endpunkt
PUT /api/ics/devices/update/{club}
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/ics/devices/update/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Benennt ein Display/Gerät um. Nur Registrierung: Anders als der Update-Endpunkt überträgt dieser nichts an das Gerät und ist daher auch für Bildschirme mit einer Software-Version am Ende des Lebenszyklus verfügbar.
Parameter
club `string` (erforderlich) Interne ID der Einrichtung, zu der das Gerät gehört. body `string` (erforderlich) JSON-Objekt mit den Parametern für die Umbenennung.Endpunkt
PUT /api/ics/devices/rename/{club}
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/ics/devices/rename/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Ruft Widgets und Links zu Offline-Medien einer Einrichtung für das angegebene Datum ab.
Parameter
club `string` (erforderlich) Interne ID der Einrichtung, deren Programm Sie ändern möchten. date `string` (erforderlich) Datum für die zurückzugebenden Widget-URLs: Verwenden Sie das Format `YYYY-MM-DD`.Endpunkt
GET /api/ics/external-resources/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/ics/external-resources/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Ruft Widgets und Links zu Offline-Medien einer Einrichtung für das angegebene Datum ab.
Parameter
club `string` (erforderlich) Interne ID der Einrichtung, deren Programm Sie ändern möchten.Endpunkt
GET /api/ics/list-scheduled-workouts/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/ics/list-scheduled-workouts/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Ändert das Programm einer bestimmten Einrichtung.
Parameter
club `string` (erforderlich) Interne ID der Einrichtung, deren Programm Sie ändern möchten. body `string` (erforderlich) JSON-Objekt des neuen Programms.Endpunkt
POST /api/ics/loadprogram/{club}
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/ics/loadprogram/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Ruft die Programmkonfiguration eines bestehenden Displays/Geräts ab.
Parameter
club `string` (erforderlich) Interne ID der Einrichtung, deren Programmdaten Sie abrufen möchten.Endpunkt
GET /api/ics/programs/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/ics/programs/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Aktualisiert die Programmkonfiguration eines bestehenden Displays/Geräts.
Parameter
club `string` (erforderlich) Interne ID der Einrichtung, für die Sie das Gerät aktualisieren möchten. body `string` (erforderlich) JSON-Objekt mit den Update-Parametern.Endpunkt
PUT /api/ics/programs/{club}
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/ics/programs/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Ruft die Optionen der Programmkonfiguration ab.
Endpunkt
GET /api/ics/programs/options/{facilityID}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/ics/programs/options/{facilityID} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Chat mit RAG-Kontext: Hat keinen Zugriff auf Tools, nur auf ein einfaches API-Anfrage-/Antwort-Tool, mit dem Sie Wissen direkt aus der Wissensdatenbank abrufen.
Parameter
organisationId `string` (optional) Die Organisations-ID (wird automatisch erkannt, wenn nicht angegeben)Anfragetext
Endpunkt
POST /api/llm/chat
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/llm/chat \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Antwort
{}
Artikel-Embeddings aus dem Vektorspeicher löschen und den Status der Embedding-Nachverfolgung aktualisieren
Anfragetext
Endpunkt
DELETE /api/llm/delete-article
Beispielanfrage
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 '{}'
Antwort
{}
Datensätze der Embedding-Nachverfolgung nach Organisation und Status auflisten
Parameter
organisationId `string` (optional) Organisations-ID (wird automatisch ermittelt, wenn weggelassen) status `string` (erforderlich) Status, nach dem gefiltert wird (muss einer der folgenden sein: in_queue, done, anomaly, fail, deleted) Limit `string` (optional) Maximale Anzahl Elemente pro Seite LastEvaluatedKey `string` (optional) JSON des DynamoDB-LastEvaluatedKey für die PaginierungEndpunkt
GET /api/llm/embedding-track/by-org-and-status
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/llm/embedding-track/by-org-and-status \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Datensätze der Embedding-Nachverfolgung nach Organisation auflisten (optional nach Ressourcentyp gefiltert)
Parameter
organisationId `string` (optional) Organisations-ID (wird automatisch ermittelt, wenn weggelassen) resourceType `string` (optional) Optionaler Ressourcentyp (z. B. "article"). Wenn angegeben, wird nach Einträgen gefiltert, deren resourceTypeId mit "{type}#" beginnt. Limit `string` (optional) Maximale Anzahl Elemente pro Seite LastEvaluatedKey `string` (optional) JSON des DynamoDB-LastEvaluatedKey für die PaginierungEndpunkt
GET /api/llm/embedding-track/by-org
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/llm/embedding-track/by-org \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Vektordatenbank-Sammlung der Organisation initialisieren
Parameter
organisationId `string` (optional) Die Organisations-ID (wird automatisch erkannt, wenn nicht angegeben)Endpunkt
POST /api/llm/init-org
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/llm/init-org \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Semantische Suche in der Wissensdatenbank
Parameter
organisationId `string` (optional) Die Organisations-ID (wird automatisch erkannt, wenn nicht angegeben)Anfragetext
Endpunkt
POST /api/llm/semantic-search
Beispielanfrage
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 '{}'
Antwort
{}
Streaming-Verarbeitung der für das Embedding eingereihten Artikel mit Fortschrittsanzeige in Echtzeit starten
Parameter
organisationId `string` (optional) Die Organisations-ID (wird automatisch erkannt, wenn nicht angegeben)Endpunkt
POST /api/llm/start-embedding-stream
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/llm/start-embedding-stream \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Artikel-Embeddings in die Vektordatenbank einfügen oder aktualisieren
Verarbeitet Artikel-Embeddings je nach aktuellem Zustand: - Wenn der Artikel nicht veröffentlicht ODER privat ist: Embeddings werden gelöscht - Wenn der Artikel veröffentlicht UND öffentlich ist: Embeddings werden mit dem vollständigen Inhalt neu erstellt Erfordert immer den vollständigen Artikeltext.
Parameter
organisationId `string` (optional) Die Organisations-ID (wird automatisch erkannt, wenn nicht angegeben)Anfragetext
Endpunkt
POST /api/llm/upsert-embeddings
Beispielanfrage
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 '{}'
Antwort
{}
Testendpunkt zum Massenlöschen von Artikel-Embeddings nach Organisation und optionalem Status
Parameter
organisationId `string` (optional) Organisations-ID (wird aus dem Benutzerkontext ermittelt, wenn weggelassen) status `string` (optional) Status, nach dem gefiltert wird (optional; wenn weggelassen, werden ALLE Artikel der Organisation unabhängig vom Status gelöscht) hardDelete `string` (optional) Ob Datensätze der Embedding-Nachverfolgung endgültig gelöscht (true) oder durch Aktualisieren des Status vorläufig gelöscht werden (false)Endpunkt
DELETE /api/llm/test/batch-delete-by-status
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/llm/test/batch-delete-by-status \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Text transformieren und in Abschnitte aufteilen, mit detaillierter Statistik
Testendpunkt, der Text transformiert und in Abschnitte aufteilt und anschließend eine detaillierte Statistik zur Verteilung der Abschnitte liefert, einschließlich Zeichenanzahlen, Prozentwerten und Qualitätskennzahlen, um die Wirksamkeit der Aufteilung zu bewerten.
Anfragetext
Endpunkt
POST /api/llm/test/transform-chunk
Beispielanfrage
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 '{}'
Antwort
{}
Gesamtzahl der Vektoren im Vektorindex der Organisation abrufen
Testendpunkt, der alle Vektoren im Vektorindex der Organisation des aktuellen Benutzers zählt
Parameter
organisationId `string` (optional) Die Organisations-ID (wird automatisch erkannt, wenn nicht angegeben)Endpunkt
GET /api/llm/test/vector-count
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/llm/test/vector-count \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Alle Vektoren einer bestimmten articleId aus dem Vektorindex löschen
Testendpunkt, der alle einer bestimmten articleId zugeordneten Vektoren aus dem Vektorindex der Organisation des aktuellen Benutzers löscht.
Parameter
organisationId `string` (optional) Die Organisations-ID (wird automatisch erkannt, wenn nicht angegeben) articleId `string` (erforderlich) Die articleId, deren Vektoren gelöscht werden sollen dryRun `string` (optional) Wenn true, wird nur angezeigt, was gelöscht würde, ohne tatsächlich zu löschenEndpunkt
DELETE /api/llm/test/vector-delete-article
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/llm/test/vector-delete-article \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Vector SDK durch Auflisten aller Indizes testen
Testendpunkt, der die Konnektivität des Vector SDK prüft und alle Indizes im Vektor-Bucket auflistet
Endpunkt
GET /api/llm/test/vector-indices
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/llm/test/vector-indices \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Vektorindex für eine Organisation initialisieren
Erstellt den Vektor-Bucket und den Index für die Organisation des aktuellen Benutzers
Parameter
organisationId `string` (optional) Die Organisations-ID (wird automatisch erkannt, wenn nicht angegeben)Endpunkt
POST /api/llm/test/vector-init-index
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/llm/test/vector-init-index \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Alle Vektor-Metadaten einer bestimmten articleId abrufen
Testendpunkt, der alle Vektorabschnitte und ihre Metadaten für eine bestimmte articleId aus dem Vektorindex abruft. Nützlich, um zu prüfen, wie ein Artikel aufgeteilt und gespeichert wird. Die Filterung übernimmt der Vektorspeicherdienst.
Parameter
organisationId `string` (optional) Die Organisations-ID (wird automatisch erkannt, wenn nicht angegeben) articleId `string` (erforderlich) Die Artikel-ID, deren Vektor-Metadaten abgerufen werden sollenEndpunkt
GET /api/llm/test/vector-metadata-by-article
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/llm/test/vector-metadata-by-article \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Neueste Vektoren mit Metadaten aus dem Vektorindex abrufen
Testendpunkt, der die 10 neuesten Vektoren mit Metadaten (aber ohne Vektordaten) aus dem Vektorindex der Organisation des aktuellen Benutzers abruft. Nützlich, um die Struktur der Metadaten zu prüfen.
Parameter
organisationId `string` (optional) Die Organisations-ID (wird automatisch erkannt, wenn nicht angegeben) limit `string` (optional) Anzahl der zurückzugebenden neuesten Vektoren (max. 100)Endpunkt
GET /api/llm/test/vector-recent
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/llm/test/vector-recent \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Lädt ein Asset für den Marketing Manager/Designer in den S3-Speicher hoch.
Parameter
file `string` (optional) Name der hochzuladenden Datei bzw. des hochzuladenden Assets.Endpunkt
POST /api/marketing/design/static/download
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/marketing/design/static/download \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt das einzelne Asset im JSON-Format zurück, das in den Asset-Manager geladen wird.
Parameter
id `string` (erforderlich) ID des abzurufenden Assets. organisationId `string` (erforderlich) Die Organisations-ID der Einrichtung, zu der das Asset gehört.Endpunkt
GET /api/marketing/assets/get/{id}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/marketing/assets/get/{id} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt alle Design-Assets zurück.
Parameter
body `string` (erforderlich) JSON-Objekt mit den Einrichtungsdaten, die Sie speichern möchten. organisationId `string` (erforderlich) Die Organisations-ID der Einrichtung, zu der das Asset gehört. useCache `string` (optional) search `string` (optional) Die Suchanfrage, um Assets nach Name oder Tags zu filtern. brand `string` (optional) Die Marke, nach der Assets gefiltert werden. tag `string` (optional) Das Tag, nach dem Assets gefiltert werden.Endpunkt
GET /api/marketing/assets/get
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/marketing/assets/get \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine einzelne Seite mit Marketing-Druck-Assets einer Organisation zurück. Verwendet Algolia für die Relevanzsuche und seitenbasierte Paginierung (mit Gesamtanzahlen) und greift auf DynamoDB zurück, wenn Algolia nicht verfügbar ist.
Parameter
organisationId `string` (erforderlich) Die Organisations-ID der Einrichtung, zu der die Assets gehören. search `string` (optional) Die Suchanfrage, um Assets nach Name oder Tags zu filtern. brand `string` (optional) Die Marke, nach der Assets gefiltert werden. tag `string` (optional) Das Tag, nach dem Assets gefiltert werden. page `string` (optional) Nullbasierte Nummer der abzurufenden Seite. limit `string` (optional) Anzahl der Assets pro Seite (max. 300). useCache `string` (optional) Wenn false, wird Algolia umgangen und DynamoDB direkt abgefragt.Endpunkt
GET /api/marketing/assets
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/marketing/assets \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste der verfügbaren Assets zurück, die über den Asset-Manager hochgeladen wurden.
Parameter
organisationId `string` (erforderlich)Endpunkt
GET /api/marketing/assets/list
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/marketing/assets/list \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Fügt ein Asset hinzu bzw. speichert es.
Parameter
body `string` (erforderlich) JSON-Objekt mit den Einrichtungsdaten, die Sie speichern möchten. organisationId `string` (erforderlich) Die Organisations-ID der Einrichtung, zu der das Asset gehört.Endpunkt
PUT /api/marketing/assets/save
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/assets/save \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Lädt ein Asset für den Marketing Manager/Designer in den S3-Speicher hoch.
Parameter
file `string` (optional) Name der hochzuladenden Datei bzw. des hochzuladenden Assets. organisationId `string` (optional) Die ID der Organisation, zu der das Asset gehört.Endpunkt
POST /api/marketing/assets/upload
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/marketing/assets/upload \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste aller benutzerdefinierten Seiten einer Organisation zurück.
Parameter
organisationId `string` (erforderlich) Interne ID der Organisation, deren benutzerdefinierte Seiten zurückgegeben werden sollen.Endpunkt
GET /api/marketing/custom-pages
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/marketing/custom-pages \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Fügt eine benutzerdefinierte Seite für eine Organisation ein oder aktualisiert sie.
Parameter
organisationId `string` (erforderlich) Interne ID der Organisation, deren benutzerdefinierte Seiten zurückgegeben werden sollen. body `object` (erforderlich) Einzufügende oder zu aktualisierende Daten der benutzerdefinierten Seite.Endpunkt
PUT /api/marketing/custom-pages
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/custom-pages \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste aller benutzerdefinierten Seiten einer Einrichtung zurück.
Parameter
facilityId `string` (erforderlich) Interne ID der Einrichtung, deren benutzerdefinierte Seiten zurückgegeben werden sollen.Endpunkt
GET /api/facilities/{facilityId}/marketing/custom-pages
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/marketing/custom-pages \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt alle exportierten/gerenderten Designs für eine bestimmte club-ID zurück.
Parameter
club `string` (erforderlich) Interne ID der Einrichtung, die die Anfrage stellt. sort `string` (optional) Sortierung der Designs; unterstützt werden 'oldest', 'newest' oder 'design'.Endpunkt
GET /api/marketing/designs/{club}/exports
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/{club}/exports \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt den HTML-Inhalt eines einzelnen Designs im JSON-Format zurück, der in den Editor geladen wird.
Parameter
id `string` (erforderlich) ID des abzurufenden Designs.Endpunkt
GET /api/marketing/designs/get/{id}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/get/{id} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste der Eingabezuordnungen in Marketing- und Druckdesigns sowie Designvorlagen zurück
Parameter
clubId `string` (erforderlich) Interne ID der Einrichtung, die die Anfrage stellt. availableFeatures `string` (optional) Alle Elemente mit bestimmten Funktionen zurückgeben brand `string` (optional) Filtert Designs nach Marke features `string` (optional) Ergebnisse nach Funktionen filternEndpunkt
GET /api/marketing/designs/input-mapping/{clubId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/input-mapping/{clubId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste der verfügbaren Designs für eine bestimmte Einrichtung zurück, die in Designs (Print Designs) verwendet werden können, die im Marketing-/Druckeditor des Hubs erstellt werden.
Parameter
club `string` (erforderlich) Interne ID der Einrichtung, die die Anfrage stellt. designAdmin `string` (optional) Alle Designdaten zurückgeben (Admin-Ansicht / erfordert Administratorrechte). brand `string` (optional) Filtert Designs nach MarkeEndpunkt
GET /api/marketing/designs/{club}/list
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/{club}/list \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Zwingt das System, alle Design-Miniaturansichten und -Vorschauen (neu) zu rendern (hauptsächlich verwendet, wenn sich vorgelagerte Assets in S3 usw. ändern)... **HINWEIS** Sie können diese Funktion nur einmal alle X Minuten aufrufen (und nicht, solange bereits ein Rendervorgang läuft). So wird sichergestellt, dass das Rendern aller Designs unsere Server nicht übermäßig belastet...
Endpunkt
GET /api/marketing/designs/render-all-thumbnails
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/render-all-thumbnails \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Startet das Rendern eines dynamischen Designs
Parameter
body `string` (erforderlich) JSON-Objekt mit Einrichtungsdaten, die Sie an den Design-Renderprozessor senden möchten...Endpunkt
POST /api/marketing/designs/dynamic/render-design
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/marketing/designs/dynamic/render-design \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Fügt ein Design hinzu, speichert oder aktualisiert es.
Parameter
body `string` (erforderlich) JSON-Objekt mit den Einrichtungsdaten, die Sie speichern möchten.Endpunkt
PUT /api/marketing/designs/{club}/save
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/designs/{club}/save \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt das einzelne statische Design im zu ladenden JSON-Format zurück
Parameter
id `string` (erforderlich) ID des abzurufenden statischen Designs.Endpunkt
GET /api/marketing/designs/static/get/{id}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/static/get/{id} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Fügt eine statische Designvorlage hinzu, speichert oder aktualisiert sie.
Parameter
body `string` (erforderlich) JSON-Objekt mit den Einrichtungsdaten, die Sie speichern möchten.Endpunkt
PUT /api/marketing/designs/static/{club}/save
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/designs/static/{club}/save \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Entfernt eine vom Benutzer festgelegte Variable aus dem System.
Parameter
club `string` (erforderlich) Interne ID der Einrichtung, die die Anfrage stellt. body `string` (erforderlich) JSON mit der ID der zu entfernenden Variable.Endpunkt
DELETE /api/marketing/variables/{club}/delete
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/marketing/variables/{club}/delete \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste der verfügbaren Variablen für eine bestimmte Einrichtung zurück, die in Designs (Print Designs) verwendet werden können, die im Marketing-/Druckeditor des Hubs erstellt werden.
Parameter
club `string` (erforderlich) Interne ID der Einrichtung, die die Anfrage stellt.Endpunkt
GET /api/marketing/variables/{club}/list
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/marketing/variables/{club}/list \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Erstellt eine einzelne neue benutzerbasierte 'Variable' für die angegebene Einrichtung.
Parameter
club `string` (erforderlich) Interne ID der Einrichtung, die die Anfrage stellt. body `string` (erforderlich) JSON-Objekt der neuen Variable.Endpunkt
POST /api/marketing/variables/{club}/new
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/marketing/variables/{club}/new \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Fügt eine oder mehrere Designvariablen über ein Array von Objekten im System hinzu, speichert oder aktualisiert sie.
Parameter
club `string` (erforderlich) Interne ID der Einrichtung, die die Anfrage stellt. body `string` (erforderlich) Array mit einem oder mehreren hinzuzufügenden/zu aktualisierenden JSON-Objekten (so lassen sich mehrere Elemente/Objekte in einer API-Anfrage speichern).Endpunkt
PUT /api/marketing/variables/{club}/save
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/variables/{club}/save \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt das MCP-Dokumentationsmanifest für den angemeldeten Benutzer zurück
Stellt die In-App-Seite `/mcp-docs` bereit. Gibt die MCP-Server-URL, die unterstützten Authentifizierungs-Header, die Identität bzw. das Admin-Flag des Aufrufers und die gefilterte Toolliste zurück (genauso gefiltert wie `/mcp/tools/list`, sodass die Dokumentationsseite nie ein Tool anzeigt, das der Aufrufer nicht tatsächlich verwenden kann).
Endpunkt
GET /api/mcp/docs-manifest
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/mcp/docs-manifest \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Benutzervereinbarung erstellen.
Parameter
body `object` (erforderlich) JSON-Objekt mit den Einrichtungsdaten, die Sie speichern möchten.Endpunkt
POST /api/member-agreements/contracts-tna/:club
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste der Vereinbarungen zurück.
Endpunkt
GET /api/member-agreements/contracts-tna/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Benutzervereinbarung löschen.
Endpunkt
DELETE /api/member-agreements/contracts-tna/:club/:id
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club/:id \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt die Details einer Vereinbarung zurück.
Endpunkt
GET /api/member-agreements/contracts-tna/:club/:id
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club/:id \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Benutzervereinbarung aktualisieren.
Parameter
body `object` (erforderlich) JSON-Objekt mit den Einrichtungsdaten, die Sie speichern möchten.Endpunkt
PATCH /api/member-agreements/contracts-tna/:club/:id
Beispielanfrage
curl -X PATCH https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club/:id \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Standardvereinbarungen der Einrichtung abrufen.
Parameter
body `object` (erforderlich) JSON-Objekt mit den Einrichtungsdaten, die Sie speichern möchten.Endpunkt
GET /api/member-agreements/default-tna/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/default-tna/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Standardvereinbarung der Einrichtung festlegen.
Parameter
body `object` (erforderlich) JSON-Objekt mit den Einrichtungsdaten, die Sie speichern möchten.Endpunkt
POST /api/member-agreements/default-tna/:club
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/member-agreements/default-tna/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste globaler oder regionaler Vereinbarungen zurück.
Endpunkt
GET /api/member-agreements/global-tna/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/global-tna/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste der Mitglieder mit Vereinbarung zurück.
Endpunkt
GET /api/member-agreements/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste der Mitglieder einer Einrichtung nach Saison für die App des Trainingscamps zurück.
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten. season `string` (optional) Saison des Trainingscamps, nach der Sie filtern möchten. userIds `string` (optional) Array von Benutzer-IDs, nach denen gefiltert wird. useCache `string` (optional) Ob der Cache verwendet werden soll. isUserMemberInfo `string` (optional) Wenn aktiviert, werden die Daten nach userIds gefiltert (empfohlen wird nur eine Benutzer-ID) und notwendige Daten wie Bestenliste und Benutzereinstellungen einbezogen.Endpunkt
GET /api/members-leads/trainingcamp/club/season-members/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/members-leads/trainingcamp/club/season-members/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Löscht mehrere Leads für Trainingsbuchungen.
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten. body `string` (erforderlich)Endpunkt
DELETE /api/members-leads/workout-booking/club/leads/{club}
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/members-leads/workout-booking/club/leads/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste der Leads für Trainingsbuchungen einer Einrichtung zurück.
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten. all `string` (optional) Ob alle Leads oder nur die bevorstehenden angezeigt werden.Endpunkt
GET /api/members-leads/workout-booking/club/leads/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/members-leads/workout-booking/club/leads/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Aktualisiert einen Lead für Trainingsbuchungen.
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten. body `string` (erforderlich)Endpunkt
PUT /api/members-leads/workout-booking/club/leads/{club}
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/members-leads/workout-booking/club/leads/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Schaltet den Markierungsstatus eines Leads für Trainingsbuchungen um.
Parameter
club `string` (erforderlich) Interne ID des Clubs. body `string` (erforderlich)Endpunkt
PATCH /api/members-leads/workout-booking/club/leads/{club}/flag
Beispielanfrage
curl -X PATCH https://portal.hub.gymsystems.co/api/members-leads/workout-booking/club/leads/{club}/flag \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Wirksame Module einer Einrichtung abrufen
Gibt alle für eine Einrichtung verfügbaren Module zurück, indem die Hierarchie aufgelöst wird: Einstellungen der Einrichtung → Module der Marke → Module der Organisation. Die Ergebnisse werden zur Leistungssteigerung in Redis zwischengespeichert.
Parameter
facilityId `string` (erforderlich) Die ID der Einrichtung, für die Module ermittelt werden sollenEndpunkt
GET /api/facilities/{facilityId}/modules
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/modules \
-H "x-api-key: YOUR_API_KEY"
Antwort
[]
Gibt den Modulkatalog sowie die Konfiguration für die Darstellung des Seitenmenüs zurück. Die vollständige Modulliste wird zurückgegeben, damit der Front-End-Renderer die Sichtbarkeit pro Benutzer bestimmen kann; die ACL wird weiterhin serverseitig über `auth.checkModuleAccess()` durchgesetzt.
Endpunkt
GET /api/modules
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/modules \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Benachrichtigungskategorien abrufen.
Endpunkt
GET /api/notification/categories
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/notification/categories \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gelesene Benachrichtigung löschen.
Endpunkt
DELETE /api/club/notification/consumed/:club
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/club/notification/consumed/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Erstellt eine Benachrichtigung.
Endpunkt
POST /api/club/notification/consumed/:club
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/club/notification/consumed/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt ein Array gelesener Benachrichtigungen zurück.
Endpunkt
GET /api/club/notification/consumed/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/club/notification/consumed/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Benachrichtigung löschen.
Endpunkt
DELETE /api/club/notification/messages/:club
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/club/notification/messages/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt ein Array von Benachrichtigungen zurück.
Endpunkt
GET /api/club/notification/messages/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/club/notification/messages/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Aktualisiert eine Benachrichtigung.
Endpunkt
PATCH /api/club/notification/messages/:club
Beispielanfrage
curl -X PATCH https://portal.hub.gymsystems.co/api/club/notification/messages/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Erstellt eine Benachrichtigung.
Parameter
body `string` (erforderlich)Endpunkt
POST /api/club/notification/messages/:club
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/club/notification/messages/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Betrachter einer Benachrichtigung nach Einrichtung abrufen.
Endpunkt
POST /api/club/notification/viewers/:club
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/club/notification/viewers/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Benachrichtigungskategorien nach Benutzer abrufen.
Endpunkt
GET /api/club/notification/user-categories/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/club/notification/user-categories/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Erstellt eine Benachrichtigung.
Endpunkt
POST /api/notification/webhook
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/notification/webhook \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Öffentlichen VAPID-Schlüssel für HTML5-Push abrufen
Gibt den öffentlichen VAPID-Schlüssel zurück, der zum Erstellen von Browser-Push-Abonnements verwendet wird.
Endpunkt
GET /html5-push/vapid-public-key
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/html5-push/vapid-public-key \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
HTML5-Push-Abonnement speichern oder aktualisieren
Speichert ein Browser-Push-Abonnement für den aktuellen Benutzer.
Anfragetext
Endpunkt
POST /html5-push/subscribe
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/html5-push/subscribe \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Antwort
{}
HTML5-Push-Abonnement löschen
Entfernt ein Browser-Push-Abonnement des aktuellen Benutzers.
Anfragetext
Endpunkt
POST /html5-push/unsubscribe
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/html5-push/unsubscribe \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Antwort
{}
Onboarding-Status des Standorts für den aufrufenden Benutzer abrufen
Gibt die beiden Onboarding-Teile einer Einrichtung zurück: Einrichtung (Details + Produktauswahl, gespeichert in den Einstellungen der Einrichtung) und Zahlung (laufend abgeleitet aus dem Datensatz der Zahlungseinstellungen der SaaS-Abrechnung), sowie ein für den Aufrufer personalisiertes Flag `required`, auf das die App-Oberfläche reagiert. Nur für Standorte mit Technologie-Stack; Standorte mit Business-Stack geben immer required=false zurück.
Parameter
facilityId `string` (erforderlich)Endpunkt
GET /api/onboarding/{facilityId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/onboarding/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Laufenden Fortschritt des Onboarding-Assistenten für eine Einrichtung speichern
Speichert den teilweisen Zustand des Assistenten (Produktauswahl, Freitext unter "Other", geprüfte Unternehmensdetails, aktueller Schritt), damit nach Aktualisieren oder Abbrechen dort fortgesetzt wird, wo der Benutzer aufgehört hat. Setzt nie den Abschluss: Siehe den Endpunkt für den Abschluss.
Parameter
facilityId `string` (erforderlich)Anfragetext
Endpunkt
PUT /api/onboarding/{facilityId}
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/onboarding/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Antwort
{}
KI-Vorschläge zum Vorausfüllen des Onboarding-Assistenten erzeugen
Verwendet den vorhandenen Kontext von Einrichtung/Marke/Organisation, um Details der Einrichtung vorzuschlagen (Beschreibungstext, bereinigte Kontaktfelder), eine Produktauswahl und kurze personalisierte Tipps. Die Ergebnisse werden 7 Tage lang in Redis zwischengespeichert. Die Vorschläge sind nur Empfehlungen: Der Client zeigt sie in einem bearbeitbaren Prüfformular an. Antwortet immer mit 200; `suggestions` ist null, wenn KI nicht verfügbar ist, sodass der Assistent problemlos weiter funktioniert.
Parameter
facilityId `string` (erforderlich)Endpunkt
POST /api/onboarding/{facilityId}/ai-prefill
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/onboarding/{facilityId}/ai-prefill \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Einrichtungsteil des Standort-Onboardings abschließen
Validiert die bestätigte Auswahl und Details, speichert die Unternehmens- details im Datensatz der Einrichtung, legt das Layout des Technikmenüs der Einrichtung anhand der Produktauswahl an (sofern noch kein angepasstes Layout existiert) und setzt den Abschluss der Einrichtung. Der Zahlungsteil kann hier absichtlich NICHT abgeschlossen werden: Er wird laufend aus dem Datensatz der Zahlungseinstellungen der SaaS-Abrechnung abgeleitet, sodass die verpflichtende Kartenangabe nicht durch Aufruf dieses Endpunkts umgangen werden kann. Gibt den aktualisierten Status zurück.
Parameter
facilityId `string` (erforderlich)Anfragetext
Endpunkt
POST /api/onboarding/{facilityId}/complete
Beispielanfrage
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 '{}'
Antwort
{}
Deklarierte Aktion einer Partnerintegration für eine Einrichtung auslösen
Führt eine im Partnerdatensatz deklarierte Aktion "Run integration" (ph-partners.actions[]) für eine Einrichtung aus. Eine Redis-Single-Flight-Sperre verhindert gleichzeitige manuelle Ausführungen für dieselbe Kombination aus Aktion und Einrichtung.
Parameter
partnerId `string` (erforderlich) actionId `string` (erforderlich)Anfragetext
Endpunkt
POST /api/partners/{partnerId}/actions/{actionId}/run
Beispielanfrage
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 '{}'
Ausführungsstatus einer Aktion einer Partnerintegration lesen
Gibt zurück, ob gerade eine manuelle Ausführung läuft (Single-Flight-Sperre gehalten), sowie die zuletzt angeforderte Ausführung, damit die Schaltfläche in den Einstellungen den Status abfragen kann.
Parameter
partnerId `string` (erforderlich) actionId `string` (erforderlich) facilityId `string` (erforderlich)Endpunkt
GET /api/partners/{partnerId}/actions/{actionId}/status
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/partners/{partnerId}/actions/{actionId}/status \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Alle Partnerkonfigurationen einer Marke abrufen
Parameter
brandId `string` (erforderlich) Die Marken-IDEndpunkt
GET /api/partners/brand-config/{brandId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/partners/brand-config/{brandId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
[]
Partnerkonfiguration einer Marke erstellen oder aktualisieren
Parameter
body `object` (erforderlich)Endpunkt
PUT /api/partners/brand-config
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/partners/brand-config \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
GymMaster-Integrationsdaten nach facility-partner-config migrieren
Fragt alle Einrichtungen mit den Feldern gymMasterAPI und gymMasterDomain ab und erstellt bzw. aktualisiert die entsprechenden facility-partner-config-Datensätze. Dies ist ein Endpunkt für eine einmalige Migration.
Parameter
partnerId `string` (erforderlich) Die GymMaster-Partner-ID, die für alle migrierten Datensätze verwendet wird dryRun `boolean` (optional) Wenn true, wird nur gemeldet, was migriert würde, ohne in die Datenbank zu schreibenEndpunkt
GET /api/partners/migrate-gymmaster
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/partners/migrate-gymmaster \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Partner für eine Organisation aktivieren.
Parameter
partnerId `string` (erforderlich) ID des PartnersEndpunkt
POST /api/partners/organisation/enable
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/partners/organisation/enable \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Partner der Organisation auflisten. Organisationsadministratoren sehen nur die Partner ihrer eigenen Organisation.
Endpunkt
GET /api/partners/organisation
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/partners/organisation \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Partner einer Organisation entfernen.
Parameter
keyId `string` (erforderlich) Schlüssel-ID des Organisationspartners organisationId `string` (erforderlich) Organisations-ID des PartnersEndpunkt
DELETE /api/partners/organisation/{keyId}
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/partners/organisation/{keyId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Zugriffsmodus und Module eines Organisationspartners aktualisieren.
Parameter
keyId `string` (erforderlich) Schlüssel-ID des Organisationspartners organisationId `string` (erforderlich) Organisations-ID des Partners partnerId `string` (erforderlich) Partner-ID accessMode `string` (erforderlich) Zugriffsmodus für den Partner modules `string` (optional) Liste der Module für den Zugriffsmodus LIMITEDEndpunkt
PUT /api/partners/organisation/update-access
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/partners/organisation/update-access \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Check-ins für eine Einrichtung erstellen
Akzeptiert ein Array von Check-in-Objekten und leitet sie zur Verarbeitung an die Partner API weiter. Maximal 25 Check-ins pro Anfrage.
Anfragetext
Endpunkt
POST /api/partners/check-ins
Beispielanfrage
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 '{}'
Antwort
{}
Partnerkonfiguration einer Einrichtung löschen
Entfernt die Konfiguration einer Partnerintegration in einer Einrichtung
Parameter
facilityId `string` (erforderlich) Einrichtungs-ID (club-ID) partnerId `string` (erforderlich) Partner-IDEndpunkt
DELETE /api/partners/facility-config/{facilityId}/{partnerId}
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/partners/facility-config/{facilityId}/{partnerId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Alle Partnerkonfigurationen einer Einrichtung auflisten
Gibt alle für die angegebene Einrichtung konfigurierten Partnerintegrationen zurück
Parameter
facilityId `string` (erforderlich) Einrichtungs-ID (club-ID)Endpunkt
GET /api/partners/facility-config/{facilityId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/partners/facility-config/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Partnerkonfiguration einer Einrichtung erstellen oder aktualisieren
Fügt die Konfiguration einer Partnerintegration in einer Einrichtung ein oder aktualisiert sie
Anfragetext
Endpunkt
POST /api/partners/facility-config
Beispielanfrage
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 '{}'
Antwort
{}
Mitglied anhand der memberId löschen
Löscht einen bestehenden Mitgliedsdatensatz anhand der memberId.
Parameter
memberId `string` (erforderlich) Eindeutige Kennung des MitgliedsEndpunkt
DELETE /api/partners/members/{memberId}
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/partners/members/{memberId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Mitglied anhand der memberId aktualisieren
Aktualisiert einen bestehenden Mitgliedsdatensatz anhand der memberId.
Parameter
memberId `string` (erforderlich) Eindeutige Kennung des MitgliedsAnfragetext
Endpunkt
PUT /api/partners/members/{memberId}
Beispielanfrage
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 '{}'
Antwort
{}
Status eines Mitgliedersynchronisierungsvorgangs abrufen
Gibt den aktuellen Zustand eines asynchronen Vorgangs zum Erstellen/Löschen von Mitgliedern zurück, der über POST /api/partners/members oder DELETE /api/partners/members/{memberId} gestartet wurde. Das Front-End fragt diesen Endpunkt ab und ersetzt damit den bisherigen Ablauf aus Listenabfrage und Namensabgleich. HINWEIS Die Eingrenzung nach partnerId/facilityId auf Zeilenebene ist durch die Regeln zur Mandantentrennung vorgeschrieben, wurde aber auf einen Härtungs-PR in Phase 3a.1 verschoben: operationIds sind 128-Bit-UUIDs, und die Route ist bereits durch den Modulzugriff `external-integrations` geschützt. Jeder mit einer gültigen operationId und Admin-Modulzugriff kann ihren Status abfragen.
Parameter
operationId `string` (erforderlich) Von POST/DELETE zurückgegebene UUIDEndpunkt
GET /api/partners/members/operations/{operationId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/partners/members/operations/{operationId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Mitglieder für eine Einrichtung erstellen oder aktualisieren
Akzeptiert ein Array von Mitgliedsobjekten und leitet sie zur Verarbeitung an die Partner API weiter. Maximal 25 Mitglieder pro Anfrage.
Anfragetext
Endpunkt
POST /api/partners/members
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/partners/members \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Antwort
{}
Mitgliedschaftstarife für eine Einrichtung erstellen oder aktualisieren
Akzeptiert ein Array von Mitgliedschaftstarif-Objekten und leitet sie zur Verarbeitung an die Partner API weiter. Maximal 25 Mitgliedschaftstarife pro Anfrage.
Anfragetext
Endpunkt
POST /api/partners/membership-plans
Beispielanfrage
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 '{}'
Antwort
{}
Erstellt eine neue Rolle
Parameter
body `string` (erforderlich) RollenobjektEndpunkt
POST /api/roles
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/roles \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste aller Rollen zurück
Endpunkt
GET /api/roles
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/roles \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Löscht eine Rolle anhand der ID
Endpunkt
DELETE /api/roles/{roleId}
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/roles/{roleId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Aktualisiert eine Rolle anhand der ID
Parameter
body `string` (erforderlich) RollenobjektEndpunkt
PUT /api/roles/{roleId}
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/roles/{roleId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Neue zusätzliche Position für die SaaS-Abrechnungsrechnung erstellen
Parameter
organisationId `string` (optional) Die Organisations-ID, für die die zusätzliche Position erstellt wird body `string` (optional) Text der AnfrageEndpunkt
POST /api/saas-billing/additional-line-items
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/saas-billing/additional-line-items \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste zusätzlicher Positionen für die SaaS-Abrechnungsrechnung zurück
Parameter
organisationId `string` (erforderlich) Die Organisations-IDEndpunkt
GET /api/saas-billing/additional-line-items
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/additional-line-items \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste zusätzlicher Positionen für die SaaS-Abrechnungsrechnung der Einrichtung zurück
Endpunkt
GET /api/clubs/{clubId}/saas-billing/additional-line-items
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/saas-billing/additional-line-items \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Aktualisiert eine zusätzliche Position der SaaS-Abrechnungsrechnung
Parameter
itemId `string` (erforderlich) Die ID der zu aktualisierenden zusätzlichen Position body `string` (erforderlich) Der Text der AnfrageEndpunkt
PUT /api/saas-billing/additional-line-items/{itemId}
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/saas-billing/additional-line-items/{itemId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Kombinierte Stundensätze für Cloud Agent unter Your Rates
Gibt die angebotenen Cloud Agent-Größen mit einem einzigen kombinierten Stundenpreis (Hosting + Software) zurück. Die Aufteilung ist nicht enthalten. usedPlans sind SKUs, die diese Einrichtung in den letzten 30 Tagen genutzt hat.
Parameter
clubID `string` (erforderlich)Endpunkt
GET /api/clubs/{clubID}/saas-billing/cloud-agent-rates
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/cloud-agent-rates \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Importierten Monatsbericht löschen
Parameter
club `string` (optional) Club-ID reportId `string` (optional) Berichts-IDEndpunkt
DELETE /api/saas-billing/extended-access/monthly-usage-report/{reportId}
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/saas-billing/extended-access/monthly-usage-report/{reportId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Neuesten Bericht zum Videoüberwachungsspeicher einer Einrichtung abrufen
Gibt den neuesten täglichen Snapshot des Videoüberwachungsspeichers der Einrichtung aus den gespeicherten Abrechnungsprotokollen zurück (bis zu den letzten 31 Tagen). Enthält totalStorage, date und speicherbezogene Gebühren.
Parameter
club `string` (erforderlich) Club-IDEndpunkt
GET /api/saas-billing/extended-access/latest-cctv-storage-report/{club}
Beispielanfrage
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"
Antwort
{}
Gibt eine PDF-Rechnung der Einrichtung für den angegebenen Zeitraum zurück.
Parameter
club `string` (optional) Club-ID month `string` (optional) Monat des Berichts als Zahl. 1 = Januar, 2 = Februar usw. year `string` (optional) Jahr des Berichts als Zahl, z. B. 2021Endpunkt
GET /api/saas-billing/extended-access/monthly-usage-report/:club/invoice
Beispielanfrage
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"
Antwort
{}
Paket der Plattformrechnungen als PDF für die ausgewählten Nutzungsmonate, als ZIP-Datei. Massenvariante des einzelnen Endpunkts .../invoice: Stellt den Download mehrerer ausgewählter Rechnungen auf der Registerkarte Invoices & Receipts im Billing & Cost Management-Applet bereit.
Parameter
club `string` (optional) Club-ID months `string` (optional) Kommagetrennte Nutzungs-/Berichtsmonate im Format YYYY-MM (max. 24)Endpunkt
GET /api/saas-billing/extended-access/monthly-usage-report/{club}/invoices.zip
Beispielanfrage
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"
Antwort
{}
Gibt monatliche Nutzungsberichte für mehrere Nutzungsmonate in einem Aufruf zurück. Stellt das Kostenverlaufsdiagramm und die Veränderungen gegenüber dem Vormonat im Billing & Cost Management-Applet bereit. Monate ohne bisherige Nutzung geben report: null zurück (entsprechend 404 → $0 in der Oberfläche beim Endpunkt für einen einzelnen Monat).
Parameter
club `string` (optional) Club-ID months `string` (optional) Kommagetrennte Nutzungsmonate im Format YYYY-MM (max. 12)Endpunkt
GET /api/saas-billing/extended-access/monthly-usage-report/{club}/batch
Beispielanfrage
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"
Antwort
{}
Monatsberichte für die Einrichtung importieren.
Parameter
club `string` (optional) Club-IDEndpunkt
PUT /api/saas-billing/extended-access/usage-report/:club
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/saas-billing/extended-access/usage-report/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt einen CSV-Bericht zur Videoüberwachungsnutzung der letzten 30 Tage für alle Einrichtungen zurück.
Endpunkt
GET /api/saas-billing/extended-access/usage-report/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/usage-report/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Listet alle Tagesberichte des Monats für die Einrichtung auf.
Parameter
club `string` (optional) Club-ID month `string` (optional) Monat des Berichts als Zahl. 1 = Januar, 2 = Februar usw. year `string` (optional) Jahr des Berichts als Zahl, z. B. 2021Endpunkt
GET /api/saas-billing/extended-access/monthly-usage-report/{club}/daily-reports
Beispielanfrage
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"
Antwort
{}
Gibt eine Liste importierter Monatsberichte für den Admin zurück
Parameter
organisationId `string` (erforderlich) Organisations-IDEndpunkt
GET /api/saas-billing/extended-access/usage-report/imported
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/usage-report/imported \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt einen CSV-Bericht zur Videoüberwachungsnutzung der letzten 30 Tage für alle Einrichtungen zurück.
Parameter
club `string` (optional) Club-ID month `string` (optional) Monat des Berichts als Zahl. 1 = Januar, 2 = Februar usw. year `string` (optional) Jahr des Berichts als Zahl, z. B. 2021Endpunkt
GET /api/saas-billing/extended-access/monthly-usage-report/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/monthly-usage-report/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt den periodischen Nutzungsbericht der Einrichtung zurück.
Parameter
club `string` (optional) Club-ID periodStart `string` (optional) Beginn des Zeitraums im Format YYYY-MM-DD periodEnd `string` (optional) Ende des Zeitraums im Format YYYY-MM-DDEndpunkt
GET /api/saas-billing/extended-access/periodical-usage-report/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/periodical-usage-report/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Paket von Abrechnungsdokumenten als PDF in einer einzigen ZIP-Datei mit gemischten Dokumenttypen: Plattformrechnungen (nach Nutzungsmonat), Belege für Aufladungen des SaaS-Guthabens und Belege für Model Router-Aufladungen. Massenvariante der typspezifischen Endpunkte invoices.zip / receipts.zip für die zusammengeführte Registerkarte Invoices & Receipts. Jeder angeforderte Monat bzw. jede ID muss einem Dokument der Einrichtung entsprechen; ein ungültiger Wert lässt das gesamte Paket fehlschlagen.
Parameter
clubID `string` (erforderlich) invoiceMonths `string` (optional) Kommagetrennte Nutzungsmonate im Format YYYY-MM walletIds `string` (optional) Kommagetrennte Transaktions-IDs von Aufladungen des SaaS-Guthabens aiIds `string` (optional) Kommagetrennte Transaktions-IDs von Model Router-AufladungenEndpunkt
GET /api/clubs/{clubID}/saas-billing/documents.zip
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/documents.zip \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Notiz zu einem Monatsdatensatz hinzufügen
Parameter
recordID `string` (optional) Die ID des abzurufenden Datensatzes note `string` (optional) Die Notiz, die dem Datensatz hinzugefügt wirdEndpunkt
POST /api/saas-billing/monthly-records/{recordID}/notes
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/saas-billing/monthly-records/{recordID}/notes \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste der monatlichen SaaS-Abrechnungsdatensätze zurück
Parameter
club `string` (optional) Die ID der abzurufenden Einrichtung month `string` (optional) Der Abrechnungsmonat im Format YYYY-MMEndpunkt
GET /api/saas-billing/monthly-records/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/monthly-records/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste der monatlichen SaaS-Abrechnungsdatensätze zurück, die fehlgeschlagen sind oder 3D Secure erfordern
Parameter
clubID `string` (optional) Die ID der Einrichtung, deren fehlgeschlagene Monatsdatensätze abgerufen werden sollenEndpunkt
GET /api/clubs/:clubID/saas-billing/flagged
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/:clubID/saas-billing/flagged \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt ALLE monatlichen SaaS-Abrechnungsdatensätze (das Rechnungsbuch) einer Einrichtung zurück, neuester Abrechnungsmonat zuerst. Auf die Einrichtung beschränktes Gegenstück zum Admin-Endpunkt paginate-monthly-records: Stellt die Registerkarte "Invoices & Receipts" für Kunden im Billing & Cost Management-Applet bereit.
Parameter
clubID `string` (optional) Die ID der Einrichtung, deren Monatsdatensätze aufgelistet werden sollenEndpunkt
GET /api/clubs/{clubID}/saas-billing/monthly-records
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/monthly-records \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste der monatlichen SaaS-Abrechnungsdatensätze zurück
Parameter
organisationId `string` (optional) Organisations-ID month `string` (optional) Monat im Format MM. year `string` (optional) Jahr im Format YYYY. filters `string` (optional) Von der Datentabelle erstellte Abfragezeichenfolgen-Filter. order `string` (optional) Von der Datentabelle erstellte Abfragezeichenfolge.Endpunkt
GET /api/saas-billing/monthly-records
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/monthly-records \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Fehlgeschlagene Zahlungen einer Einrichtung erneut versuchen
Parameter
clubID `string` (optional) Die ID der Einrichtung, deren fehlgeschlagene Monatsdatensätze abgerufen werden sollenEndpunkt
PUT /api/clubs/:clubID/saas-billing/retry-failed-payments
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/:clubID/saas-billing/retry-failed-payments \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Monatsdatensatz aktualisieren
Parameter
recordID `string` (optional) Die ID des abzurufenden Datensatzes status `string` (optional) Der Status, auf den der Datensatz gesetzt wirdEndpunkt
PUT /api/saas-billing/monthly-records/{recordID}
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/saas-billing/monthly-records/{recordID} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Prüft, ob Zahlungen erfolgreich waren, und aktualisiert den Status des Datensatzes
Parameter
clubID `string` (optional) recordID `string` (optional) Die ID des abzurufenden DatensatzesEndpunkt
PUT /api/clubs/{clubID}/saas-billing/monthly-records/{recordID}/validate
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/monthly-records/{recordID}/validate \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Zahlungsmethode für eine Einrichtung hinzufügen.
Parameter
clubID `string` (optional)Endpunkt
POST /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings/payment-methods \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Synchronisiert die Zahlungsmethoden einer Einrichtung mit Stripe.
Parameter
clubID `string` (optional)Endpunkt
PUT /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings/payment-methods \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt das Ausgabenbudget der Einrichtung sowie berechnete Werte für den laufenden Monat und die Prognose zurück.
Parameter
clubID `string` (optional)Endpunkt
GET /api/clubs/{clubID}/saas-billing/budget
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/budget \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Ausgabenbudget der Einrichtung erstellen, aktualisieren oder löschen.
Parameter
clubID `string` (optional) body `object` (optional)Endpunkt
PUT /api/clubs/{clubID}/saas-billing/budget
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/budget \
-H "x-api-key: YOUR_API_KEY"
Zahlungsmethode aus den Zahlungseinstellungen der Einrichtung löschen.
Parameter
clubID `string` (optional) paymentMethodID `string` (optional)Endpunkt
DELETE /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods/{paymentMethodID}
Beispielanfrage
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"
Antwort
{}
Zahlungseinstellungen einer Einrichtung abrufen.
Parameter
clubID `string` (optional)Endpunkt
GET /api/clubs/{clubID}/saas-billing/payment-settings
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Zahlungseinstellungen einer Einrichtung aktualisieren.
Parameter
clubID `string` (optional) lockedOut `boolean` (optional) Ob die Einrichtung für das System gesperrt wird. pauseBilling `boolean` (optional) Ob die automatische Abrechnung für die Einrichtung pausiert wird. customerID `string` (optional) Wenn angegeben, wird die Stripe-Kunden-ID der Einrichtung aktualisiert. deleteSourceID `string` (optional) Ob der Quellkunde aus Stripe gelöscht werden soll.Endpunkt
PUT /api/clubs/{clubID}/saas-billing/payment-settings
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Frühesten abgerechneten Monat für alle Einrichtungen abrufen.
Parameter
clubID `string` (optional)Endpunkt
GET /api/saas-billing/payment-settings/earliest-billed-month
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/payment-settings/earliest-billed-month \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Listet die Konten auf, die eine Abrechnungssperre für eine Einrichtung aufheben können, gestaffelt: zuerst Benutzer mit dem Abrechnungsmodul, Organisationsadministratoren nur ersatzweise, wenn niemand darüber verfügt.
Parameter
clubID `string` (erforderlich)Endpunkt
GET /api/clubs/{clubID}/saas-billing/lockout-contacts
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/lockout-contacts \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Alle Einrichtungen im System seitenweise durchlaufen und die Kunden-IDs jeder Einrichtung zurückgeben.
Parameter
clubID `string` (optional) organisationId `string` (optional) Organisations-IDEndpunkt
GET /api/saas-billing/payment-settings/customer-ids
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/payment-settings/customer-ids \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Primäre Zahlungsmethode einer Einrichtung festlegen.
Parameter
clubID `string` (optional)Endpunkt
PUT /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods/{paymentMethodID}/primary
Beispielanfrage
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"
Antwort
{}
Abrechnungsprofil einer Einrichtung aktualisieren.
Parameter
clubID `string` (optional) invoiceEntity `string` (optional) billingContacts `string` (optional) Liste der UUIDs der KYC-Kontakte ccEmails `string` (optional) Liste der E-Mail-Adressen, die bei Rechnungen in CC gesetzt werdenEndpunkt
PUT /api/clubs/{clubID}/saas-billing/payment-settings/billing-profile
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings/billing-profile \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Zahlungsmethode einer Einrichtung aktualisieren.
Parameter
clubID `string` (optional) cardID `string` (optional)Endpunkt
PUT /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods/{cardID}
Beispielanfrage
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"
Antwort
{}
Gibt für den CSV-Export eine Aufschlüsselung aller anfallenden Produktgebühren und zusätzlichen Positionen pro Einrichtung zurück. Löst die Überschreibungshierarchie global/Region/Einrichtung für jede Einrichtung auf, auf die der Benutzer Zugriff hat.
Parameter
organisationId `string` (erforderlich) Organisations-ID für die ACLEndpunkt
GET /api/saas-billing/charges-config/export
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/charges-config/export \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt die Gebührenkonfiguration eines bestimmten Ziels zurück
Parameter
clubId `string` (optional) Die club-ID der Einrichtung, deren Gebührenkonfiguration abgerufen werden sollEndpunkt
GET /api/saas-billing/charges-config/{clubId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/charges-config/{clubId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Abrechnungsübersicht der Organisation dieser Einrichtung: wirksamer Zahlerbereich, eine eventuell geplante Änderung der Zusammenführung und ob der Aufrufer den Schalter für die Zusammenführung verwalten darf.
Parameter
clubID `string` (erforderlich)Endpunkt
GET /api/clubs/{clubID}/saas-billing/org/summary
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/org/summary \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Zusammengeführte monatliche Datensätze (Abrechnungen) der Organisation mit Aufschlüsselung pro Einrichtung, neueste zuerst. Leer, bis der erste zusammengeführte Monat der Organisation abgeschlossen ist.
Parameter
clubID `string` (erforderlich)Endpunkt
GET /api/clubs/{clubID}/saas-billing/org/monthly-records
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/org/monthly-records \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Übersicht des Prepaid-Guthabens: Saldo, Nutzungsbelastungen im laufenden Monat, Konfiguration der automatischen Aufladung, Abrechnungsmethode.
Parameter
clubID `string` (erforderlich)Endpunkt
GET /api/clubs/{clubID}/saas-billing/wallet
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Guthabenbuch, neueste zuerst. Organisationsweite Guthaben enthalten die Zeilen aller Einrichtungen (jede mit ihrer ursprünglichen clubID).
Parameter
clubID `string` (erforderlich) limit `string` (optional) types `string` (optional) Kommagetrennte Transaktionstypen from `string` (optional) to `string` (optional) cursor `string` (optional) nextCursor einer vorherigen SeiteEndpunkt
GET /api/clubs/{clubID}/saas-billing/wallet/transactions
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/transactions \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
PDF-Beleg mit Branding für eine einzelne Guthabentransaktion (Aufladungen und Gutschriften).
Parameter
clubID `string` (erforderlich) txId `string` (erforderlich)Endpunkt
GET /api/clubs/{clubID}/saas-billing/wallet/transactions/{txId}/receipt.pdf
Beispielanfrage
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"
Antwort
{}
Paket von PDF-Belegen mit Branding für die ausgewählten Aufladungstransaktionen des Guthabens, als ZIP-Datei. Jede ID muss eine Aufladung (Karte oder Rechnung) des Guthabens dieser Einrichtung sein; Nutzungsbelastungen und Korrekturen haben keine Belege und werden abgelehnt.
Parameter
clubID `string` (erforderlich) ids `string` (erforderlich) Kommagetrennte Transaktions-IDs (maximal 50)Endpunkt
GET /api/clubs/{clubID}/saas-billing/wallet/transactions/receipts.zip
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/transactions/receipts.zip \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Eine gespeicherte Karte der SaaS-Abrechnung belasten, um Prepaid-Guthaben aufzuladen. Gibt requires_action + clientSecret zurück, wenn 3DS erforderlich ist.
Parameter
clubID `string` (erforderlich) body `object` (optional)Endpunkt
POST /api/clubs/{clubID}/saas-billing/wallet/topup
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/topup \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Guthabenaufladung abschließen, nachdem das Applet die 3DS-Authentifizierung durchgeführt hat. Idempotent.
Parameter
clubID `string` (erforderlich)Endpunkt
POST /api/clubs/{clubID}/saas-billing/wallet/topup/confirm
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/topup/confirm \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Regel für die automatische Aufladung der Einrichtung aktualisieren (gespeichert in der Überschreibungszeile ihres Abrechnungsprofils).
Parameter
clubID `string` (erforderlich) body `object` (optional)Endpunkt
PATCH /api/clubs/{clubID}/saas-billing/wallet/auto-topup
Beispielanfrage
curl -X PATCH https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/auto-topup \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Aufladungsrechnungen für das Guthaben dieser Einrichtung (Zahlungsmethode Rechnung), neueste zuerst.
Parameter
clubID `string` (erforderlich)Endpunkt
GET /api/clubs/{clubID}/saas-billing/wallet/invoices
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/invoices \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Aufladungsrechnung zur Zahlung per Referenz anfordern (nur Zahlungsmethode Rechnung). Höchstens eine offene Rechnung pro Guthaben: Eine zweite Anfrage gibt die bestehende mit alreadyPending=true zurück.
Parameter
clubID `string` (erforderlich) body `string` (optional) { amountCents: number }Endpunkt
POST /api/clubs/{clubID}/saas-billing/wallet/topup-invoice
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/topup-invoice \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste der Bestellungen der Einrichtung zurück.
Parameter
facilityID `string` (optional)Endpunkt
GET /api/store/facilities/:facilityID/orders
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/store/facilities/:facilityID/orders \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt eine Liste der für die Einrichtung verfügbaren Produkte zurück.
Parameter
clubID `string` (erforderlich) search `string` (optional) limit `string` (optional) page `string` (optional) Die Seitennummer für die Paginierung (beginnt bei 1).Endpunkt
GET /api/store/clubs/{clubID}/products
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/store/clubs/{clubID}/products \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Stripe-Datensätze der Einrichtung auflisten.
Parameter
club `string` (erforderlich) fromDate `string` (optional) Unix-Zeitstempel toDate `string` (optional) Unix-Zeitstempel socketID `string` (erforderlich) Eindeutige Kennung der Socket-AnfrageEndpunkt
GET /api/club/{club}/stripe/records
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/club/{club}/stripe/records \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Payment Intent stornieren
Parameter
club `string` (erforderlich) paymentIntent `string` (optional)Endpunkt
GET /api/club/{club}/stripe/payment-intent/:paymentIntent/cancel
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/club/{club}/stripe/payment-intent/:paymentIntent/cancel \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Stripe Account Session für eingebettete Komponenten erstellen
Erstellt eine Stripe Account Session für ein verbundenes Konto. Gibt ein client_secret zurück, mit dem eingebettete Connect-Komponenten initialisiert werden (Rückbuchungen, Auszahlungen, Kontoverwaltung, Dokumente).
Anfragetext
Endpunkt
POST /api/stripe/account-session
Beispielanfrage
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 '{}'
Antwort
{}
Erzeugt einen Einmal-Link zur Stripe-KYC-Seite für ein verbundenes Konto.
Parameter
club `string` (erforderlich)Endpunkt
GET /api/club/{club}/stripe/generate-kyc-token
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/club/{club}/stripe/generate-kyc-token \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Ruft im Rahmen des KYC-Prozesses die Kontodetails eines verbundenen Stripe-Kontos ab.
Parameter
club `string` (erforderlich)Endpunkt
GET /api/club/{club}/stripe/connect-account-details
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/club/{club}/stripe/connect-account-details \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gibt den gesamten Ticketverlauf anhand der club-ID zurück
Parameter
club `string` (erforderlich) Interne ID des Clubs, auf den Sie zugreifen möchten.Endpunkt
GET /api/ticketing/clubtickets/{club}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/clubtickets/{club} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Ruft die Abteilungen ab
Endpunkt
GET /api/ticketing/departments
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/departments \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Ruft die Details eines einzelnen Tickets ab
Parameter
user `string` (erforderlich) E-Mail-Adresse des Benutzers. ticketNumber `string` (erforderlich) 6-stellige ID des Tickets, auf das Sie zugreifen möchten. club `string` (erforderlich) Die ausgewählte club-ID.Endpunkt
GET /api/ticketing/ticket-details/:ticketNumber/:club
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/ticket-details/:ticketNumber/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Ruft die Themen ab
Endpunkt
GET /api/ticketing/topics
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/topics \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Ruft alle Tickets ab, die der aktuell angemeldete Benutzer erstellt hat. Hinweis: Dies wird aus den Headern unseres Google-SSO-Dienstes ermittelt.
Parameter
user `string` (erforderlich) E-Mail-Adresse des aktuell angemeldeten BenutzersEndpunkt
GET /api/ticketing/usertickets
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/usertickets \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Erstellt ein neues Ticket
Parameter
club `string` (erforderlich) Die ausgewählte club-ID.Endpunkt
POST /api/ticketing/clubticket/:club
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/ticketing/clubticket/:club \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Erstellt ein neues Ticket
Parameter
subject `string` (erforderlich) Betreff des Tickets. message `string` (erforderlich) Vollständige Nachricht des Tickets.Endpunkt
POST /api/ticketing/userticket
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/ticketing/userticket \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Erstellt eine Antwort auf ein bestehendes Ticket
Parameter
subject `string` (erforderlich) Betreff des Tickets. message `string` (erforderlich) Vollständige Nachricht des Tickets.Endpunkt
POST /api/ticketing/user-reply
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/ticketing/user-reply \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Ruft die Einstellungen eines Benutzers ab
Endpunkt
GET /api/user-preferences
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/user-preferences \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Aktualisiert die Einstellungen eines Benutzers
Parameter
body `string` (erforderlich)Endpunkt
PUT /api/user-preferences
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/user-preferences \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Benutzerpasswort ändern
Ändert das Passwort des Benutzers. Erfordert eine OTP-Verifizierung, wenn der Benutzer eine Telefonnummer hat, oder das Hinzufügen einer Telefonnummer, wenn keine vorhanden ist.
Anfragetext
Endpunkt
POST /api/user/change-password
Beispielanfrage
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 '{}'
Antwort
{}
2FA-Status des Benutzers prüfen
Gibt zurück, ob 2FA für den Benutzer aktiviert ist und ob eine seiner Rollen 2FA erzwingt
Endpunkt
GET /api/user/check-2fa-status
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/user/check-2fa-status \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Die Organisationen, Einrichtungen und Regionen auflisten, auf die der Benutzer für ein bestimmtes Modul Zugriff hat.
Parameter
moduleId `string` (erforderlich)Endpunkt
POST /api/user/me/modules/{moduleId}/org-access
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/user/me/modules/{moduleId}/org-access \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Erstellt eine 'Verknüpfungsanfrage' eines Endbenutzers, um einer Einrichtung 'beizutreten'.
Parameter
body `string` (erforderlich) JSON-Objekt des neuen Clubs, der dem System hinzugefügt werden soll.Endpunkt
POST /api/user/linkclub
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/user/linkclub \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Listet alle Einrichtungen auf, für die der Benutzer berechtigt ist.
Endpunkt
GET /api/user/listauthorised
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/user/listauthorised \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
OTP über zwei Kanäle senden (E-Mail + SMS)
Sendet OTP-Codes sowohl an die E-Mail-Adresse des Benutzers als auch an eine angegebene Telefonnummer. Wird für Vorgänge mit hohen Sicherheitsanforderungen verwendet, etwa die erstmalige Verifizierung einer Telefonnummer. Dieser Endpunkt sendet nur OTPs und ändert keine Benutzerdaten.
Anfragetext
Endpunkt
POST /api/user/send-dual-otp
Beispielanfrage
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 '{}'
Antwort
{}
OTP an Telefonnummer oder E-Mail-Adresse senden
Sendet einen OTP-Code zur Verifizierung an die Telefonnummer (SMS) oder E-Mail-Adresse des Benutzers
Anfragetext
Endpunkt
POST /api/user/send-otp
Beispielanfrage
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 '{}'
Antwort
{}
Prüfen, ob der Benutzer gültigen Zugriff auf sensible Seiten hat
Gibt zurück, ob der Benutzer eine gültige, per OTP verifizierte Sitzung für den Zugriff auf sensible Seiten hat
Endpunkt
GET /api/user/sensitive-page-access
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/user/sensitive-page-access \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
OTP verifizieren und Zugriff auf sensible Seiten gewähren
Verifiziert den OTP-Code und gewährt bei Gültigkeit für 1 Stunde Zugriff auf sensible Seiten
Anfragetext
Endpunkt
POST /api/user/sensitive-page-access/verify
Beispielanfrage
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 '{}'
Antwort
{}
Zugriff auf sensible Seiten widerrufen (Abmeldung von sensiblen Seiten)
Widerruft die aktuelle Sitzung des Benutzers für den Zugriff auf sensible Seiten
Endpunkt
POST /api/user/sensitive-page-access/revoke
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/user/sensitive-page-access/revoke \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
2FA aktivieren oder deaktivieren
Aktiviert oder deaktiviert die Zwei-Faktor-Authentifizierung für den Benutzer. Erfordert eine Telefonnummer und eine OTP-Verifizierung.
Anfragetext
Endpunkt
POST /api/user/toggle-2fa
Beispielanfrage
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 '{}'
Antwort
{}
Eigenes Benutzerprofil aktualisieren
Ermöglicht einem Benutzer, seine eigenen Profilinformationen (Vorname, Nachname, Telefonnummer) zu aktualisieren. Beim erstmaligen Hinzufügen einer Telefonnummer ist eine OTP-Verifizierung über zwei Kanäle erforderlich (Codes per E-Mail und SMS). Beim Ändern einer bestehenden Telefonnummer ist nur ein OTP per E-Mail erforderlich.
Anfragetext
Endpunkt
PATCH /api/user/update-profile
Beispielanfrage
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 '{}'
Antwort
{}
Ein Symbol anhand der URL abrufen.
Endpunkt
GET /api/website-icon
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/website-icon \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Vorlagen für Einträge im Passwort-Tresor auflisten
Parameter
organisationId `string` (optional) Organisationskontext für die Prüfung des ModulzugriffsEndpunkt
GET /api/vault/templates
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/vault/templates \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Sichtbare Einträge im Passwort-Tresor auflisten
Parameter
organisationId `string` (erforderlich) scope `string` (optional)Endpunkt
GET /api/vault/entries
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/vault/entries \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Eintrag im Passwort-Tresor erstellen
Endpunkt
POST /api/vault/entries
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/vault/entries \
-H "x-api-key: YOUR_API_KEY"
Eintrag im Passwort-Tresor ohne offengelegte geheime Werte abrufen
Parameter
entryId `string` (erforderlich) organisationId `string` (erforderlich)Endpunkt
GET /api/vault/entries/{entryId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/vault/entries/{entryId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Eintrag im Passwort-Tresor aktualisieren
Endpunkt
PUT /api/vault/entries/{entryId}
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/vault/entries/{entryId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Eintrag im Passwort-Tresor löschen
Endpunkt
DELETE /api/vault/entries/{entryId}
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/vault/entries/{entryId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Ausgewählte verborgene oder geheime Felder offenlegen
Endpunkt
POST /api/vault/entries/{entryId}/reveal
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/vault/entries/{entryId}/reveal \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Ordnerübersichten des Passwort-Tresors auflisten
Endpunkt
GET /api/vault/folders
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/vault/folders \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Einträge mit Authentifizierungscodes auflisten
Endpunkt
GET /api/vault/authenticator
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/vault/authenticator \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Registrierte Workflow-Knotentypen auflisten
Endpunkt
GET /api/workflow-engine/node-types
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/node-types \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Von Workflow-Blöcken verwendete Projektion der Öffnungszeiten der Einrichtung abrufen
Parameter
facilityId `string` (erforderlich)Endpunkt
GET /api/workflow-engine/facility-hours/{facilityId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/facility-hours/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Vorschau des Workflow-E-Mail-Absenders mit dem Branding der Einrichtung anzeigen
Parameter
facilityId `string` (erforderlich)Endpunkt
GET /api/workflow-engine/email-branding/{facilityId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/email-branding/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Ressourcen der Einrichtung für die Trigger-Konfiguration auflisten
Parameter
facilityId `string` (erforderlich) resourceType `string` (erforderlich)Endpunkt
GET /api/workflow-engine/resources/{facilityId}/{resourceType}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/resources/{facilityId}/{resourceType} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Workflows einer Einrichtung auflisten
Parameter
facilityId `string` (erforderlich)Endpunkt
GET /api/workflow-engine/workflows/{facilityId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Workflow-Entwurf aus einem nicht leeren Graphen erstellen
Der Editor behält einen neuen Workflow lokal, bis er mindestens einen Block enthält, sodass er beim ersten Speichern mit seinem Graphen in einem Aufruf erstellt wird. Ein Text ohne `nodes` wird abgelehnt statt gespeichert.
Parameter
facilityId `string` (erforderlich)Anfragetext
Endpunkt
POST /api/workflow-engine/workflows/{facilityId}
Beispielanfrage
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 '{}'
Antwort
{}
Anmeldedaten auflisten, die die Workflows einer Einrichtung verwenden dürfen
Gibt die eigenen Anmeldedaten der Einrichtung sowie alle auf Ebene ihrer Marke oder Organisation freigegebenen zurück. Secrets werden nie zurückgegeben; `hasValue` meldet nur, dass eines gespeichert ist.
Parameter
facilityId `string` (erforderlich)Endpunkt
GET /api/workflow-engine/credentials/{facilityId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/credentials/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Workflow-Anmeldedaten erstellen
Die Bereichsebene ergibt sich aus `scopeType`; die IDs von Marke und Organisation werden aus der Einrichtung ermittelt und nicht vom Aufrufer übernommen.
Parameter
facilityId `string` (erforderlich)Anfragetext
Endpunkt
POST /api/workflow-engine/credentials/{facilityId}
Beispielanfrage
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 '{}'
Einrichtungsweite Workflow-Einstellungen (Empfänger von Fehlerbenachrichtigungen)
Parameter
facilityId `string` (erforderlich)Endpunkt
GET /api/workflow-engine/facility-settings/{facilityId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/facility-settings/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Einrichtungsweite Empfänger von Fehlerbenachrichtigungen speichern
Parameter
facilityId `string` (erforderlich)Anfragetext
Endpunkt
PUT /api/workflow-engine/facility-settings/{facilityId}
Beispielanfrage
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 '{}'
Antwort
{}
Workflow-Anmeldedaten ersetzen
Ein leeres `secret` behält das gespeicherte bei, sodass Anmeldedaten umbenannt werden können, ohne sie erneut einzugeben. Ein Secret kann nicht wieder ausgelesen werden.
Parameter
facilityId `string` (erforderlich) credentialId `string` (erforderlich)Endpunkt
PUT /api/workflow-engine/credentials/{facilityId}/{credentialId}
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/workflow-engine/credentials/{facilityId}/{credentialId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Workflow-Anmeldedaten löschen
Knoten, die darauf verweisen, schlagen beim nächsten Aufruf sicher fehl, auch in bereits veröffentlichten Workflows, da ein Snapshot nur den Verweis speichert.
Parameter
facilityId `string` (erforderlich) credentialId `string` (erforderlich)Endpunkt
DELETE /api/workflow-engine/credentials/{facilityId}/{credentialId}
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/workflow-engine/credentials/{facilityId}/{credentialId} \
-H "x-api-key: YOUR_API_KEY"
Webhook-URL eines Workflow-Triggers abrufen
Parameter
facilityId `string` (erforderlich) workflowId `string` (erforderlich) nodeId `string` (erforderlich)Endpunkt
GET /api/workflow-engine/workflows/{facilityId}/{workflowId}/nodes/{nodeId}/webhook
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/nodes/{nodeId}/webhook \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Webhook-URL eines Workflow-Triggers rotieren
Macht die vorherige URL sofort ungültig.
Parameter
facilityId `string` (erforderlich) workflowId `string` (erforderlich) nodeId `string` (erforderlich)Endpunkt
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/nodes/{nodeId}/webhook/rotate
Beispielanfrage
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"
Antwort
{}
Workflow anhand der ID abrufen
Parameter
facilityId `string` (erforderlich) workflowId `string` (erforderlich)Endpunkt
GET /api/workflow-engine/workflows/{facilityId}/{workflowId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Workflow-Entwurf erstellen oder aktualisieren
Parameter
facilityId `string` (erforderlich) workflowId `string` (erforderlich)Anfragetext
Endpunkt
PUT /api/workflow-engine/workflows/{facilityId}/{workflowId}
Beispielanfrage
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 '{}'
Antwort
{}
Name und/oder Beschreibung eines Workflows aktualisieren
Parameter
facilityId `string` (erforderlich) workflowId `string` (erforderlich)Anfragetext
Endpunkt
PATCH /api/workflow-engine/workflows/{facilityId}/{workflowId}
Beispielanfrage
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 '{}'
Antwort
{}
Workflow und seine Versionen löschen
Parameter
facilityId `string` (erforderlich) workflowId `string` (erforderlich)Endpunkt
DELETE /api/workflow-engine/workflows/{facilityId}/{workflowId}
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Workflow als neuen inaktiven Entwurf duplizieren
Parameter
facilityId `string` (erforderlich) workflowId `string` (erforderlich)Endpunkt
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/duplicate
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/duplicate \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Aktuellen Entwurf veröffentlichen (unveränderlicher Versions-Snapshot)
Parameter
facilityId `string` (erforderlich) workflowId `string` (erforderlich)Anfragetext
Endpunkt
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/publish
Beispielanfrage
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 '{}'
Antwort
{}
Entwurf auf die zuletzt veröffentlichte Version zurücksetzen
Parameter
facilityId `string` (erforderlich) workflowId `string` (erforderlich)Endpunkt
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/discard
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/discard \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Workflow aktivieren oder deaktivieren
Parameter
facilityId `string` (erforderlich) workflowId `string` (erforderlich)Anfragetext
Endpunkt
PATCH /api/workflow-engine/workflows/{facilityId}/{workflowId}/active
Beispielanfrage
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 '{}'
Antwort
{}
Workflow-Graphen mit KI erzeugen oder überarbeiten
Parameter
facilityId `string` (erforderlich)Anfragetext
Endpunkt
POST /api/workflow-engine/generate/{facilityId}
Beispielanfrage
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 '{}'
Antwort
{}
Modelle auflisten, auf denen ein Agent-Knoten für diese Einrichtung laufen kann
Parameter
facilityId `string` (erforderlich)Endpunkt
GET /api/workflow-engine/agent-models/{facilityId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/agent-models/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
MCP-Tools auflisten, die ein Agent-Knoten für diese Einrichtung anbinden darf
Parameter
facilityId `string` (erforderlich)Endpunkt
GET /api/workflow-engine/agent-tools/{facilityId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/agent-tools/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Gespeicherte Agent-Unterhaltungen dieser Einrichtung durchsuchen (Bindungen über den Conversation key)
Parameter
facilityId `string` (erforderlich) deviceId `string` (optional) Auf die Unterhaltungen eines Agent-Geräts beschränken (die konfigurierte deviceId des Knotens) q `string` (optional) Teilzeichenfolgensuche ohne Beachtung der Groß-/Kleinschreibung im Conversation key, in der Sitzungs-ID oder im Gerätenamen limit `integer` (optional) offset `integer` (optional)Endpunkt
GET /api/workflow-engine/agent-conversations/{facilityId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/agent-conversations/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Die Unterhaltungen auf dem Agent-Gerät der Einrichtung selbst durchsuchen
Listet die eigenen Sitzungen des Geräts auf (die Unterhaltungen in der Seitenleiste der Agent-Oberfläche), damit ein Workflow eine bestehende Unterhaltung mit ihrem Kontext fortsetzen kann. Der Verlauf liegt auf dem Gerät; hat die Einrichtung mehrere Geräte, wählt `deviceId` eines aus (das konfigurierte Gerät des Knotens). Gerät nicht erreichbar → 502.
Parameter
facilityId `string` (erforderlich) deviceId `string` (optional) Das konfigurierte Agent-Gerät des Knotens; weglassen, um das einzige Gerät der Einrichtung zu verwenden q `string` (optional) Teilzeichenfolgensuche ohne Beachtung der Groß-/Kleinschreibung im Sitzungstitel oder in der ID limit `integer` (optional) offset `integer` (optional)Endpunkt
GET /api/workflow-engine/agent-device-sessions/{facilityId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/agent-device-sessions/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Boards im Kanban des Agent-Geräts der Einrichtung durchsuchen
Liefert die Daten für die Auswahl der Board ID im Block Agent: Kanban. Teilzeichenfolgensuche ohne Beachtung der Groß-/Kleinschreibung im Board-Namen oder Slug; `current` ist der Slug des aktiven Boards des Geräts, damit die Aufgabenauswahl standardmäßig darauf eingegrenzt werden kann. Hat die Einrichtung mehrere Geräte, wählt `deviceId` eines aus. Gerät nicht erreichbar → 502.
Parameter
facilityId `string` (erforderlich) deviceId `string` (optional) Das konfigurierte Agent-Gerät des Knotens; weglassen, um das einzige Gerät der Einrichtung zu verwenden q `string` (optional) Teilzeichenfolgensuche ohne Beachtung der Groß-/Kleinschreibung im Board-Namen oder Slug limit `integer` (optional) offset `integer` (optional)Endpunkt
GET /api/workflow-engine/kanban-boards/{facilityId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/kanban-boards/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Aufgaben eines Boards im Kanban des Agent-Geräts der Einrichtung durchsuchen
Liefert die Daten für die Auswahl der Task ID im Block Agent: Kanban. Teilzeichenfolgensuche ohne Beachtung der Groß-/Kleinschreibung in Aufgaben-ID, Titel oder Text; Aufgaben gehören jeweils zu einem Board (das Gerät bietet keine boardübergreifende Suche), daher grenzt `board` den Abruf ein. Weglassen für das aktive Board des Geräts. Gerät nicht erreichbar → 502.
Parameter
facilityId `string` (erforderlich) deviceId `string` (optional) Das konfigurierte Agent-Gerät des Knotens; weglassen, um das einzige Gerät der Einrichtung zu verwenden board `string` (optional) Der Slug des aufzulistenden Boards; weglassen für das aktive Board des Geräts q `string` (optional) Teilzeichenfolgensuche ohne Beachtung der Groß-/Kleinschreibung in Aufgaben-ID, Titel oder Text limit `integer` (optional) offset `integer` (optional)Endpunkt
GET /api/workflow-engine/kanban-tasks/{facilityId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/kanban-tasks/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Kuratierte Workflow-Vorlagen auflisten, gefiltert für diese Einrichtung
Parameter
facilityId `string` (erforderlich)Endpunkt
GET /api/workflow-engine/templates/{facilityId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/templates/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Vorlage als Graphfragment für den geöffneten Entwurf instanziieren
Parameter
facilityId `string` (erforderlich) templateId `string` (erforderlich)Endpunkt
POST /api/workflow-engine/templates/{facilityId}/{templateId}
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/templates/{facilityId}/{templateId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Kontext der Bereichsauswahl für die Admin-Seite der Vorlagen (Admin-Stufen)
Endpunkt
GET /api/workflow-engine/template-admin/context
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/template-admin/context \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Vorlagen auflisten, die der Aufrufer verwalten darf, mit Berechtigungsflags
Endpunkt
GET /api/workflow-engine/template-admin
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/template-admin \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Vorlage erstellen (Admin-Stufen)
Anfragetext
Endpunkt
POST /api/workflow-engine/template-admin
Beispielanfrage
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 '{}'
Vorlagendetails einschließlich Graph für den Admin-Editor
Endpunkt
GET /api/workflow-engine/template-admin/{templateId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/template-admin/{templateId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Vorlage ersetzen (besitzende Organisation)
Endpunkt
PUT /api/workflow-engine/template-admin/{templateId}
Beispielanfrage
curl -X PUT https://portal.hub.gymsystems.co/api/workflow-engine/template-admin/{templateId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Vorlage vorläufig löschen (besitzende Organisation)
Endpunkt
DELETE /api/workflow-engine/template-admin/{templateId}
Beispielanfrage
curl -X DELETE https://portal.hub.gymsystems.co/api/workflow-engine/template-admin/{templateId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Sichtbare Vorlage in einen Zielbereich duplizieren, den der Aufrufer verwenden darf
Anfragetext
Endpunkt
POST /api/workflow-engine/template-admin/{templateId}/duplicate
Beispielanfrage
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 '{}'
Veröffentlichten Graphen eines Workflows über einen manuellen Trigger ausführen
Parameter
facilityId `string` (erforderlich) workflowId `string` (erforderlich)Anfragetext
Endpunkt
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/run
Beispielanfrage
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 '{}'
Antwort
{}
Gespeicherten Entwurf testen, ohne ihn zu veröffentlichen
Führt den aktuellen Entwurfsgraphen aus und erfasst das Ergebnis mit `mode: test` und ohne `versionId`. Veröffentlichung, das Live-Flag und `publishedVersionId` bleiben unberührt. Nebenwirkungen werden standardmäßig simuliert; `sideEffects: live` erfordert zusätzlich `confirmLiveSideEffects: true`.
Parameter
facilityId `string` (erforderlich) workflowId `string` (erforderlich)Anfragetext
Endpunkt
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/test
Beispielanfrage
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 '{}'
Antwort
{}
Einen zugelassenen Workflow-Knoten testen
Führt einen einzeln testbaren Knoten aus dem gespeicherten Entwurf aus. Variablenwerte können aus aufgezeichneten Ausführungsschritten übernommen werden. Ändernde HTTP-Methoden erfordern eine ausdrückliche Bestätigung.
Parameter
facilityId `string` (erforderlich) workflowId `string` (erforderlich)Anfragetext
Endpunkt
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/test-node
Beispielanfrage
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 '{}'
Antwort
{}
Letzte Ausführungen eines Workflows auflisten
Parameter
facilityId `string` (erforderlich) workflowId `string` (erforderlich)Endpunkt
GET /api/workflow-engine/workflows/{facilityId}/{workflowId}/runs
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/runs \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Eine Ausführung lesen (Status + geordnete Schritte)
Parameter
facilityId `string` (erforderlich) workflowId `string` (erforderlich) executionId `string` (erforderlich)Endpunkt
GET /api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Ausstehende Verzögerung abbrechen, auf die eine wartende Ausführung wartet
Parameter
facilityId `string` (erforderlich) workflowId `string` (erforderlich) executionId `string` (erforderlich)Endpunkt
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId}/cancel
Beispielanfrage
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId}/cancel \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Abgeschlossene Ausführung mit den aufgezeichneten Trigger-Nutzdaten erneut abspielen
`mode: published` führt genau die Version erneut aus, an die die ursprüngliche Ausführung gebunden war, mit echten Nebenwirkungen. `mode: draft-test` führt den aktuellen Entwurf erneut als simulierten Test aus. Eine Ausführung, deren Trigger-Nutzdaten beim Schreiben gekürzt wurden, kann nicht erneut abgespielt werden.
Parameter
facilityId `string` (erforderlich) workflowId `string` (erforderlich) executionId `string` (erforderlich)Anfragetext
Endpunkt
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId}/retry
Beispielanfrage
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 '{}'
Antwort
{}
Indizierte Suche nach Workflows, die einen bestimmten Knotentyp enthalten
Parameter
nodeType `string` (erforderlich) facilityId `string` (optional) organisationId `string` (optional)Endpunkt
GET /api/workflow-engine/master-view/{nodeType}
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/master-view/{nodeType} \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
White-Label-OAuth-Weiterleitungsproxy (Connected Apps)
Öffentliche, nicht authentifizierte 302-Weiterleitung, die einen Callback eines OAuth-Anbieters unter Beibehaltung der Abfragezeichenfolge an den Authentifizierungs-Callback der vorgelagerten Tool-Plattform weiterleitet. Ermöglicht es OAuth-Apps von PH, eine Weiterleitungs-URI unter performancehub.co zu registrieren, sodass die Domain des vorgelagerten Anbieters nie in der Adressleiste erscheint (erforderlich für das künftige Projekt mit benutzerdefinierten OAuth-Apps; bei verwalteter Authentifizierung unschädlich).
Endpunkt
GET /guest/connected-apps/oauth-callback
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/guest/connected-apps/oauth-callback \
-H "x-api-key: YOUR_API_KEY"
Abschlussseite der Verbindungskette (Connected Apps)
Einfache Zielseite "Sie können dieses Fenster schließen" für den OAuth-Tab, in dem eine Verbindungskette lief. Sendet das Ergebnis (verbundene Suite/verbundenes Toolkit + neue Konto-IDs oder das fehlgeschlagene Toolkit) per window.opener.postMessage mit gleichem Ursprung an den Marketplace-Tab zurück; wurde die Verbindung zum öffnenden Fenster getrennt, wird ersatzweise ein Deep Link in das ph-ai-agent-Applet verwendet, der die In-App-Zielseite nachbildet. Rein informativ: enthält keine Secrets und führt keine Schreibvorgänge aus.
Parameter
connected `string` (optional) Suite-ID oder Toolkit-Slug, dessen Verbindung abgeschlossen wurde (Erfolgsfall). accounts `string` (optional) Kommagetrennte IDs der verbundenen Konten, die die Kette erstellt hat. connectError `string` (optional) Toolkit-Slug, dessen Schritt fehlgeschlagen ist (Fehlerfall).Endpunkt
GET /guest/connected-apps/finish
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/guest/connected-apps/finish \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}
Callback für die Verkettung beim Verbinden einer Suite (Connected Apps)
OAuth-Callback-Schritt für den Ablauf zum Verbinden einer Suite mit einem Klick. Das signierte Zustands-JWT (HS256, 30 Min. TTL) codiert { clubID, deviceId, suite, toolkits, step, caids }: Die Konten werden mit diesem einen Agent-Gerät verbunden, und caids sammelt die Konto-IDs, die jeder Schritt erstellt hat (die abschließende Weiterleitung zum Applet übergibt sie, damit der Marketplace anbieten kann, die neuen Konten zu benennen). Markiert das Toolkit des Schritts als verbunden und leitet dann per 302 zum Connect Link des nächsten Toolkits weiter oder zur Seite des ph-ai-agent-Applets (per Deep Link zum Agenten), wenn die Suite abgeschlossen ist. Verbindungen eines einzelnen Toolkits laufen über denselben Handler mit einer Suite aus einem Toolkit.
Parameter
state `string` (erforderlich) Signiertes Zustands-JWT der Verbindungskette.Endpunkt
GET /guest/connected-apps/connect-next
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/guest/connected-apps/connect-next \
-H "x-api-key: YOUR_API_KEY"
E-Mail zur Passworteinrichtung auslösen
Prüft den signierten Link aus einer Willkommens-E-Mail, löst eine E-Mail zum Zurücksetzen des Passworts aus und zeigt eine Bestätigungsseite an. Keine Authentifizierung erforderlich.
Parameter
email `string` (erforderlich) E-Mail-Adresse des Benutzers sig `string` (erforderlich) HMAC-Signatur für die E-Mail-AdresseEndpunkt
GET /guest/setup-password
Beispielanfrage
curl -X GET https://portal.hub.gymsystems.co/guest/setup-password \
-H "x-api-key: YOUR_API_KEY"
Antwort
{}