Introduzione
Benvenuto nell'API di Performance Hub. Questa API gestisce i dati del club e i sistemi chiave che si integrano con il tuo club e con i suoi sistemi esterni, e non è un'API di uso pubblico. Per ulteriori informazioni sull'uso dei vari sistemi Performance Hub supportati da questa API, consulta la voce dedicata al sistema che ti interessa nella [documentazione di Performance Hub](https://docs.performancehub.co).
URL di base
https://portal.hub.gymsystems.co
Autenticazione
I dettagli di autenticazione ti verranno forniti quando la tua integrazione sarà approvata.
Evento "turno dell'agente completato" segnalato dal dispositivo (attivazione web push)
Chiamato dal sidecar di un dispositivo Agente AI associato (mai dai browser) quando un'esecuzione dell'agente avviata dall'interfaccia web termina dopo aver superato la soglia di notifica del dispositivo. Autenticato con un JWT HS256 di breve durata per dispositivo (aud 'events'). Deduplicato per dispositivo+sessione+avvio e con limite di frequenza per dispositivo, poi recapitato alle sottoscrizioni push HTML5 dell'utente che ha avviato l'esecuzione, con un deep link alla conversazione.
Corpo della richiesta
Endpoint
POST /ai/events/agent-turn-complete
Richiesta di esempio
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 '{}'
Risposta
{}
Notifica push avviata dall'agente (skill ph-notify)
Chiamato dal sidecar di un dispositivo Agente AI associato per conto dell'agente sul dispositivo (la skill ph-notify) per inviare una notifica arbitraria al browser e ai dispositivi mobili di un utente. Autenticato con un JWT HS256 di breve durata per dispositivo (aud 'events'). L'utente destinatario deve avere accesso al dispositivo (criterio di accesso per agente); se omesso, la notifica viene inviata al proprietario del dispositivo. Limite di frequenza per dispositivo, separato da quello degli eventi di turno completato.
Corpo della richiesta
Endpoint
POST /ai/events/agent-notify
Richiesta di esempio
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 '{}'
Risposta
{}
Carica un'immagine di notifica (skill ph-notify)
Accetta il corpo di un'immagine non elaborata da un dispositivo associato (JWT con aud 'events') e lo archivia nel bucket pubblico notify-media con una chiave UUID non indovinabile. Gli oggetti si eliminano automaticamente dopo 7 giorni (ciclo di vita S3). Restituisce l'URL https pubblico da usare come `imageUrl` in /ai/events/agent-notify. Limite di 5 MB; solo png/jpeg/gif/webp.
Corpo della richiesta
Endpoint
POST /ai/media/notify-image
Richiesta di esempio
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 '{}'
Risposta
{}
Relay MCP del dispositivo per Connected Apps (strumenti SaaS esterni)
Endpoint MCP Streamable HTTP per i dispositivi Agente AI associati (server MCP "connected_apps" sul listener :8790 del sidecar del dispositivo). Autenticato con un JWT HS256 di breve durata per dispositivo (aud 'mcp', la stessa credenziale di /mcp) e subordinato al flag di abilitazione Connected Apps dell'AGENTE (le connessioni sono per dispositivo agente, non per struttura). Le richieste vengono inoltrate in streaming al server MCP della sessione della piattaforma di strumenti a monte dell'agente, con le intestazioni di sessione inserite lato server; le credenziali a monte non raggiungono mai il dispositivo. I nomi degli strumenti e il branding del fornitore vengono resi white-label in entrambe le direzioni durante il transito. Un 401/410 a monte (sessione scaduta) attiva una ricreazione della sessione + un nuovo tentativo.
Endpoint
POST /mcp/apps
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/mcp/apps \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Cerca nei registri di controllo delle API (accesso al modulo IAM & Admin)
Cerca e filtra i registri di accesso alle API con funzionalità di filtro avanzate. Gli utenti possono vedere solo i registri delle organizzazioni a cui hanno accesso.
Parametri
organisationId `string` (facoltativo) ID dell'organizzazione per la verifica ACL (obbligatorio)Corpo della richiesta
Endpoint
POST /api/admin/audit-logs/search
Richiesta di esempio
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 '{}'
Risposta
{}
Ottieni da Redis le statistiche dei registri di controllo memorizzate nella cache (accesso al modulo IAM & Admin)
Recupera le statistiche aggregate dalla cache Redis per il caricamento immediato della dashboard
Parametri
timeWindow `string` (facoltativo) Intervallo di tempo per le statistiche (predefinito 12h)Endpoint
GET /api/admin/audit-logs/statistics-cached
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/admin/audit-logs/statistics-cached \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottieni le statistiche dei registri di controllo (accesso al modulo IAM & Admin)
Recupera le statistiche aggregate per la dashboard. Limitate alle organizzazioni dell'utente.
Parametri
startTime `number` (facoltativo) Ora di inizio (timestamp Unix), predefinita a 24 ore fa endTime `number` (facoltativo) Ora di fine (timestamp Unix), predefinita all'ora attualeEndpoint
GET /api/admin/audit-logs/statistics
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/admin/audit-logs/statistics \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottieni i dati delle serie temporali dei registri di controllo (accesso al modulo IAM & Admin)
Recupera i dati delle serie temporali raggruppati in intervalli per visualizzare la sequenza temporale delle richieste
Parametri
timeWindow `string` (facoltativo) Intervallo di tempo per i dati delle serie temporali: - 1h: ultima ora (blocchi di 10 minuti) - 12h: ultime 12 ore (blocchi di 10 minuti) - 24h: ultime 24 ore (blocchi di 10 minuti) - 7d: ultimi 7 giorni (blocchi di 1 ora) - 14d: ultimi 14 giorni (blocchi di 1 ora)Endpoint
GET /api/admin/audit-logs/timeseries
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/admin/audit-logs/timeseries \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottieni le organizzazioni a cui l'utente ha accesso per i registri di controllo (accesso al modulo IAM & Admin)
Restituisce l'elenco delle organizzazioni di cui l'utente corrente può visualizzare i registri di controllo
Endpoint
GET /api/admin/audit-logs/user-organisations
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/admin/audit-logs/user-organisations \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
La chiamata iniziale per creare un nuovo club. Nota: viene creato solo l'oggetto club 'modello'; è poi necessaria una seconda richiesta API per aggiornare il club con i suoi dati, come orari di apertura, posizione, URL dei social e così via.
Parametri
body `string` (obbligatorio) Oggetto JSON del nuovo club da aggiungere al sistema.Endpoint
POST /api/admin/clubs/addclub
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/admin/clubs/addclub \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiunge un nuovo utente al sistema
Parametri
body `string` (obbligatorio) Oggetto JSON con i dati dell'utente che vuoi aggiungere o aggiornare.Endpoint
POST /api/users
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/users \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca tutti gli utenti (account Google Apps) che hanno accesso al sistema o all'API di backoffice
Endpoint
GET /api/admin/users/listusers
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/admin/users/listusers \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca le chiavi MCP di un utente (oscurate). Gli utenti possono elencare le proprie chiavi.
Parametri
userId `string` (obbligatorio)Endpoint
GET /api/users/{userId}/mcp-keys
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/users/{userId}/mcp-keys \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea una nuova chiave API MCP per un utente. Gli utenti possono creare le proprie chiavi.
Parametri
userId `string` (obbligatorio) body `object` (facoltativo)Endpoint
POST /api/users/{userId}/mcp-keys
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/users/{userId}/mcp-keys \
-H "x-api-key: YOUR_API_KEY"
Revoca o rimuove una chiave API MCP. Gli utenti possono eliminare le proprie chiavi.
Parametri
userId `string` (obbligatorio) keyId `string` (obbligatorio)Endpoint
DELETE /api/users/{userId}/mcp-keys/{keyId}
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/users/{userId}/mcp-keys/{keyId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Rimuove un ruolo da un utente
Parametri
userId `string` (facoltativo) L'email dell'utente da cui vuoi rimuovere il ruolo. roleId `string` (facoltativo) L'ID del ruolo che vuoi rimuovere dall'utente.Endpoint
DELETE /api/users/{userId}/roles/{roleId}
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/users/{userId}/roles/{roleId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna i dettagli del profilo di un utente esistente (firstName, lastName, phoneNumber)
Parametri
userId `string` (obbligatorio) Indirizzo email dell'utente body `object` (obbligatorio) Dati del profilo utente da aggiornareEndpoint
PATCH /api/users/{userId}
Richiesta di esempio
curl -X PATCH https://portal.hub.gymsystems.co/api/users/{userId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea o aggiorna un ruolo utente
Parametri
body `object` (facoltativo)Endpoint
PUT /api/users/{userId}/roles
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/users/{userId}/roles \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Live Services in esecuzione sull'Agente AI di una struttura (selettore di pubblicazione)
Recupera tramite il tunnel i Live Services rilevati dal bridge del dispositivo per il selettore "Publish to Performance Hub" dell'applet. Richiede il modulo ph-ai-agent E l'accesso 'open' per dispositivo (lo stesso requisito della pubblicazione). Ogni servizio viene annotato con publishedAppId quando esiste già una Custom App per la sua porta.
Parametri
club `string` (obbligatorio) device `string` (obbligatorio)Endpoint
GET /api/agent-apps/services/{club}/{device}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/services/{club}/{device} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Indice dei nomi delle icone MDI incorporato nell'Agente AI di una struttura (selettore di icone)
Inoltra tramite il tunnel l'indice delle icone MDI incorporato nel bridge del dispositivo (GET /__services/icons/mdi/index.json). Il selettore di pubblicazione e modifica usa il catalogo incluso nell'applet (stessa versione fissata 7.4.47); gli SVG delle app pubblicate vengono risolti dal pacchetto locale @mdi/js di portal-server. Stesso requisito di accesso del selettore dei servizi (modulo ph-ai-agent + accesso 'open' per dispositivo).
Parametri
club `string` (obbligatorio) device `string` (obbligatorio)Endpoint
GET /api/agent-apps/mdi-index/{club}/{device}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/mdi-index/{club}/{device} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Recupera un gruppo di SVG di icone MDI dall'Agente AI di una struttura (anteprime del selettore)
Risolve in una sola chiamata fino a 60 glifi MDI per nome dal set di icone incorporato nel dispositivo, sanificati lato server con la stessa allowlist applicata alle icone delle app salvate. Usato dal selettore di icone per mostrare i risultati della ricerca; i nomi sconosciuti restituiscono null.
Parametri
club `string` (obbligatorio) device `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/agent-apps/mdi-icons/{club}/{device}
Richiesta di esempio
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 '{}'
Risposta
{}
Ambiti di destinatari in cui il richiedente può pubblicare da questa struttura
L'insieme di destinatari che chi pubblica può concedere, per il selettore di pubblicazione e modifica: le strutture raggiunte dai suoi ruoli ph-ai-agent (ambito multi-struttura), più l'indicazione se dispone del livello di organizzazione richiesto per destinatari a livello di intero brand o intera organizzazione nel brand o nell'organizzazione di questa struttura. Le stesse regole vengono applicate di nuovo lato server in fase di pubblicazione o aggiornamento (validatePublishAudience): questo endpoint definisce solo l'interfaccia.
Parametri
club `string` (obbligatorio)Endpoint
GET /api/agent-apps/audience-options/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/audience-options/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Completamento automatico dei colleghi per i destinatari di un'app con utenti specifici
Cerca SOLO tra gli utenti che il richiedente può già vedere, ovvero le persone i cui ruoli coincidono con almeno una struttura, regione od organizzazione dell'accesso ph-ai-agent del richiedente. Una query di almeno 2 caratteri e un limite di 10 risultati rendono l'endpoint inutilizzabile per lo scraping; lo stesso insieme di utenti raggiungibili viene applicato di nuovo lato server quando i destinatari vengono salvati.
Parametri
club `string` (obbligatorio) q `string` (obbligatorio)Endpoint
GET /api/agent-apps/user-search/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/user-search/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Pubblica un Live Service dell'Agente AI come Custom App di Performance Hub
Registra un'app web ospitata dall'Agente AI della struttura (un Live Service rilevato dal bridge) come voce "Custom Apps" del menu laterale per i destinatari scelti. Richiede il modulo ph-ai-agent in questa struttura E l'accesso 'open' per dispositivo; i destinatari sono limitati dagli ambiti dei ruoli di chi pubblica (non puoi mai pubblicare oltre ciò che puoi raggiungere). L'identità del servizio viene risolta IN TEMPO REALE dall'elenco /__services del dispositivo; lo schema http/https non viene mai salvato.
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/agent-apps/publish/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Custom App pubblicate visibili in questa struttura
Restituisce le app pubblicate attive i cui destinatari includono questa struttura, nel formato mostrato dal menu laterale (appId, name, icon, description). I destinatari vengono risolti di nuovo in tempo reale a ogni chiamata, quindi le modifiche all'accesso hanno effetto immediato.
Parametri
club `string` (obbligatorio)Endpoint
GET /api/agent-apps/menu/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/menu/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
App pubblicate gestite da questa struttura (vista di chi pubblica)
Righe complete delle app la cui struttura di ORIGINE è questo club, per l'elenco di gestione "Published Apps" dell'applet. Ogni riga è annotata con canManage per l'utente richiedente (chi pubblica).
Parametri
club `string` (obbligatorio)Endpoint
GET /api/agent-apps/manage/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/manage/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Genera un token di visualizzazione limitato al servizio per una Custom App pubblicata
Restituisce un URL firmato di breve durata + token che il browser usa per aprire UNA app pubblicata direttamente sul gateway relay regionale del dispositivo. Il token contiene un claim svc che indica la porta del servizio, quindi il gateway limita la sessione a /__services/proxy/
Parametri
club `string` (obbligatorio) appId `string` (obbligatorio)Endpoint
POST /api/agent-apps/access/{club}/{appId}
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/agent-apps/access/{club}/{appId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Riferimento di assistenza per una Custom App pubblicata (contatto del proprietario)
Chi fornisce assistenza per questa app pubblicata da un utente: l'email di chi l'ha pubblicata (in alternativa, il proprietario dell'agente che la ospita). Viene mostrato nei pannelli offline o di errore di chi visualizza, così le richieste di assistenza vanno al proprietario dell'app anziché a Performance Hub: le app pubblicate non rientrano nell'assistenza principale di PH. Prima vengono ricontrollati i destinatari dell'app; chi non ha mai ricevuto l'app in condivisione non ottiene alcuna informazione. Le app in pausa vengono comunque risolte (i proprietari rispondono anche alle domande "perché è in pausa?").
Parametri
club `string` (obbligatorio) appId `string` (obbligatorio)Endpoint
GET /api/agent-apps/support-info/{club}/{appId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/support-info/{club}/{appId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Invia via email una richiesta di assistenza al proprietario di una Custom App pubblicata
Invia il messaggio di chi visualizza al contatto di assistenza dell'app (chi l'ha pubblicata o, in alternativa, il proprietario dell'agente) come email con il marchio: A il proprietario, CC chi visualizza (come copia della richiesta), Rispondi a chi visualizza, così il proprietario gli risponde direttamente. Le app pubblicate sono gestite dagli utenti, quindi la loro assistenza resta fuori dalla coda di Performance Hub. I destinatari vengono ricontrollati; una richiesta per utente per app ogni 15 minuti (cooldown Redis, fail-open).
Parametri
club `string` (obbligatorio) appId `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/agent-apps/support-request/{club}/{appId}
Richiesta di esempio
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 '{}'
Risposta
{}
Aggiorna una Custom App pubblicata (nome, icona, descrizione, stato, destinatari)
Solo per chi pubblica. Le modifiche ai destinatari vengono riconvalidate rispetto agli ambiti dei ruoli di CHI MODIFICA, con le stesse regole di limitazione della pubblicazione. Lo stato alterna tra attivo e in pausa (le app in pausa spariscono dai menu e rifiutano la generazione di token).
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/agent-apps/update/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Annulla la pubblicazione di una Custom App (eliminazione logica)
Solo per chi pubblica. Elimina logicamente la riga del registro: l'app sparisce subito dai menu e la generazione di token di visualizzazione viene rifiutata; le sessioni del gateway già emesse scadono alla scadenza del token.
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/agent-apps/unpublish/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Trasferisci la proprietà di una Custom App pubblicata
Rispecchia il flusso di riassegnazione del proprietario dell'Agente AI: chi ha pubblicato l'app o un proprietario dell'account (modulo di fatturazione) può cederla a un altro utente, che poi la gestisce. Il nuovo proprietario deve avere accesso alla struttura nel club di origine dell'app.
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/agent-apps/transfer-owner/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Report di scansione completo (+ revisione LLM) per una versione della skill
L'elenco completo dei risultati per una versione, solo per chi pubblica e per gli amministratori dell'organizzazione (revisioni per l'approvazione); chi installa vede invece i conteggi riepilogativi nel dettaglio della skill.
Parametri
club `string` (obbligatorio) skillId `string` (obbligatorio) version `string` (obbligatorio)Endpoint
GET /api/agent-skills/scan-report/{club}/{skillId}/{version}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/scan-report/{club}/{skillId}/{version} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Invia una versione bozza della skill (pubblicazione o messa in coda per l'approvazione)
Fa avanzare una versione bozza secondo la governance dell'organizzazione. Se l'organizzazione ha attivato la revisione LLM, viene eseguita prima la revisione delle istruzioni (best-effort; un verdetto 'fail' rifiuta, un verdetto 'flag' impone la coda di approvazione). Le condivisioni a livello di struttura vengono pubblicate subito, a meno che la governance non richieda l'approvazione; le condivisioni nella libreria dell'organizzazione (destinatari a livello di brand o organizzazione) richiedono l'approvazione per impostazione predefinita. La pubblicazione imposta il latestVersion della skill: le installazioni con criterio 'auto' la recepiscono al successivo ciclo di riconciliazione.
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/agent-skills/submit/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Libreria delle skill visibile in questa struttura (filtrata per destinatari)
Skill attive con almeno una versione pubblicata i cui destinatari includono questa struttura (o indicano chi visualizza), annotate con il riepilogo dell'ultima versione pubblicata e la diffusione nell'organizzazione (strutture distinte, mai il numero grezzo di installazioni). I destinatari vengono risolti di nuovo in tempo reale a ogni chiamata.
Parametri
club `string` (obbligatorio)Endpoint
GET /api/agent-skills/library/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/library/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Dettaglio della skill (versioni, requisiti, riepilogo della scansione, diffusione)
Dettaglio completo di una skill della libreria: cronologia delle versioni con changelog e riepiloghi delle scansioni (gli elenchi di endpoint per versione alimentano il confronto delle scansioni negli aggiornamenti), requisiti dichiarati nel manifest, provenienza di chi pubblica e indicatore di diffusione basato sul numero di strutture. I destinatari vengono ricontrollati: chi non ha mai ricevuto la skill in condivisione non ottiene alcuna informazione (chi pubblica e gli amministratori dell'organizzazione la vedono sempre).
Parametri
club `string` (obbligatorio) skillId `string` (obbligatorio)Endpoint
GET /api/agent-skills/skill/{club}/{skillId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/skill/{club}/{skillId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Skill pubblicate da questa struttura (elenco di gestione di chi pubblica)
Righe complete delle skill la cui struttura di ORIGINE è questo club, ciascuna annotata con canManage per l'utente richiedente e con il riepilogo dell'ultima versione (incluse bozze e approvazioni in sospeso: è la vista di lavoro di chi pubblica).
Parametri
club `string` (obbligatorio)Endpoint
GET /api/agent-skills/manage/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/manage/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Installa una skill della libreria sull'Agente AI di una struttura
Soggetto a governance: gli installSources dell'organizzazione devono consentirlo, i destinatari della skill devono includere questa struttura (o indicare il richiedente), la versione deve essere pubblicata e il richiedente deve soddisfare il livello whoCanInstall per il dispositivo di destinazione (proprietario / utente autorizzato / amministratore della struttura / amministratore dell'organizzazione; vedi governance). Scrive la riga del ciclo di vita dell'installazione (la fonte attendibile) ed esegue subito un invio best-effort; il cron di riconciliazione garantisce la consegna non appena il dispositivo è raggiungibile.
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/agent-skills/install/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Approva un aggiornamento della skill in sospeso per un'installazione
Porta il desiredVersion dell'installazione all'ultima versione pubblicata (il passaggio manuale dei criteri 'notify' e 'pinned', e il percorso previsto quando la governance imposta updatePosture su 'approvalRequired'). Mantiene la versione corrente come destinazione del ripristino in un passaggio e rimuove l'eventuale blocco degli aggiornamenti successivo a un ripristino (skipVersion). Stesso livello di autorizzazione whoCanInstall dell'installazione.
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/agent-skills/update-approve/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Riporta una skill installata alla versione precedente
Imposta desiredVersion sul previousVersion della riga di installazione (conservato a ogni cambio di versione) e lascia che il normale percorso di consegna la reinstalli. In un solo passaggio: le versioni si scambiano, quindi ripristinando due volte torni al punto di partenza. Blocca anche gli aggiornamenti (skipVersion = la versione da cui si è tornati indietro), così i criteri auto/notify mantengono il ripristino; il blocco si rimuove quando viene pubblicata una versione strettamente più recente, con update-approve o con set-policy.
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/agent-skills/rollback/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Disinstalla una skill dall'Agente AI di una struttura
Contrassegna la riga di installazione come pending-uninstall e invia lo stato desiderato; la riga viene eliminata quando il dispositivo conferma la rimozione (verifica di riconciliazione). Stesso livello di autorizzazione whoCanInstall dell'installazione.
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/agent-skills/uninstall/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Imposta il criterio di aggiornamento per installazione di una skill su un dispositivo
auto (la riconciliazione applica automaticamente le nuove versioni pubblicate, a meno che l'updatePosture dell'organizzazione non richieda l'approvazione), notify (il proprietario riceve una notifica per ogni nuova versione e la applica manualmente) o pinned (non cambia mai senza un update-approve esplicito). La modifica del criterio rimuove l'eventuale blocco degli aggiornamenti successivo a un ripristino (skipVersion). Stesso livello di autorizzazione whoCanInstall dell'installazione.
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/agent-skills/set-policy/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Installazioni di skill sull'Agente AI di una struttura (scheda Skills)
Le righe del ciclo di vita delle installazioni per un dispositivo, ciascuna annotata con i campi della scheda della skill e con l'indicazione se esiste una versione pubblicata più recente. Richiede l'accesso 'open' per dispositivo (la scheda Skills si trova nel pannello dell'agente).
Parametri
club `string` (obbligatorio) device `string` (obbligatorio)Endpoint
GET /api/agent-skills/installs/{club}/{device}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/installs/{club}/{device} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Versioni di skill in attesa di approvazione nell'organizzazione di questa struttura
La coda di approvazione degli amministratori dell'organizzazione: ogni versione in attesa di approvazione tra le skill dell'organizzazione, con la scheda della skill e i riepiloghi della scansione e della revisione LLM. Solo per gli amministratori dell'organizzazione.
Parametri
club `string` (obbligatorio)Endpoint
GET /api/agent-skills/approvals/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/approvals/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Approva una versione di skill in sospeso (la pubblica)
Solo per gli amministratori dell'organizzazione. La versione viene pubblicata, il latestVersion della skill si aggiorna e chi l'ha pubblicata riceve una notifica. Le installazioni con criterio 'auto' recepiscono la versione al successivo ciclo di riconciliazione.
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/agent-skills/approve/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Rifiuta una versione di skill in sospeso
Solo per gli amministratori dell'organizzazione. La versione viene rifiutata con la motivazione del revisore e chi l'ha pubblicata riceve una notifica: può correggere i problemi rilevati e inviare una nuova versione (le versioni sono immutabili).
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/agent-skills/reject/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Governance effettiva delle skill dell'agente per l'organizzazione di questa struttura
Il criterio salvato per l'organizzazione, unito alle impostazioni predefinite della piattaforma (un'organizzazione senza riga salvata vede solo le impostazioni predefinite). Solo per gli amministratori dell'organizzazione.
Parametri
club `string` (obbligatorio)Endpoint
GET /api/agent-skills/governance/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/governance/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna la governance delle skill dell'agente per l'organizzazione di questa struttura
Aggiornamento parziale: cambiano solo i campi forniti; tutto il resto mantiene il valore salvato o predefinito. Solo per gli amministratori dell'organizzazione. Le sostituzioni per dispositivo si trovano nella riga di registrazione e si gestiscono tramite le route di configurazione del dispositivo esistenti.
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/agent-skills/governance/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Ottieni i dati ambientali di una struttura
Restituisce le condizioni meteo attuali, inclusi alba e tramonto (tramite Open-Meteo), e la temperatura interna della struttura (dai sensori Duress) per il club specificato. Memorizzato nella cache Redis per 30 minuti.
Parametri
clubId `string` (obbligatorio) ID interno del club o della strutturaEndpoint
GET /api/clubs/{clubId}/environment
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/environment \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiunge o associa un dispositivo IoT generico a un club.
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi aggiungere il dispositivo. body `string` (obbligatorio) Oggetto JSON del nuovo schermo da associare.Endpoint
POST /api/devices/addGenericDevice/{club}
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/devices/addGenericDevice/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Rimuovi un display screen e ripristinane le impostazioni di fabbrica
Rimuove l'associazione attiva dello schermo con la struttura e predispone un ripristino delle impostazioni di fabbrica persistente. Uno schermo spento applica il ripristino alla successiva accensione e riconnessione, poi torna alla pagina di associazione HDMI. I record storici di fatturazione vengono conservati.
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/devices/display-screens/reset/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Associa un controller per porte a una struttura.
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/devices/door-controllers/associate/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Aggiorna le impostazioni del controller per porte di una struttura.
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/devices/door-controllers/update/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Dismette un controller per porte da una struttura.
Parametri
club `string` (obbligatorio)Endpoint
POST /api/devices/door-controllers/decommission/{club}
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/devices/door-controllers/decommission/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce la configurazione dei relè di un controller per porte.
Parametri
uuid `string` (obbligatorio)Endpoint
GET /api/devices/door-controllers/config/{uuid}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/devices/door-controllers/config/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce i metadati del dispositivo
Parametri
uuid `string` (obbligatorio) ID univoco del dispositivoEndpoint
GET /api/devices/metadata/{uuid}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/devices/metadata/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce i metadati del dispositivo. La risposta è la riga dei metadati al livello principale (formato legacy) più `detectedType` (camera | ai-edge-processor | door-controller | ph-ai-agent | null) e `online` (true se aggiornato negli ultimi 5 minuti).
Parametri
deviceSerialNumber `string` (obbligatorio) Numero di serie del dispositivoEndpoint
GET /api/devices/metadata/serial/{serialNo}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/devices/metadata/serial/{serialNo} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce i dati Smart Club del club.
Parametri
club_id `string` (obbligatorio) ID interno del club a cui vuoi aggiungere il dispositivo.Endpoint
GET /api/clubs/{club_id}/smart-club-data
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club_id}/smart-club-data \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce tutti i dispositivi associati a un singolo club.
Parametri
club `string` (obbligatorio) ID interno del club di cui vuoi elencare i dispositivi.Endpoint
GET /api/devices/list/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/devices/list/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce tutte le release (versioni) delle applicazioni per i nostri dispositivi balena.
Endpoint
GET /api/devices/listReleases
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/devices/listReleases \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Sposta un dispositivo in una nuova struttura (club) e aggiorna i sistemi correlati.
Parametri
club `string` (obbligatorio) ID della struttura di origine (il club in cui si trova attualmente il dispositivo) body `object` (obbligatorio) Parametri dello spostamentoEndpoint
POST /api/devices/move/{club}
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/devices/move/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Tenta di stabilire una connessione con il router di una struttura selezionando il dispositivo più adatto all'interno del club e inviando un comando MQTT per creare un tunnel.
Parametri
facilityID `string` (obbligatorio) ID interno della struttura per cui si tenta la connessione al router.Endpoint
GET /api/devices/openRouterWebpage/{facilityID}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/devices/openRouterWebpage/{facilityID} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Catalogo dei Cloud Agent (zone, dimensioni, prezzi di vendita aggiornati)
Parametri
club `string` (obbligatorio)Endpoint
GET /api/devices/ph-ai-agent/cloud/catalog/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/catalog/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Preventivo per un Cloud Agent (software + hosting)
Endpoint
POST /api/devices/ph-ai-agent/cloud/quote/{club}
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/quote/{club} \
-H "x-api-key: YOUR_API_KEY"
Avvia un Cloud Agent (mette in coda il provisioning + associazione automatica)
Endpoint
POST /api/devices/ph-ai-agent/cloud/launch/{club}
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/launch/{club} \
-H "x-api-key: YOUR_API_KEY"
Stato del processo del Cloud Agent
Endpoint
GET /api/devices/ph-ai-agent/cloud/jobs/{club}/{jobId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/jobs/{club}/{jobId} \
-H "x-api-key: YOUR_API_KEY"
Elimina definitivamente un Cloud Agent (VM + balena + registrazione)
Endpoint
POST /api/devices/ph-ai-agent/cloud/delete/{club}
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/delete/{club} \
-H "x-api-key: YOUR_API_KEY"
Risolvi una rimozione di un Cloud Agent in sospeso (riprova il backup, elimina senza backup o annulla)
Endpoint
POST /api/devices/ph-ai-agent/cloud/delete-decision/{club}
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/delete-decision/{club} \
-H "x-api-key: YOUR_API_KEY"
Elenca le Connected Apps di un agente (suite + app con account collegati)
Restituisce lo stato delle Connected Apps dell'agente: il flag di attivazione, i riepiloghi per suite (Google Workspace, Microsoft 365) e il catalogo selezionato di app con gli account collegati di ciascuna (multi-account: un agente può avere più account per app, ciascuno con un alias facoltativo), risolti dalla sessione upstream dell'agente.
Parametri
facilityId `string` (obbligatorio) deviceId `string` (obbligatorio) Il balena UUID del dispositivo dell'agente.Endpoint
GET /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Catalogo completo del marketplace delle Connected Apps per un agente
Restituisce ogni app collegabile (il catalogo completo dei toolkit con autenticazione gestita, memorizzato nella cache lato server per circa 12 ore) con i livelli in evidenza e suite e gli account collegati dell'agente per ogni app, più i riepiloghi per suite e le richieste di collegamento in sospeso dell'agente: un unico payload per il marketplace delle app con ricerca lato client.
Parametri
facilityId `string` (obbligatorio) deviceId `string` (obbligatorio) Il balena UUID del dispositivo dell'agente.Endpoint
GET /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/catalog
Richiesta di esempio
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"
Risposta
{}
Ignora una richiesta di collegamento dell'agente in sospeso
Contrassegna come ignorata la richiesta di collegamento in sospeso dell'agente per un toolkit (scompare dalla sezione "Requested by your agent" del marketplace). Idempotente: ignorare una richiesta non in sospeso non ha alcun effetto.
Parametri
facilityId `string` (obbligatorio) deviceId `string` (obbligatorio) Il balena UUID del dispositivo dell'agente.Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/requests/dismiss
Richiesta di esempio
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 '{}'
Risposta
{}
Attiva o disattiva le Connected Apps per un agente
Salva l'interruttore delle Connected Apps dell'agente e invia la variabile di dispositivo Balena PH_APPS_MCP_ENABLED solo a quel dispositivo (best-effort: il vero blocco sul relay MCP è il flag lato PH).
Parametri
facilityId `string` (obbligatorio) deviceId `string` (obbligatorio) Il balena UUID del dispositivo dell'agente.Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/enable
Richiesta di esempio
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 '{}'
Risposta
{}
Avvia il collegamento di una singola app a un agente (flusso OAuth Connect Link)
Avvia un flusso Connect Link ospitato per un toolkit e restituisce l'URL a cui indirizzare l'utente. Un alias facoltativo identifica il nuovo account (multi-account: collegare un'app già collegata aggiunge UN ALTRO account, fino a 10 per app). Usa lo stesso callback a catena dei collegamenti di suite (una suite con un solo toolkit), quindi al termine si torna alla pagina dell'applet ph-ai-agent.
Parametri
facilityId `string` (obbligatorio) deviceId `string` (obbligatorio) Il balena UUID del dispositivo dell'agente.Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Risposta
{}
Payload di preparazione al collegamento per un'app (modalità, campi delle credenziali, guida alla configurazione)
Tutto ciò che serve alla finestra di collegamento prima di avviare una connessione: come si collega l'app (oauth = flusso di consenso ospitato, credentials = modulo nel prodotto), i campi delle credenziali da raccogliere in modalità credentials e la guida alla configurazione nel prodotto (scritta per le app prioritarie, altrimenti generata dai metadati dei campi dell'app, mai un link a documentazione esterna). Le app OAuth bring-your-own indicano anche se l'app OAuth del cliente è già registrata per QUESTO agente (byoConfigured) e l'URL di reindirizzamento da registrare presso il provider.
Parametri
facilityId `string` (obbligatorio) deviceId `string` (obbligatorio) Il balena UUID del dispositivo dell'agente. toolkit `string` (obbligatorio)Endpoint
GET /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-info/{toolkit}
Richiesta di esempio
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"
Risposta
{}
Collega un'app con credenziali fornite dall'utente (chiave API e così via, senza OAuth)
Crea un account collegato per un'app in modalità credentials direttamente dal modulo nel prodotto, senza flusso di consenso ospitato. I campi delle credenziali provengono dal payload connect-info dell'app; tutti i campi obbligatori devono essere forniti. Le credenziali vengono convalidate con il provider, se supportato (best-effort: alcune app rifiutano una chiave errata solo alla prima chiamata a uno strumento da parte dell'agente). Un alias facoltativo identifica il nuovo account (multi-account: collegare un'app già collegata aggiunge UN ALTRO account).
Parametri
facilityId `string` (obbligatorio) deviceId `string` (obbligatorio) Il balena UUID del dispositivo dell'agente.Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-credentials
Richiesta di esempio
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 '{}'
Risposta
{}
Registra l'app OAuth del cliente per un'app BYO e avvia il relativo flusso di collegamento
Per le app OAuth bring-your-own (Xero, Shopify, ...): prende il client ID e il client secret dell'app OAuth che il cliente ha creato presso il provider (seguendo la guida alla configurazione dell'app), la registra per QUESTO agente (il secret viene salvato solo presso la piattaforma di integrazione upstream, mai in Performance Hub) e avvia subito il flusso di accesso ospitato con quell'app. Restituisce l'URL di consenso a cui indirizzare l'utente, con lo stesso contratto dell'endpoint di collegamento. Un nuovo invio sostituisce l'app registrata dell'agente (ad es. dopo la rotazione del secret): gli account collegati esistenti continuano a funzionare.
Parametri
facilityId `string` (obbligatorio) deviceId `string` (obbligatorio) Il balena UUID del dispositivo dell'agente.Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-oauth-app
Richiesta di esempio
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 '{}'
Risposta
{}
Avvia il collegamento con un clic di una suite per un agente (flussi Connect Link a catena)
Avvia il flusso di collegamento a catena per un'intera suite (ad es. google-workspace). L'URL restituito apre la schermata di consenso del primo toolkit; ogni completamento reindirizza con un 302 direttamente al flusso del toolkit successivo, terminando sulla pagina dell'applet ph-ai-agent. I membri che hanno già un account collegato vengono SALTATI, quindi riprovando dopo un errore a metà catena si riprende dalle app mancanti invece di creare account duplicati. Quando tutti i membri sono già collegati, l'intera catena viene eseguita di nuovo: è il flusso esplicito "aggiungi un altro account".
Parametri
facilityId `string` (obbligatorio) deviceId `string` (obbligatorio) Il balena UUID del dispositivo dell'agente.Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-suite
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-suite \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Risposta
{}
Scollega un account collegato da un agente
Elimina un singolo account collegato (multi-account: gli altri account della stessa app restano collegati). Prima dell'eliminazione si verifica che l'account appartenga a questo agente; se era l'ULTIMO account dell'app, il toolkit viene rimosso dall'insieme collegato dell'agente (la sessione viene ricreata in modo differito, così l'elenco degli strumenti dell'agente si aggiorna).
Parametri
facilityId `string` (obbligatorio) deviceId `string` (obbligatorio) Il balena UUID del dispositivo dell'agente.Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/disconnect
Richiesta di esempio
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 '{}'
Risposta
{}
Rinomina (cambia l'alias di) uno degli account collegati di un agente
Imposta l'alias visualizzato di un singolo account collegato. Gli alias vengono normalmente impostati in automatico dopo OAuth (in base all'identità che ha effettuato l'accesso); questo endpoint supporta la ridenominazione manuale nella finestra dei dettagli dell'app. Un alias vuoto cancella l'etichetta. Prima dell'aggiornamento upstream si verifica che l'account appartenga a questo agente.
Parametri
facilityId `string` (obbligatorio) deviceId `string` (obbligatorio) Il balena UUID del dispositivo dell'agente.Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/rename-account
Richiesta di esempio
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 '{}'
Risposta
{}
Attiva o disattiva un servizio integrato di Performance Hub per un agente
Attiva o disattiva per questo agente un servizio integrato sempre attivo (Smart Search, Weather, ...). I servizi integrati non richiedono collegamento né OAuth: sono inclusi in ogni agente e attivi per impostazione predefinita; questo interruttore salva l'impostazione specifica per l'agente e ricrea subito la sessione upstream dell'agente, così l'insieme degli strumenti si aggiorna. Nota che l'interruttore separato "External apps" (la route /enable) disattiva completamente l'intero server MCP delle app: quando è disattivato, anche i servizi integrati non sono disponibili, indipendentemente dai singoli interruttori.
Parametri
facilityId `string` (obbligatorio) deviceId `string` (obbligatorio) Il balena UUID del dispositivo dell'agente. slug `string` (obbligatorio) Slug del servizio integrato.Corpo della richiesta
Endpoint
PATCH /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/built-in/{slug}
Richiesta di esempio
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 '{}'
Risposta
{}
Associa un dispositivo Agente AI a una struttura
Associazione basata prima sui metadati. Cerca il dispositivo per numero di serie nei metadati in tempo reale dei dispositivi, richiede che sia online, poi crea la riga di registrazione se necessario, assegna una regione di relay Chisel + porta del tunnel + secret, registra quello slot sul relay e invia al dispositivo la configurazione della struttura e del tunnel tramite Balena. Ai nuovi dispositivi viene inoltre assegnato un account di servizio MCP predefinito (attivo, limitato a questa struttura, con tutte le funzionalità); una nuova associazione mantiene qualsiasi autorizzazione MCP esistente. Le impostazioni avanzate facoltative sostituiscono i valori predefiniti applicati al momento dell'associazione (configurazione del backup, MCP attivo/disattivo, restrizione di accesso) e `restoreFrom` inizializza il nuovo dispositivo dal backup cloud di un altro dispositivo della struttura (origine attiva o dismessa; mette in coda un ripristino tra repository, restituito come `restoreRequest` per monitorarne l'avanzamento).
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/associate/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Elenca i dispositivi Agente AI di una struttura
Restituisce i dispositivi Agente AI della struttura con lo stato online e del tunnel in tempo reale (usato dal selettore di dispositivi dell'applet).
Parametri
club `string` (obbligatorio)Endpoint
GET /api/devices/ph-ai-agent/list/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/list/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiornamento + stato online dell'Agente AI
Indica se il dispositivo è online, se è disponibile o in sospeso un aggiornamento e la release proposta (la versione fissata per la flotta, se la flotta è fissata; la più recente installata correttamente, se la flotta segue l'ultima versione).
Parametri
club `string` (obbligatorio) uuid `string` (obbligatorio)Endpoint
GET /api/devices/ph-ai-agent/update-status/{club}/{uuid}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/update-status/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Stato in tempo reale + metriche del dispositivo Agente AI
Restituisce un'istantanea selezionata per la barra delle metriche e il pannello di gestione dell'applet: campi di identità + registrazione, attività + connessione, versioni software e le ultime metriche dell'heartbeat (CPU, temperatura, memoria, archiviazione per punto di montaggio, tempo di attività, rete). Unisce il beacon dei metadati del dispositivo + lo stato di aggiornamento Balena; una delle due parti può mancare in caso di interruzione temporanea.
Parametri
club `string` (obbligatorio) uuid `string` (obbligatorio)Endpoint
GET /api/devices/ph-ai-agent/device-status/{club}/{uuid}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/device-status/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Descrizione generata dall'AI per il report sullo stato del dispositivo
Restituisce una breve spiegazione, destinata all'operatore, dei problemi di stato attualmente rilevati. I fatti e i passaggi della procedura sono sempre in device-status; questo paragrafo aggiuntivo è best-effort e può essere null.
Parametri
club `string` (obbligatorio) uuid `string` (obbligatorio)Endpoint
POST /api/devices/ph-ai-agent/health/{club}/{uuid}/explain
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/health/{club}/{uuid}/explain \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Genera un token di accesso diretto al relay per un Agente AI
Restituisce un URL firmato di breve durata che il browser usa per connettersi DIRETTAMENTE al gateway relay regionale del dispositivo (evitando il passaggio globale da PH/Sydney), più il token HS256. PH resta l'autorità (Google SSO + controlli di modulo e struttura qui); il relay-gateway verifica il token. Il proxy /ai-agent-ui resta l'alternativa.
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/access/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Invia un messaggio di chat in una sessione dell'Agente AI (risposta diretta dalla notifica)
Relay lato server usato dall'azione di risposta diretta della notifica web push: il service worker invia qui un POST (stessa origine, cookie SSO), così la risposta funziona anche senza schede di Performance Hub aperte. PH risolve la destinazione relay del dispositivo (stessa ricerca del proxy /ai-agent-ui), imposta x-ph-user per l'attribuzione del turno (la notifica push di completamento torna a questo utente) e inoltra a /api/chat/start del dispositivo con l'ID della sessione.
Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/reply
Richiesta di esempio
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 '{}'
Risposta
{}
Leggi le impostazioni di controllo degli accessi di un Agente AI (proprietario)
Restituisce il blocco di accesso del dispositivo (modalità, allowlist, visibilità, interruttore dell'assistenza PH) più le eventuali richieste di accesso in sospeso. Leggibile dal proprietario del dispositivo; gli altri utenti ricevono 403.
Parametri
club `string` (obbligatorio) uuid `string` (obbligatorio)Endpoint
GET /api/devices/ph-ai-agent/access-settings/{club}/{uuid}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/access-settings/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna le impostazioni di controllo degli accessi di un Agente AI (proprietario)
Scrittura della modalità (org/restricted), dell'allowlist con restrizioni, della visibilità dell'elenco (all/admins) e dell'interruttore "Permit access from Performance Hub Support". Consentita al proprietario del dispositivo. Il proprietario stesso si può cambiare solo tramite reallocate-owner. Le richieste di accesso approvate sono persistenti: i richiedenti ancora approvati vengono aggiunti di nuovo all'allowlist salvata; rimuoverne uno dall'elenco inviato ne revoca l'approvazione (la richiesta passa a rifiutata; potrà richiedere di nuovo).
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/access-settings/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Riassegna il proprietario di un Agente AI
Riassegna la proprietà del dispositivo a un altro utente di Performance Hub. Riservato ai proprietari dell'account (accesso al modulo di fatturazione SaaS): la soluzione di emergenza quando il proprietario di un agente con restrizioni lascia l'organizzazione. Ricevono una notifica sia il proprietario precedente sia quello nuovo (in-app + push + email).
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/reallocate-owner/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Elenco degli utenti della struttura per i selettori dell'allowlist e del proprietario dell'Agente AI
Restituisce email + nome (+ flag isOrgAdmin) di ogni utente il cui ruolo dà accesso a QUESTA struttura. Riservato al proprietario del dispositivo e a chi può riassegnarlo (proprietario dell'account), così gli utenti normali non possono elencare la base utenti.
Parametri
club `string` (obbligatorio) uuid `string` (obbligatorio)Endpoint
GET /api/devices/ph-ai-agent/org-users/{club}/{uuid}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/org-users/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Richiedi l'accesso a un Agente AI con restrizioni
Crea (o riapre) la richiesta di accesso del richiedente per un dispositivo con restrizioni; idempotente per utente+dispositivo. Il proprietario riceve una notifica in-app, web push ed email con un deep link al modulo dell'agente.
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/access-request/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Approva o rifiuta una richiesta di accesso a un Agente AI (proprietario)
Gestione di una richiesta in sospeso da parte del proprietario del dispositivo. L'approvazione aggiunge il richiedente all'allowlist del dispositivo; in entrambi i casi il richiedente riceve una notifica (in-app + push + email).
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/access-request-resolve/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Consenti + applica un aggiornamento dell'Agente AI
Fissa il dispositivo sulla release proposta (la versione fissata per la flotta o, se la flotta segue l'ultima versione, la più recente installata correttamente) e rilascia il blocco degli aggiornamenti, così il supervisor balena la applica. Lo stato sul volume dati del dispositivo viene mantenuto dopo l'aggiornamento.
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/update/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Pianifica un aggiornamento dell'Agente AI per più tardi
Salva un orario di installazione pianificato nella registrazione del dispositivo. Un processo di backend ricorrente (ogni 5 minuti) applica l'aggiornamento (fissaggio + sblocco) una volta superato l'orario pianificato. La pianificazione sostituisce qualsiasi pianificazione esistente per il dispositivo.
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/update-schedule/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Annulla un aggiornamento pianificato dell'Agente AI
Cancella l'installazione pianificata in sospeso per il dispositivo (nessun effetto se non c'è nulla di pianificato).
Parametri
club `string` (obbligatorio) uuid `string` (obbligatorio)Endpoint
DELETE /api/devices/ph-ai-agent/update-schedule/{club}/{uuid}
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/update-schedule/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Esegui un comando remoto su un dispositivo Agente AI
Pubblica un comando MQTT consentito (riavvio, riavvio di un container, blocco/sblocco degli aggiornamenti, gestione del Wi-Fi) al device-controller in esecuzione sull'Agente AI. Il dispositivo deve essere associato alla struttura.
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/command/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Aggiorna la configurazione di un Agente AI relativa alla struttura
Salva le impostazioni modificabili dall'operatore per un Agente AI associato: il nome del dispositivo, la posizione fisica del dispositivo e la cadenza del riavvio programmato. La pianificazione del riavvio viene inviata anche al dispositivo come variabile d'ambiente Balena REBOOT_DEVICE (alle 2 ora locale), in linea con il comportamento di Display Screens.
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/config/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Strutture in cui è possibile spostare un Agente AI di questa struttura
Restituisce le strutture della stessa organizzazione a cui l'utente connesso può accedere (esclusa la struttura corrente), per il selettore "Sposta in un'altra struttura". Lo spostamento vero e proprio viene eseguito da POST /api/devices/move/:club, che applica lato server le stesse regole su stessa organizzazione e accesso alla destinazione.
Parametri
club `string` (obbligatorio)Endpoint
GET /api/devices/ph-ai-agent/move-targets/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/move-targets/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
L'insieme di accessi MCP che il richiedente può concedere agli Agenti AI di una struttura
Restituisce ciò che l'utente connesso può concedere a un account di servizio MCP di un Agente AI nell'organizzazione di questa struttura: le strutture/regioni rientranti nel proprio accesso, se può concedere un ambito a livello di organizzazione, l'insieme dei moduli di cui dispone e il catalogo completo degli strumenti MCP (per la maschera avanzata per singolo strumento). L'interfaccia lo usa affinché gli utenti vedano solo opzioni comprese nelle proprie autorizzazioni; l'endpoint POST mcp-access applica la stessa attenuazione lato server.
Parametri
club `string` (obbligatorio)Endpoint
GET /api/devices/ph-ai-agent/mcp-grantable/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/mcp-grantable/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottieni la configurazione dell'account di servizio MCP di un Agente AI
Restituisce la configurazione di accesso MCP del dispositivo (ambito, moduli, maschera degli strumenti, campi di audit).
Parametri
club `string` (obbligatorio) uuid `string` (obbligatorio)Endpoint
GET /api/devices/ph-ai-agent/mcp-access/{club}/{uuid}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/mcp-access/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Configura l'account di servizio MCP di un Agente AI
Salva la configurazione di accesso MCP del dispositivo con attenuazione al momento della concessione. I richiedenti possono concedere solo strutture/regioni rientranti nel proprio accesso, l'ambito di organizzazione solo se hanno un ruolo a livello di organizzazione e solo i moduli di cui dispongono nell'organizzazione della struttura. Il flag enabled viene inviato anche al dispositivo come variabile d'ambiente Balena PH_MCP_ENABLED.
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/mcp-access/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Ottieni la configurazione VPN di un Agente AI (oscurata)
Restituisce il flag di supporto VPN del dispositivo e l'elenco delle connessioni. Il contenuto dei profili e i valori delle credenziali non vengono mai restituiti: solo i metadati dell'importazione (remote, route, DNS) e i flag che indicano la presenza di credenziali. Lo stato in tempo reale di ogni connessione proviene dall'endpoint device-status (beacon metadata.vpn).
Parametri
club `string` (obbligatorio) uuid `string` (obbligatorio)Endpoint
GET /api/devices/ph-ai-agent/vpn-config/{club}/{uuid}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/vpn-config/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Attiva o disattiva il supporto VPN di un Agente AI
Attiva/disattiva la funzionalità VPN del dispositivo. Invia la variabile di dispositivo balena PH_VPN_ENABLED e sollecita il dispositivo (MQTT vpnConfigChanged); quando la funzionalità viene disattivata le connessioni vengono mantenute (i tunnel si arrestano; la configurazione resta per la riattivazione).
Parametri
club `string` (obbligatorio) uuid `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/vpn-config/{club}/{uuid}
Richiesta di esempio
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 '{}'
Risposta
{}
Importa uno o più profili OpenVPN su un Agente AI
Accetta caricamenti codificati in base64: singoli file .ovpn/.conf, pacchetti a file separati (configurazione + certificati/chiavi) e archivi (.zip, esportazioni Pritunl .tar/.tgz, Tunnelblick .tblk, Viscosity .visc/.visz). I profili vengono normalizzati in una forma inline canonica; ogni profilo diventa una connessione (importata disconnessa: inserisci le credenziali, poi connetti). Restituisce errori 400 utili per i caricamenti non utilizzabili.
Parametri
club `string` (obbligatorio) uuid `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/vpn-import/{club}/{uuid}
Richiesta di esempio
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 '{}'
Risposta
{}
Aggiorna una connessione VPN di un Agente AI (nome / credenziali / split DNS)
Aggiorna la connessione salvata. I campi delle credenziali sono di sola scrittura (omesso = mantieni il valore salvato; stringa vuota = cancella). Le modifiche a credenziali/split DNS incrementano la revisione della connessione, in modo che un tunnel attivo si riavvii con i nuovi valori.
Parametri
club `string` (obbligatorio) uuid `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/vpn-connection/{club}/{uuid}
Richiesta di esempio
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 '{}'
Risposta
{}
Elimina una connessione VPN di un Agente AI
Rimuove la connessione dalla registrazione e sollecita il dispositivo, che chiude il tunnel ed elimina il profilo e le credenziali in cache.
Parametri
club `string` (obbligatorio) uuid `string` (obbligatorio) connectionId `string` (obbligatorio)Endpoint
DELETE /api/devices/ph-ai-agent/vpn-connection/{club}/{uuid}/{connectionId}
Richiesta di esempio
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"
Risposta
{}
Connetti / disconnetti una connessione VPN di un Agente AI
Modello a stato desiderato: imposta il flag enabled della connessione nella registrazione e sollecita il dispositivo (MQTT vpnConfigChanged senza payload); il dispositivo recupera lo stato autorevole tramite la sua chiamata universal-api autenticata con JWT e riallinea i propri tunnel. Una sollecitazione persa viene recuperata con la sincronizzazione periodica.
Parametri
club `string` (obbligatorio) uuid `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/vpn-command/{club}/{uuid}
Richiesta di esempio
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 '{}'
Risposta
{}
Ottieni la configurazione e lo stato del backup cloud di un Agente AI
Restituisce le impostazioni di backup del dispositivo (abilitazione, conservazione, regione di archiviazione), lo stato del backup continuo (ultimo backup, dimensione, errori), la regione automatica risolta e le regioni di archiviazione disponibili per il selettore. La password del repository restic non viene mai restituita.
Parametri
club `string` (obbligatorio) uuid `string` (obbligatorio)Endpoint
GET /api/devices/ph-ai-agent/backup-config/{club}/{uuid}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-config/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna la configurazione del backup cloud di un Agente AI
Salva abilitazione/conservazione/regione. Ha effetto al successivo ciclo di backup orario del dispositivo (il dispositivo chiede a PH il contesto di esecuzione prima di ogni esecuzione), quindi non è necessario riavviare il dispositivo.
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/backup-config/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Elenca le origini di ripristino dei backup per l'associazione di un nuovo Agente AI
Vista a livello di struttura per l'opzione "ripristina da un backup" della finestra di aggiunta dell'agente: ogni registrazione della struttura, attiva E dismessa/sostituita, che ha ancora un repository di backup decifrabile e almeno un punto di ripristino utilizzabile, con i suoi snapshot più recenti. Restituisce anche gli elenchi di opzioni della configurazione di backup (allowedRetentionDays, availableRegions), così la finestra non ha bisogno dell'UUID di un dispositivo per popolare i suoi selettori.
Parametri
club `string` (obbligatorio)Endpoint
GET /api/devices/ph-ai-agent/backup-sources/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-sources/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca i punti di ripristino dei backup di un Agente AI
Restituisce l'indice degli snapshot del dispositivo (dal più recente) da DynamoDB, senza passaggi sul dispositivo o sul repository, più lo stato corrente delle richieste di backup manuale / ripristino per il polling del pannello. Le richieste obsolete (mai prese in carico o senza heartbeat di avanzamento) vengono presentate come non riuscite, così l'interfaccia può sempre inviarne una nuova.
Parametri
club `string` (obbligatorio) uuid `string` (obbligatorio)Endpoint
GET /api/devices/ph-ai-agent/backup-snapshots/{club}/{uuid}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-snapshots/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Richiedi subito un backup manuale di un Agente AI
Scrive una richiesta di esecuzione manuale (con la nota dell'utente) nella riga della registrazione e sollecita il dispositivo tramite MQTT. Il dispositivo recupera la richiesta verificata tramite la sua chiamata run-context universal-api autenticata con JWT: anche senza MQTT, la richiesta viene presa in carico al successivo ciclo dello scheduler. Viene rifiutata mentre è in corso un altro backup o ripristino.
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/backup-run/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Fissa o sblocca un punto di ripristino di un Agente AI
I punti di ripristino fissati sono protetti dall'eliminazione per conservazione: la manutenzione notturna del dispositivo riceve gli ID degli snapshot fissati tramite la chiamata run-context e li esclude da restic forget, e le relative righe di indice non scadono mai per TTL. Rimuovendo il fissaggio si ripristina il normale comportamento di conservazione.
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/backup-pin/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Ripristina un Agente AI da un punto di ripristino del backup
Scrive una richiesta di ripristino nella riga della registrazione e sollecita il dispositivo. I ripristini completi sovrascrivono /data e /home/hermeswebui (il dispositivo crea prima uno snapshot di sicurezza automatico pre-ripristino e arresta l'agente durante il ripristino) e richiedono di digitare il nome del dispositivo come conferma. Passando `paths` viene invece eseguito un ripristino non invasivo a livello di file solo di quei percorsi. Facoltativamente, al termine del ripristino dei dati, fissa il dispositivo alla release software dello snapshot (vedi backup-restore-release).
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/backup-restore/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Applica la release software registrata in un ripristino completato
Passaggio finale di un ripristino che ha richiesto la versione software dello snapshot: quando il dispositivo segnala il completamento del ripristino dei dati, fissa il dispositivo alla release salvata e sblocca gli aggiornamenti (stesso meccanismo dell'endpoint di aggiornamento). Viene attivato dal polling del pannello; è idempotente: il fissaggio salvato viene cancellato una volta applicato.
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/backup-restore-release/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Sfoglia i file all'interno di un punto di ripristino del backup
Elenca un livello di directory di uno snapshot restic, servito interamente lato server dal repository Wasabi (funziona con il dispositivo offline). Vengono letti solo i metadati dell'albero: per gli elenchi non viene scaricato alcun dato dei file.
Parametri
club `string` (obbligatorio) uuid `string` (obbligatorio) takenAt `number` (obbligatorio) path `string` (facoltativo)Endpoint
GET /api/devices/ph-ai-agent/backup-files/{club}/{uuid}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-files/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Cerca nomi di file all'interno di un punto di ripristino del backup
Ricerca di nomi di file senza distinzione tra maiuscole e minuscole a partire da una directory, servita lato server dai metadati dell'albero restic (non viene letto alcun dato dei file; funziona con il dispositivo offline). Trasmette l'elenco in streaming e si ferma alle prime 200 corrispondenze.
Parametri
club `string` (obbligatorio) uuid `string` (obbligatorio) takenAt `number` (obbligatorio) q `string` (obbligatorio) path `string` (facoltativo)Endpoint
GET /api/devices/ph-ai-agent/backup-search/{club}/{uuid}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-search/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Cosa è cambiato tra due punti di ripristino del backup
Esegue lato server un restic diff tra due snapshot del dispositivo (solo metadati dell'albero) e restituisce l'elenco dei file aggiunti/rimossi/modificati (fino a un massimo di 500 modifiche) più statistiche di riepilogo. I risultati vengono memorizzati nella cache: gli snapshot sono immutabili.
Parametri
club `string` (obbligatorio) uuid `string` (obbligatorio) fromTakenAt `number` (obbligatorio) toTakenAt `number` (obbligatorio)Endpoint
GET /api/devices/ph-ai-agent/backup-diff/{club}/{uuid}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-diff/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Cronologia delle versioni di un file in tutti i punti di ripristino
Un unico restic find lato server su tutti gli snapshot del repository del dispositivo, ridotto alle versioni DISTINTE (i risultati consecutivi con dimensione+mtime identici vengono uniti) e collegato alle righe dell'indice degli snapshot per date/tipi/note.
Parametri
club `string` (obbligatorio) uuid `string` (obbligatorio) path `string` (obbligatorio)Endpoint
GET /api/devices/ph-ai-agent/backup-file-versions/{club}/{uuid}
Richiesta di esempio
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"
Risposta
{}
Cerca per nome di file in tutti i punti di ripristino dei backup di un dispositivo
Il percorso di recupero dei file eliminati: un unico restic find lato server su TUTTI gli snapshot del repository (senza distinzione tra maiuscole e minuscole, per sottostringa o glob), raggruppato per percorso con i punti di ripristino in cui compare ciascun file. Un file eliminato dal dispositivo è ancora reperibile qui finché un punto di ripristino lo contiene.
Parametri
club `string` (obbligatorio) uuid `string` (obbligatorio) q `string` (obbligatorio)Endpoint
GET /api/devices/ph-ai-agent/backup-find/{club}/{uuid}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-find/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Scarica un singolo file da un punto di ripristino del backup
Trasmette un file direttamente dal repository restic al browser (come allegato). Le directory vengono trasmesse come archivio tar. Con limite di dimensione; servito lato server, quindi funziona con il dispositivo offline.
Parametri
club `string` (obbligatorio) uuid `string` (obbligatorio) takenAt `number` (obbligatorio) path `string` (obbligatorio)Endpoint
GET /api/devices/ph-ai-agent/backup-file-download/{club}/{uuid}
Richiesta di esempio
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"
Risposta
{}
Dismetti un Agente AI da una struttura
Parametri
club `string` (obbligatorio)Endpoint
POST /api/devices/ph-ai-agent/decommission/{club}
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/decommission/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Rimuovi un Agente AI da una struttura e ripristina le impostazioni di fabbrica dell'hardware
Dissocia completamente il dispositivo, in modo che possa essere associato a QUALSIASI struttura, e cancella tutti i dati sul NUC. La cancellazione viene predisposta tramite la variabile di dispositivo balena PH_FACTORY_RESET (un nonce monouso) PRIMA della rimozione nel cloud, quindi funziona anche se il dispositivo è offline al momento della rimozione: la cancellazione viene eseguita alla successiva connessione. Una sollecitazione MQTT factoryReset rende immediato il caso online. La rimozione nel cloud revoca poi ogni credenziale e concessione, cancella il collegamento della struttura in Balena (variabili del dispositivo + tag club) e il clubID dei metadati, elimina le richieste di accesso e il record DNS della LAN. I backup cloud vengono CONSERVATI: l'indice degli snapshot e la password del repository restano nella registrazione eliminata in modo reversibile, utilizzabili come origine di ripristino quando si aggiunge un sostituto. Richiede di digitare il nome del dispositivo come conferma.
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/reset/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Sostituisci un Agente AI guasto con un nuovo NUC (ripristino di emergenza)
Sostituzione del dispositivo in un unico passaggio: associa il NUC sostitutivo (slot del tunnel, segreti, variabili balena, seed del backup), trasferisce nome, posizione, pianificazione del riavvio, impostazioni di backup, blocco degli accessi e concessione MCP del vecchio dispositivo, ricollega l'indice degli snapshot precedente al nuovo dispositivo (così l'intera cronologia dei backup resta consultabile), dismette la vecchia registrazione (contrassegnata con replacedBy / replacedFrom) e, a meno che `restore` sia false, accoda un ripristino completo del punto di ripristino scelto dal repository di backup del VECCHIO dispositivo sul nuovo hardware. Funziona con il vecchio dispositivo guasto/offline; richiede di digitare il nome del vecchio dispositivo come conferma. Solo all'interno della stessa struttura.
Parametri
club `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/devices/ph-ai-agent/replace/{club}
Richiesta di esempio
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 '{}'
Risposta
{}
Risolve un link breve del codice QR di un dispositivo Performance Hub nel deep link a cui punta, così lo scanner di Aggiungi dispositivo può rilevare il tipo di dispositivo. Vengono seguiti solo gli host performancehub.co.
Parametri
url `string` (obbligatorio) Il link breve scansionatoEndpoint
GET /api/devices/resolve-qr
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/devices/resolve-qr \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Verifica la connettività con l'Unifi Controller di una struttura e la correttezza delle credenziali.
Parametri
facilityID `string` (obbligatorio) ID interno della struttura con cui vuoi verificare la connettività UnifiEndpoint
GET /api/devices/testUnifiController/{facilityID}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/devices/testUnifiController/{facilityID} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna un dispositivo IoT generico con una struttura.
Parametri
club `string` (obbligatorio) ID interno della struttura in cui vuoi aggiornare il dispositivo. body `string` (obbligatorio) Oggetto JSON dei parametri di aggiornamento.Endpoint
PUT /api/devices/updateGenericDevice/{club}
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/devices/updateGenericDevice/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca il numero di accordi in sospeso che richiedono un'azione, in base a un utente e ai club a esso associati
Endpoint
GET /api/agreements/agreements-outstanding
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/agreements/agreements-outstanding \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca tutti gli accordi disponibili per un club
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere. contracts-sort `string` (facoltativo) Ordina gli accordi per date-effective o alphabetical. Il valore predefinito è date-effective. contracts-acknowledgement `string` (facoltativo) Filtra gli accordi per all, acknowledged o unacknowledged. Il valore predefinito è all. contracts-requirement `string` (facoltativo) Filtra gli accordi per all, signature, checkbox, popup o none. Il valore predefinito è all. contracts-status `string` (facoltativo) Filtra gli accordi per all, active o archived. Il valore predefinito è all.Endpoint
GET /api/agreements/list-agreements/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/agreements/list-agreements/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Firma un accordo in base al suo ID.
Parametri
club `string` (obbligatorio) ID interno del club che firma l'accordo. agreementid `string` (obbligatorio) ID dell'accordo da firmare. body `string` (obbligatorio) Oggetto JSON contenente l'accordo e i parametri da aggiungere o caricare nel sistema...Endpoint
POST /api/agreements/sign/{club}/{agreementid}
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/agreements/sign/{club}/{agreementid} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Riepilogo del Model Router della struttura (configurazione, saldo, spesa).
Parametri
clubID `string` (obbligatorio) tz `string` (facoltativo) Fuso orario IANA di chi visualizza: usato in alternativa per gli intervalli di spesa giornalieri e mensili quando la struttura non ha dati sul fuso orario.Endpoint
GET /api/clubs/{clubID}/ai-credits/overview
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/overview \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Catalogo dei modelli disponibili con lo stato di attivazione per struttura (per impostazione predefinita tutti attivi).
Parametri
clubID `string` (obbligatorio)Endpoint
GET /api/clubs/{clubID}/ai-credits/models
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/models \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Guardrail disponibili e modelli predefiniti di PH.
Parametri
clubID `string` (obbligatorio)Endpoint
GET /api/clubs/{clubID}/ai-credits/guardrails
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/guardrails \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Servizi del Model Router connessi. Include i dispositivi Agente AI associati, gli agenti esterni con tipo esplicito e il servizio Workflow della struttura. La configurazione si modifica tramite PATCH /keys/{keyHash}.
Parametri
clubID `string` (obbligatorio) tz `string` (facoltativo) Fuso orario IANA di chi visualizza: usato in alternativa per gli intervalli di spesa giornalieri e mensili quando la struttura non ha dati sul fuso orario.Endpoint
GET /api/clubs/{clubID}/ai-credits/agents
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/agents \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Attiva il Model Router per una struttura e predisponi il suo accesso all'inferenza.
Parametri
clubID `string` (obbligatorio)Endpoint
POST /api/clubs/{clubID}/ai-credits/enable
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/enable \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna piano, allowlist dei modelli, guardrail, filtri dei contenuti (oscuramento o blocco tramite regex lato PH), limite di spesa e configurazione della ricarica automatica.
Parametri
clubID `string` (obbligatorio)Endpoint
PATCH /api/clubs/{clubID}/ai-credits/config
Richiesta di esempio
curl -X PATCH https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/config \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Azzera il contatore del limite massimo complessivo (riallineandolo alla spesa attuale) e registra il periodo chiuso nella cronologia.
Parametri
clubID `string` (obbligatorio)Endpoint
POST /api/clubs/{clubID}/ai-credits/spend-limit/reset-total
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/spend-limit/reset-total \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Cronologia degli azzeramenti del limite massimo (dal più recente): limite, spesa e timestamp per ogni periodo chiuso.
Parametri
clubID `string` (obbligatorio)Endpoint
GET /api/clubs/{clubID}/ai-credits/spend-limit/history
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/spend-limit/history \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea una nuova chiave API phk_ per la struttura (il testo in chiaro viene restituito una sola volta). Accetta, facoltativamente, limiti di spesa, allowlist dei modelli, guardrail, filtri dei contenuti e limiti di frequenza rpmLimit/tpmLimit.
Parametri
clubID `string` (obbligatorio)Endpoint
POST /api/clubs/{clubID}/ai-credits/keys
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/keys \
-H "x-api-key: YOUR_API_KEY"
Aggiorna i campi modificabili della chiave: etichetta, limiti di spesa per chiave, allowlist dei modelli, guardrail, filtri dei contenuti e limiti di frequenza rpmLimit/tpmLimit (sincronizzati con la chiave).
Parametri
clubID `string` (obbligatorio) keyHash `string` (obbligatorio)Endpoint
PATCH /api/clubs/{clubID}/ai-credits/keys/{keyHash}
Richiesta di esempio
curl -X PATCH https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/keys/{keyHash} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Registri di inferenza per richiesta della struttura (in tempo reale, solo metadati).
Parametri
clubID `string` (obbligatorio) page `string` (facoltativo) pageSize `string` (facoltativo) status `string` (facoltativo) model `string` (facoltativo) provider `string` (facoltativo) source `string` (facoltativo) `key` o `agent` keyHash `string` (facoltativo) Filtra un singolo agente o chiave in base al suo keyHash PH. q `string` (facoltativo) Ricerca a testo libero su ID richiesta, etichetta della chiave o dell'agente, modello, provider, utente finale. minutes `string` (facoltativo) Intervallo inferiore a un giorno (ad es. Live=1440); sostituisce startDate/endDate. startTs `string` (facoltativo) Inizio dell'intervallo in secondi epoch (clic per ingrandire); sostituisce minuti e date. endTs `string` (facoltativo) Fine dell'intervallo in secondi epoch (clic per ingrandire); sostituisce minuti e date.Endpoint
GET /api/clubs/{clubID}/ai-credits/logs
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/logs \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Istogramma delle richieste nel tempo per la vista Logs. Stessi filtri della route di elenco, ma aggregati lato server in intervalli di tempo (conteggi di successi e errori), così la risposta resta minima indipendentemente dal volume dei registri. La dimensione degli intervalli viene scelta automaticamente in base al periodo.
Parametri
clubID `string` (obbligatorio) status `string` (facoltativo) model `string` (facoltativo) provider `string` (facoltativo) source `string` (facoltativo) keyHash `string` (facoltativo) q `string` (facoltativo) minutes `string` (facoltativo) startDate `string` (facoltativo) endDate `string` (facoltativo) startTs `string` (facoltativo) endTs `string` (facoltativo)Endpoint
GET /api/clubs/{clubID}/ai-credits/logs/histogram
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/logs/histogram \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Intervalli di analisi dell'utilizzo + totali per modello in un periodo (in tempo reale).
Parametri
clubID `string` (obbligatorio) range `string` (facoltativo) 24h | 7 | 30 | 90 | year | all (ignorato se vengono forniti startDate/endDate) startDate `string` (facoltativo) endDate `string` (facoltativo) groupBy `string` (facoltativo) model (predefinito) | key | source | provider | status: dimensione per intervalli + gruppi subgroupBy `string` (facoltativo) seconda dimensione facoltativa annidata in ogni gruppo (Explore) keyHash `string` (facoltativo) filtro di approfondimento: limita a una singola chiave o agente model `string` (facoltativo) filtro di approfondimento: limita a un singolo modello provider `string` (facoltativo) source `string` (facoltativo) compare `string` (facoltativo) imposta su "prev" per restituire anche groupsPrev (il periodo di uguale durata immediatamente precedente)Endpoint
GET /api/clubs/{clubID}/ai-credits/stats
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/stats \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Calendario dell'attività giornaliera nell'ultimo anno mobile (circa 53 settimane, in stile GitHub).
Parametri
clubID `string` (obbligatorio)Endpoint
GET /api/clubs/{clubID}/ai-credits/activity
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/activity \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Addebita la carta salvata per la fatturazione SaaS per aggiungere credito prepagato del Model Router.
Parametri
clubID `string` (obbligatorio) body `object` (facoltativo)Endpoint
POST /api/clubs/{clubID}/ai-credits/topup
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/topup \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Completa una ricarica dopo che l'applet ha completato l'autenticazione 3DS.
Parametri
clubID `string` (obbligatorio)Endpoint
POST /api/clubs/{clubID}/ai-credits/topup/confirm
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/topup/confirm \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Riepilogo della carta salvata per la fatturazione SaaS su cui verranno addebitate le ricariche manuali e automatiche.
Parametri
clubID `string` (obbligatorio)Endpoint
GET /api/clubs/{clubID}/ai-credits/payment-method
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/payment-method \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Transazioni contabili della struttura, dalla più recente. Facoltativamente filtrate per tipo (ad es. `types=topup,adjustment` per la cronologia dei movimenti di denaro, oppure `types=charge-reconcile` con `from`/`to` per le detrazioni di utilizzo di un mese).
Parametri
clubID `string` (obbligatorio) limit `integer` (facoltativo) Numero massimo di righe (predefinito 50, massimo 200) types `string` (facoltativo) Tipi di transazione separati da virgole (topup, charge-reconcile, refund, adjustment, trueup-shortfall) from `integer` (facoltativo) Solo le transazioni con createdAt >= from (secondi unix) to `integer` (facoltativo) Solo le transazioni con createdAt <= to (secondi unix)Endpoint
GET /api/clubs/{clubID}/ai-credits/transactions
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/transactions \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Mesi `YYYY-MM` distinti (UTC, dal più recente) che contengono almeno una transazione dei tipi richiesti. Alimenta i menu a discesa dei filtri per anno e mese, così l'interfaccia propone solo i periodi che contengono effettivamente dati.
Parametri
clubID `string` (obbligatorio) types `string` (facoltativo) Tipi di transazione separati da virgole (topup, charge-reconcile, refund, adjustment, trueup-shortfall)Endpoint
GET /api/clubs/{clubID}/ai-credits/transactions/available-periods
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/transactions/available-periods \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ricevuta di pagamento in PDF con il marchio per una singola transazione del Model Router.
Parametri
clubID `string` (obbligatorio) txId `string` (obbligatorio)Endpoint
GET /api/clubs/{clubID}/ai-credits/transactions/{txId}/receipt.pdf
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/transactions/{txId}/receipt.pdf \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Pacchetto ZIP di ricevute di pagamento in PDF con il marchio per le transazioni di ricarica selezionate. Ogni ID deve essere una ricarica della struttura: le detrazioni di utilizzo e le rettifiche amministrative non hanno ricevute e vengono rifiutate.
Parametri
clubID `string` (obbligatorio) ids `string` (obbligatorio) ID delle transazioni separati da virgole (massimo 50)Endpoint
GET /api/clubs/{clubID}/ai-credits/transactions/receipts.zip
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/transactions/receipts.zip \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Riepiloghi per mese di calendario (UTC) delle detrazioni di utilizzo della struttura, dal più recente. Il mese corrente è sempre incluso e contrassegnato con `isCurrentMonth` (dall'inizio del mese).
Parametri
clubID `string` (obbligatorio) months `integer` (facoltativo) Periodo di riferimento in mesi (predefinito 12, massimo 24; ignorato se è impostato `year`) year `integer` (facoltativo) Limita i riepiloghi a un anno di calendario UTC (ad es. 2026)Endpoint
GET /api/clubs/{clubID}/ai-credits/usage-statements
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/usage-statements \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Rendiconto mensile di utilizzo in PDF con il marchio: un riepilogo delle detrazioni di utilizzo del mese (subtotali giornalieri + totale). Non è in alcun modo una fattura o una ricevuta; le detrazioni di utilizzo non comportano alcun incasso.
Parametri
clubID `string` (obbligatorio) month `string` (obbligatorio) Mese di calendario UTC, `YYYY-MM`Endpoint
GET /api/clubs/{clubID}/ai-credits/usage-statements/{month}/statement.pdf
Richiesta di esempio
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"
Risposta
{}
Voci non elaborate delle detrazioni di utilizzo di un mese in formato CSV (ID transazione, timestamp UTC, importo, saldo successivo, istantanea della spesa complessiva): l'esportazione dettagliata che quadra con il totale del rendiconto del mese.
Parametri
clubID `string` (obbligatorio) month `string` (obbligatorio) Mese di calendario UTC, `YYYY-MM`Endpoint
GET /api/clubs/{clubID}/ai-credits/usage-statements/{month}/detail.csv
Richiesta di esempio
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"
Risposta
{}
Riepilogo di utilizzo e spesa della struttura (dati in tempo reale più il registro contabile riconciliato).
Parametri
clubID `string` (obbligatorio) tz `string` (facoltativo) Fuso orario IANA di chi visualizza: usato in alternativa per gli intervalli di spesa giornalieri e mensili quando la struttura non ha dati sul fuso orario.Endpoint
GET /api/clubs/{clubID}/ai-credits/usage
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/usage \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Associa o aggiorna un dispositivo AI Edge Processor per un club
Parametri
body `string` (obbligatorio) Oggetto JSON per aggiornare la registrazione del dispositivo AI Edge Processor.Endpoint
POST /api/ai-edge-processor/devices
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/ai-edge-processor/devices \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Associa un dispositivo AI Edge Processor a un club. Risolve il dispositivo partendo dai metadati (prevale l'heartbeat in tempo reale), completa la riga di registrazione se il dispositivo non si è mai registrato da solo e rimuove le righe di registrazione obsolete lasciate da hardware riconfigurato.
Parametri
body `string` (obbligatorio) Oggetto JSON per aggiornare la registrazione del dispositivo AI Edge Processor.Endpoint
POST /api/ai-edge-processor/devices/associate
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/ai-edge-processor/devices/associate \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce un elenco dei record di caricamento bbox di un club
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere.Endpoint
GET /api/cctv/bbox-timeline/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/bbox-timeline/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Indice di ricerca del database delle telecamere
Inoltra l'indice di ricerca camera-db della documentazione pubblica (produttori, serie, modelli, alias) usato dalla finestra Find my camera quando si aggiungono telecamere di rete. Memorizzato nella cache lato server per 12 ore.
Endpoint
GET /api/cctv/camera-db/search-index
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/camera-db/search-index \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Modelli dei produttori del database delle telecamere
Inoltra i modelli di URL RTSP e le impostazioni predefinite di un singolo produttore dal database delle telecamere della documentazione pubblica. Lo slug viene convalidato per impedire il path traversal. Memorizzato nella cache lato server per 12 ore.
Parametri
slug `string` (obbligatorio) Slug del produttore (ad es. hikvision)Endpoint
GET /api/cctv/camera-db/manufacturers/{slug}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/camera-db/manufacturers/{slug} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce un elenco dei dati di check-in di una struttura
Parametri
club `string` (obbligatorio) ID interno del club o della struttura a cui vuoi accedere. startDate `string` (facoltativo) Data di inizio nel formato YYYY-MM-DD endDate `string` (facoltativo) Data di fine nel formato YYYY-MM-DD timezone `string` (facoltativo) Fuso orario per l'interpretazione delle date (predefinito Australia/Brisbane) nextToken `string` (facoltativo) Token di paginazione per recuperare la pagina successivaEndpoint
GET /api/cctv/check-ins/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/check-ins/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Recupera la configurazione del front-end o dell'interfaccia TVCC
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere.Endpoint
GET /api/cctv/config/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/config/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottieni la configurazione di distribuzione dei contenuti TVCC
Restituisce il dominio dei contenuti usato dai client TVCC per risolvere le risorse multimediali. Il dominio è determinato dalla variabile d'ambiente CONTENT_DOMAIN, con un valore predefinito che dipende dall'ambiente (la produzione serve /cctv, gli altri ambienti servono /cctv-stg).
Endpoint
GET /api/cctv/content-config
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/content-config \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Modifica la configurazione del front-end o dell'interfaccia TVCC
Parametri
body `object` (obbligatorio) Oggetto JSON del nuovo blocco di configurazione da aggiungere al sistema.Endpoint
PUT /api/cctv/config/:club/:section
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/cctv/config/:club/:section \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce un elenco della disponibilità delle regioni dei bucket per la configurazione del provider di archiviazione TVCC
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere.Endpoint
GET /api/cctv/bucket-region/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/bucket-region/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Reimposta la raccolta dei volti non identificati
Reimposta la raccolta CompreFace dei volti non identificati della struttura eliminando tutti i soggetti. I record delle persone in DynamoDB, i rilevamenti dei volti e i blocchi della sequenza temporale in OpenSearch NON vengono modificati. Vengono cancellati solo i dati di riconoscimento facciale sottostanti. Nuovi profili ombra verranno creati automaticamente man mano che il sistema elabora nuovi rilevamenti delle telecamere.
Parametri
facilityId `string` (obbligatorio)Endpoint
DELETE /api/cctv/config/{facilityId}/unidentified-collection
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/config/{facilityId}/unidentified-collection \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottieni le informazioni sulla raccolta dei volti non identificati
Restituisce il numero attuale di soggetti nella raccolta CompreFace dei volti non identificati della struttura.
Parametri
facilityId `string` (obbligatorio)Endpoint
GET /api/cctv/config/{facilityId}/unidentified-collection-info
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/config/{facilityId}/unidentified-collection-info \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiunge una telecamera di rete (telecamera OEM/IP) tramite URL di streaming (RTSP, HTTP, HTTPS)
Parametri
body `string` (obbligatorio) Oggetto JSON per aggiungere una telecamera di rete.Endpoint
POST /api/cctv/devices/add-network-camera
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/add-network-camera \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiungi in blocco telecamere di rete a un Edge Processor
Registra più telecamere di rete RTSP/HTTP su un Edge Processor, poi invia FEED_CONFIG una sola volta, così il dispositivo ricarica la configurazione un'unica volta.
Parametri
body `object` (obbligatorio)Endpoint
POST /api/cctv/devices/add-network-cameras
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/add-network-cameras \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Associa o aggiorna un dispositivo per un club
Parametri
body `string` (obbligatorio) Oggetto JSON per aggiornare la registrazione del dispositivo TVCC.Endpoint
POST /api/cctv/devices
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Associa un dispositivo a un club
Parametri
body `string` (obbligatorio) Oggetto JSON per aggiornare la registrazione del dispositivo TVCC.Endpoint
POST /api/cctv/devices/associate
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/associate \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Invia una richiesta MQTT a uno specifico UUID di dispositivo e attende una risposta (tramite websocket) con le funzionalità disponibili della telecamera.
Parametri
club `string` (obbligatorio) ID interno del club proprietario del dispositivo che stai interrogando. body `string` (obbligatorio) Oggetto JSON dei parametri di aggiornamento.Endpoint
POST /api/cctv/devices/list-camera-capabilities/{club}
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/list-camera-capabilities/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca le registrazioni dei dispositivi
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere.Endpoint
GET /api/cctv/devices/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/devices/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Rimuove una telecamera di rete contrassegnandola come eliminata e togliendola dal FEED_CONFIG dell'Edge Processor
Parametri
club `string` (obbligatorio) ID interno del club proprietario del dispositivo. balenaUUID `string` (obbligatorio) UUID della telecamera di rete da rimuovere.Endpoint
DELETE /api/cctv/devices/remove-network-camera/{club}/{balenaUUID}
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/devices/remove-network-camera/{club}/{balenaUUID} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Salva tutte le funzionalità configurate della telecamera e le applica al dispositivo come variabile d'ambiente (tramite balena)
Parametri
club `string` (obbligatorio) ID interno del club proprietario del dispositivo che stai interrogando. body `string` (obbligatorio) Oggetto JSON dei parametri di aggiornamento.Endpoint
POST /api/cctv/devices/save-camera-capabilities/{club}
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/save-camera-capabilities/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Salva una maschera di movimento (se configurata) per la telecamera e la applica al dispositivo come variabile d'ambiente (tramite balena)
Parametri
club `string` (obbligatorio) ID interno del club proprietario del dispositivo che stai interrogando. body `string` (obbligatorio) Oggetto JSON della maschera della telecamera.Endpoint
POST /api/cctv/devices/save-camera-mask/{club}
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/save-camera-mask/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Invia un comando v4l2 specifico (ad esempio luminosità o contrasto) al dispositivo fisico
Parametri
club `string` (obbligatorio) ID interno del club proprietario del dispositivo che stai interrogando. body `string` (obbligatorio) Oggetto JSON dei parametri di aggiornamento.Endpoint
POST /api/cctv/devices/set-camera-capability/{club}
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/set-camera-capability/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Verifica l'URL di streaming di una telecamera di rete
Invia un comando di prova a un Edge Processor per convalidare l'URL di streaming di una telecamera con ffprobe
Corpo della richiesta
Endpoint
POST /api/cctv/devices/test-stream
Richiesta di esempio
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 '{}'
Risposta
{}
Elimina definitivamente dal database un singolo record di rilevamento del volto. Usato per rimuovere voci di tracciamento non corrispondenti o errate dal registro delle attività di una persona.
Parametri
club `string` (obbligatorio) fdID `string` (obbligatorio)Endpoint
DELETE /api/cctv/face-detections/:club/:fdID
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/face-detections/:club/:fdID \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce un elenco dei dati di rilevamento del volto di una persona
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere. personID `string` (obbligatorio) ID della persona nel sistema di identificazione faccialeEndpoint
GET /api/cctv/face-detections/:club/:personID
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/face-detections/:club/:personID \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce i rilevamenti del volto che fanno riferimento a una determinata immagine ritagliata della persona, interrogati tramite il GSI personCropImage.
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere. personCropImage `string` (obbligatorio) URL dell'immagine ritagliata della persona salvato nel record di rilevamento del volto. limit `string` (facoltativo) Numero massimo di rilevamenti da restituire. nextToken `string` (facoltativo) Token di paginazione di una risposta precedente.Endpoint
GET /api/cctv/face-detections-by-person-crop-image/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/face-detections-by-person-crop-image/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce un elenco dei dati di rilevamento del volto di un club, raggruppati per intervallo rispetto all'ora attuale
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere.Endpoint
GET /api/cctv/face-detections/:club/timeline
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/face-detections/:club/timeline \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce un elenco dei dati di rilevamento del volto di un club
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere.Endpoint
GET /api/cctv/face-detections/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/face-detections/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Cerca con OpenSearch i blocchi della sequenza temporale dei rilevamenti del volto in una struttura
Parametri
facilityId `string` (obbligatorio) ID interno della struttura in cui cercare timezone `string` (obbligatorio) Fuso orario IANA per la conversione delle date (ad es. Pacific/Auckland) startDate `string` (facoltativo) Filtro per data di inizio (YYYY-MM-DD), convertito in startUnix in base al fuso orario endDate `string` (facoltativo) Filtro per data di fine (YYYY-MM-DD), convertito in endUnix in base al fuso orario personId `string` (facoltativo) Filtra per uno specifico ID persona query `string` (facoltativo) Ricerca a testo libero (ad es. nome della persona) limit `string` (facoltativo) Risultati per pagina (predefinito 20, massimo 100) filters `string` (facoltativo) Oggetto filtri codificato in JSON (ad es. {"matchType":"identified"}) sortBy `string` (facoltativo) Campo per l'ordinamento (startUnix, endUnix, created). Il valore predefinito è endUnix. page `string` (facoltativo) Numero di pagina per la paginazione (predefinito 1) sortOrder `string` (facoltativo) Direzione di ordinamento (asc o desc). Il valore predefinito è desc.Endpoint
GET /api/cctv/search/face-detections/timeline-blocks/{facilityId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/search/face-detections/timeline-blocks/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce un elenco di report sulla struttura del club
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere.Endpoint
GET /api/cctv/facility/:club/reports
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/facility/:club/reports \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Avvia la generazione su richiesta delle mappe di calore. Richiama la stessa logica Starter usata dal cron programmato, ma consente di indicare una struttura specifica, una data/ora e un insieme di periodi. Se chiamato senza corpo, si comporta esattamente come il cron: analizza tutte le strutture idonee e mette in coda ogni dispositivo.
Corpo della richiesta
Endpoint
POST /api/cctv/heatmaps/generate
Richiesta di esempio
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 '{}'
Risposta
{}
Risolve la posizione di un PNG della mappa di calore composta su un intervallo mobile per un singolo dispositivo. Restituisce solo metadati JSON: i byte del PNG si trovano sul dominio dei contenuti e il front-end costruisce l'URL così: `${contentDomain}/cctv/${storageService}/${region}/${filePath}?s=${token}` Ordine di risoluzione: 1. Corrispondenza nell'indice DynamoDB `composed#…` → restituzione immediata (~10 ms). 2. HEAD su Wasabi con la chiave di cache deterministica. Se trovato, scrive una riga di indice di completamento e restituisce il risultato. 3. Ripiego su dati obsoleti: esiste un record composto per questa tupla (dispositivo, intervallo, ora), anche di una data diversa. Viene restituito subito con `cache: 'HIT-STALE'`, così il front-end può mostrare *qualcosa*. Una nuova composizione viene avviata in modo asincrono. 4. Percorso a freddo: non esiste alcun record. La Lambda di composizione viene messa in coda tramite `InvocationType: 'Event'` e l'endpoint restituisce `202 { cache: 'PENDING' }`. Il front-end interroga finché non arriva un record (di solito 3-5 secondi). Gestione di oggi: quando `endDate` è l'"oggi" locale della struttura, l'endpoint restituisce invece il PNG di ieri: le sezioni di oggi sono ancora in fase di scrittura da parte del cron Starter e una nuova composizione sarebbe incompleta. La risposta riporta l'`endDate` richiesto e include `endDateUsed` (= ieri). Enum `cache`: - `HIT`: servito dall'indice DDB per la data richiesta. - `HIT-FALLBACK`: richiesto oggi; servita la riga di indice di ieri. - `HIT-BACKFILL`: assente in DDB ma Wasabi aveva il PNG; la riga è appena stata scritta. - `HIT-FALLBACK-BACKFILL`: completamento sul ripiego di ieri. - `HIT-STALE`: nessun record per la data richiesta, ma esiste un record di un'altra data per questa tupla; servito subito e una nuova composizione viene messa in coda in background. - `PENDING`: nessun record; la composizione è stata messa in coda. Il front-end deve interrogare periodicamente. La risposta è `202 Accepted`, senza `filePath`.
Parametri
facilityId `string` (obbligatorio) deviceUUID `string` (obbligatorio) Dispositivo per cui eseguire la composizione. Le composizioni sono per dispositivo. hour `integer` (obbligatorio) Ora del giorno (0–23) da comporre nel periodo di riferimento. endDate `string` (facoltativo) Ultima data dell'intervallo (YYYY-MM-DD). Predefinita: oggi (fuso orario della struttura). range `string` (facoltativo) Periodo di riferimento. Deve essere uno degli intervalli consentiti. nocache `integer` (facoltativo) Imposta su `1` per ignorare i livelli di cache DDB + HEAD e forzare una nuova composizione.Endpoint
GET /api/cctv/heatmaps/hourly/{facilityId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/heatmaps/hourly/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Individua quali ore del giorno hanno record di sezioni `1h` per un dispositivo in un periodo di riferimento mobile. Il front-end lo usa per popolare il selettore dell'ora insieme a un selettore di data + intervallo prima di chiamare l'endpoint di composizione (`/api/cctv/heatmaps/hourly/...`). Esempio: `GET /api/cctv/heatmaps/query-hourly/Birkdale?deviceUUID=abc123&endDate=2026-04-16&range=30d` Internamente: una query di intervallo DynamoDB su `cctvheatmaps` (`sk BETWEEN 1h#{start}-00 AND 1h#{end}-23`), raggruppata per ora. Restituisce una voce per ogni ora con almeno una sezione, inclusa una JPEG di riferimento rappresentativa (presa dal giorno più recente dell'intervallo: il riferimento è condiviso per dispositivo e per giorno).
Parametri
facilityId `string` (obbligatorio) deviceUUID `string` (obbligatorio) Dispositivo da interrogare. Le sezioni orarie sono per dispositivo. endDate `string` (facoltativo) Ultima data dell'intervallo (YYYY-MM-DD). Predefinita: oggi (fuso orario della struttura). range `string` (facoltativo) Periodo di riferimento. Deve essere uno degli intervalli consentiti.Endpoint
GET /api/cctv/heatmaps/query-hourly/{facilityId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/heatmaps/query-hourly/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Interroga i record delle mappe di calore pregenerate per una struttura. **Tutti i record per un tipo di periodo:** - `/api/cctv/heatmaps/Birkdale?periodType=1y` - `/api/cctv/heatmaps/Birkdale?deviceUUID=abc123&periodType=1d` **Intervallo di date, singolo tipo di periodo:** - `/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` **Intervallo di date, tutti i tipi di periodo applicabili (ometti periodType):** - `/api/cctv/heatmaps/Birkdale?from=2026-03-01&to=2026-03-31` Restituisce i record annuali, semestrali, trimestrali e così via, fino a quelli di 6h, che si sovrappongono all'intervallo indicato. **Momento specifico, tutti i 9 tipi di periodo per un dispositivo:** - `/api/cctv/heatmaps/Birkdale?deviceUUID=abc123&date=2026-03-15T14:30` Restituisce fino a 9 record (1y, 6m, 3m, 2m, 1m, 1w, 1d, 12h, 6h).
Parametri
facilityId `string` (obbligatorio) L'identificativo della struttura. deviceUUID `string` (facoltativo) Interroga un dispositivo specifico. Se omesso, interroga tutti i dispositivi (GSI). periodType `string` (facoltativo) Filtra per un singolo tipo di periodo. Se omesso insieme a from/to, interroga tutti i tipi. from `string` (facoltativo) Data di inizio (yyyy-mm-dd). Deve essere usata con `to`. to `string` (facoltativo) Data di fine (yyyy-mm-dd). Deve essere usata con `from`. date `string` (facoltativo) Ricerca in un momento specifico (yyyy-mm-dd o yyyy-mm-ddTHH:mm). Richiede deviceUUID. Restituisce un record per tipo di periodo.Endpoint
GET /api/cctv/heatmaps/{facilityId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/heatmaps/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottieni la miniatura della diretta del dispositivo
Parametri
club `string` (obbligatorio) ID interno del club. deviceId `string` (obbligatorio) ID interno del dispositivo TVCC.Endpoint
GET /api/cctv/livestream/:club/thumbnail/:deviceId
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/livestream/:club/thumbnail/:deviceId \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Comunica al sistema TVCC che stai per guardare una diretta
Parametri
club `string` (obbligatorio) ID interno del club. deviceId `string` (obbligatorio) ID interno del dispositivo TVCC.Endpoint
POST /api/cctv/livestream/:club/iswatching/:deviceId
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/cctv/livestream/:club/iswatching/:deviceId \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Approva una corrispondenza di intersezione
Imposta lo stato della corrispondenza su confermato e registra il revisore.
Parametri
club `string` (obbligatorio) matchId `string` (obbligatorio)Endpoint
POST /api/cctv/matching/{club}/detail/{matchId}/approve
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/cctv/matching/{club}/detail/{matchId}/approve \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottieni una singola corrispondenza di intersezione con i dettagli della visita
Restituisce il record della corrispondenza e la relativa suddivisione dei tempi per visita.
Parametri
club `string` (obbligatorio) matchId `string` (obbligatorio)Endpoint
GET /api/cctv/matching/{club}/detail/{matchId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/matching/{club}/detail/{matchId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Collega manualmente una persona senza corrispondenza a un membro
Associa un personId TVCC a un membro specifico, impostando la corrispondenza come confermata.
Parametri
club `string` (obbligatorio) matchId `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/cctv/matching/{club}/detail/{matchId}/link
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/cctv/matching/{club}/detail/{matchId}/link \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Risposta
{}
Elenca le corrispondenze di intersezione di una struttura
Restituisce le corrispondenze paginate filtrate per stato.
Parametri
club `string` (obbligatorio) status `string` (facoltativo) limit `integer` (facoltativo) nextToken `string` (facoltativo)Endpoint
GET /api/cctv/matching/{club}/list
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/matching/{club}/list \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Rifiuta una corrispondenza di intersezione
Imposta lo stato della corrispondenza su rifiutato e registra il revisore.
Parametri
club `string` (obbligatorio) matchId `string` (obbligatorio)Endpoint
POST /api/cctv/matching/{club}/detail/{matchId}/reject
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/cctv/matching/{club}/detail/{matchId}/reject \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottieni i conteggi riepilogativi delle corrispondenze di intersezione
Restituisce i conteggi delle corrispondenze della struttura raggruppati per stato.
Parametri
club `string` (obbligatorio) ID della strutturaEndpoint
GET /api/cctv/matching/{club}/summary
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/matching/{club}/summary \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Scollega una corrispondenza di profilo appresa automaticamente
Riporta una corrispondenza collegata allo stato rifiutato e cancella autoLearnedFrom nel record del membro.
Parametri
club `string` (obbligatorio) matchId `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/cctv/matching/{club}/detail/{matchId}/unlink
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/cctv/matching/{club}/detail/{matchId}/unlink \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Risposta
{}
Legge lo stato di un'operazione "upsert identified person" in corso (copre creazione e modifica). Legge la riga direttamente dalla tabella `people-ops` di proprietà di cctv-rekognition-api, senza passare da una Lambda. Usato dal front-end TVCC per monitorare l'avanzamento dopo POST /api/cctv/people/{facility}/identified. Il percorso è allo stesso livello di `/cctv/people/...` (non annidato al suo interno), così il router express non può interpretare per errore `operationId` come `:personID` in `/cctv/people/:club/:personID`. Vedi l'ordine dei glob di createAPIRouter. Restituisce un segnaposto `pending` finché la Lambda upsertIdentifiedPerson non ha scritto la prima voce di fase (finestra di avvio a freddo). L'hook di polling del front-end tratta allo stesso modo il segnaposto e lo stato pending, quindi il contratto resta stabile per i chiamanti.
Parametri
operationId `string` (obbligatorio)Endpoint
GET /api/cctv/people-operations/{operationId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people-operations/{operationId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiunge un'immagine del volto (da un rilevamento di tracciamento esistente) al soggetto di riconoscimento CompreFace della persona e salva un riferimento nella tabella delle foto ombra. NON carica l'immagine su Wasabi, perché è già presente come acquisizione del rilevamento del volto.
Parametri
club `string` (obbligatorio) personID `string` (obbligatorio) body `string` (obbligatorio)Endpoint
POST /api/cctv/people/:club/:personID/add-face
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/:club/:personID/add-face \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiungi foto ombra al record di una persona
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere. personID `string` (obbligatorio) ID del record della persona body `string` (obbligatorio) Oggetto JSON del nuovo blocco di configurazione da aggiungere al sistema.Endpoint
POST /api/cctv/people/:club/shadow-photos/:personID
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/:club/shadow-photos/:personID \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Interroga le foto ombra di una persona
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere. personID `string` (obbligatorio) ID del record della personaEndpoint
GET /api/cctv/people/:club/shadow-photos/:personID
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/:club/shadow-photos/:personID \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Rimuove definitivamente un record di foto ombra da CCTVShadowPhotosTable e rimuove il volto corrispondente da CompreFace (se faceId è salvato).
Parametri
club `string` (obbligatorio) personID `string` (obbligatorio) id `string` (obbligatorio) L'ID del record della foto ombra (chiave primaria)Endpoint
DELETE /api/cctv/people/:club/shadow-photos/:personID/:id
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/people/:club/shadow-photos/:personID/:id \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elimina i riferimenti e i record di riconoscimento associati in base a un personID
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere. personID `string` (obbligatorio) ID univoco della persona TVCC.Endpoint
DELETE /api/cctv/people/:club/:personID
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/people/:club/:personID \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce il record di una persona di un club
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere. personID `string` (obbligatorio) ID database della persona.Endpoint
GET /api/cctv/people/:club/:personID
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/:club/:personID \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottieni le zone di accesso corrispondenti al profilo di iscrizione di una persona
Risolve il tipo di membro, i tag e i piani di iscrizione della persona, poi restituisce le zone di accesso reali (origin=membership-plan, non assorbite) confrontate con le regole di inclusione ed esclusione. L'accessRestriction di ogni zona viene ridotto alle sole regole corrispondenti alla persona. Le telecamere delle zone figlie vengono unite nelle zone padre.
Parametri
club `string` (obbligatorio) ID interno della struttura personID `string` (obbligatorio) ID persona dalla tabella delle persone TVCCEndpoint
GET /api/cctv/people/{club}/{personID}/allowed-zones
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/{club}/{personID}/allowed-zones \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce lo stato attuale di un processo di unione, inclusi i risultati per ogni origine. Interroga questo endpoint ogni 3-5 secondi finché lo stato è IN_PROGRESS.
Parametri
club `string` (obbligatorio) mergeJobID `string` (obbligatorio)Endpoint
GET /api/cctv/people/:club/merge-status/:mergeJobID
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/:club/merge-status/:mergeJobID \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Avvia in background l'unione di più profili di persone non identificate in un unico profilo superstite. Risponde subito 202 con un mergeJobID. Interroga /merge-status/:mergeJobID per l'avanzamento.
Parametri
club `string` (obbligatorio) body `string` (obbligatorio)Endpoint
POST /api/cctv/people/:club/merge-unidentified
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/:club/merge-unidentified \
-H "x-api-key: YOUR_API_KEY"
Aggiungi un volto alla raccolta della blacklist di una struttura
Parametri
facilityId `string` (obbligatorio) ID interno della strutturaCorpo della richiesta
Endpoint
POST /api/cctv/people/{facilityId}/blacklist
Richiesta di esempio
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 '{}'
Risposta
{}
Crea o aggiorna una persona identificata in una struttura: crea un nuovo record o ne aggiorna uno esistente. Inoltra la richiesta alla Lambda upsertIdentifiedPerson, che scrive il record della persona, carica su Wasabi l'eventuale foto fornita e reindicizza il volto in CompreFace. Quando `isNewRecord` è true (predefinito), la Lambda esegue il ramo di creazione (cctvPeople.save) e genera un `personID` se non viene fornito. Quando `isNewRecord` è false, la Lambda esegue il ramo di aggiornamento (cctvPeople.update): `personID` è obbligatorio e deve identificare un record esistente.
Parametri
facilityId `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/cctv/people/{facilityId}/identified
Richiesta di esempio
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 '{}'
Aggiorna l'insieme dei campi partner facoltativi sincronizzati nella tabella delle persone TVCC di una struttura.
Parametri
facilityId `string` (obbligatorio) ID interno della strutturaCorpo della richiesta
Endpoint
PUT /api/cctv/people/{facilityId}/sync-fields
Richiesta di esempio
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 '{}'
Risposta
{}
Restituisce un elenco dei dati delle persone di un club
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere.Endpoint
GET /api/cctv/people/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Cerca persone in una struttura tramite l'immagine del volto. Richiama la Lambda imageFaceSearch di cctv-rekognition-api con l'immagine base64 caricata e l'ID della struttura indicato nel percorso. Restituisce le corrispondenze in ordine di rilevanza più un riepilogo degli attributi DeepFace.
Parametri
club `string` (obbligatorio) ID della struttura o del club body `string` (obbligatorio)Endpoint
POST /api/cctv/people/{club}/search-by-face
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/{club}/search-by-face \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Cerca persone in una struttura con OpenSearch
Parametri
facilityId `string` (obbligatorio) ID interno della struttura in cui cercare query `string` (facoltativo) Termine di ricerca (ad es. nome) page `string` (facoltativo) Numero di pagina (predefinito 1) limit `string` (facoltativo) Risultati per pagina (predefinito 20, massimo 100) filters `string` (facoltativo) Oggetto filtri codificato in JSON (ad es. {"membershipStatus":"active"}) sortBy `string` (facoltativo) Campo per l'ordinamento (created, lastName, firstName, membershipUpdatedOn). Il valore predefinito è created. sortOrder `string` (facoltativo) Direzione di ordinamento (asc o desc). Il valore predefinito è desc.Endpoint
GET /api/cctv/search/people/:facilityId
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/search/people/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna gli elementi di rilevamento del volto con un nuovo personID e associa i record di riconoscimento
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere. body `string` (obbligatorio) Oggetto JSON del nuovo blocco di configurazione da aggiungere al sistema.Endpoint
POST /api/cctv/people/:club/validate
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/:club/validate \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce un oggetto con tutti i filtri disponibili per i dati delle registrazioni TVCC di un club
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere.Endpoint
GET /api/cctv/recordings/filters/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/filters/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Trasmetti la registrazione in streaming.
Endpoint
GET /api/cctv/recordings/:club/:dir/:filename
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/:club/:dir/:filename \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna le informazioni sulla registrazione.
Endpoint
PUT /api/cctv/recordings/:club/:dir/:filename
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/cctv/recordings/:club/:dir/:filename \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce un riepilogo dei dati delle registrazioni TVCC di un club
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere.Endpoint
GET /api/cctv/recordings/:club/summary
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/:club/summary \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce un elenco dei dati delle registrazioni TVCC di un club in base a un intervallo rispetto all'ora attuale
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere.Endpoint
GET /api/cctv/recordings/:club/timeline
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/:club/timeline \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce un elenco dei dati delle registrazioni TVCC di un club
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere.Endpoint
GET /api/cctv/recordings/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Le registrazioni vengono eliminate automaticamente dopo un periodo prestabilito; usa questa funzione per conservarle
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere.Endpoint
POST /api/cctv/recordings/:club/:action
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/cctv/recordings/:club/:action \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Cerca le istantanee dei report di una struttura in un intervallo di date
Parametri
facilityId `string` (obbligatorio) ID interno della struttura startDate `string` (obbligatorio) Filtro per data di inizio (YYYY-MM-DD) endDate `string` (obbligatorio) Filtro per data di fine (YYYY-MM-DD) deviceIds `string` (facoltativo) Elenco separato da virgole di ID di telecamere o dispositivi in base a cui filtrare view `string` (facoltativo) Vista alternativa del report da calcolare (inoltrata alla Lambda dei report)Endpoint
GET /api/cctv/reports/search-report-snapshots/{facilityId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/reports/search-report-snapshots/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ricerca vettoriale sui contenuti multimediali TVCC indicizzati di una struttura. Risponde con un text/event-stream inoltrato dalla Lambda searchAnything, così il client può mostrare l'avanzamento mentre un container a freddo carica l'encoder. Gli eventi sono `status`, poi `result` oppure `error`. Ci sono tre modi per effettuare una ricerca, due dei quali con questo metodo. Invia `query` per cercare a testo libero. Invia `seedIndex` + `seedKey` per cercare per esempio ("altri simili") usando il vettore di una riga già presente nell'indice: è così che trovi altri risultati simili a quello che l'utente sta guardando. Per cercare tramite un'immagine in possesso dell'utente, invia invece i byte con `POST` a questo stesso percorso. Invia parole insieme a un'immagine per restringere l'una con l'altra: **il testo filtra, l'immagine ordina**. I candidati provengono dal seed, le parole decidono quali vengono mantenuti e la somiglianza visiva decide l'ordine: così i risultati continuano ad assomigliare all'immagine e le parole scartano quelli che non corrispondono. I due non vengono mai fusi in un unico vettore, per questo `queryKind` resta `similar` in una ricerca combinata; è la presenza di `query` nel risultato a indicare che è stato applicato un filtro testuale. Aspettati che le ricerche combinate restituiscano abbastanza spesso nessun risultato e tratta questo caso come un esito distinto: `perIndex.
Parametri
facilityId `string` (obbligatorio) ID interno della struttura in cui cercare query `string` (facoltativo) Descrizione a testo libero di ciò che cerchi. Obbligatoria a meno che non venga inviato warm=1 o un seed. Combinata con un seed, non è più l'elemento ordinato ma diventa un filtro sui candidati del seed, scartando quelli il cui punteggio testuale è sotto la soglia di rilevanza dell'indice. seedIndex `string` (facoltativo) Cerca per esempio anziché per testo: l'indice in cui si trova la riga seed (person-crops, recording-frames, timelapse-frames). È l'`index` del risultato su cui l'utente ha fatto clic. Deve essere inviato con seedKey. seedKey `string` (facoltativo) La `key` della riga seed, ripresa esattamente dal risultato. Il seed è escluso dai propri risultati: per una registrazione significa l'intera clip, perché gli altri suoi fotogrammi distano 2 s l'uno dall'altro e sono quasi identici. seedFrameId `string` (facoltativo) Obbligatorio quando seedIndex è recording-frames: quell'indice salva una riga per ogni fotogramma campionato e tutte condividono la chiave della clip, quindi la sola chiave identifica una clip e non un momento. Invia il `frameId` del risultato. Le righe meno recenti non lo hanno: in quel caso invia seedOffsetMs. seedOffsetMs `string` (facoltativo) Identificativo alternativo del fotogramma per i seed recording-frames la cui riga è precedente a `frame_id`. Invia l'`offsetMs` del risultato. Ignorato se viene fornito seedFrameId. warm `string` (facoltativo) Prepara un container Lambda senza eseguire una ricerca. Chiamalo al caricamento della pagina. warmTarget `string` (facoltativo) Quale encoder carica `warm`: `text` (predefinito), `image` o `both`. La torre visiva occupa 355 MB contro i 283 MB di quella testuale, quindi la sua preparazione è facoltativa: richiedi `image` solo quando l'utente ha effettivamente preparato un'immagine, non al caricamento della pagina. index `string` (facoltativo) Set di dati in cui cercare, separati da virgole: person-crops, recording-frames, timelapse-frames. I risultati vengono uniti in un unico elenco ordinato per punteggio. Per impostazione predefinita si cerca in tutti e tre; passa un elenco esplicito per restringere la ricerca. timelapse-frames riguarda le telecamere che non registrano e producono solo un fotogramma al minuto, e la sua soglia di rilevanza non è ancora calibrata. model `string` (facoltativo) Encoder con cui eseguire la query. Deve corrispondere all'encoder con cui è stato indicizzato il set di dati. limit `string` (facoltativo) Risultati da restituire per indice (predefinito 50, massimo 100): non è un totale, quindi una ricerca in tutti e tre gli indici può restituirne fino al triplo. Per le registrazioni conta le clip anziché i fotogrammi corrispondenti. from `string` (facoltativo) Trova solo i contenuti acquisiti a partire da questo momento, in millisecondi dall'epoch. Nota: si tratta dell'ora di acquisizione, non di caricamento. to `string` (facoltativo) Trova solo i contenuti acquisiti prima di questo momento (escluso), in millisecondi dall'epoch. cameraId `string` (facoltativo) balenaUUID delle telecamere, separati da virgole, a cui restringere la ricerca: il campo `balenaUUID` di ogni voce restituita da /api/cctv/recordings/filters/:club. È il filtro per telecamera da preferire: ogni indice salva questo stesso valore, quindi un solo filtro li restringe tutti. Nota che lo riportano solo i ritagli il cui collegamento al rilevamento del volto è stato risolto (circa l'1% oggi), quindi restringere i ritagli per telecamera restituirà pochi risultati o nessuno finché non verrà eseguito il completamento dei ritagli; le registrazioni sono completamente popolate e vengono filtrate con precisione. camera `string` (facoltativo) Nomi delle telecamere, separati da virgole, a cui restringere la ricerca. In pratica vale solo per le registrazioni: person-crops salva un nome di telecamera vuoto in ogni riga, quindi qualsiasi valore qui esclude tutti i ritagli. Preferisci cameraId. cameraGroup `string` (facoltativo) Gruppi di telecamere, separati da virgole, a cui restringere la ricerca. Popolato in tutte le registrazioni ma solo in circa l'1% dei ritagli, per lo stesso motivo di cameraId. minScore `string` (facoltativo) Sostituisce la soglia del coseno per indice che filtra il rumore. Omettilo in produzione; ogni indice ha un valore predefinito calibrato (e uno separato, non calibrato, per le ricerche con seed). Passa 0 per vedere i vicini più prossimi senza filtri quando esegui il debug della rilevanza.Endpoint
GET /api/cctv/search/anything/:facilityId
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/search/anything/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Cerca tramite un'immagine in possesso dell'utente, anziché tramite parole o un risultato già sullo schermo. Identico al GET sotto ogni altro aspetto (stessi parametri di query, stesso flusso di eventi, stessa forma del risultato), quindi qui sono documentate solo le differenze. Invia i **byte originali del file** come corpo della richiesta con un Content-Type `image/*`. Non ridimensionare, ritagliare o ricodificare prima l'immagine nel browser: il server riproduce un ridimensionamento molto specifico (una compressione a 256x256 con un kernel bilineare con antialiasing) con cui sono stati creati i vettori indicizzati, mentre il ridimensionamento del canvas ne usa uno diverso. Dalle misurazioni, questa sostituzione finisce a circa 0,93 di coseno dalla risposta corretta, una distanza maggiore di quella tra due immagini realmente diverse: i risultati vengono quindi ordinati in modo plausibile ma errato, senza alcun errore. Il limite è di 4 MB, un vincolo di trasporto e non di qualità: i byte viaggiano nel payload di invocazione della Lambda, limitato a 6 MB, e la codifica base64 li aumenta di un terzo. I risultati vengono valutati confrontando immagini, quindi `queryKind` è `image` e i punteggi sono sulla stessa scala, molto più alta, di una ricerca con seed: mai confrontabili con i punteggi testuali. Aspettati che siano leggermente *inferiori* a quelli di una ricerca con seed equivalente: il vettore di un seed è stato scritto dal dispositivo stesso, mentre un caricamento viene ricodificato qui da un motore diverso, che lo colloca a pochi centesimi da dove lo avrebbe posto il dispositivo. Dalle misurazioni, i risultati hanno comunque la stessa qualità; semplicemente non sono lo stesso identico insieme. Aggiungere `query` filtra i risultati in base a quelle parole, esattamente come per un seed. L'invio di un seed *e* di un'immagine viene rifiutato: entrambi sono l'elemento da ordinare, quindi la coppia non ha senso. Questa è la richiesta più costosa servita dall'endpoint. Un'immagine caricata carica la torre visiva, e aggiungere parole carica anche quella testuale, entrambe su un container a freddo. `warm=1&warmTarget=image`, inviato non appena l'utente prepara un'immagine, toglie questo costo dal percorso critico.
Parametri
facilityId `string` (obbligatorio) ID interno della struttura in cui cercare body `string` (obbligatorio) Byte dell'immagine non elaborati, non modificati, massimo 4 MB query `string` (facoltativo) Parole facoltative con cui restringere i risultati per immagine, scartando le corrispondenze il cui punteggio testuale è sotto la soglia di rilevanza dell'indice.Endpoint
POST /api/cctv/search/anything/:facilityId
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/cctv/search/anything/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce i dettagli di archiviazione e altre metriche della TVCC del club
Endpoint
GET /api/cctv/storage-details/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/storage-details/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce un elenco dei record di caricamento dei timelapse di un club
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere.Endpoint
GET /api/cctv/timelapse/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/timelapse/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca le azioni eseguite dagli utenti sulle registrazioni nel front-end o nell'interfaccia TVCC
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere.Endpoint
GET /api/cctv/ui/actions/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/ui/actions/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Registra un'azione eseguita da un utente sulle registrazioni nel front-end o nell'interfaccia TVCC
Parametri
body `string` (obbligatorio) Oggetto JSON del nuovo blocco di configurazione da aggiungere al sistema.Endpoint
POST /api/cctv/ui/actions/:club
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/cctv/ui/actions/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottieni il token utente per il front-end o l'interfaccia TVCC
Parametri
club `string` (obbligatorio) ID del clubEndpoint
GET /api/cctv/ui/token/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/ui/token/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Genera un token per l'accesso temporaneo o come ospite
Parametri
club `string` (obbligatorio) L'identificativo univoco del club. body `string` (obbligatorio) Oggetto JSON con i dettagli del token da emettere.Endpoint
POST /api/cctv/token/{club}
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/cctv/token/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{
"accessID": "00000000-0000-0000-0000-000000000014"
}
Restituisce un elenco dei record dei token per l'accesso temporaneo o come ospite
Parametri
club `string` (obbligatorio) L'identificativo univoco del club.Endpoint
GET /api/cctv/token/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/cctv/token/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottieni il token di accesso tramite l'ID di accesso
Parametri
accessID `string` (obbligatorio) ID del record del token nel database.Endpoint
POST /guest/cctv/token/:accessID
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/guest/cctv/token/:accessID \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elimina gli orari di accesso di una struttura
Parametri
facilityId `string` (obbligatorio) body `object` (obbligatorio) Oggetto JSON dei nuovi orari di accesso.Endpoint
DELETE /api/ai/computer-vision/access-hours/:facilityId
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/ai/computer-vision/access-hours/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce un elenco degli orari di accesso della struttura
Parametri
facilityId `string` (obbligatorio)Endpoint
GET /api/ai/computer-vision/access-hours/:facilityId
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/ai/computer-vision/access-hours/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna o crea gli orari di accesso di una struttura
Parametri
facilityId `string` (obbligatorio) body `object` (obbligatorio) Oggetto JSON dei nuovi orari di accesso.Endpoint
POST /api/ai/computer-vision/access-hours/:facilityId
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/ai/computer-vision/access-hours/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elimina una zona di accesso della struttura
Parametri
facilityId `string` (obbligatorio) body `object` (obbligatorio) Oggetto JSON della nuova zona di accesso.Endpoint
DELETE /api/ai/computer-vision/access-zones/:facilityId
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/ai/computer-vision/access-zones/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce un elenco delle zone di accesso della struttura
Parametri
facilityId `string` (obbligatorio)Endpoint
GET /api/ai/computer-vision/access-zones/:facilityId
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/ai/computer-vision/access-zones/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna o crea una zona di accesso della struttura
Parametri
facilityId `string` (obbligatorio) body `object` (obbligatorio) Oggetto JSON della nuova zona di accesso.Endpoint
POST /api/ai/computer-vision/access-zones/:facilityId
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/ai/computer-vision/access-zones/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'unione di tutti gli ID dei moduli amministrativi di brand e strutture di un'organizzazione, sotto forma di oggetti modulo.
Parametri
organisationId `string` (obbligatorio) ID dell'organizzazioneEndpoint
GET /api/organisations/{organisationId}/admin-modules
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/organisations/{organisationId}/admin-modules \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'elenco di tutte le organizzazioni
Parametri
includeBrands `string` (facoltativo) Includi i brand associati all'organizzazione includeFacilities `string` (facoltativo) Includi le strutture associate all'organizzazione includeRegions `string` (facoltativo) Includi le regioni associate all'organizzazioneEndpoint
GET /api/organisations
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/organisations \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Un semplice strumento AI che analizza il contenuto di un ticket di assistenza e crea suggerimenti in base agli argomenti disponibili e agli argomenti di ricerca Algolia suggeriti...
Parametri
messageBody `string` (obbligatorio) Corpo del messaggio da inviare topicData `string` (obbligatorio) Oggetto o array JSON dei topicData restituiti da osTicket (sistema di ticket e assistenza) facilityId `string` (facoltativo) L'ID interno del club necessario per individuare l'indice Algolia corretto in cui cercare.Endpoint
PUT /api/ai/helpers/analyse-support-ticket
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/ai/helpers/analyse-support-ticket \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Una semplice API di generazione di immagini
Parametri
type `string` (obbligatorio) Tipo di immagine da generare name `string` (obbligatorio) Nome dell'immagine maxSize `string` (facoltativo) Dimensione massima facoltativa della risposta, ad es. 200KB, 1MB o un semplice numero di byte. L'immagine viene ridimensionata o compressa per rientrare nel limite.Endpoint
PUT /api/ai/images/:type/:name
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/ai/images/:type/:name \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Query LLM semplice
Endpoint leggero per query LLM semplici e senza stato. Usa un modello economico senza ragionamento (gpt-4o-mini) con limiti di token rigorosi. Nessuna cronologia della conversazione, nessuno strumento, nessuno streaming: solo un prompt in ingresso e testo in uscita.
Corpo della richiesta
Endpoint
POST /api/ai/llm/query
Richiesta di esempio
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 '{}'
Risposta
{}
Restituisce la configurazione di Algolia, inclusi nome dell'indice, ID app e chiave API.
Parametri
facilityId `string` (obbligatorio)Endpoint
GET /api/facilities/{facilityId}/algolia/config
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/algolia/config \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Inizializza l'indice Algolia dei materiali di marketing per la stampa
Parametri
organisationId `string` (obbligatorio)Endpoint
PUT /api/algolia/index
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/algolia/index \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Cerca materiali di marketing per la stampa
Corpo della richiesta
Endpoint
POST /algolia/search-marketing-print
Richiesta di esempio
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 '{}'
Risposta
{}
Cerca materiali di marketing per la stampa
Parametri
club `string` (facoltativo) ID del club searchTerms `string` (facoltativo) Termini di ricerca algoliaArgs `object` (facoltativo) Argomenti di ricerca Algolia aggiuntiviEndpoint
GET /algolia/search-marketing-print
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/algolia/search-marketing-print \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna in blocco gli oggetti di marketing per la stampa di un club specifico
Endpoint
POST /algolia/bulk-update-marketing-print
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/algolia/bulk-update-marketing-print \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Recupera da Algolia le risorse di marketing per la stampa.
Parametri
organisationId `string` (obbligatorio) search `string` (facoltativo) limit `string` (facoltativo) brand `string` (facoltativo) tag `string` (facoltativo)Endpoint
GET /api/algolia/marketing/assets
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/algolia/marketing/assets \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Inizializza l'indice Algolia dei materiali di marketing per la stampa con la configurazione della struttura.
Parametri
organisationId `string` (obbligatorio)Endpoint
POST /api/algolia/marketing/assets
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/algolia/marketing/assets \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Esegue una ricerca in un indice Algolia specificato in base a termini di ricerca, club e/o impostazioni locali. La ricerca può essere ulteriormente personalizzata con argomenti Algolia aggiuntivi.
Parametri
searchTerms `string` (obbligatorio) I termini da cercare nell'indice Algolia. club `string` (facoltativo) ID interno del club che effettua la richiesta. Se specificato, la ricerca viene filtrata in base alla regione associata al club. locale `string` (facoltativo) Le impostazioni locali da usare per determinare la regione se non viene specificato un club. Derivate da navigator.languages. algoliaArgs `string` (facoltativo) Argomenti aggiuntivi o personalizzati da passare alla richiesta di ricerca Algolia.Endpoint
POST /api/algolia/search-wiki
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/algolia/search-wiki \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca tutti gli annunci
Endpoint
GET /api/announcements/list
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/announcements/list \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Carica una risorsa in un BUCKET S3 PUBBLICO (tramite la Upload API), che poi elabora e ottimizza il file, genera le miniature e così via. *Nota: le risorse saranno disponibili pubblicamente*
Parametri
file `string` (facoltativo) Nome del file o della risorsa da caricare.Endpoint
POST /api/asset-upload
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/asset-upload \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce lo stato del caricamento in base all'UUID indicato del record di caricamento
Parametri
uuid `string` (obbligatorio) UUID del record di caricamentoEndpoint
GET /api/asset-upload/:uuid
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/asset-upload/:uuid \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Invia un comando al sistema Sonos del club
Parametri
body `object` (obbligatorio) Oggetto JSON del comando e dell'input da inviare a Sonos.Endpoint
PUT /api/audio-control/command/:club
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/audio-control/command/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Recupera la configurazione del front-end di Controllo audio
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere.Endpoint
GET /api/audio-control/config/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/audio-control/config/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Modifica la configurazione del front-end di Controllo audio
Parametri
body `object` (obbligatorio) Oggetto JSON del nuovo blocco di configurazione da aggiungere al sistema.Endpoint
PUT /api/audio-control/config/:club/:section
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/audio-control/config/:club/:section \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Recupera le impostazioni del brand per una regione specifica
Parametri
brandId `string` (facoltativo) L'ID del brand regionCode `string` (facoltativo) Il codice ISO della regione di cui recuperare le impostazioniEndpoint
GET /api/brands/{brandId}/regions/{regionCode}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId}/regions/{regionCode} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna più impostazioni del brand per una regione specifica
Parametri
brandId `string` (facoltativo) L'ID del brand da aggiornare regionCode `string` (facoltativo) Il codice ISO della regione di cui aggiornare le impostazioni acceptFreeTrialBookingsVisibility `string` (facoltativo) customTrackingCodeVisibility `string` (facoltativo) displayDataSources `string` (facoltativo) displayDefaultDataSource `string` (facoltativo) displayDefaultUI `string` (facoltativo) displayUIOptions `string` (facoltativo) defaultAboutBusiness `string` (facoltativo) defaultAboutBusinessFacebook `string` (facoltativo) facilityCoverImage `string` (facoltativo) digitalProfileSettingsVisibility `string` (facoltativo) facilityHoursVisibility `string` (facoltativo) facilityLocationVisibility `string` (facoltativo) facilityPaymentMethods `string` (facoltativo) facilityPrimaryLogo `string` (facoltativo) facilityStatusVisibility `string` (facoltativo) landingPagesVisibility `string` (facoltativo) lineChatIntegrationVisibility `string` (facoltativo) whatsAppIntegrationVisibility `string` (facoltativo) defaultWhatsAppMessage `string` (facoltativo) socialUrlsVisibility `string` (facoltativo) yextApiKey `string` (facoltativo) Chiave API usata dall'integrazione Yext per questa combinazione di brand e regione. Viene consultata solo quando `directorySyncMode` è `yext`. directorySyncMode `string` (facoltativo) Il backend di sincronizzazione da eseguire per le strutture di questa combinazione di brand e regione. Se manca, il valore predefinito è `yext`, per compatibilità con i brand precedenti all'introduzione di Directory Publishers. websiteUrl `string` (facoltativo) androidAppUrl `string` (facoltativo) iosAppUrl `string` (facoltativo) featuredMessageDescription `string` (facoltativo) yextCategoryIds `string` (facoltativo) Chiave di archiviazione legacy: si tratta in realtà di ID di categoria di Google Business Profile (ad es. gcid:gym). Il prefisso "yext" è precedente alla dismissione di Yext; viene mantenuto per compatibilità con le righe esistenti del database. customInputFields `string` (facoltativo) customInputFieldsToRemove `string` (facoltativo)Endpoint
PUT /api/brands/{brandId}/regions/{regionCode}
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/brands/{brandId}/regions/{regionCode} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Recupera le impostazioni del brand per una struttura specifica
Parametri
facilityId `string` (facoltativo) L'ID della struttura di cui recuperare le impostazioni del brandEndpoint
GET /api/facilities/{facilityId}/brand-settings
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/brand-settings \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea un nuovo brand
Parametri
name `string` (obbligatorio) Il nome del brand organisationId `string` (obbligatorio) L'ID dell'organizzazione a cui appartiene il brand redirectDashboard `string` (facoltativo) L'URL a cui reindirizzare dopo l'accesso al posto della dashboard predefinitaEndpoint
POST /api/brands
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/brands \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'elenco di tutti i brand
Endpoint
GET /api/brands
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/brands \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'oggetto brand
Parametri
brandId `string` (obbligatorio) L'ID del brand da recuperare includeOrganisation `boolean` (facoltativo) Indica se includere i dati dell'organizzazione nella rispostaEndpoint
GET /api/brands/{brandId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna un brand in base all'ID
Parametri
brandId `string` (facoltativo) L'ID del brand da aggiornare name `string` (obbligatorio) Il nome del brand brandOrganisationId `string` (facoltativo) L'ID dell'organizzazione a cui appartiene il brand redirectDashboard `string` (facoltativo) L'URL a cui reindirizzare dopo l'accesso al posto della dashboard predefinita yextApiKey `string` (facoltativo) La chiave API usata per accedere all'API di Yext per questo brand customMenuLayout `object` (facoltativo) Struttura del menu laterale per brand (sezioni / gruppi / voci con riferimenti a moduli di sistema o URL personalizzati). Può essere impostata solo da un amministratore dell'organizzazione di questo brand.Endpoint
PUT /api/brands/{brandId}
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/brands/{brandId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca le strutture di un brand
Restituisce un elenco sintetico delle strutture (ID, nome, codice ISO della regione) appartenenti al brand. Usato per popolare i selettori di destinazione delle strutture nella configurazione del brand.
Parametri
brandId `string` (obbligatorio) L'ID del brand di cui elencare le struttureEndpoint
GET /api/brands/{brandId}/facilities
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId}/facilities \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'elenco di tutti i brand associati all'organizzazione del club.
Endpoint
GET /api/clubs/{club}/brands
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/brands \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'elenco di tutti i tipi di calendario
Endpoint
GET /api/programs/calendars/calendar-types
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/programs/calendars/calendar-types \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce la risorsa KYC di un club.
Parametri
clubId `string` (obbligatorio) L'ID del club. key `string` (obbligatorio) La chiave della risorsa KYC.Endpoint
GET /api/clubs/{clubId}/kyc-assets/{key}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/kyc-assets/{key} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce le informazioni KYC del club.
Endpoint
GET /api/clubs/{clubId}/kyc
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/kyc \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna le informazioni KYC del club.
Parametri
clubId `string` (obbligatorio) L'ID del club da aggiornare. body `object` (obbligatorio)Endpoint
PUT /api/clubs/{clubId}/kyc
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubId}/kyc \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Carica una risorsa KYC per un club.
Parametri
clubId `string` (obbligatorio) L'ID del club. file `string` (obbligatorio) Il file da caricare.Endpoint
POST /api/clubs/{clubId}/kyc-assets
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubId}/kyc-assets \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce le impostazioni delle preferenze del club.
Endpoint
GET /api/club/preferences/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/club/preferences/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea o aggiorna la voce delle preferenze del club.
Corpo della richiesta
Endpoint
POST /api/club/preferences/:club
Richiesta di esempio
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 '{}'
Risposta
{}
Restituisce l'elenco dei membri con accordo.
Endpoint
GET /api/clubpass/user/email/exist/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubpass/user/email/exist/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'elenco dei membri con accordo.
Endpoint
GET /api/clubpass/user/phone/exist/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubpass/user/phone/exist/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce un elenco degli utenti che appartengono al club specificato
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedereEndpoint
GET /api/clubs/{club}/members
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/members \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Indica se il club è aperto nella data specificata.
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere. date `string` (obbligatorio) Data da verificare in formato unixEndpoint
GET /api/club-busy-hours/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/club-busy-hours/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce tutti i metadati del club mostrati sui siti web di Example Club.
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere.Endpoint
GET /api/clubs/clubpage/clubdata/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/clubpage/clubdata/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna i metadati di un club con i nuovi dati forniti dal front-end. I campi assenti dal corpo della richiesta vengono mantenuti (nessun SET, nessun REMOVE). I campi inviati come `null` o stringa vuota vengono cancellati. Passa `updateAll: false` per usare il percorso dedicato di unione parziale; in entrambi i casi, i chiamanti non devono mai inviare campi che non gestiscono.
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere. body `string` (obbligatorio) Oggetto JSON con i dati del club che vuoi aggiornare.Endpoint
POST /api/clubs/clubpage/updateclub/{club}
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/clubs/clubpage/updateclub/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
aggiungi un nuovo record di tracciamento personalizzato
Parametri
club `string` (obbligatorio) ID del club body `string` (obbligatorio) Array di elementi di tracciamento personalizzato.Endpoint
POST /api/clubs/{club}/customtracking
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{club}/customtracking \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce il tracciamento personalizzato di un club specifico
Endpoint
GET /api/clubs/customtracking/:clubID
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/customtracking/:clubID \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna le voci di tracciamento personalizzato
Parametri
club `string` (obbligatorio) ID del club body `string` (obbligatorio) Oggetto JSON con i dati del club che vuoi aggiornare.Endpoint
POST /api/clubs/{club}/customtracking/update
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{club}/customtracking/update \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'immagine predefinita della vetrina di un club.
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere.Endpoint
GET /api/clubs/{club}/default-shop-front
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/default-shop-front \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca le porte disponibili nella struttura
Parametri
body `object` (obbligatorio) Oggetto JSON con i dati del club che vuoi aggiornare.Endpoint
POST /api/clubs/integrations/doors/:facilityId
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/clubs/integrations/doors/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Sblocca una porta specifica della struttura
Parametri
body `object` (obbligatorio) Oggetto JSON con i dati del club che vuoi aggiornare.Endpoint
POST /api/clubs/integrations/doors/unlock
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/clubs/integrations/doors/unlock \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce tutte le integrazioni e i dettagli di configurazione del club specificato.
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere.Endpoint
GET /api/clubs/integrations/list/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/integrations/list/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna i metadati di un club con i nuovi dati forniti dal front-end.
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere. body `object` (obbligatorio) Oggetto JSON con i dati del club che vuoi aggiornare.Endpoint
POST /api/clubs/integrations/update/{club}
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/clubs/integrations/update/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce un valore booleano che indica se il club si trova in un paese europeo
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere. date `string` (obbligatorio) Data da verificare in formato unixEndpoint
GET /api/clubs/is-eu/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/is-eu/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce un elenco generale di tutti i club presenti nel nostro database.
Endpoint
GET /api/clubs/listclubs
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/listclubs \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Indica se il club è aperto nella data specificata.
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere. date `string` (obbligatorio) Data da verificare in formato unixEndpoint
GET /api/clubs/{club}/open-on/{date}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/open-on/{date} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottieni le recensioni del club da DynamoDB.
Parametri
club `string` (obbligatorio) ID del clubEndpoint
GET /api/clubs/{club}/reviews
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/reviews \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottieni le impostazioni delle recensioni del club da DynamoDB.
Parametri
facilityId `string` (obbligatorio) ID della strutturaEndpoint
GET /api/clubs/{club}/reviews-settings
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/reviews-settings \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna le impostazioni delle recensioni del club su DynamoDB.
Parametri
club `string` (obbligatorio) ID del clubEndpoint
PUT /api/clubs/{club}/reviews-settings
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews-settings \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Riattiva la pubblicazione automatica nelle impostazioni delle recensioni.
Parametri
club `string` (obbligatorio) ID del clubEndpoint
PUT /api/clubs/{club}/reviews/publish-recent-reviews
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/publish-recent-reviews \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Pubblica una recensione
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere. review `string` (obbligatorio) ID interno della recensione che vuoi pubblicare.Endpoint
PUT /api/clubs/{club}/reviews/{review}/publish
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/{review}/publish \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Riattiva la pubblicazione automatica nelle impostazioni delle recensioni.
Parametri
club `string` (obbligatorio) ID del clubEndpoint
PUT /api/clubs/{club}/reviews-settings/re-enable-auto-publish
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews-settings/re-enable-auto-publish \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Pubblica una risposta a una recensione tramite la piattaforma di origine (Google e così via).
Parametri
club `string` (obbligatorio) ID della struttura reviewId `string` (obbligatorio) ID della recensione PH (cercato nella tabella club-social-reviews) body `string` (obbligatorio)Endpoint
POST /api/clubs/{club}/reviews/{reviewId}/respond
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/{reviewId}/respond \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Annulla la pubblicazione di una recensione
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere. review `string` (obbligatorio) ID interno della recensione di cui vuoi annullare la pubblicazione.Endpoint
PUT /api/clubs/{club}/reviews/{review}/un-publish
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/{review}/un-publish \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce dal database PH un elenco dei proprietari che appartengono al club specificato
Parametri
clubID `string` (obbligatorio) ID interno del club a cui vuoi accedereEndpoint
GET /api/clubs/{clubID}/owners
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/owners \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce tutti i piani di iscrizione della struttura.
Parametri
facilityId `string` (obbligatorio) ID interno della strutturaEndpoint
GET /api/facilities/membership-plans/:facilityId
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/facilities/membership-plans/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna il record di un piano di iscrizione.
Parametri
facilityId `string` (obbligatorio) ID interno della struttura body `object` (obbligatorio) Oggetto JSON con i dati del piano di iscrizione che vuoi aggiornare.Endpoint
PUT /api/facilities/membership-plans/:facilityId
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/facilities/membership-plans/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Riattiva la pubblicazione automatica nelle impostazioni delle recensioni.
Parametri
club `string` (obbligatorio) ID del clubEndpoint
PUT /api/clubs/{club}/reviews/publish-recent-reviews
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/publish-recent-reviews \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Riattiva la pubblicazione automatica nelle impostazioni delle recensioni.
Parametri
club `string` (obbligatorio) ID del clubEndpoint
PUT /api/clubs/{club}/reviews-settings/re-enable-auto-publish
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews-settings/re-enable-auto-publish \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'elenco di tutte le valute disponibili
Endpoint
GET /api/currencies
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/currencies \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce la posizione geografica a partire dall'indirizzo IP.
Parametri
ip `string` (obbligatorio) Indirizzo IP da cercareEndpoint
GET /api/geo/ip-location/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/geo/ip-location/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce la posizione geografica dell'utente corrente in base al suo IP.
Endpoint
GET /api/geo/ip-current
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/geo/ip-current \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce solo l'indirizzo IP pubblico del client richiedente (nessuna geolocalizzazione, nessuna chiamata ad API di terze parti). Usato dall'applet degli Agenti AI per confrontare l'IP pubblico del browser con l'IP WAN segnalato da un dispositivo, per rilevare se si trovano sulla stessa rete.
Endpoint
GET /api/geo/client-ip
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/geo/client-ip \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Parser dei numeri di telefono.
Parametri
body `string` (obbligatorio) Oggetto JSON del numero che vuoi analizzare.Endpoint
POST /api/phone/parser
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/phone/parser \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce il dispositivo orologio principale
Parametri
club_id `string` (obbligatorio) ID interno del club a cui vuoi aggiungere il dispositivo.Endpoint
GET /api/clubs/{club_id}/smart-club/health-check/master-clock
Richiesta di esempio
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"
Risposta
{}
Restituisce il dispositivo Sonos principale
Parametri
club_id `string` (obbligatorio) ID interno del club a cui vuoi aggiungere il dispositivo.Endpoint
GET /api/clubs/{club_id}/smart-club/health-check/sonos-mqtt
Richiesta di esempio
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"
Risposta
{}
ottieni le notifiche di batteria scarica dei dispositivi Duress per un determinato club.
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere.Endpoint
GET /api/clubs/{club}/smart-club/health-check/low-battery-duress
Richiesta di esempio
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"
Risposta
{}
Restituisce i dati di analisi della rete
Parametri
club_id `string` (obbligatorio) ID interno del club a cui vuoi aggiungere il dispositivo.Endpoint
GET /api/clubs/{club_id}/smart-club/health-check/network-analysis
Richiesta di esempio
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"
Risposta
{}
invia le notifiche di batteria scarica dei dispositivi Duress per un determinato club.
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere.Endpoint
GET /api/clubs/{club}/smart-club/health-check/send-low-battery-duress-notifs
Richiesta di esempio
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"
Risposta
{}
Restituisce i dati dei test di velocità dei dispositivi per ogni tipo di dispositivo
Parametri
club_id `string` (obbligatorio) ID interno del club a cui vuoi aggiungere il dispositivo.Endpoint
GET /api/clubs/{club_id}/smart-club/health-check/speed-test
Richiesta di esempio
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"
Risposta
{}
Ottieni gli insights delle schede di una struttura. Per impostazione predefinita restituisce i totali giornalieri aggregati di tutti gli editori, oppure un singolo editore quando viene fornito `publisherId`.
Parametri
facilityId `string` (obbligatorio) publisherId `string` (facoltativo) startDate `string` (obbligatorio) endDate `string` (obbligatorio)Endpoint
GET /api/facilities/{facilityId}/directory-insights
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/directory-insights \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottieni gli insights aggregati delle schede di un brand su tutti gli editori.
Parametri
brandId `string` (obbligatorio) startDate `string` (obbligatorio) endDate `string` (obbligatorio)Endpoint
GET /api/brands/{brandId}/directory-insights
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId}/directory-insights \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Principali parole chiave di ricerca (con suddivisione tra brand e non brand) per una struttura, attualmente ricavate da Google Business Profile.
Parametri
facilityId `string` (obbligatorio) publisherId `string` (facoltativo) Il valore predefinito è "google": al momento è supportato solo Google. startDate `string` (obbligatorio) endDate `string` (obbligatorio) limit `string` (facoltativo)Endpoint
GET /api/facilities/{facilityId}/directory-search-keywords
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/directory-search-keywords \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Principali parole chiave di ricerca per un brand, aggregate su tutte le strutture.
Parametri
brandId `string` (obbligatorio) startDate `string` (obbligatorio) endDate `string` (obbligatorio) limit `string` (facoltativo)Endpoint
GET /api/brands/{brandId}/directory-search-keywords
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId}/directory-search-keywords \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca le domande e risposte di una struttura.
Parametri
facilityId `string` (obbligatorio)Endpoint
GET /api/facilities/{facilityId}/qna
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/qna \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Rispondi a una domanda.
Endpoint
POST /api/facilities/{facilityId}/qna/{questionId}/answer
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/facilities/{facilityId}/qna/{questionId}/answer \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elimina una risposta.
Endpoint
DELETE /api/facilities/{facilityId}/qna/{questionId}/answer/{answerId}
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/facilities/{facilityId}/qna/{questionId}/answer/{answerId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce gli editori abilitati per l'organizzazione della struttura, con il relativo stato di connessione.
Parametri
facilityId `string` (obbligatorio) organisationId `string` (obbligatorio)Endpoint
GET /api/facilities/{facilityId}/directory-publishers/resolved
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/directory-publishers/resolved \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottieni le Access Policies di una struttura
La configurazione di accesso esistente viene convertita automaticamente in policy applicate equivalenti alla prima lettura.
Parametri
facilityId `string` (obbligatorio)Endpoint
GET /api/door-access/policies/{facilityId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Sostituisci le Access Policies con controllo ottimistico della revisione
Parametri
facilityId `string` (obbligatorio)Corpo della richiesta
Endpoint
PUT /api/door-access/policies/{facilityId}
Richiesta di esempio
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 '{}'
Risposta
{}
Crea una Access Policy
Parametri
facilityId `string` (obbligatorio)Endpoint
POST /api/door-access/policies/{facilityId}
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna una Access Policy
Parametri
facilityId `string` (obbligatorio) policyId `string` (obbligatorio)Endpoint
PATCH /api/door-access/policies/{facilityId}/{policyId}
Richiesta di esempio
curl -X PATCH https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/{policyId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elimina una Access Policy
Parametri
facilityId `string` (obbligatorio) policyId `string` (obbligatorio) revision `integer` (obbligatorio)Endpoint
DELETE /api/door-access/policies/{facilityId}/{policyId}
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/{policyId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Duplica una Access Policy con un nuovo ID stabile
Parametri
facilityId `string` (obbligatorio) policyId `string` (obbligatorio)Endpoint
POST /api/door-access/policies/{facilityId}/{policyId}/duplicate
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/{policyId}/duplicate \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Conta gli utenti e le porte interessati da tutte le Access Policies
Parametri
facilityId `string` (obbligatorio)Endpoint
GET /api/door-access/policies/{facilityId}/impacts
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/impacts \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Conta gli utenti e le porte interessati da una Access Policy
Parametri
facilityId `string` (obbligatorio) policyId `string` (obbligatorio)Endpoint
GET /api/door-access/policies/{facilityId}/{policyId}/impact
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/{policyId}/impact \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca i controller delle porte di una struttura con le relative regole di Door & Gate Access effettive
Parametri
facilityId `string` (obbligatorio)Endpoint
GET /api/door-access/doors/{facilityId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Salva override per porta, icona e configurazione lato dispositivo
Unico punto di scrittura per tutto ciò che l'applet di amministrazione DGA modifica su una porta: - `accessRulesOverride` / `geofenceOverride`: passa `null` per cancellarli e tornare al valore predefinito della struttura. - `icon`: chiave stabile (vedi services/door-access/door-icons.js); i valori sconosciuti restituiscono 400. - `holdTimeSeconds` (1\u201330), `maintenanceMode` (`off` / `force-open` / `force-closed`), `doorLocation` (testo libero, \u226464 caratteri), `playNotificationSoundOnRelayToggle` (booleano), `autoUnlockSchedule` (griglia di finestre settimanali). Questi campi un tempo erano solo di Device Management, ma ora l'applet li scrive direttamente, così gli amministratori non devono lasciare il pannello della porta per le modifiche di configurazione quotidiane. Quando viene modificato uno qualsiasi dei campi lato dispositivo, la route invia anche le variabili d'ambiente Balena corrispondenti (`RELAY_NOTIFICATION_SOUND`, `DOOR_MAINTENANCE_MODE`, `DOOR_AUTO_UNLOCK_SCHEDULE`) e invia un comando MQTT `unlockUpdates`, così il dispositivo applica la nuova configurazione senza attendere il successivo aggiornamento delle variabili Balena. Best effort \u2014 la risposta è 200 anche se Balena è temporaneamente irraggiungibile.
Parametri
facilityId `string` (obbligatorio) doorId `string` (obbligatorio)Corpo della richiesta
Endpoint
PUT /api/door-access/doors/{facilityId}/{doorId}/override
Richiesta di esempio
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 '{}'
Risposta
{}
Verifica leggera dello stato Balena per l'avviso di ricaricamento nel pannello della porta
Il pannello dell'applet DGA lo recupera in modo differito quando un amministratore apre una porta, per mostrare il testo corretto "il salvataggio ricaricherà il controller": la variante predefinita "pochi secondi" o quella più marcata "diversi minuti" quando è in sospeso anche un aggiornamento della release. Restituisce uno snapshot piatto ricavato da `balena.models.device.get()`. In caso di errore restituisce `data: null` (invece di un 5xx), così un'interruzione di Balena peggiora solo il testo dell'avviso invece di impedire l'apertura del pannello.
Parametri
facilityId `string` (obbligatorio) doorId `string` (obbligatorio)Endpoint
GET /api/door-access/doors/{facilityId}/{doorId}/device-status
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId}/{doorId}/device-status \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Override amministrativo: sblocca una porta dall'applet
Attiva brevemente il relè usando l'attuale `holdTimeSeconds` della porta, scrivendo una riga di audit `admin-override` in ph-door-app-access-events, in modo che l'azione sia attribuibile nei Registri di accesso. Riesce sempre, anche con `maintenanceMode === 'force-closed'`: è la via d'uscita per gli amministratori. Restituisce 200 non appena viene inviata la pubblicazione MQTT; gli stati confermato / non riuscito / scaduto non vengono attesi qui (anche il flusso legacy /api/devices/door-controllers + /api/ics/devices/command è fire-and-forget).
Parametri
facilityId `string` (obbligatorio) doorId `string` (obbligatorio)Endpoint
POST /api/door-access/doors/{facilityId}/{doorId}/unlock
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId}/{doorId}/unlock \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Riproduci una sequenza di segnali acustici di localizzazione sul controller della porta
Pubblica un comando MQTT `beep` affinché il controller emetta tre segnali acustici di media durata (~500 ms ciascuno, ~350 ms di pausa, ~2 s in totale). Usato dagli amministratori per individuare fisicamente un controller di porta sul posto. Il pulsante legacy di Device Management usa una raffica di ~30 s di segnali brevi, ma il driver del cicalino del firmware emette in modo affidabile solo il primo, quindi l'applet invia invece una sequenza più breve e affidabile. Nessuna riga di audit \u2014 azione diagnostica senza effetti sul controllo degli accessi.
Parametri
facilityId `string` (obbligatorio) doorId `string` (obbligatorio)Endpoint
POST /api/door-access/doors/{facilityId}/{doorId}/identify
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId}/{doorId}/identify \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Riavvia da remoto un controller di porta
Pubblica lo stesso comando MQTT fire-and-forget `rebootDevice` che invia il pulsante legacy "Remotely Reboot Device" di Device Management, ma protetto dal modulo `door-gate-access`, così gli amministratori DGA possono riavviare un controller dalla sezione Avanzate del pannello della porta senza una concessione `device-management` separata. Restituisce 200 non appena la pubblicazione viene inviata; il dispositivo va offline per tutta la durata del riavvio.
Parametri
facilityId `string` (obbligatorio) doorId `string` (obbligatorio)Endpoint
POST /api/door-access/doors/{facilityId}/{doorId}/reboot
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId}/{doorId}/reboot \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca le righe User Access di una struttura
Restituisce tutte le righe user-access non eliminate della struttura. Supporta filtri lato client (source, search, accessEnabled, hasGrants). Il calcolo lato server `hideExcluded` della Fase 4 verrà aggiunto quando sarà disponibile il valutatore delle concessioni ibride; per ora il parametro è accettato ma restituisce l'insieme completo.
Parametri
facilityId `string` (obbligatorio) search `string` (facoltativo) source `string` (facoltativo) accessEnabled `string` (facoltativo) hasGrants `string` (facoltativo) hideExcluded `boolean` (facoltativo) Se true, gli utenti sincronizzati (source != manual) che non potrebbero passare da nessuna porta in nessun momento in questa struttura vengono nascosti. La risposta include un oggetto `hidden: { count, sample }`.Endpoint
GET /api/door-access/users/{facilityId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/door-access/users/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea manualmente una riga User Access in una struttura
Crea una nuova riga con `source: 'manual'`. Restituisce 409 con `existingUserId` se il telefono o l'email forniti corrispondono già a una riga in questa struttura.
Parametri
facilityId `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/door-access/users/{facilityId}
Richiesta di esempio
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 '{}'
Ottieni una singola riga User Access
Parametri
facilityId `string` (obbligatorio) userId `string` (obbligatorio)Endpoint
GET /api/door-access/users/{facilityId}/{userId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiornamento parziale di una riga User Access
Modifica qualsiasi sottoinsieme dei campi di identità / autorizzazione. Passa `null` per cancellare un campo facoltativo. Restituisce 409 se il nuovo telefono o la nuova email coincidono con un'altra riga nella stessa struttura. `appMessage` accetta la stessa struttura del messaggio a livello di struttura su PUT /api/door-access/rules/{facilityId}: testo, gravità, link facoltativo, pianificazione facoltativa di inizio/fine. L'app mobile mostra questo messaggio nella dashboard solo all'utente destinatario.
Parametri
facilityId `string` (obbligatorio) userId `string` (obbligatorio)Corpo della richiesta
Endpoint
PATCH /api/door-access/users/{facilityId}/{userId}
Richiesta di esempio
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 '{}'
Risposta
{}
Eliminazione reversibile di una riga User Access
Contrassegna la riga con `deleted: true` e disattiva l'accesso. Il collegamento del registro di controllo allo userId viene mantenuto; gli amministratori possono riattivarla manualmente.
Parametri
facilityId `string` (obbligatorio) userId `string` (obbligatorio)Endpoint
DELETE /api/door-access/users/{facilityId}/{userId}
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Attribuzione dell'accesso per porta di un utente
Per ogni porta restituisce l'autorizzazione deterministica corrente (`allowedNow`, `allowedVia`, `deniedReason`) e i percorsi configurati per Access Policies, concessioni permanenti, pianificazioni delle policy, concessioni di finestre temporali amministrative e finestre aggiornate delle origini partner mappate. Restituisce anche la disponibilità attiva/successiva e l'aggiornamento delle origini. Il blockAllAccess della porta e la manutenzione vengono valutati prima di tutti i percorsi di autorizzazione.
Parametri
facilityId `string` (obbligatorio) userId `string` (obbligatorio)Endpoint
GET /api/door-access/users/{facilityId}/{userId}/effective-access
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/effective-access \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea in blocco righe User Access da un'importazione CSV
Crea più righe `source: 'manual'` in un'unica richiesta, riutilizzando la stessa convalida, normalizzazione di telefono/email, verifica dei conflitti per struttura, messaggistica automatica e logica di invito (facoltativa) della singola creazione. Le righe vengono elaborate in ordine, quindi una riga successiva che coincide con una creata in precedenza viene segnalata come duplicato. Le concessioni vengono fornite come ID di porte/gruppi già risolti (il client risolve i nomi in ID). Le concessioni di finestre temporali vengono intenzionalmente rifiutate in blocco e devono essere aggiunte tramite l'endpoint di sostituzione per utente dopo l'importazione. Non genera mai eccezioni per riga; l'esito di ogni riga viene segnalato singolarmente.
Parametri
facilityId `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/door-access/users/{facilityId}/bulk
Richiesta di esempio
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 '{}'
Risposta
{}
Sostituisci le concessioni aggiuntive di Access Time Window di una riga User Access
Sostituisce solo `timeWindowGrants`; le `grants` permanenti e le `sourceTimeWindows` delle integrazioni restano invariate. Ogni elemento richiede un ambito (`facilityWide`, `doors` o `groups`) e una `window` assoluta o settimanale. L'invio di un array vuoto cancella esplicitamente tutte le finestre amministrative.
Parametri
facilityId `string` (obbligatorio) userId `string` (obbligatorio)Corpo della richiesta
Endpoint
PUT /api/door-access/users/{facilityId}/{userId}/time-window-grants
Richiesta di esempio
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 '{}'
Risposta
{}
Blocca una riga User Access rispetto agli aggiornamenti di sincronizzazione dall'origine
Imposta `decoupledFromSource: true`, cancella tutte le `sourceTimeWindows` gestite dalle integrazioni e fa sì che la sincronizzazione (cron + stream) registri e salti questa riga finché un amministratore non cancella il flag tramite /recouple.
Parametri
facilityId `string` (obbligatorio) userId `string` (obbligatorio)Endpoint
POST /api/door-access/users/{facilityId}/{userId}/decouple
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/decouple \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ricollega una riga User Access agli aggiornamenti di sincronizzazione dall'origine
Parametri
facilityId `string` (obbligatorio) userId `string` (obbligatorio)Endpoint
POST /api/door-access/users/{facilityId}/{userId}/recouple
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/recouple \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Revoca tutti i token di aggiornamento dell'app Door & Gate Access di un utente
Revoca in base al telefono/email salvati dell'utente (la tabella dei token di aggiornamento ha come chiave `sha256(plaintext)`; i GSI byMobilePhone / byEmail ci consentono di eliminare a ventaglio partendo da un singolo utente). Anche altri utenti che condividono lo stesso telefono/email in un'altra struttura verrebbero disconnessi.
Parametri
facilityId `string` (obbligatorio) userId `string` (obbligatorio)Endpoint
POST /api/door-access/users/{facilityId}/{userId}/logout
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/logout \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Invia (di nuovo) a un utente l'email di invito all'app Door & Gate Access
Forza l'invio dell'email di invito al download dell'app all'indirizzo email salvato dell'utente (solo email; nessun SMS). Ignora i controlli di idoneità e di invio già effettuato usati dal percorso di sincronizzazione automatica: si tratta di un'azione amministrativa esplicita. Restituisce 400 se l'utente non ha un'email registrata.
Parametri
facilityId `string` (obbligatorio) userId `string` (obbligatorio)Endpoint
POST /api/door-access/users/{facilityId}/{userId}/resend-invite
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/resend-invite \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Anteprima dei destinatari di un invio in blocco di inviti all'app
Calcola l'insieme degli utenti che riceverebbero un'email di invito all'app. L'insieme di base comprende tutti gli utenti non eliminati con un'email che non hanno mai usato l'app (`appLastSeenAt` vuoto). Per impostazione predefinita l'insieme è ristretto agli utenti che hanno attualmente accesso (corrispondenza di regola o concessione) e non sono mai stati invitati; `includeAlreadyInvited` e `includeNoAccess` lo ampliano. Non viene inviata alcuna email: restituisce i conteggi, un piccolo campione e gli userId candidati per l'endpoint di esecuzione.
Parametri
facilityId `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/door-access/users/{facilityId}/bulk-invite/preview
Richiesta di esempio
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 '{}'
Risposta
{}
Invia le email di invito all'app a un gruppo di utenti
Invia l'email di invito al download dell'app a ciascuno degli userId forniti (massimo 50 per richiesta; il client suddivide in lotti l'elenco completo dei candidati ricavato dall'anteprima). Ogni utente viene riconvalidato al momento dell'invio: le righe che non esistono più, non hanno un'email o hanno usato l'app dopo l'anteprima vengono saltate, mai segnate come non riuscite. Gli esiti per utente vengono segnalati singolarmente, così il client può riepilogare inviati / non riusciti / saltati.
Parametri
facilityId `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/door-access/users/{facilityId}/bulk-invite
Richiesta di esempio
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 '{}'
Risposta
{}
Elenca i gruppi di porte di una struttura
Parametri
facilityId `string` (obbligatorio)Endpoint
GET /api/door-access/door-groups/{facilityId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/door-access/door-groups/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea un gruppo di porte
Parametri
facilityId `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/door-access/door-groups/{facilityId}
Richiesta di esempio
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 '{}'
Ottieni un singolo gruppo di porte
Parametri
facilityId `string` (obbligatorio) groupId `string` (obbligatorio)Endpoint
GET /api/door-access/door-groups/{facilityId}/{groupId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/door-access/door-groups/{facilityId}/{groupId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna un gruppo di porte
Parametri
facilityId `string` (obbligatorio) groupId `string` (obbligatorio)Corpo della richiesta
Endpoint
PATCH /api/door-access/door-groups/{facilityId}/{groupId}
Richiesta di esempio
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 '{}'
Risposta
{}
Eliminazione reversibile di un gruppo di porte
Parametri
facilityId `string` (obbligatorio) groupId `string` (obbligatorio)Endpoint
DELETE /api/door-access/door-groups/{facilityId}/{groupId}
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/door-access/door-groups/{facilityId}/{groupId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca le integrazioni con i partner configurate in una struttura
Restituisce le integrazioni con i partner della struttura (id, nome, logo, abilitazione) unendo ph-facility-partner-config con il catalogo ph-partners. Con ambito door-gate-access (così gli amministratori senza accesso alle integrazioni esterne possono comunque visualizzare i badge dei partner e l'elenco di sincronizzazione per partner).
Parametri
facilityId `string` (obbligatorio)Endpoint
GET /api/door-access/partners/{facilityId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/door-access/partners/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Leggi la configurazione di sincronizzazione User Access di una struttura
Parametri
facilityId `string` (obbligatorio)Endpoint
GET /api/door-access/sync-config/{facilityId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/door-access/sync-config/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna la configurazione di sincronizzazione User Access di una struttura
Sono accettati solo i campi controllati dagli amministratori (`enabled`, `requireIdentifier` e la mappa `partners` dei partner); `lastRunAt` e `lastRunCounts` vengono scritti dal motore di sincronizzazione stesso. `partner.partners` è una mappa di abilitazione per partner con chiave partnerId (opt-out): quando l'interruttore principale `partner.enabled` è attivo, un partner si sincronizza a meno che non abbia qui una voce esplicita `{ enabled: false }`.
Parametri
facilityId `string` (obbligatorio)Corpo della richiesta
Endpoint
PUT /api/door-access/sync-config/{facilityId}
Richiesta di esempio
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 '{}'
Risposta
{}
Leggi la configurazione della messaggistica automatica per utente di una struttura
Parametri
facilityId `string` (obbligatorio)Endpoint
GET /api/door-access/auto-messages/{facilityId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/door-access/auto-messages/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna la configurazione della messaggistica automatica per utente di una struttura
Salva le regole, poi rivaluta immediatamente ogni riga User Access della struttura, così gli utenti esistenti ricevono o perdono subito il proprio messaggio automatico. I messaggi manuali e le righe scollegate restano invariati.
Parametri
facilityId `string` (obbligatorio)Corpo della richiesta
Endpoint
PUT /api/door-access/auto-messages/{facilityId}
Richiesta di esempio
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 '{}'
Risposta
{}
Stato della rivalutazione in background dei messaggi automatici
Parametri
facilityId `string` (obbligatorio)Endpoint
GET /api/door-access/auto-messages/{facilityId}/sweep-status
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/door-access/auto-messages/{facilityId}/sweep-status \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Esegui su richiesta una sincronizzazione User Access per una struttura
Esamina in modo sincrono ogni origine abilitata (partner / cctv) della struttura e allinea le righe ph-door-access-users tramite la cascata di deduplicazione. Restituisce i conteggi per origine. Le origini disattivate compaiono come `skippedSyncDisabled: 1` invece di essere assenti, così l'interfaccia può mostrare entrambe le righe in modo coerente.
Parametri
facilityId `string` (obbligatorio)Endpoint
POST /api/door-access/sync/{facilityId}/run
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/door-access/sync/{facilityId}/run \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Anteprima di prova di un'eliminazione in blocco degli utenti sincronizzati dai partner
Restituisce il conteggio + un campione delle righe user-access che verrebbero eliminate in modo reversibile, più un confirmToken che deve essere rimandato all'endpoint di esecuzione. Nessun dato viene modificato. I registri di accesso non vengono mai toccati.
Parametri
facilityId `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/door-access/sync/{facilityId}/bulk-delete/preview
Richiesta di esempio
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 '{}'
Risposta
{}
Esegui un'eliminazione in blocco degli utenti sincronizzati dai partner (eliminazione reversibile)
Elimina in modo reversibile ogni riga user-access sincronizzata dai partner nell'ambito. Richiede il confirmToken restituito dall'anteprima; se l'insieme attuale è cambiato dall'anteprima, il token non corrisponde e la richiesta viene rifiutata (409), così l'amministratore la riesamina. I registri di accesso vengono conservati.
Parametri
facilityId `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/door-access/sync/{facilityId}/bulk-delete
Richiesta di esempio
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 '{}'
Risposta
{}
Attività recente di sincronizzazione User Access (registro per la risoluzione dei problemi)
Restituisce gli esiti di sincronizzazione più recenti di una struttura (creato / saltato / disattivato) con il motivo, così gli amministratori possono capire perché un membro è stato o non è stato sincronizzato. Dal più recente.
Parametri
facilityId `string` (obbligatorio) limit `integer` (facoltativo)Endpoint
GET /api/door-access/sync/{facilityId}/log
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/door-access/sync/{facilityId}/log \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca gli eventi Door & Gate Access di una struttura
Restituisce gli eventi di sblocco da app mobile, da override amministrativo e dalla Partner API esterna in un unico flusso in ordine cronologico inverso.
Parametri
facilityId `string` (obbligatorio) from `integer` (facoltativo) to `integer` (facoltativo) limit `integer` (facoltativo)Endpoint
GET /api/door-access/events/{facilityId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/door-access/events/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Simula una valutazione del geofence per il segnaposto della modalità di test amministrativa
Corpo della richiesta
Endpoint
POST /api/door-access/geofence/test
Richiesta di esempio
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 '{}'
Risposta
{}
Ottieni lo stato di onboarding / attivazione di una struttura
Alimenta la pagina iniziale "Get Started" dell'applet e il banner di avanzamento della configurazione. Restituisce i conteggi in tempo reale di porte e utenti, i due passaggi principali derivati (esiste un utente, esiste una porta), i flag facoltativi "reviewed" salvati e se la struttura è attivata (entrambi i passaggi principali completati). La prima volta che una struttura viene attivata, viene registrato il timestamp activatedAt.
Parametri
facilityId `string` (obbligatorio)Endpoint
GET /api/door-access/onboarding/{facilityId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/door-access/onboarding/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna i flag di onboarding facoltativi "reviewed" di una struttura
Salva i flag facoltativi dell'elenco di controllo della configurazione che un amministratore spunta (regole di accesso, impostazioni di sincronizzazione, geofencing). I passaggi principali e l'attivazione sono ricavati in tempo reale dai conteggi dei dati e non possono essere impostati qui. Restituisce lo stato di onboarding completo aggiornato.
Parametri
facilityId `string` (obbligatorio)Corpo della richiesta
Endpoint
PUT /api/door-access/onboarding/{facilityId}
Richiesta di esempio
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 '{}'
Risposta
{}
Restituisce una risposta JSON con i dati di analisi della struttura.
Parametri
clubId `string` (facoltativo) L'ID della struttura di cui recuperare i dati di analisi. fromDate `string` (facoltativo) La data di inizio dei dati di analisi da recuperare. toDate `string` (facoltativo) La data di fine dei dati di analisi da recuperare.Endpoint
GET /clubs/{clubId}/lead-events
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/lead-events \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce una risposta JSON con i dati di analisi della struttura.
Parametri
clubId `string` (facoltativo) L'ID della struttura di cui recuperare i dati di analisi. fromDate `string` (facoltativo) La data di inizio dei dati di analisi da recuperare. toDate `string` (facoltativo) La data di fine dei dati di analisi da recuperare.Endpoint
GET /clubs/{clubId}/analytics/page-views
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/page-views \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce una risposta JSON con i dati di analisi della struttura.
Parametri
clubId `string` (facoltativo) L'ID della struttura di cui recuperare i dati di analisi. fromDate `string` (facoltativo) La data di inizio dei dati di analisi da recuperare. toDate `string` (facoltativo) La data di fine dei dati di analisi da recuperare.Endpoint
GET /clubs/{clubId}/analytics/referrers
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/referrers \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce una risposta JSON con i dati di analisi della struttura.
Parametri
clubId `string` (facoltativo) L'ID della struttura di cui recuperare i dati di analisi. fromDate `string` (facoltativo) La data di inizio dei dati di analisi da recuperare. toDate `string` (facoltativo) La data di fine dei dati di analisi da recuperare.Endpoint
GET /clubs/{clubId}/analytics/socials
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/socials \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce una risposta JSON con i dati di analisi della struttura.
Parametri
clubId `string` (facoltativo) L'ID della struttura di cui recuperare i dati di analisi. fromDate `string` (facoltativo) La data di inizio dei dati di analisi da recuperare. toDate `string` (facoltativo) La data di fine dei dati di analisi da recuperare.Endpoint
GET /clubs/{clubId}/analytics/top-cities
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/top-cities \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce una risposta JSON con i dati di analisi della struttura.
Parametri
clubId `string` (facoltativo) L'ID della struttura di cui recuperare i dati di analisi. fromDate `string` (facoltativo) La data di inizio dei dati di analisi da recuperare. toDate `string` (facoltativo) La data di fine dei dati di analisi da recuperare.Endpoint
GET /clubs/{clubId}/analytics/total-page-views
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/total-page-views \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce una risposta JSON con i dati di analisi della struttura.
Parametri
clubId `string` (facoltativo) L'ID della struttura di cui recuperare i dati di analisi. fromDate `string` (facoltativo) La data di inizio dei dati di analisi da recuperare. toDate `string` (facoltativo) La data di fine dei dati di analisi da recuperare.Endpoint
GET /clubs/{clubId}/analytics/traffic
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/traffic \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Genera un JWT (JSON Web Token) front-end temporaneo per i grafici incorporabili di Google Analytics nella pagina front-end 'analytics'.
Endpoint
GET /api/ga/onetimetoken
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/ga/onetimetoken \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce i widget del pannello di controllo da 'The Training Camp' se la struttura ha membri attivi.
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere.Endpoint
GET /api/reporting/apps/widgets/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/reporting/apps/widgets/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce tutte le festività della struttura non ancora verificate.
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere.Endpoint
GET /api/reporting/club/{club}/unreviewed-holidays
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/reporting/club/{club}/unreviewed-holidays \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Imposta come verificate tutte le festività della struttura non ancora verificate.
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere.Endpoint
PUT /api/reporting/club/{club}/review-holidays
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/reporting/club/{club}/review-holidays \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce il report KPI in formato CSV, suddiviso mese per mese negli ultimi 12 mesi. *NOTA* Crea un unico report per TUTTE le strutture del sistema: non eseguirlo più volte in parallelo, altrimenti sovraccaricherai GymMaster!
Parametri
months `string` (facoltativo) Numero di mesi (dalla data corrente) da recuperare (predefinito 12)Endpoint
GET /api/reporting/gymmaster/all-clubs-kpi-report
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/reporting/gymmaster/all-clubs-kpi-report \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce i grafici dei ricavi dell'MMS per una determinata struttura.
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere. range `string` (facoltativo) Intervallo in giorni (a ritroso dalla data corrente) da recuperareEndpoint
GET /api/reporting/gymmaster/revenuegraph/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/reporting/gymmaster/revenuegraph/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce i dati/le analisi MMS (Member Management System) del pannello di controllo per una determinata struttura. I dati includono le statistiche di GymMaster/Perfect Gym e altre metriche interne raccolte dal nostro sistema.
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere. range `string` (facoltativo) Intervallo in giorni (a ritroso dalla data corrente) da recuperareEndpoint
GET /api/reporting/gymmaster/widgets/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/reporting/gymmaster/widgets/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce i dati del widget Myzone del pannello di controllo per una determinata struttura.
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere.Endpoint
GET /api/reporting/myzone/widgets/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/reporting/myzone/widgets/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce un oggetto con i servizi considerati offline da uno o più dei nostri endpoint di pagina di stato/monitoraggio, configurati tramite lo strumento interno 'Uptime Kuma'.
Endpoint
GET /api/reporting/statuspage/events
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/reporting/statuspage/events \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce le prenotazioni di allenamenti in programma nei prossimi 7 giorni.
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere.Endpoint
GET /api/reporting/clubs/{club}/workout-bookings
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/reporting/clubs/{club}/workout-bookings \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'elenco delle festività storiche di una struttura.
Parametri
clubId `string` (facoltativo) ID del club fromDate `string` (facoltativo) Timestamp Unix della data di inizio dell'intervallo di festività da restituire. toDate `string` (facoltativo) Timestamp Unix della data di fine dell'intervallo di festività da restituire.Endpoint
GET /api/clubs/{clubId}/historical-holidays
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/historical-holidays \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce le automazioni dei dispositivi associate alla struttura.
Parametri
club `string` (obbligatorio) ID interno del club di cui vuoi elencare i dispositivi.Endpoint
GET /api/ics/automations/list/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/ics/automations/list/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna la configurazione di un display/dispositivo esistente.
Parametri
club `string` (obbligatorio) ID interno della struttura in cui vuoi aggiornare il dispositivo. body `string` (obbligatorio) Oggetto JSON dei parametri di aggiornamento.Endpoint
POST /api/ics/automations/update/{club}
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/ics/automations/update/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiunge/associa un dispositivo schermo fisico o un computer alla tua struttura.
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi aggiungere il dispositivo. body `string` (obbligatorio) Oggetto JSON del nuovo schermo da associare.Endpoint
POST /api/ics/devices/add/{club}
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/ics/devices/add/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Indica al dispositivo di connettersi a un nuovo SSID in base ai parametri.
Parametri
club `string` (obbligatorio) ID interno della struttura in cui vuoi aggiornare il dispositivo. body `string` (obbligatorio) Oggetto JSON dei parametri di aggiornamento.Endpoint
POST /api/ics/devices/changewifi/{club}
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/ics/devices/changewifi/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna la configurazione di un display/dispositivo esistente.
Parametri
club `string` (obbligatorio) ID interno della struttura in cui vuoi aggiornare il dispositivo. body `string` (obbligatorio) Oggetto JSON dei parametri di aggiornamento.Endpoint
POST /api/ics/devices/command/{club}
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/ics/devices/command/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Carica un URL/una pagina web sullo schermo di un dispositivo specifico.
Parametri
club `string` (obbligatorio) ID interno della struttura in cui vuoi aggiornare il dispositivo. body `string` (obbligatorio) Oggetto JSON dei parametri di aggiornamento.Endpoint
POST /api/ics/devices/loadurl/{club}
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/ics/devices/loadurl/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna la configurazione di un display/dispositivo esistente.
Parametri
club `string` (obbligatorio) ID interno della struttura in cui vuoi aggiornare il dispositivo. body `string` (obbligatorio) Oggetto JSON dei parametri di aggiornamento.Endpoint
PUT /api/ics/devices/update/{club}
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/ics/devices/update/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Rinomina un display/dispositivo. Solo registrazione: a differenza dell'endpoint di aggiornamento, non invia nulla al dispositivo, quindi è disponibile anche per gli schermi che eseguono una build software a fine vita.
Parametri
club `string` (obbligatorio) ID interno della struttura a cui appartiene il dispositivo. body `string` (obbligatorio) Oggetto JSON con i parametri di ridenominazione.Endpoint
PUT /api/ics/devices/rename/{club}
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/ics/devices/rename/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottiene i widget e i link ai contenuti multimediali offline di una struttura, in base alla data fornita.
Parametri
club `string` (obbligatorio) ID interno della struttura di cui vuoi modificare il templated content. date `string` (obbligatorio) Data per cui restituire gli URL dei widget: usa il formato `YYYY-MM-DD`.Endpoint
GET /api/ics/external-resources/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/ics/external-resources/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottiene i widget e i link ai contenuti multimediali offline di una struttura, in base alla data fornita.
Parametri
club `string` (obbligatorio) ID interno della struttura di cui vuoi modificare il templated content.Endpoint
GET /api/ics/list-scheduled-workouts/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/ics/list-scheduled-workouts/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Modifica il templated content di una determinata struttura.
Parametri
club `string` (obbligatorio) ID interno della struttura di cui vuoi modificare il templated content. body `string` (obbligatorio) Oggetto JSON del nuovo templated content da applicare.Endpoint
POST /api/ics/loadprogram/{club}
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/ics/loadprogram/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Recupera la configurazione del templated content di un display/dispositivo esistente.
Parametri
club `string` (obbligatorio) ID interno della struttura di cui vuoi recuperare i dati del templated content.Endpoint
GET /api/ics/programs/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/ics/programs/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna la configurazione del templated content di un display/dispositivo esistente.
Parametri
club `string` (obbligatorio) ID interno della struttura in cui vuoi aggiornare il dispositivo. body `string` (obbligatorio) Oggetto JSON dei parametri di aggiornamento.Endpoint
PUT /api/ics/programs/{club}
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/ics/programs/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Recupera le opzioni di configurazione del templated content.
Endpoint
GET /api/ics/programs/options/{facilityID}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/ics/programs/options/{facilityID} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Chat con contesto RAG: non ha accesso agli strumenti, solo a un semplice strumento di richiesta|risposta API che consente di recuperare direttamente le conoscenze dalla knowledge base.
Parametri
organisationId `string` (facoltativo) L'ID dell'organizzazione (rilevato automaticamente se non fornito)Corpo della richiesta
Endpoint
POST /api/llm/chat
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/llm/chat \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Risposta
{}
Elimina gli embedding degli articoli dal vector store e aggiorna lo stato di tracciamento degli embedding
Corpo della richiesta
Endpoint
DELETE /api/llm/delete-article
Richiesta di esempio
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 '{}'
Risposta
{}
Elenca i record del tracker degli embedding per organizzazione e stato
Parametri
organisationId `string` (facoltativo) ID dell'organizzazione (risolto automaticamente se omesso) status `string` (obbligatorio) Stato da filtrare (deve essere uno tra in_queue, done, anomaly, fail, deleted) Limit `string` (facoltativo) Numero massimo di elementi per pagina LastEvaluatedKey `string` (facoltativo) JSON del LastEvaluatedKey di DynamoDB per la paginazioneEndpoint
GET /api/llm/embedding-track/by-org-and-status
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/llm/embedding-track/by-org-and-status \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca i record del tracker degli embedding per organizzazione (con filtro facoltativo per tipo di risorsa)
Parametri
organisationId `string` (facoltativo) ID dell'organizzazione (risolto automaticamente se omesso) resourceType `string` (facoltativo) Tipo di risorsa facoltativo (ad es. "article"). Se fornito, filtra i record in cui resourceTypeId inizia con "{type}#". Limit `string` (facoltativo) Numero massimo di elementi per pagina LastEvaluatedKey `string` (facoltativo) JSON del LastEvaluatedKey di DynamoDB per la paginazioneEndpoint
GET /api/llm/embedding-track/by-org
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/llm/embedding-track/by-org \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Inizializza la raccolta del database vettoriale dell'organizzazione
Parametri
organisationId `string` (facoltativo) L'ID dell'organizzazione (rilevato automaticamente se non fornito)Endpoint
POST /api/llm/init-org
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/llm/init-org \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ricerca semantica nella knowledge base
Parametri
organisationId `string` (facoltativo) L'ID dell'organizzazione (rilevato automaticamente se non fornito)Corpo della richiesta
Endpoint
POST /api/llm/semantic-search
Richiesta di esempio
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 '{}'
Risposta
{}
Avvia l'elaborazione in streaming degli articoli in coda per l'embedding, con aggiornamenti di avanzamento in tempo reale
Parametri
organisationId `string` (facoltativo) L'ID dell'organizzazione (rilevato automaticamente se non fornito)Endpoint
POST /api/llm/start-embedding-stream
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/llm/start-embedding-stream \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Inserisce o aggiorna gli embedding degli articoli nel database vettoriale
Gestisce l'embedding degli articoli in base allo stato corrente: - Se l'articolo non è pubblicato OPPURE è privato: elimina gli embedding - Se l'articolo è pubblicato E pubblico: ricrea gli embedding con il contenuto completo Richiede sempre il corpo completo dell'articolo.
Parametri
organisationId `string` (facoltativo) L'ID dell'organizzazione (rilevato automaticamente se non fornito)Corpo della richiesta
Endpoint
POST /api/llm/upsert-embeddings
Richiesta di esempio
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 '{}'
Risposta
{}
Endpoint di test per eliminare in blocco gli embedding degli articoli per organizzazione e stato facoltativo
Parametri
organisationId `string` (facoltativo) ID dell'organizzazione (risolto automaticamente dal contesto utente se omesso) status `string` (facoltativo) Stato da filtrare (facoltativo: se omesso, elimina TUTTI gli articoli dell'organizzazione indipendentemente dallo stato) hardDelete `string` (facoltativo) Indica se eliminare definitivamente i record di tracciamento degli embedding (true) o eliminarli in modo reversibile aggiornandone lo stato (false)Endpoint
DELETE /api/llm/test/batch-delete-by-status
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/llm/test/batch-delete-by-status \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Trasforma e suddivide il testo in blocchi con statistiche dettagliate
Endpoint di test che trasforma il testo e lo suddivide in blocchi, quindi fornisce statistiche dettagliate sulla distribuzione dei blocchi, inclusi conteggi di caratteri, percentuali e metriche di qualità, per aiutare a valutare l'efficacia della suddivisione.
Corpo della richiesta
Endpoint
POST /api/llm/test/transform-chunk
Richiesta di esempio
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 '{}'
Risposta
{}
Ottieni il numero totale di vettori nell'indice vettoriale dell'organizzazione
Endpoint di test per contare tutti i vettori nell'indice vettoriale dell'organizzazione dell'utente corrente
Parametri
organisationId `string` (facoltativo) L'ID dell'organizzazione (rilevato automaticamente se non fornito)Endpoint
GET /api/llm/test/vector-count
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/llm/test/vector-count \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elimina dall'indice vettoriale tutti i vettori di uno specifico articleId
Endpoint di test per eliminare dall'indice vettoriale dell'organizzazione dell'utente corrente tutti i vettori associati a uno specifico articleId.
Parametri
organisationId `string` (facoltativo) L'ID dell'organizzazione (rilevato automaticamente se non fornito) articleId `string` (obbligatorio) L'articleId di cui eliminare i vettori dryRun `string` (facoltativo) Se true, mostra solo cosa verrebbe eliminato senza eliminarlo effettivamenteEndpoint
DELETE /api/llm/test/vector-delete-article
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/llm/test/vector-delete-article \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Testa il Vector SDK elencando tutti gli indici
Endpoint di test per verificare la connettività del Vector SDK ed elencare tutti gli indici nel bucket vettoriale
Endpoint
GET /api/llm/test/vector-indices
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/llm/test/vector-indices \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Inizializza l'indice vettoriale di un'organizzazione
Crea il bucket vettoriale e l'indice per l'organizzazione dell'utente corrente
Parametri
organisationId `string` (facoltativo) L'ID dell'organizzazione (rilevato automaticamente se non fornito)Endpoint
POST /api/llm/test/vector-init-index
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/llm/test/vector-init-index \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottieni tutti i metadati vettoriali di uno specifico articleId
Endpoint di test per recuperare dall'indice vettoriale tutti i blocchi vettoriali e i relativi metadati di uno specifico articleId. Utile per verificare come un articolo viene suddiviso e archiviato. Il filtro è gestito dal servizio di vector store.
Parametri
organisationId `string` (facoltativo) L'ID dell'organizzazione (rilevato automaticamente se non fornito) articleId `string` (obbligatorio) L'ID dell'articolo di cui recuperare i metadati vettorialiEndpoint
GET /api/llm/test/vector-metadata-by-article
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/llm/test/vector-metadata-by-article \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottieni i vettori recenti con i metadati dall'indice vettoriale
Endpoint di test per recuperare dall'indice vettoriale dell'organizzazione dell'utente corrente i 10 vettori più recenti con i metadati (ma senza i dati vettoriali). Utile per verificare la struttura dei metadati.
Parametri
organisationId `string` (facoltativo) L'ID dell'organizzazione (rilevato automaticamente se non fornito) limit `string` (facoltativo) Numero di vettori recenti da restituire (massimo 100)Endpoint
GET /api/llm/test/vector-recent
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/llm/test/vector-recent \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Carica una risorsa per il Marketing Manager/Designer nello storage S3.
Parametri
file `string` (facoltativo) Nome del file o della risorsa da caricare.Endpoint
POST /api/marketing/design/static/download
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/marketing/design/static/download \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce le singole risorse in formato JSON da caricare nel gestore delle risorse.
Parametri
id `string` (obbligatorio) ID della risorsa da ottenere. organisationId `string` (obbligatorio) L'ID dell'organizzazione della struttura a cui appartiene la risorsa.Endpoint
GET /api/marketing/assets/get/{id}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/marketing/assets/get/{id} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce tutte le risorse di design.
Parametri
body `string` (obbligatorio) Oggetto JSON dei dati della struttura che vuoi salvare. organisationId `string` (obbligatorio) L'ID dell'organizzazione della struttura a cui appartiene la risorsa. useCache `string` (facoltativo) search `string` (facoltativo) La query di ricerca per filtrare le risorse per nome o tag. brand `string` (facoltativo) Il brand per cui filtrare le risorse. tag `string` (facoltativo) Il tag per cui filtrare le risorse.Endpoint
GET /api/marketing/assets/get
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/marketing/assets/get \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce una singola pagina di risorse di marketing per la stampa di un'organizzazione. Usa Algolia per la ricerca per pertinenza + la paginazione per pagine (con conteggi totali) e ricorre a DynamoDB quando Algolia non è disponibile.
Parametri
organisationId `string` (obbligatorio) L'ID dell'organizzazione della struttura a cui appartengono le risorse. search `string` (facoltativo) La query di ricerca per filtrare le risorse per nome o tag. brand `string` (facoltativo) Il brand per cui filtrare le risorse. tag `string` (facoltativo) Il tag per cui filtrare le risorse. page `string` (facoltativo) Numero di pagina da recuperare, a partire da zero. limit `string` (facoltativo) Numero di risorse per pagina (massimo 300). useCache `string` (facoltativo) Se false, ignora Algolia e interroga direttamente DynamoDB.Endpoint
GET /api/marketing/assets
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/marketing/assets \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'elenco delle risorse disponibili caricate tramite il gestore delle risorse.
Parametri
organisationId `string` (obbligatorio)Endpoint
GET /api/marketing/assets/list
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/marketing/assets/list \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiunge/salva una risorsa.
Parametri
body `string` (obbligatorio) Oggetto JSON dei dati della struttura che vuoi salvare. organisationId `string` (obbligatorio) L'ID dell'organizzazione della struttura a cui appartiene la risorsa.Endpoint
PUT /api/marketing/assets/save
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/assets/save \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Carica una risorsa per il Marketing Manager/Designer nello storage S3.
Parametri
file `string` (facoltativo) Nome del file o della risorsa da caricare. organisationId `string` (facoltativo) L'ID dell'organizzazione a cui appartiene la risorsa.Endpoint
POST /api/marketing/assets/upload
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/marketing/assets/upload \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'elenco di tutte le pagine personalizzate di un'organizzazione.
Parametri
organisationId `string` (obbligatorio) ID interno dell'organizzazione di cui restituire le pagine personalizzate.Endpoint
GET /api/marketing/custom-pages
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/marketing/custom-pages \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Inserisce o aggiorna una pagina personalizzata per un'organizzazione.
Parametri
organisationId `string` (obbligatorio) ID interno dell'organizzazione di cui restituire le pagine personalizzate. body `object` (obbligatorio) Dati della pagina personalizzata da inserire o aggiornare.Endpoint
PUT /api/marketing/custom-pages
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/custom-pages \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'elenco di tutte le pagine personalizzate di una struttura.
Parametri
facilityId `string` (obbligatorio) ID interno della struttura di cui restituire le pagine personalizzate.Endpoint
GET /api/facilities/{facilityId}/marketing/custom-pages
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/marketing/custom-pages \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce tutti i design esportati/renderizzati per uno specifico ID di struttura.
Parametri
club `string` (obbligatorio) ID interno della struttura che effettua la richiesta. sort `string` (facoltativo) Criterio di ordinamento dei design: sono supportati 'oldest', 'newest' o 'design'.Endpoint
GET /api/marketing/designs/{club}/exports
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/{club}/exports \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce il contenuto HTML di un singolo design in formato JSON da caricare nell'editor.
Parametri
id `string` (obbligatorio) ID del design da ottenere.Endpoint
GET /api/marketing/designs/get/{id}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/get/{id} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'elenco delle mappature degli input nei design di marketing e stampa e nei modelli di design
Parametri
clubId `string` (obbligatorio) ID interno della struttura che effettua la richiesta. availableFeatures `string` (facoltativo) Restituisce tutti gli elementi con funzionalità specifiche brand `string` (facoltativo) Filtra i design per brand features `string` (facoltativo) Filtra i risultati in base alle funzionalitàEndpoint
GET /api/marketing/designs/input-mapping/{clubId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/input-mapping/{clubId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'elenco dei design disponibili per una determinata struttura, utilizzabili all'interno dei design (Print Designs) creati nell'editor marketing/stampa dell'hub.
Parametri
club `string` (obbligatorio) ID interno della struttura che effettua la richiesta. designAdmin `string` (facoltativo) Restituisce tutti i dati dei design (vista amministrativa / richiede che l'utente sia amministratore). brand `string` (facoltativo) Filtra i design per brandEndpoint
GET /api/marketing/designs/{club}/list
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/{club}/list \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Forza il sistema a renderizzare/ri-renderizzare tutte le miniature e le anteprime dei design (usato principalmente se cambiano le risorse 'upstream' in S3 ecc.)... **NOTA** Puoi chiamare questa funzione solo una volta ogni X minuti (e non puoi chiamarla se è già in corso un rendering). Questo serve a evitare un carico eccessivo sui nostri server durante il rendering di tutti i design...
Endpoint
GET /api/marketing/designs/render-all-thumbnails
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/render-all-thumbnails \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Avvia il rendering di un design dinamico
Parametri
body `string` (obbligatorio) Oggetto JSON dei dati della struttura da inviare al processore di rendering del design...Endpoint
POST /api/marketing/designs/dynamic/render-design
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/marketing/designs/dynamic/render-design \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiunge/salva/aggiorna un design.
Parametri
body `string` (obbligatorio) Oggetto JSON dei dati della struttura che vuoi salvare.Endpoint
PUT /api/marketing/designs/{club}/save
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/designs/{club}/save \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce il singolo design statico in formato JSON da caricare
Parametri
id `string` (obbligatorio) ID del design statico da ottenere.Endpoint
GET /api/marketing/designs/static/get/{id}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/static/get/{id} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiunge/salva/aggiorna un modello di design statico.
Parametri
body `string` (obbligatorio) Oggetto JSON dei dati della struttura che vuoi salvare.Endpoint
PUT /api/marketing/designs/static/{club}/save
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/designs/static/{club}/save \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Rimuove dal sistema una variabile impostata dall'utente.
Parametri
club `string` (obbligatorio) ID interno della struttura che effettua la richiesta. body `string` (obbligatorio) JSON contenente l'ID della variabile da rimuovere.Endpoint
DELETE /api/marketing/variables/{club}/delete
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/marketing/variables/{club}/delete \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'elenco delle variabili disponibili per una determinata struttura, utilizzabili all'interno dei design (Print Designs) creati nell'editor marketing/stampa dell'hub.
Parametri
club `string` (obbligatorio) ID interno della struttura che effettua la richiesta.Endpoint
GET /api/marketing/variables/{club}/list
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/marketing/variables/{club}/list \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea una singola nuova 'variabile' definita dall'utente per la struttura indicata.
Parametri
club `string` (obbligatorio) ID interno della struttura che effettua la richiesta. body `string` (obbligatorio) Oggetto JSON della nuova variabile.Endpoint
POST /api/marketing/variables/{club}/new
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/marketing/variables/{club}/new \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiunge/salva/aggiorna una o più variabili di design nel sistema tramite un array di oggetti.
Parametri
club `string` (obbligatorio) ID interno della struttura che effettua la richiesta. body `string` (obbligatorio) Array di uno o più oggetti JSON da aggiungere/aggiornare (consente di salvare più elementi/oggetti in un'unica richiesta API).Endpoint
PUT /api/marketing/variables/{club}/save
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/variables/{club}/save \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce il manifest della documentazione MCP per l'utente connesso
Alimenta la pagina `/mcp-docs` dell'app. Restituisce l'URL del server MCP, le intestazioni di autenticazione supportate, l'identità del chiamante e il flag di amministratore, e l'elenco filtrato degli strumenti (filtrato in modo identico a `/mcp/tools/list`, così la pagina della documentazione non mostra mai uno strumento che il chiamante non può effettivamente usare).
Endpoint
GET /api/mcp/docs-manifest
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/mcp/docs-manifest \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea un contratto utente.
Parametri
body `object` (obbligatorio) Oggetto JSON dei dati della struttura che vuoi salvare.Endpoint
POST /api/member-agreements/contracts-tna/:club
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'elenco dei contratti.
Endpoint
GET /api/member-agreements/contracts-tna/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elimina un contratto utente.
Endpoint
DELETE /api/member-agreements/contracts-tna/:club/:id
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club/:id \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce i dettagli di un contratto.
Endpoint
GET /api/member-agreements/contracts-tna/:club/:id
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club/:id \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna un contratto utente.
Parametri
body `object` (obbligatorio) Oggetto JSON dei dati della struttura che vuoi salvare.Endpoint
PATCH /api/member-agreements/contracts-tna/:club/:id
Richiesta di esempio
curl -X PATCH https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club/:id \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottieni i contratti predefiniti della struttura.
Parametri
body `object` (obbligatorio) Oggetto JSON dei dati della struttura che vuoi salvare.Endpoint
GET /api/member-agreements/default-tna/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/default-tna/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Imposta il contratto predefinito della struttura.
Parametri
body `object` (obbligatorio) Oggetto JSON dei dati della struttura che vuoi salvare.Endpoint
POST /api/member-agreements/default-tna/:club
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/member-agreements/default-tna/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'elenco dei contratti globali o regionali.
Endpoint
GET /api/member-agreements/global-tna/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/global-tna/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'elenco dei membri con accordo.
Endpoint
GET /api/member-agreements/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'elenco dei membri della struttura per stagione per l'app del training camp.
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere. season `string` (facoltativo) Stagione del training camp per cui vuoi filtrare. userIds `string` (facoltativo) Array di ID utente da filtrare. useCache `string` (facoltativo) Indica se usare la cache. isUserMemberInfo `string` (facoltativo) Se abilitato, filtra i dati in base a userIds (si consiglia di usare un solo ID utente) e include i dati necessari, come classifica e preferenze dell'utente.Endpoint
GET /api/members-leads/trainingcamp/club/season-members/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/members-leads/trainingcamp/club/season-members/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elimina più lead di prenotazione di allenamenti.
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere. body `string` (obbligatorio)Endpoint
DELETE /api/members-leads/workout-booking/club/leads/{club}
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/members-leads/workout-booking/club/leads/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'elenco dei lead di prenotazione di allenamenti di una struttura.
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere. all `string` (facoltativo) Indica se mostrare tutti i lead o solo quelli imminenti.Endpoint
GET /api/members-leads/workout-booking/club/leads/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/members-leads/workout-booking/club/leads/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna un lead di prenotazione di allenamento.
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere. body `string` (obbligatorio)Endpoint
PUT /api/members-leads/workout-booking/club/leads/{club}
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/members-leads/workout-booking/club/leads/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Attiva o disattiva il contrassegno di un lead di prenotazione di allenamento.
Parametri
club `string` (obbligatorio) ID interno del club. body `string` (obbligatorio)Endpoint
PATCH /api/members-leads/workout-booking/club/leads/{club}/flag
Richiesta di esempio
curl -X PATCH https://portal.hub.gymsystems.co/api/members-leads/workout-booking/club/leads/{club}/flag \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottieni i moduli effettivi di una struttura
Restituisce tutti i moduli disponibili per una struttura risolvendo la gerarchia: preferenze della struttura → moduli del brand → moduli dell'organizzazione. Per migliorare le prestazioni, i risultati vengono memorizzati nella cache in Redis.
Parametri
facilityId `string` (obbligatorio) L'ID della struttura per cui risolvere i moduliEndpoint
GET /api/facilities/{facilityId}/modules
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/modules \
-H "x-api-key: YOUR_API_KEY"
Risposta
[]
Restituisce il catalogo dei moduli più la configurazione di visualizzazione del menu laterale. Viene restituito l'elenco completo dei moduli, così il renderer front-end può decidere la visibilità per ciascun utente; l'ACL è comunque applicato lato server tramite `auth.checkModuleAccess()`.
Endpoint
GET /api/modules
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/modules \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottieni le categorie di notifica.
Endpoint
GET /api/notification/categories
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/notification/categories \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elimina una notifica letta.
Endpoint
DELETE /api/club/notification/consumed/:club
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/club/notification/consumed/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea un messaggio di notifica.
Endpoint
POST /api/club/notification/consumed/:club
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/club/notification/consumed/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'array delle notifiche lette.
Endpoint
GET /api/club/notification/consumed/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/club/notification/consumed/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elimina un messaggio di notifica.
Endpoint
DELETE /api/club/notification/messages/:club
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/club/notification/messages/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'array dei messaggi di notifica.
Endpoint
GET /api/club/notification/messages/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/club/notification/messages/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna un messaggio di notifica.
Endpoint
PATCH /api/club/notification/messages/:club
Richiesta di esempio
curl -X PATCH https://portal.hub.gymsystems.co/api/club/notification/messages/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea un messaggio di notifica.
Parametri
body `string` (obbligatorio)Endpoint
POST /api/club/notification/messages/:club
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/club/notification/messages/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottieni i destinatari delle notifiche per struttura.
Endpoint
POST /api/club/notification/viewers/:club
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/club/notification/viewers/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottieni le categorie di notifica per utente.
Endpoint
GET /api/club/notification/user-categories/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/club/notification/user-categories/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea un messaggio di notifica.
Endpoint
POST /api/notification/webhook
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/notification/webhook \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottieni la chiave pubblica VAPID per le notifiche push HTML5
Restituisce la chiave pubblica VAPID usata per creare le sottoscrizioni push del browser.
Endpoint
GET /html5-push/vapid-public-key
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/html5-push/vapid-public-key \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Salva o aggiorna una sottoscrizione push HTML5
Salva una sottoscrizione push del browser per l'utente corrente.
Corpo della richiesta
Endpoint
POST /html5-push/subscribe
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/html5-push/subscribe \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Risposta
{}
Elimina una sottoscrizione push HTML5
Rimuove una sottoscrizione push del browser per l'utente corrente.
Corpo della richiesta
Endpoint
POST /html5-push/unsubscribe
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/html5-push/unsubscribe \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Risposta
{}
Ottieni lo stato di onboarding della sede per l'utente chiamante
Restituisce le due parti dell'onboarding di una struttura, configurazione (dettagli + selezione dei prodotti, salvati nelle preferenze della struttura) e pagamento (ricavato in tempo reale dal record payment-settings della fatturazione SaaS), più un flag `required` personalizzato per il chiamante su cui si basa la shell dell'app. Solo per le sedi con stack tecnologico; le sedi con stack business restituiscono sempre required=false.
Parametri
facilityId `string` (obbligatorio)Endpoint
GET /api/onboarding/{facilityId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/onboarding/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Salva l'avanzamento in corso della procedura guidata di onboarding di una struttura
Salva lo stato parziale della procedura guidata (selezione dei prodotti, testo libero "Other", dettagli dell'attività verificati, passaggio corrente), così un aggiornamento o un abbandono riprende da dove l'utente era rimasto. Non registra mai il completamento: vedi l'endpoint complete.
Parametri
facilityId `string` (obbligatorio)Corpo della richiesta
Endpoint
PUT /api/onboarding/{facilityId}
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/onboarding/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Risposta
{}
Genera suggerimenti di precompilazione AI per la procedura guidata di onboarding
Usa il contesto esistente di struttura/brand/organizzazione per proporre i dettagli della struttura (testo di presentazione, campi di contatto ordinati), una selezione di prodotti suggerita e brevi consigli personalizzati. I risultati vengono memorizzati nella cache in Redis per 7 giorni. I suggerimenti sono solo indicativi: il client li mostra in un modulo di revisione modificabile. Risponde sempre 200; `suggestions` è null quando l'AI non è disponibile, così la procedura guidata continua a funzionare.
Parametri
facilityId `string` (obbligatorio)Endpoint
POST /api/onboarding/{facilityId}/ai-prefill
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/onboarding/{facilityId}/ai-prefill \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Completa la parte di configurazione dell'onboarding della sede
Convalida le selezioni e i dettagli confermati, salva i dettagli dell'attività nel record della struttura, inizializza il layout del menu tecnologico della struttura a partire dalla selezione dei prodotti (a meno che non esista già un layout personalizzato) e registra il completamento della configurazione. La parte di pagamento intenzionalmente NON può essere completata qui: è ricavata in tempo reale dal record payment-settings della fatturazione SaaS, quindi il requisito obbligatorio della carta non può essere aggirato chiamando questo endpoint. Restituisce lo stato aggiornato.
Parametri
facilityId `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/onboarding/{facilityId}/complete
Richiesta di esempio
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 '{}'
Risposta
{}
Attiva un'azione dichiarata di un'integrazione partner per una struttura
Esegue un'azione "Run integration" dichiarata nel record del partner (ph-partners.actions[]), con ambito limitato a una struttura. Un blocco single-flight in Redis impedisce esecuzioni manuali simultanee per la stessa combinazione di azione e struttura.
Parametri
partnerId `string` (obbligatorio) actionId `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/partners/{partnerId}/actions/{actionId}/run
Richiesta di esempio
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 '{}'
Leggi lo stato di esecuzione di un'azione di integrazione partner
Restituisce se un'esecuzione manuale è attualmente in corso (blocco single-flight attivo) più l'ultima esecuzione richiesta, per il polling del pulsante delle impostazioni.
Parametri
partnerId `string` (obbligatorio) actionId `string` (obbligatorio) facilityId `string` (obbligatorio)Endpoint
GET /api/partners/{partnerId}/actions/{actionId}/status
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/partners/{partnerId}/actions/{actionId}/status \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottieni tutte le configurazioni dei partner di un brand
Parametri
brandId `string` (obbligatorio) L'ID del brandEndpoint
GET /api/partners/brand-config/{brandId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/partners/brand-config/{brandId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
[]
Crea o aggiorna la configurazione di un partner per un brand
Parametri
body `object` (obbligatorio)Endpoint
PUT /api/partners/brand-config
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/partners/brand-config \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Migra i dati dell'integrazione GymMaster in facility-partner-config
Interroga tutte le strutture con i campi gymMasterAPI e gymMasterDomain e crea/aggiorna i record facility-partner-config corrispondenti. Si tratta di un endpoint di migrazione da eseguire una sola volta.
Parametri
partnerId `string` (obbligatorio) L'ID partner GymMaster da usare per tutti i record migrati dryRun `boolean` (facoltativo) Se true, indica solo cosa verrebbe migrato senza scrivere nel databaseEndpoint
GET /api/partners/migrate-gymmaster
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/partners/migrate-gymmaster \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Abilita un partner per un'organizzazione.
Parametri
partnerId `string` (obbligatorio) ID del partnerEndpoint
POST /api/partners/organisation/enable
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/partners/organisation/enable \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca i partner dell'organizzazione. Gli amministratori dell'organizzazione vedono solo i partner della propria organizzazione.
Endpoint
GET /api/partners/organisation
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/partners/organisation \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Rimuovi un partner dell'organizzazione.
Parametri
keyId `string` (obbligatorio) ID della chiave del partner dell'organizzazione organisationId `string` (obbligatorio) ID dell'organizzazione del partnerEndpoint
DELETE /api/partners/organisation/{keyId}
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/partners/organisation/{keyId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna la modalità di accesso e i moduli di un partner dell'organizzazione.
Parametri
keyId `string` (obbligatorio) ID della chiave del partner dell'organizzazione organisationId `string` (obbligatorio) ID dell'organizzazione del partner partnerId `string` (obbligatorio) ID del partner accessMode `string` (obbligatorio) Modalità di accesso del partner modules `string` (facoltativo) Elenco dei moduli per la modalità di accesso LIMITEDEndpoint
PUT /api/partners/organisation/update-access
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/partners/organisation/update-access \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea check-in per una struttura
Accetta un array di oggetti check-in e li inoltra alla Partner API per l'elaborazione. Massimo 25 check-in per richiesta.
Corpo della richiesta
Endpoint
POST /api/partners/check-ins
Richiesta di esempio
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 '{}'
Risposta
{}
Elimina la configurazione di un partner per una struttura
Rimuove la configurazione di un'integrazione partner in una struttura
Parametri
facilityId `string` (obbligatorio) ID della struttura (ID club) partnerId `string` (obbligatorio) ID del partnerEndpoint
DELETE /api/partners/facility-config/{facilityId}/{partnerId}
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/partners/facility-config/{facilityId}/{partnerId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca tutte le configurazioni dei partner di una struttura
Restituisce tutte le integrazioni partner configurate per la struttura indicata
Parametri
facilityId `string` (obbligatorio) ID della struttura (ID club)Endpoint
GET /api/partners/facility-config/{facilityId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/partners/facility-config/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea o aggiorna la configurazione di un partner per una struttura
Inserisce o aggiorna la configurazione di un'integrazione partner in una struttura
Corpo della richiesta
Endpoint
POST /api/partners/facility-config
Richiesta di esempio
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 '{}'
Risposta
{}
Elimina un membro tramite memberId
Elimina il record di un membro esistente usando il memberId.
Parametri
memberId `string` (obbligatorio) Identificatore univoco del membroEndpoint
DELETE /api/partners/members/{memberId}
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/partners/members/{memberId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna un membro tramite memberId
Aggiorna il record di un membro esistente usando il memberId.
Parametri
memberId `string` (obbligatorio) Identificatore univoco del membroCorpo della richiesta
Endpoint
PUT /api/partners/members/{memberId}
Richiesta di esempio
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 '{}'
Risposta
{}
Ottieni lo stato di un'operazione di sincronizzazione dei membri
Restituisce lo stato corrente di un'operazione asincrona di creazione/eliminazione di membri avviata tramite POST /api/partners/members o DELETE /api/partners/members/{memberId}. Il frontend interroga periodicamente questo endpoint al posto del flusso legacy basato sul polling dell'elenco e sulla corrispondenza dei nomi. NOTA Il filtro per partnerId/facilityId a livello di riga è richiesto dalle regole di isolamento multi-tenant ma è rimandato a una PR di rafforzamento della Fase 3a.1: gli operationId sono UUID a 128 bit e la route è già protetta dall'accesso al modulo `external-integrations`. Chiunque disponga di un operationId valido e dell'accesso amministrativo al modulo può interrogarne lo stato.
Parametri
operationId `string` (obbligatorio) UUID restituito da POST/DELETEEndpoint
GET /api/partners/members/operations/{operationId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/partners/members/operations/{operationId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea o aggiorna i membri di una struttura
Accetta un array di oggetti membro e li inoltra alla Partner API per l'elaborazione. Massimo 25 membri per richiesta.
Corpo della richiesta
Endpoint
POST /api/partners/members
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/partners/members \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Risposta
{}
Crea o aggiorna i piani di iscrizione di una struttura
Accetta un array di oggetti piano di iscrizione e li inoltra alla Partner API per l'elaborazione. Massimo 25 piani di iscrizione per richiesta.
Corpo della richiesta
Endpoint
POST /api/partners/membership-plans
Richiesta di esempio
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 '{}'
Risposta
{}
Crea un nuovo ruolo
Parametri
body `string` (obbligatorio) Oggetto ruoloEndpoint
POST /api/roles
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/roles \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'elenco di tutti i ruoli
Endpoint
GET /api/roles
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/roles \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elimina un ruolo tramite ID
Endpoint
DELETE /api/roles/{roleId}
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/roles/{roleId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna un ruolo tramite ID
Parametri
body `string` (obbligatorio) Oggetto ruoloEndpoint
PUT /api/roles/{roleId}
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/roles/{roleId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea una nuova voce aggiuntiva per la fattura della fatturazione SaaS
Parametri
organisationId `string` (facoltativo) L'ID dell'organizzazione per cui creare la voce aggiuntiva body `string` (facoltativo) Corpo della richiestaEndpoint
POST /api/saas-billing/additional-line-items
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/saas-billing/additional-line-items \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'elenco delle voci aggiuntive della fattura della fatturazione SaaS
Parametri
organisationId `string` (obbligatorio) L'ID dell'organizzazioneEndpoint
GET /api/saas-billing/additional-line-items
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/additional-line-items \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'elenco delle voci aggiuntive della fattura SaaS della struttura
Endpoint
GET /api/clubs/{clubId}/saas-billing/additional-line-items
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/saas-billing/additional-line-items \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna una voce aggiuntiva della fattura della fatturazione SaaS
Parametri
itemId `string` (obbligatorio) L'ID della voce aggiuntiva da aggiornare body `string` (obbligatorio) Il corpo della richiestaEndpoint
PUT /api/saas-billing/additional-line-items/{itemId}
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/saas-billing/additional-line-items/{itemId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Tariffe orarie combinate di Cloud Agent per Your Rates
Restituisce le dimensioni di Cloud Agent offerte con un unico prezzo orario combinato (hosting + software). La suddivisione non è inclusa. usedPlans sono gli SKU eseguiti da questa struttura negli ultimi 30 giorni.
Parametri
clubID `string` (obbligatorio)Endpoint
GET /api/clubs/{clubID}/saas-billing/cloud-agent-rates
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/cloud-agent-rates \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elimina un report mensile importato
Parametri
club `string` (facoltativo) ID del club reportId `string` (facoltativo) ID del reportEndpoint
DELETE /api/saas-billing/extended-access/monthly-usage-report/{reportId}
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/saas-billing/extended-access/monthly-usage-report/{reportId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottieni il report più recente sull'archiviazione TVCC di una struttura
Restituisce lo snapshot giornaliero più recente dell'archiviazione TVCC della struttura dai registri di fatturazione salvati (fino agli ultimi 31 giorni). Include totalStorage, la data e gli addebiti relativi all'archiviazione.
Parametri
club `string` (obbligatorio) ID del clubEndpoint
GET /api/saas-billing/extended-access/latest-cctv-storage-report/{club}
Richiesta di esempio
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"
Risposta
{}
Restituisce una fattura PDF della struttura per il periodo indicato.
Parametri
club `string` (facoltativo) ID del club month `string` (facoltativo) Mese del report in formato numerico. 1 = gennaio, 2 = febbraio ecc. year `string` (facoltativo) Anno del report in formato numerico, ad es. 2021Endpoint
GET /api/saas-billing/extended-access/monthly-usage-report/:club/invoice
Richiesta di esempio
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"
Risposta
{}
Pacchetto ZIP dei PDF delle fatture della piattaforma per i mesi di utilizzo selezionati. Corrispettivo in blocco dell'endpoint singolo .../invoice: alimenta il download a selezione multipla nella scheda Invoices & Receipts dell'applet Billing & Cost Management.
Parametri
club `string` (facoltativo) ID del club months `string` (facoltativo) Mesi di utilizzo/report separati da virgole in formato YYYY-MM (massimo 24)Endpoint
GET /api/saas-billing/extended-access/monthly-usage-report/{club}/invoices.zip
Richiesta di esempio
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"
Risposta
{}
Restituisce i report di utilizzo mensili di più mesi in un'unica chiamata. Alimenta il grafico Cost History e le variazioni mese su mese nell'applet Billing & Cost Management. I mesi ancora senza utilizzo restituiscono report: null (in linea con il 404 → $0 dell'interfaccia dell'endpoint a mese singolo).
Parametri
club `string` (facoltativo) ID del club months `string` (facoltativo) Mesi di utilizzo separati da virgole in formato YYYY-MM (massimo 12)Endpoint
GET /api/saas-billing/extended-access/monthly-usage-report/{club}/batch
Richiesta di esempio
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"
Risposta
{}
Importa i report mensili della struttura.
Parametri
club `string` (facoltativo) ID del clubEndpoint
PUT /api/saas-billing/extended-access/usage-report/:club
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/saas-billing/extended-access/usage-report/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce un report CSV dell'utilizzo TVCC degli ultimi 30 giorni per tutte le strutture.
Endpoint
GET /api/saas-billing/extended-access/usage-report/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/usage-report/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca tutti i report giornalieri del mese della struttura.
Parametri
club `string` (facoltativo) ID del club month `string` (facoltativo) Mese del report in formato numerico. 1 = gennaio, 2 = febbraio ecc. year `string` (facoltativo) Anno del report in formato numerico, ad es. 2021Endpoint
GET /api/saas-billing/extended-access/monthly-usage-report/{club}/daily-reports
Richiesta di esempio
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"
Risposta
{}
Restituisce l'elenco dei report mensili importati per l'amministratore
Parametri
organisationId `string` (obbligatorio) ID dell'organizzazioneEndpoint
GET /api/saas-billing/extended-access/usage-report/imported
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/usage-report/imported \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce un report CSV dell'utilizzo TVCC degli ultimi 30 giorni per tutte le strutture.
Parametri
club `string` (facoltativo) ID del club month `string` (facoltativo) Mese del report in formato numerico. 1 = gennaio, 2 = febbraio ecc. year `string` (facoltativo) Anno del report in formato numerico, ad es. 2021Endpoint
GET /api/saas-billing/extended-access/monthly-usage-report/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/monthly-usage-report/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce il report di utilizzo periodico della struttura.
Parametri
club `string` (facoltativo) ID del club periodStart `string` (facoltativo) Inizio del periodo nel formato YYYY-MM-DD periodEnd `string` (facoltativo) Fine del periodo nel formato YYYY-MM-DDEndpoint
GET /api/saas-billing/extended-access/periodical-usage-report/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/periodical-usage-report/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Pacchetto dei PDF dei documenti di fatturazione in un unico ZIP, con tipi di documento misti: fatture della piattaforma (per mese di utilizzo), ricevute di ricarica del wallet SaaS e ricevute di ricarica di Model Router. Corrispettivo in blocco degli endpoint per tipo invoices.zip / receipts.zip per la scheda unificata Invoices & Receipts. Ogni mese/ID richiesto deve corrispondere a un documento di proprietà della struttura: un solo valore non valido fa fallire l'intero pacchetto.
Parametri
clubID `string` (obbligatorio) invoiceMonths `string` (facoltativo) Mesi di utilizzo separati da virgole in formato YYYY-MM walletIds `string` (facoltativo) ID delle transazioni di ricarica del wallet SaaS separati da virgole aiIds `string` (facoltativo) ID delle transazioni di ricarica di Model Router separati da virgoleEndpoint
GET /api/clubs/{clubID}/saas-billing/documents.zip
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/documents.zip \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiungi una nota a un record mensile
Parametri
recordID `string` (facoltativo) L'ID del record da ottenere note `string` (facoltativo) La nota da aggiungere al recordEndpoint
POST /api/saas-billing/monthly-records/{recordID}/notes
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/saas-billing/monthly-records/{recordID}/notes \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'elenco dei record mensili della fatturazione SaaS
Parametri
club `string` (facoltativo) L'ID della struttura da ottenere month `string` (facoltativo) Il mese di fatturazione in formato YYYY-MMEndpoint
GET /api/saas-billing/monthly-records/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/monthly-records/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'elenco dei record mensili della fatturazione SaaS non riusciti o che richiedono 3D Secure
Parametri
clubID `string` (facoltativo) L'ID della struttura di cui ottenere i record mensili non riuscitiEndpoint
GET /api/clubs/:clubID/saas-billing/flagged
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/:clubID/saas-billing/flagged \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce TUTTI i record mensili della fatturazione SaaS (il registro delle fatture) di una struttura, dal mese di fatturazione più recente. Corrispettivo con ambito struttura dell'endpoint paginate-monthly-records riservato agli amministratori: alimenta la scheda "Invoices & Receipts" per i clienti nell'applet Billing & Cost Management.
Parametri
clubID `string` (facoltativo) L'ID della struttura di cui elencare i record mensiliEndpoint
GET /api/clubs/{clubID}/saas-billing/monthly-records
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/monthly-records \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'elenco dei record mensili della fatturazione SaaS
Parametri
organisationId `string` (facoltativo) ID dell'organizzazione month `string` (facoltativo) Mese in formato MM. year `string` (facoltativo) Anno in formato YYYY. filters `string` (facoltativo) Filtri della stringa di query creati dalla tabella dati. order `string` (facoltativo) Stringa di query creata dalla tabella dati.Endpoint
GET /api/saas-billing/monthly-records
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/monthly-records \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Riprova i pagamenti non riusciti di una struttura
Parametri
clubID `string` (facoltativo) L'ID della struttura di cui ottenere i record mensili non riuscitiEndpoint
PUT /api/clubs/:clubID/saas-billing/retry-failed-payments
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/:clubID/saas-billing/retry-failed-payments \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna un record mensile
Parametri
recordID `string` (facoltativo) L'ID del record da ottenere status `string` (facoltativo) Lo stato da assegnare al recordEndpoint
PUT /api/saas-billing/monthly-records/{recordID}
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/saas-billing/monthly-records/{recordID} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Verifica se i pagamenti sono andati a buon fine e aggiorna lo stato del record
Parametri
clubID `string` (facoltativo) recordID `string` (facoltativo) L'ID del record da ottenereEndpoint
PUT /api/clubs/{clubID}/saas-billing/monthly-records/{recordID}/validate
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/monthly-records/{recordID}/validate \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiungi un metodo di pagamento per una struttura.
Parametri
clubID `string` (facoltativo)Endpoint
POST /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings/payment-methods \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Sincronizza con Stripe i metodi di pagamento di una struttura.
Parametri
clubID `string` (facoltativo)Endpoint
PUT /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings/payment-methods \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce il budget di spesa della struttura più i valori calcolati da inizio mese e previsti.
Parametri
clubID `string` (facoltativo)Endpoint
GET /api/clubs/{clubID}/saas-billing/budget
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/budget \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea/aggiorna/cancella il budget di spesa della struttura.
Parametri
clubID `string` (facoltativo) body `object` (facoltativo)Endpoint
PUT /api/clubs/{clubID}/saas-billing/budget
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/budget \
-H "x-api-key: YOUR_API_KEY"
Elimina un metodo di pagamento dalle impostazioni di pagamento della struttura.
Parametri
clubID `string` (facoltativo) paymentMethodID `string` (facoltativo)Endpoint
DELETE /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods/{paymentMethodID}
Richiesta di esempio
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"
Risposta
{}
Ottieni le impostazioni di pagamento di una struttura.
Parametri
clubID `string` (facoltativo)Endpoint
GET /api/clubs/{clubID}/saas-billing/payment-settings
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna le impostazioni di pagamento di una struttura.
Parametri
clubID `string` (facoltativo) lockedOut `boolean` (facoltativo) Indica se la struttura verrà bloccata fuori dal sistema. pauseBilling `boolean` (facoltativo) Indica se la fatturazione automatica della struttura verrà sospesa. customerID `string` (facoltativo) Se aggiunto, aggiorna l'ID cliente Stripe della struttura. deleteSourceID `string` (facoltativo) Indica se eliminare il cliente di origine da Stripe.Endpoint
PUT /api/clubs/{clubID}/saas-billing/payment-settings
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottieni il primo mese fatturato per tutte le strutture.
Parametri
clubID `string` (facoltativo)Endpoint
GET /api/saas-billing/payment-settings/earliest-billed-month
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/payment-settings/earliest-billed-month \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca gli account che possono sbloccare un blocco di fatturazione di una struttura, per livelli: prima gli utenti che dispongono del modulo di fatturazione, gli amministratori dell'organizzazione solo come alternativa quando nessuno ne dispone.
Parametri
clubID `string` (obbligatorio)Endpoint
GET /api/clubs/{clubID}/saas-billing/lockout-contacts
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/lockout-contacts \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Scorre a pagine tutte le strutture del sistema e restituisce gli ID cliente di ciascuna.
Parametri
clubID `string` (facoltativo) organisationId `string` (facoltativo) ID dell'organizzazioneEndpoint
GET /api/saas-billing/payment-settings/customer-ids
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/payment-settings/customer-ids \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Imposta il metodo di pagamento principale di una struttura.
Parametri
clubID `string` (facoltativo)Endpoint
PUT /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods/{paymentMethodID}/primary
Richiesta di esempio
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"
Risposta
{}
Aggiorna il profilo di fatturazione di una struttura.
Parametri
clubID `string` (facoltativo) invoiceEntity `string` (facoltativo) billingContacts `string` (facoltativo) Elenco degli UUID dei contatti KYC ccEmails `string` (facoltativo) Elenco degli indirizzi email da mettere in copia nelle fattureEndpoint
PUT /api/clubs/{clubID}/saas-billing/payment-settings/billing-profile
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings/billing-profile \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna un metodo di pagamento di una struttura.
Parametri
clubID `string` (facoltativo) cardID `string` (facoltativo)Endpoint
PUT /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods/{cardID}
Richiesta di esempio
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"
Risposta
{}
Restituisce, per ogni struttura, il dettaglio di tutti gli addebiti di prodotto applicabili e delle voci aggiuntive per l'esportazione CSV. Risolve la gerarchia di override globale/regione/struttura per ogni struttura a cui l'utente ha accesso.
Parametri
organisationId `string` (obbligatorio) ID dell'organizzazione per l'ACLEndpoint
GET /api/saas-billing/charges-config/export
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/charges-config/export \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce la configurazione degli addebiti di una destinazione specifica
Parametri
clubId `string` (facoltativo) L'ID della struttura di cui ottenere la configurazione degli addebitiEndpoint
GET /api/saas-billing/charges-config/{clubId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/charges-config/{clubId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Riepilogo di fatturazione dell'organizzazione della struttura: ambito effettivo del pagatore, eventuali modifiche di consolidamento pianificate e se il chiamante può gestire l'opzione di consolidamento.
Parametri
clubID `string` (obbligatorio)Endpoint
GET /api/clubs/{clubID}/saas-billing/org/summary
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/org/summary \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Record mensili consolidati dell'organizzazione (estratti conto) con il dettaglio per struttura, dal più recente. Vuoto finché non si chiude il primo mese consolidato dell'organizzazione.
Parametri
clubID `string` (obbligatorio)Endpoint
GET /api/clubs/{clubID}/saas-billing/org/monthly-records
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/org/monthly-records \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Riepilogo del wallet prepagato: saldo, addebiti di utilizzo da inizio mese, configurazione della ricarica automatica, metodo di fatturazione.
Parametri
clubID `string` (obbligatorio)Endpoint
GET /api/clubs/{clubID}/saas-billing/wallet
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Movimenti del wallet, dal più recente. I wallet con ambito organizzazione includono le righe di tutte le strutture (ognuna riporta il clubID di origine).
Parametri
clubID `string` (obbligatorio) limit `string` (facoltativo) types `string` (facoltativo) tipi di transazione separati da virgole from `string` (facoltativo) to `string` (facoltativo) cursor `string` (facoltativo) nextCursor di una pagina precedenteEndpoint
GET /api/clubs/{clubID}/saas-billing/wallet/transactions
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/transactions \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ricevuta PDF con il brand per una singola transazione del wallet (ricariche e crediti).
Parametri
clubID `string` (obbligatorio) txId `string` (obbligatorio)Endpoint
GET /api/clubs/{clubID}/saas-billing/wallet/transactions/{txId}/receipt.pdf
Richiesta di esempio
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"
Risposta
{}
Pacchetto ZIP delle ricevute PDF con il brand per le transazioni di ricarica del wallet selezionate. Ogni ID deve essere una ricarica (con carta o fattura) appartenente al wallet di questa struttura: gli addebiti di utilizzo e le rettifiche non hanno ricevute e vengono rifiutati.
Parametri
clubID `string` (obbligatorio) ids `string` (obbligatorio) ID delle transazioni separati da virgole (massimo 50)Endpoint
GET /api/clubs/{clubID}/saas-billing/wallet/transactions/receipts.zip
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/transactions/receipts.zip \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Addebita una carta salvata della fatturazione SaaS per aggiungere saldo prepagato. Restituisce requires_action + clientSecret quando è necessaria l'autenticazione 3DS.
Parametri
clubID `string` (obbligatorio) body `object` (facoltativo)Endpoint
POST /api/clubs/{clubID}/saas-billing/wallet/topup
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/topup \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Finalizza una ricarica del wallet dopo che l'applet ha completato l'autenticazione 3DS. Idempotente.
Parametri
clubID `string` (obbligatorio)Endpoint
POST /api/clubs/{clubID}/saas-billing/wallet/topup/confirm
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/topup/confirm \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna la regola di ricarica automatica della struttura (salvata nella riga di override del profilo di fatturazione).
Parametri
clubID `string` (obbligatorio) body `object` (facoltativo)Endpoint
PATCH /api/clubs/{clubID}/saas-billing/wallet/auto-topup
Richiesta di esempio
curl -X PATCH https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/auto-topup \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Fatture di ricarica del wallet di questa struttura (metodo di pagamento con fattura), dalla più recente.
Parametri
clubID `string` (obbligatorio)Endpoint
GET /api/clubs/{clubID}/saas-billing/wallet/invoices
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/invoices \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Richiedi una fattura di ricarica da pagare con riferimento (solo metodo di pagamento con fattura). Al massimo una fattura in sospeso per wallet: una seconda richiesta restituisce quella esistente con alreadyPending=true.
Parametri
clubID `string` (obbligatorio) body `string` (facoltativo) { amountCents: number }Endpoint
POST /api/clubs/{clubID}/saas-billing/wallet/topup-invoice
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/topup-invoice \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'elenco degli ordini della struttura.
Parametri
facilityID `string` (facoltativo)Endpoint
GET /api/store/facilities/:facilityID/orders
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/store/facilities/:facilityID/orders \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'elenco dei prodotti disponibili per la struttura.
Parametri
clubID `string` (obbligatorio) search `string` (facoltativo) limit `string` (facoltativo) page `string` (facoltativo) Il numero di pagina per la paginazione (a partire da 1).Endpoint
GET /api/store/clubs/{clubID}/products
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/store/clubs/{clubID}/products \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca i record Stripe della struttura.
Parametri
club `string` (obbligatorio) fromDate `string` (facoltativo) Timestamp Unix toDate `string` (facoltativo) Timestamp Unix socketID `string` (obbligatorio) Identificatore univoco della richiesta socketEndpoint
GET /api/club/{club}/stripe/records
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/club/{club}/stripe/records \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Annulla un payment intent
Parametri
club `string` (obbligatorio) paymentIntent `string` (facoltativo)Endpoint
GET /api/club/{club}/stripe/payment-intent/:paymentIntent/cancel
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/club/{club}/stripe/payment-intent/:paymentIntent/cancel \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea una Stripe Account Session per i componenti incorporati
Crea una Stripe Account Session per un account connesso. Restituisce un client_secret usato per inizializzare i componenti incorporati di Connect (contestazioni, pagamenti, gestione dell'account, documenti).
Corpo della richiesta
Endpoint
POST /api/stripe/account-session
Richiesta di esempio
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 '{}'
Risposta
{}
Genera un link monouso alla pagina KYC di Stripe per un account connesso.
Parametri
club `string` (obbligatorio)Endpoint
GET /api/club/{club}/stripe/generate-kyc-token
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/club/{club}/stripe/generate-kyc-token \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottiene i dettagli di un account connesso Stripe nell'ambito della procedura KYC.
Parametri
club `string` (obbligatorio)Endpoint
GET /api/club/{club}/stripe/connect-account-details
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/club/{club}/stripe/connect-account-details \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Restituisce l'intera cronologia dei ticket in base all'ID della struttura
Parametri
club `string` (obbligatorio) ID interno del club a cui vuoi accedere.Endpoint
GET /api/ticketing/clubtickets/{club}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/clubtickets/{club} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottiene i reparti
Endpoint
GET /api/ticketing/departments
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/departments \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottiene i dettagli di un singolo ticket
Parametri
user `string` (obbligatorio) email dell'utente. ticketNumber `string` (obbligatorio) ID a 6 cifre del ticket a cui vuoi accedere. club `string` (obbligatorio) l'ID della struttura selezionata.Endpoint
GET /api/ticketing/ticket-details/:ticketNumber/:club
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/ticket-details/:ticketNumber/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottiene gli argomenti
Endpoint
GET /api/ticketing/topics
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/topics \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottiene tutti i ticket creati dall'utente attualmente connesso. Nota: questo valore è impostato dalle intestazioni fornite dal nostro servizio Google SSO.
Parametri
user `string` (obbligatorio) Email dell'utente attualmente connessoEndpoint
GET /api/ticketing/usertickets
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/usertickets \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea un nuovo ticket
Parametri
club `string` (obbligatorio) l'ID della struttura selezionata.Endpoint
POST /api/ticketing/clubticket/:club
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/ticketing/clubticket/:club \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea un nuovo ticket
Parametri
subject `string` (obbligatorio) Oggetto del ticket. message `string` (obbligatorio) Messaggio completo del ticket.Endpoint
POST /api/ticketing/userticket
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/ticketing/userticket \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea una risposta a un ticket esistente
Parametri
subject `string` (obbligatorio) Oggetto del ticket. message `string` (obbligatorio) Messaggio completo del ticket.Endpoint
POST /api/ticketing/user-reply
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/ticketing/user-reply \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Recupera le preferenze di un utente
Endpoint
GET /api/user-preferences
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/user-preferences \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna le preferenze di un utente
Parametri
body `string` (obbligatorio)Endpoint
PUT /api/user-preferences
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/user-preferences \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Modifica la password dell'utente
Modifica la password dell'utente. Richiede la verifica OTP se l'utente ha un numero di telefono, oppure richiede di aggiungere un numero di telefono se non presente.
Corpo della richiesta
Endpoint
POST /api/user/change-password
Richiesta di esempio
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 '{}'
Risposta
{}
Verifica lo stato 2FA dell'utente
Restituisce se l'autenticazione a due fattori è abilitata per l'utente e se uno dei suoi ruoli la impone
Endpoint
GET /api/user/check-2fa-status
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/user/check-2fa-status \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca le organizzazioni, le strutture e le regioni a cui l'utente ha accesso per un modulo specifico.
Parametri
moduleId `string` (obbligatorio)Endpoint
POST /api/user/me/modules/{moduleId}/org-access
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/user/me/modules/{moduleId}/org-access \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea una 'richiesta di collegamento' da parte di un utente finale, che chiede di 'unirsi' a una struttura.
Parametri
body `string` (obbligatorio) Oggetto JSON del nuovo club da aggiungere al sistema.Endpoint
POST /api/user/linkclub
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/user/linkclub \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca tutte le strutture autorizzate per l'utente.
Endpoint
GET /api/user/listauthorised
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/user/listauthorised \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Invia l'OTP su due canali (email + SMS)
Invia codici OTP sia all'indirizzo email dell'utente sia a un numero di telefono specificato. Usato per operazioni ad alta sicurezza, come la prima verifica di un numero di telefono. Questo endpoint invia solo gli OTP e non modifica alcun dato dell'utente.
Corpo della richiesta
Endpoint
POST /api/user/send-dual-otp
Richiesta di esempio
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 '{}'
Risposta
{}
Invia l'OTP al numero di telefono o all'email
Invia un codice OTP al numero di telefono (SMS) o all'indirizzo email dell'utente per la verifica
Corpo della richiesta
Endpoint
POST /api/user/send-otp
Richiesta di esempio
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 '{}'
Risposta
{}
Verifica se l'utente ha un accesso valido alle pagine sensibili
Restituisce se l'utente ha una sessione verificata tramite OTP valida per accedere alle pagine sensibili
Endpoint
GET /api/user/sensitive-page-access
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/user/sensitive-page-access \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Verifica l'OTP e concedi l'accesso alle pagine sensibili
Verifica il codice OTP e, se valido, concede l'accesso alle pagine sensibili per 1 ora
Corpo della richiesta
Endpoint
POST /api/user/sensitive-page-access/verify
Richiesta di esempio
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 '{}'
Risposta
{}
Revoca l'accesso alle pagine sensibili (disconnessione dalle pagine sensibili)
Revoca la sessione corrente di accesso alle pagine sensibili dell'utente
Endpoint
POST /api/user/sensitive-page-access/revoke
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/user/sensitive-page-access/revoke \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Abilita o disabilita la 2FA
Abilita o disabilita l'autenticazione a due fattori per l'utente. Richiede il numero di telefono e la verifica OTP.
Corpo della richiesta
Endpoint
POST /api/user/toggle-2fa
Richiesta di esempio
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 '{}'
Risposta
{}
Aggiorna il proprio profilo utente
Consente a un utente di aggiornare le informazioni del proprio profilo (nome, cognome, numero di telefono). Quando si aggiunge un numero di telefono per la prima volta, è richiesta la verifica OTP su due canali (codici sia via email sia via SMS). Quando si modifica un numero di telefono esistente, è richiesto solo l'OTP via email.
Corpo della richiesta
Endpoint
PATCH /api/user/update-profile
Richiesta di esempio
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 '{}'
Risposta
{}
Recupera un'icona in base all'URL.
Endpoint
GET /api/website-icon
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/website-icon \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca i modelli di voce del password vault
Parametri
organisationId `string` (facoltativo) Contesto dell'organizzazione per i controlli di accesso ai moduliEndpoint
GET /api/vault/templates
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/vault/templates \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca le voci visibili del password vault
Parametri
organisationId `string` (obbligatorio) scope `string` (facoltativo)Endpoint
GET /api/vault/entries
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/vault/entries \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea una voce del password vault
Endpoint
POST /api/vault/entries
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/vault/entries \
-H "x-api-key: YOUR_API_KEY"
Ottieni una voce del password vault senza i valori segreti in chiaro
Parametri
entryId `string` (obbligatorio) organisationId `string` (obbligatorio)Endpoint
GET /api/vault/entries/{entryId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/vault/entries/{entryId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Aggiorna una voce del password vault
Endpoint
PUT /api/vault/entries/{entryId}
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/vault/entries/{entryId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elimina una voce del password vault
Endpoint
DELETE /api/vault/entries/{entryId}
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/vault/entries/{entryId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Mostra i campi nascosti o segreti selezionati
Endpoint
POST /api/vault/entries/{entryId}/reveal
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/vault/entries/{entryId}/reveal \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca i riepiloghi delle cartelle del password vault
Endpoint
GET /api/vault/folders
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/vault/folders \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca le voci con codici di autenticazione
Endpoint
GET /api/vault/authenticator
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/vault/authenticator \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca i tipi di nodo dei workflow registrati
Endpoint
GET /api/workflow-engine/node-types
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/node-types \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ottieni la proiezione degli orari della struttura usata dai blocchi dei workflow
Parametri
facilityId `string` (obbligatorio)Endpoint
GET /api/workflow-engine/facility-hours/{facilityId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/facility-hours/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Anteprima del mittente delle email dei workflow con il brand della struttura
Parametri
facilityId `string` (obbligatorio)Endpoint
GET /api/workflow-engine/email-branding/{facilityId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/email-branding/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca le risorse della struttura per la configurazione dei trigger
Parametri
facilityId `string` (obbligatorio) resourceType `string` (obbligatorio)Endpoint
GET /api/workflow-engine/resources/{facilityId}/{resourceType}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/resources/{facilityId}/{resourceType} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca i workflow di una struttura
Parametri
facilityId `string` (obbligatorio)Endpoint
GET /api/workflow-engine/workflows/{facilityId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea una bozza di workflow da un grafo non vuoto
L'editor mantiene un nuovo workflow in locale finché non contiene almeno un blocco, quindi il primo salvataggio lo crea insieme al grafo in un'unica chiamata. Un corpo senza `nodes` viene rifiutato invece di essere salvato.
Parametri
facilityId `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/workflow-engine/workflows/{facilityId}
Richiesta di esempio
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 '{}'
Risposta
{}
Elenca le credenziali che i workflow di una struttura possono usare
Restituisce le credenziali della struttura più quelle condivise a livello di brand o di organizzazione. I segreti non vengono mai restituiti; `hasValue` indica solo che ne è salvato uno.
Parametri
facilityId `string` (obbligatorio)Endpoint
GET /api/workflow-engine/credentials/{facilityId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/credentials/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea una credenziale per i workflow
Il livello di ambito deriva da `scopeType`; gli ID di brand e organizzazione vengono ricavati dalla struttura anziché accettati dal chiamante.
Parametri
facilityId `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/workflow-engine/credentials/{facilityId}
Richiesta di esempio
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 '{}'
Impostazioni dei workflow a livello di struttura (destinatari delle notifiche di errore)
Parametri
facilityId `string` (obbligatorio)Endpoint
GET /api/workflow-engine/facility-settings/{facilityId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/facility-settings/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Salva i destinatari delle notifiche di errore a livello di struttura
Parametri
facilityId `string` (obbligatorio)Corpo della richiesta
Endpoint
PUT /api/workflow-engine/facility-settings/{facilityId}
Richiesta di esempio
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 '{}'
Risposta
{}
Sostituisci una credenziale per i workflow
Un `secret` vuoto mantiene quello salvato, così una credenziale può essere rinominata senza reinserirlo. Non è possibile rileggere un segreto.
Parametri
facilityId `string` (obbligatorio) credentialId `string` (obbligatorio)Endpoint
PUT /api/workflow-engine/credentials/{facilityId}/{credentialId}
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/workflow-engine/credentials/{facilityId}/{credentialId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elimina una credenziale per i workflow
I nodi che vi fanno riferimento falliscono in modo sicuro alla chiamata successiva, anche nei workflow già pubblicati, perché uno snapshot salva solo il riferimento.
Parametri
facilityId `string` (obbligatorio) credentialId `string` (obbligatorio)Endpoint
DELETE /api/workflow-engine/credentials/{facilityId}/{credentialId}
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/workflow-engine/credentials/{facilityId}/{credentialId} \
-H "x-api-key: YOUR_API_KEY"
Ottieni l'URL del webhook di un trigger del workflow
Parametri
facilityId `string` (obbligatorio) workflowId `string` (obbligatorio) nodeId `string` (obbligatorio)Endpoint
GET /api/workflow-engine/workflows/{facilityId}/{workflowId}/nodes/{nodeId}/webhook
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/nodes/{nodeId}/webhook \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Ruota l'URL del webhook di un trigger del workflow
Invalida immediatamente l'URL precedente.
Parametri
facilityId `string` (obbligatorio) workflowId `string` (obbligatorio) nodeId `string` (obbligatorio)Endpoint
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/nodes/{nodeId}/webhook/rotate
Richiesta di esempio
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"
Risposta
{}
Ottieni un workflow tramite ID
Parametri
facilityId `string` (obbligatorio) workflowId `string` (obbligatorio)Endpoint
GET /api/workflow-engine/workflows/{facilityId}/{workflowId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea o aggiorna una bozza di workflow
Parametri
facilityId `string` (obbligatorio) workflowId `string` (obbligatorio)Corpo della richiesta
Endpoint
PUT /api/workflow-engine/workflows/{facilityId}/{workflowId}
Richiesta di esempio
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 '{}'
Risposta
{}
Aggiorna il nome e/o la descrizione del workflow
Parametri
facilityId `string` (obbligatorio) workflowId `string` (obbligatorio)Corpo della richiesta
Endpoint
PATCH /api/workflow-engine/workflows/{facilityId}/{workflowId}
Richiesta di esempio
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 '{}'
Risposta
{}
Elimina un workflow e le sue versioni
Parametri
facilityId `string` (obbligatorio) workflowId `string` (obbligatorio)Endpoint
DELETE /api/workflow-engine/workflows/{facilityId}/{workflowId}
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Duplica un workflow in una nuova bozza inattiva
Parametri
facilityId `string` (obbligatorio) workflowId `string` (obbligatorio)Endpoint
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/duplicate
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/duplicate \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Pubblica la bozza corrente (snapshot di versione immutabile)
Parametri
facilityId `string` (obbligatorio) workflowId `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/publish
Richiesta di esempio
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 '{}'
Risposta
{}
Ripristina la bozza all'ultima versione pubblicata
Parametri
facilityId `string` (obbligatorio) workflowId `string` (obbligatorio)Endpoint
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/discard
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/discard \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Abilita o disabilita un workflow
Parametri
facilityId `string` (obbligatorio) workflowId `string` (obbligatorio)Corpo della richiesta
Endpoint
PATCH /api/workflow-engine/workflows/{facilityId}/{workflowId}/active
Richiesta di esempio
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 '{}'
Risposta
{}
Genera o rivedi il grafo di un workflow con l'AI
Parametri
facilityId `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/workflow-engine/generate/{facilityId}
Richiesta di esempio
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 '{}'
Risposta
{}
Elenca i modelli su cui un nodo Agent può essere eseguito per questa struttura
Parametri
facilityId `string` (obbligatorio)Endpoint
GET /api/workflow-engine/agent-models/{facilityId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/agent-models/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca gli strumenti MCP che un nodo Agent può collegare per questa struttura
Parametri
facilityId `string` (obbligatorio)Endpoint
GET /api/workflow-engine/agent-tools/{facilityId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/agent-tools/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Cerca le conversazioni salvate dell'agente di questa struttura (associazioni della chiave di conversazione)
Parametri
facilityId `string` (obbligatorio) deviceId `string` (facoltativo) Limita alle conversazioni di un solo dispositivo Agent (il deviceId configurato nel nodo) q `string` (facoltativo) Corrispondenza di sottostringa, senza distinzione tra maiuscole e minuscole, sulla chiave di conversazione, sull'ID di sessione o sul nome del dispositivo limit `integer` (facoltativo) offset `integer` (facoltativo)Endpoint
GET /api/workflow-engine/agent-conversations/{facilityId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/agent-conversations/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Cerca le conversazioni conservate sul dispositivo Agent della struttura
Elenca le sessioni del dispositivo (le conversazioni nella barra laterale dell'interfaccia dell'agente), così un workflow può continuare una conversazione esistente con il suo contesto. La cronologia appartiene al dispositivo; quando la struttura ha più dispositivi, `deviceId` indica quale usare (il dispositivo configurato nel nodo). Dispositivo irraggiungibile → 502.
Parametri
facilityId `string` (obbligatorio) deviceId `string` (facoltativo) Il dispositivo Agent configurato nel nodo; omettilo per usare l'unico dispositivo della struttura q `string` (facoltativo) Corrispondenza di sottostringa, senza distinzione tra maiuscole e minuscole, sul titolo o sull'ID della sessione limit `integer` (facoltativo) offset `integer` (facoltativo)Endpoint
GET /api/workflow-engine/agent-device-sessions/{facilityId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/agent-device-sessions/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Cerca le bacheche nel kanban del dispositivo Agent della struttura
Alimenta il selettore Board ID del blocco Agent: Kanban. Corrispondenza di sottostringa, senza distinzione tra maiuscole e minuscole, sul nome o sullo slug della bacheca; `current` è lo slug della bacheca attiva del dispositivo, così il selettore delle attività può usarlo come ambito predefinito. Quando la struttura ha più dispositivi, `deviceId` indica quale usare. Dispositivo irraggiungibile → 502.
Parametri
facilityId `string` (obbligatorio) deviceId `string` (facoltativo) Il dispositivo Agent configurato nel nodo; omettilo per usare l'unico dispositivo della struttura q `string` (facoltativo) Corrispondenza di sottostringa, senza distinzione tra maiuscole e minuscole, sul nome o sullo slug della bacheca limit `integer` (facoltativo) offset `integer` (facoltativo)Endpoint
GET /api/workflow-engine/kanban-boards/{facilityId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/kanban-boards/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Cerca le attività di una bacheca nel kanban del dispositivo Agent della struttura
Alimenta il selettore Task ID del blocco Agent: Kanban. Corrispondenza di sottostringa, senza distinzione tra maiuscole e minuscole, sull'ID, sul titolo o sul corpo dell'attività; le attività sono gestite per bacheca (il dispositivo non supporta la ricerca su più bacheche), quindi `board` delimita il recupero: omettilo per usare la bacheca attiva del dispositivo. Dispositivo irraggiungibile → 502.
Parametri
facilityId `string` (obbligatorio) deviceId `string` (facoltativo) Il dispositivo Agent configurato nel nodo; omettilo per usare l'unico dispositivo della struttura board `string` (facoltativo) Lo slug della bacheca da elencare; omettilo per usare la bacheca attiva del dispositivo q `string` (facoltativo) Corrispondenza di sottostringa, senza distinzione tra maiuscole e minuscole, sull'ID, sul titolo o sul corpo dell'attività limit `integer` (facoltativo) offset `integer` (facoltativo)Endpoint
GET /api/workflow-engine/kanban-tasks/{facilityId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/kanban-tasks/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca i modelli di workflow selezionati, filtrati per questa struttura
Parametri
facilityId `string` (obbligatorio)Endpoint
GET /api/workflow-engine/templates/{facilityId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/templates/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea un frammento di grafo da un modello per la bozza aperta
Parametri
facilityId `string` (obbligatorio) templateId `string` (obbligatorio)Endpoint
POST /api/workflow-engine/templates/{facilityId}/{templateId}
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/templates/{facilityId}/{templateId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Contesto del selettore di ambito per la pagina di amministrazione dei modelli (livelli amministrativi)
Endpoint
GET /api/workflow-engine/template-admin/context
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/template-admin/context \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Elenca i modelli che il chiamante può amministrare, con i flag di autorizzazione
Endpoint
GET /api/workflow-engine/template-admin
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/template-admin \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Crea un modello (livelli amministrativi)
Corpo della richiesta
Endpoint
POST /api/workflow-engine/template-admin
Richiesta di esempio
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 '{}'
Dettagli del modello, grafo incluso, per l'editor amministrativo
Endpoint
GET /api/workflow-engine/template-admin/{templateId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/template-admin/{templateId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Sostituisci un modello (organizzazione proprietaria)
Endpoint
PUT /api/workflow-engine/template-admin/{templateId}
Richiesta di esempio
curl -X PUT https://portal.hub.gymsystems.co/api/workflow-engine/template-admin/{templateId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Eliminazione reversibile di un modello (organizzazione proprietaria)
Endpoint
DELETE /api/workflow-engine/template-admin/{templateId}
Richiesta di esempio
curl -X DELETE https://portal.hub.gymsystems.co/api/workflow-engine/template-admin/{templateId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Duplica un modello visibile in un ambito di destinazione che il chiamante può usare
Corpo della richiesta
Endpoint
POST /api/workflow-engine/template-admin/{templateId}/duplicate
Richiesta di esempio
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 '{}'
Esegui il grafo pubblicato di un workflow da un trigger manuale
Parametri
facilityId `string` (obbligatorio) workflowId `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/run
Richiesta di esempio
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 '{}'
Risposta
{}
Testa la bozza salvata senza pubblicarla
Esegue il grafo della bozza corrente e registra il risultato con `mode: test` e senza `versionId`. La pubblicazione, il flag live e `publishedVersionId` non vengono mai modificati. Gli effetti collaterali sono simulati per impostazione predefinita; `sideEffects: live` richiede inoltre `confirmLiveSideEffects: true`.
Parametri
facilityId `string` (obbligatorio) workflowId `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/test
Richiesta di esempio
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 '{}'
Risposta
{}
Testa un nodo del workflow consentito
Esegue un nodo testabile in modo indipendente dalla bozza salvata. I valori delle variabili possono essere forniti dai passaggi di esecuzioni registrate. I metodi HTTP che apportano modifiche richiedono una conferma esplicita.
Parametri
facilityId `string` (obbligatorio) workflowId `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/test-node
Richiesta di esempio
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 '{}'
Risposta
{}
Elenca le esecuzioni recenti di un workflow
Parametri
facilityId `string` (obbligatorio) workflowId `string` (obbligatorio)Endpoint
GET /api/workflow-engine/workflows/{facilityId}/{workflowId}/runs
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/runs \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Leggi un'esecuzione (stato + passaggi in ordine)
Parametri
facilityId `string` (obbligatorio) workflowId `string` (obbligatorio) executionId `string` (obbligatorio)Endpoint
GET /api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Annulla il Delay in sospeso su cui è ferma un'esecuzione in attesa
Parametri
facilityId `string` (obbligatorio) workflowId `string` (obbligatorio) executionId `string` (obbligatorio)Endpoint
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId}/cancel
Richiesta di esempio
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId}/cancel \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Riesegui un'esecuzione completata a partire dal payload del trigger registrato
`mode: published` riesegue esattamente la versione a cui era fissata l'esecuzione originale, con effetti collaterali reali. `mode: draft-test` riesegue la bozza corrente come test simulato. Un'esecuzione il cui payload del trigger è stato troncato in scrittura non può essere rieseguita.
Parametri
facilityId `string` (obbligatorio) workflowId `string` (obbligatorio) executionId `string` (obbligatorio)Corpo della richiesta
Endpoint
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId}/retry
Richiesta di esempio
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 '{}'
Risposta
{}
Ricerca indicizzata dei workflow che contengono un tipo di nodo
Parametri
nodeType `string` (obbligatorio) facilityId `string` (facoltativo) organisationId `string` (facoltativo)Endpoint
GET /api/workflow-engine/master-view/{nodeType}
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/master-view/{nodeType} \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Proxy di reindirizzamento OAuth white-label (Connected Apps)
Reindirizzamento 302 pubblico e non autenticato che inoltra la callback di un provider OAuth alla callback di autenticazione della piattaforma di strumenti a monte, mantenendo la stringa di query. Consente alle app OAuth di proprietà di PH di registrare un URI di reindirizzamento performancehub.co, così il dominio del fornitore a monte non compare mai nella barra degli indirizzi (necessario per il futuro progetto di app OAuth personalizzate; innocuo con l'autenticazione gestita).
Endpoint
GET /guest/connected-apps/oauth-callback
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/guest/connected-apps/oauth-callback \
-H "x-api-key: YOUR_API_KEY"
Pagina finale della catena di connessione (Connected Apps)
Pagina leggera "puoi chiudere questa finestra" per la scheda OAuth in cui è stata eseguita una catena di connessione. Invia il risultato (suite/toolkit connesso + ID dei nuovi account, oppure il toolkit non riuscito) alla scheda del marketplace tramite window.opener.postMessage sulla stessa origine; se il collegamento con la finestra di origine è stato interrotto, ricorre a un deep link all'applet ph-ai-agent che riproduce la pagina di arrivo nell'app. Solo informativa: non contiene segreti e non esegue scritture.
Parametri
connected `string` (facoltativo) ID della suite o slug del toolkit che ha completato la connessione (caso di successo). accounts `string` (facoltativo) ID degli account connessi creati dalla catena, separati da virgole. connectError `string` (facoltativo) Slug del toolkit il cui passaggio non è riuscito (caso di errore).Endpoint
GET /guest/connected-apps/finish
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/guest/connected-apps/finish \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}
Callback di concatenamento della connessione della suite (Connected Apps)
Passaggio di callback OAuth per il flusso di connessione della suite con un clic. Il JWT di stato firmato (HS256, TTL di 30 minuti) codifica { clubID, deviceId, suite, toolkits, step, caids }: gli account si connettono a quel singolo dispositivo agente e caids accumula gli ID degli account creati a ogni passaggio (il reindirizzamento finale all'applet li trasporta, così il marketplace può proporre di etichettare i nuovi account). Contrassegna come connesso il toolkit del passaggio, quindi reindirizza con 302 al Connect Link del toolkit successivo oppure, al termine della suite, alla pagina dell'applet ph-ai-agent (con deep link all'agente). Le connessioni di un singolo toolkit passano dallo stesso gestore con una suite di un solo toolkit.
Parametri
state `string` (obbligatorio) JWT di stato firmato della catena di connessione.Endpoint
GET /guest/connected-apps/connect-next
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/guest/connected-apps/connect-next \
-H "x-api-key: YOUR_API_KEY"
Attiva l'email di impostazione della password
Convalida il link firmato di un'email di benvenuto, invia un'email di reimpostazione della password e mostra una pagina di conferma. Non richiede autenticazione.
Parametri
email `string` (obbligatorio) Indirizzo email dell'utente sig `string` (obbligatorio) Firma HMAC dell'emailEndpoint
GET /guest/setup-password
Richiesta di esempio
curl -X GET https://portal.hub.gymsystems.co/guest/setup-password \
-H "x-api-key: YOUR_API_KEY"
Risposta
{}