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: jetzt

Endpunkt

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 Benutzerprofildaten

Endpunkt

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// beschränkt – Agent-Chat und Terminal sind damit nie erreichbar. Betrachter benötigen das Modul custom-apps in einer Einrichtung, die von der Zielgruppe der App abgedeckt ist; das Modul ph-ai-agent oder gerätespezifischen Agent-Zugriff benötigen sie NICHT.

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

{}

Bereitgestellte Skill-Exporte auf dem KI-Agent einer Einrichtung (Freigabeauswahl)

Leitet die Liste der bereitgestellten Exporte der Geräte-Bridge (GET /__skills/exports) über den Tunnel an die Auswahl „Share a skill“ des Applets weiter. Exporte werden durch die Sicherheits- und Portabilitätsprüfung ph-skill-sharing auf dem Gerät bereitgestellt; jeder Eintrag enthält das Ergebnis der Prüfung auf dem Gerät. Erfordert das Modul ph-ai-agent UND den gerätespezifischen Zugriff 'open' (dieselbe Hürde wie für das Veröffentlichen selbst).

Parameter

club `string` (erforderlich) device `string` (erforderlich)

Endpunkt

GET /api/agent-skills/exports/{club}/{device}

Beispielanfrage

curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/exports/{club}/{device} \
  -H "x-api-key: YOUR_API_KEY"

Antwort

{}

Bereitgestellten Skill-Export als NEUEN geteilten Skill veröffentlichen (Entwurfsversion)

Holt das benannte bereitgestellte Export-Tarball über den Tunnel von der Geräte-Bridge, entpackt es im Arbeitsspeicher (Path Traversal, Symlinks und Übergröße werden abgelehnt), führt die deterministische Sicherheitsprüfung in der Cloud aus, erstellt das Manifest aus dem Frontmatter von SKILL.md, speichert das Tarball inhaltsadressiert im privaten Skills-Bucket und legt den Skill-Kopf + eine ENTWURFS-Version an. Wird die Prüfung blockiert, wird NICHTS gespeichert und die Befunde werden zurückgegeben. Die Zielgruppe ist auf die eigenen Rollenbereiche des Veröffentlichenden begrenzt. Reichen Sie den Entwurf ein (POST submit), um ihn zu veröffentlichen.

Parameter

club `string` (erforderlich)

Anfragetext

Endpunkt

POST /api/agent-skills/publish/{club}

Beispielanfrage

curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/publish/{club} \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Antwort

{}

Bereitgestellten Export als NEUE VERSION eines vorhandenen geteilten Skills veröffentlichen

Dieselbe Pipeline wie beim Veröffentlichen, aber für einen vorhandenen Skill: Der Name in SKILL.md des Exports muss mit dem Skill übereinstimmen, die Version muss neu sein (Versionen sind unveränderlich) und ein Changelog ist erforderlich. Nur der Veröffentlichende darf Versionen hinzufügen. Wird die Prüfung blockiert, wird eine Versionszeile mit dem Status 'rejected' gespeichert (nur Bericht, kein Artefakt), damit die Befunde im Verlauf des Veröffentlichenden erscheinen.

Parameter

club `string` (erforderlich)

Anfragetext

Endpunkt

POST /api/agent-skills/new-version/{club}

Beispielanfrage

curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/new-version/{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

{}

Geteilten Skill auslisten (entfernt ihn aus der Bibliothek)

Nur für den Veröffentlichenden. Der Skill verschwindet sofort aus der Bibliothek und lehnt neue Installationen ab; BESTEHENDE Installationen funktionieren weiter – das Auslisten betrifft nur den Eintrag und ist kein Notschalter.

Parameter

club `string` (erforderlich)

Anfragetext

Endpunkt

POST /api/agent-skills/delist/{club}

Beispielanfrage

curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/delist/{club} \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Antwort

{}

Eintrag eines geteilten Skills bearbeiten (Anzeigename, Beschreibung, Symbol)

Nur für den Veröffentlichenden. Reine Darstellungsfelder – der kanonische Skill-Name ist seine Identität (Manifeste, Installationsverzeichnisse, Versionsabgleich) und ändert sich nie. Eine leere Zeichenfolge setzt ein Feld auf null zurück (es gelten dann der kanonische Name bzw. kein Symbol). Symbole verwenden den MDI-Katalog (mdi:icon-name), dasselbe Format wie veröffentlichte Agent-Apps.

Parameter

club `string` (erforderlich)

Anfragetext

Endpunkt

POST /api/agent-skills/update-listing/{club}

Beispielanfrage

curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/update-listing/{club} \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Antwort

{}

Inhaberschaft eines geteilten Skills übertragen

Entspricht dem Übertragungsablauf für veröffentlichte Apps: Der aktuelle Veröffentlichende oder ein Kontoinhaber (Abrechnungsmodul) kann den Skill an einen anderen Benutzer übergeben, der dann dessen Versionen und Eintrag verwaltet. Der neue Inhaber muss Zugriff auf die Einrichtung des Heimat-Clubs des Skills haben.

Parameter

club `string` (erforderlich)

Anfragetext

Endpunkt

POST /api/agent-skills/transfer-owner/{club}

Beispielanfrage

curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/transfer-owner/{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 Einrichtung

Endpunkt

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äts

Endpunkt

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äts

Endpunkt

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 Verschieben

Endpunkt

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

{}

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

{}

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 Kurzlink

Endpunkt

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öchten

Endpunkt

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 Seite

Endpunkt

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 Gesichtsidentifizierungssystem

Endpunkt

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

{}

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-ID

Endpunkt

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

{}

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 Person

Endpunkt

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überwachung

Endpunkt

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 Einrichtung

Anfragetext

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 Einrichtung

Anfragetext

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..textGated` zählt Kandidaten, die zum Bild, aber nicht zu den Wörtern passten, sodass sich eine leere Seite mit „Wörter weglassen“ statt „anderes Bild versuchen“ erklären lässt. Eine Seed-Suche ohne Wörter lädt keinen Encoder und hat daher nie einen Kaltstart; mit Wörtern entfällt dieser Vorteil. In jedem Fall werden standardmäßig alle Indizes durchsucht: Die Vektoren für Ausschnitte, Aufnahmen und Zeitraffer teilen sich einen Raum, sodass ein Personenausschnitt passendes Videomaterial finden kann. Seed-Bewertungen fallen deutlich höher aus als Textbewertungen (Bild-zu-Bild überbrückt keine Modalitätslücke) und werden durch einen separaten, noch nicht kalibrierten Schwellenwert gefiltert – `result.queryKind` gibt an, welche Skala Sie lesen, und eine Bewertung der einen Skala darf nie mit der anderen verglichen werden. Durchsucht standardmäßig alle Indizes und gibt eine zusammengeführte, nach Bewertung sortierte Liste zurück; jeder Treffer enthält `index` und `kind`, damit der Aufrufer einen Bildtreffer von einem Videotreffer unterscheiden kann (Letzterer enthält zusätzlich `offsetMs`). Indizes ohne Tabelle für die Einrichtung werden unter `skipped` gemeldet, statt einen Fehler auszulösen. Treffer unter dem kalibrierten Relevanzschwellenwert des jeweiligen Index werden verworfen, sodass eine Abfrage ohne echten Treffer eine leere Liste statt selbstsicheren Unsinns zurückgibt; `perIndex` meldet, was jeder Index beigetragen hat und warum. Die Ergebnisse lassen sich nach Aufnahmezeit und Kamera eingrenzen. Verwenden Sie bevorzugt `cameraId` statt `camera`: Es ist die balenaUUID der Kamera, der einzige Wert, den jeder Index identisch speichert, sodass ein einziger Filter alle Indizes eingrenzt. Ein Filter, den ein Index nicht beantworten kann, wird unter `perIndex..filtersIgnored` gemeldet, und dieser Index wird ohne Eingrenzung durchsucht, statt aus der Suche entfernt zu werden. Aufnahmetreffer gibt es **einmal pro Clip, nicht einmal pro passendem Frame**: Frames werden alle 2 s erfasst, sodass eine verweilende Person zehn nahezu identische Frames derselben Aufnahme treffen würde. Jeder Clip liefert seinen besten Frame sowie `matchCount` und `offsetsMs` mit allen passenden Momenten darin, die sich direkt als Sprungmarken verwenden lassen. Personenausschnitte werden nie zusammengefasst, da zwei Ausschnitte derselben Person zwei unterschiedliche Sichtungen sind.

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-ID

Endpunkt

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-ID

Endpunkt

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 einbeziehen

Endpunkt

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-Suchargumente

Endpunkt

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-Datensatzes

Endpunkt

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 sollen

Endpunkt

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 sollen

Endpunkt

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 wird

Endpunkt

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 sollen

Endpunkt

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 sollen

Endpunkt

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

{}

Dashboard-Banner löschen

Löscht ein Dashboard-Banner der Marke vorläufig.

Parameter

brandId `string` (erforderlich) Die ID der Marke, zu der das Banner gehört bannerId `string` (erforderlich) Die ID des zu löschenden Banners

Endpunkt

DELETE /api/brands/{brandId}/dashboard-banners/{bannerId}

Beispielanfrage

curl -X DELETE https://portal.hub.gymsystems.co/api/brands/{brandId}/dashboard-banners/{bannerId} \
  -H "x-api-key: YOUR_API_KEY"

Antwort

{}

Dashboard-Banner einer Marke auflisten

Gibt alle (nicht gelöschten) für die Marke konfigurierten Dashboard-Banner zur Verwaltung durch Administratoren zurück.

Parameter

brandId `string` (erforderlich) Die ID der Marke, deren Banner aufgelistet werden sollen

Endpunkt

GET /api/brands/{brandId}/dashboard-banners

Beispielanfrage

curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId}/dashboard-banners \
  -H "x-api-key: YOUR_API_KEY"

Antwort

{}

Dashboard-Banner erstellen oder aktualisieren

Erstellt ein neues Dashboard-Banner für die Marke oder aktualisiert ein vorhandenes, wenn im Anfragetext `bannerId` angegeben ist. Banner können zeitlich geplant werden (Beginn/Ende in Unix-Sekunden, null = unbegrenzt) und auf die gesamte Marke, bestimmte Regionen (ISO-Codes) oder bestimmte Einrichtungen ausgerichtet werden.

Parameter

brandId `string` (erforderlich) Die ID der Marke, zu der das Banner gehört

Anfragetext

Endpunkt

PUT /api/brands/{brandId}/dashboard-banners

Beispielanfrage

curl -X PUT https://portal.hub.gymsystems.co/api/brands/{brandId}/dashboard-banners \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Antwort

{}

Aktive Dashboard-Banner einer Einrichtung abrufen

Ermittelt die Dashboard-Banner, die derzeit für eine Einrichtung angezeigt werden sollen, anhand der Marke und Region (ISO-Ländercode) der Einrichtung sowie des Flags enabled, des Zeitplanfensters und der Zielgruppe jedes Banners. Wird von den Dashboard-Oberflächen verwendet.

Parameter

facilityId `string` (erforderlich) Die ID der Einrichtung, für die Banner ermittelt werden sollen

Endpunkt

GET /api/facilities/{facilityId}/dashboard-banners

Beispielanfrage

curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/dashboard-banners \
  -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öchten

Endpunkt

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-Format

Endpunkt

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-Format

Endpunkt

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-Format

Endpunkt

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-ID

Endpunkt

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-ID

Endpunkt

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-ID

Endpunkt

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-ID

Endpunkt

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-ID

Endpunkt

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öchten

Endpunkt

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 Einrichtung

Endpunkt

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-ID

Endpunkt

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-ID

Endpunkt

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-Adresse

Endpunkt

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

{}

Gemeinsame Door/Gate Access-Einstellungen für eine Einrichtung abrufen

Parameter

facilityId `string` (erforderlich)

Endpunkt

GET /api/door-access/rules/{facilityId}

Beispielanfrage

curl -X GET https://portal.hub.gymsystems.co/api/door-access/rules/{facilityId} \
  -H "x-api-key: YOUR_API_KEY"

Antwort

{}

Gemeinsame Door/Gate Access-Einstellungen für eine Einrichtung aktualisieren

Parameter

facilityId `string` (erforderlich)

Anfragetext

Endpunkt

PUT /api/door-access/rules/{facilityId}

Beispielanfrage

curl -X PUT https://portal.hub.gymsystems.co/api/door-access/rules/{facilityId} \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

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

{}

Personentypen, Status und Tags für die Einrichtung auflisten

Gibt die unterschiedlichen Werte für Personentyp, Mitgliedschaftsstatus und Tag zurück, die in den User Access-Zeilen der Einrichtung (ph-door-access-users) vorkommen, abgeleitet aus Partner-Synchronisierung + manueller Eingabe. Das door-gate-access-Applet verwendet sie, um die Dropdowns für Zugriffsregeln zu füllen. Tags sind die Vereinigung der synchronisierten `tags` und der Admin-`customTags`, entsprechend der Regelauswertung.

Parameter

facilityId `string` (erforderlich)

Endpunkt

GET /api/door-access/people-config/{facilityId}

Beispielanfrage

curl -X GET https://portal.hub.gymsystems.co/api/door-access/people-config/{facilityId} \
  -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

{}

Hybride Berechtigungen einer User Access-Zeile ersetzen

Anbindung der hybriden Auswertung aus Phase 3. Berechtigungen bestehen neben den Tag-Regeln der Einrichtung: Ein Benutzer erhält Zugang, wenn beim Entriegeln eines von beiden zutrifft.

Parameter

facilityId `string` (erforderlich) userId `string` (erforderlich)

Anfragetext

Endpunkt

PUT /api/door-access/users/{facilityId}/{userId}/grants

Beispielanfrage

curl -X PUT https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/grants \
  -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 soll

Endpunkt

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 soll

Endpunkt

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 Paginierung

Endpunkt

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 Paginierung

Endpunkt

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öschen

Endpunkt

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 sollen

Endpunkt

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 filtern

Endpunkt

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 Marke

Endpunkt

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 sollen

Endpunkt

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-ID

Endpunkt

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 schreiben

Endpunkt

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 Partners

Endpunkt

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 Partners

Endpunkt

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 LIMITED

Endpunkt

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-ID

Endpunkt

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 Mitglieds

Endpunkt

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 Mitglieds

Anfragetext

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 UUID

Endpunkt

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) Rollenobjekt

Endpunkt

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) Rollenobjekt

Endpunkt

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 Anfrage

Endpunkt

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-ID

Endpunkt

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 Anfrage

Endpunkt

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-ID

Endpunkt

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-ID

Endpunkt

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. 2021

Endpunkt

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-ID

Endpunkt

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. 2021

Endpunkt

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-ID

Endpunkt

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. 2021

Endpunkt

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-DD

Endpunkt

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-Aufladungen

Endpunkt

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 wird

Endpunkt

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-MM

Endpunkt

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 sollen

Endpunkt

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 sollen

Endpunkt

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 sollen

Endpunkt

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 wird

Endpunkt

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 Datensatzes

Endpunkt

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-ID

Endpunkt

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 werden

Endpunkt

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 ACL

Endpunkt

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 soll

Endpunkt

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 Seite

Endpunkt

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-Anfrage

Endpunkt

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 Benutzers

Endpunkt

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 Modulzugriffs

Endpunkt

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-Adresse

Endpunkt

GET /guest/setup-password

Beispielanfrage

curl -X GET https://portal.hub.gymsystems.co/guest/setup-password \
  -H "x-api-key: YOUR_API_KEY"

Antwort

{}