Introdução
Boas-vindas à API do Performance Hub. Esta API gerencia os dados do clube e os principais sistemas que se integram ao seu clube e aos sistemas externos dele, e não é uma API de consumo público. Para mais informações sobre como usar os diversos sistemas do Performance Hub compatíveis com esta API, consulte a entrada do sistema desejado na [documentação do Performance Hub](https://docs.performancehub.co).
URL base
https://portal.hub.gymsystems.co
Autenticação
Os detalhes de autenticação serão fornecidos quando sua integração for aprovada.
Evento "turno do agente concluído" informado pelo dispositivo (gatilho de web push)
Chamado pelo sidecar de um dispositivo de Agente de IA pareado (nunca por navegadores) quando uma execução do agente iniciada pela interface web termina e durou mais que o limite de notificação do dispositivo. Autenticado com um JWT HS256 de curta duração por dispositivo (aud 'events'). Deduplicado por dispositivo+sessão+início e com limite de taxa por dispositivo; depois, é entregue às assinaturas de push HTML5 do usuário que iniciou, com um link direto para a conversa.
Corpo da solicitação
Endpoint
POST /ai/events/agent-turn-complete
Exemplo de solicitação
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 '{}'
Resposta
{}
Notificação push iniciada pelo agente (skill ph-notify)
Chamado pelo sidecar de um dispositivo de Agente de IA pareado em nome do agente no dispositivo (a skill ph-notify) para enviar uma notificação arbitrária ao navegador e aos dispositivos móveis de um usuário. Autenticado com um JWT HS256 de curta duração por dispositivo (aud 'events'). O usuário de destino precisa ter acesso ao dispositivo (política de acesso por agente); quando omitido, a notificação vai para o proprietário do dispositivo. Limite de taxa por dispositivo, separado dos eventos de turno concluído.
Corpo da solicitação
Endpoint
POST /ai/events/agent-notify
Exemplo de solicitação
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 '{}'
Resposta
{}
Enviar uma imagem de notificação (skill ph-notify)
Aceita o corpo bruto de uma imagem de um dispositivo pareado (JWT aud 'events') e o armazena no bucket público notify-media sob uma chave UUID impossível de adivinhar. Os objetos são excluídos automaticamente após 7 dias (ciclo de vida do S3). Retorna a URL https pública para uso como `imageUrl` em /ai/events/agent-notify. Limite de 5 MB; somente png/jpeg/gif/webp.
Corpo da solicitação
Endpoint
POST /ai/media/notify-image
Exemplo de solicitação
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 '{}'
Resposta
{}
Relay MCP do dispositivo para Connected Apps (ferramentas SaaS externas)
Endpoint MCP HTTP com streaming para dispositivos de Agente de IA emparelhados (servidor MCP "connected_apps" no listener :8790 do sidecar do dispositivo). Autenticado com um JWT HS256 de curta duração por dispositivo (aud 'mcp', a mesma credencial de /mcp) e controlado pelo sinalizador de ativação de Connected Apps do AGENTE (as conexões são por dispositivo de agente, não por instalação). As solicitações são transmitidas para o servidor MCP da sessão da plataforma de ferramentas upstream do próprio agente, com os cabeçalhos da sessão injetados no servidor; as credenciais upstream nunca chegam ao dispositivo. Os nomes das ferramentas e a marca do fornecedor recebem white-label nos dois sentidos durante o trânsito. Um 401/410 upstream (sessão expirada) dispara uma recriação da sessão + uma nova tentativa.
Endpoint
POST /mcp/apps
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/mcp/apps \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Pesquisar registros de auditoria da API (acesso ao módulo IAM & Admin)
Pesquise e filtre os registros de acesso à API com recursos de filtragem avançados. Os usuários só veem registros das organizações às quais têm acesso.
Parâmetros
organisationId `string` (opcional) ID da organização para verificação de ACL (obrigatório)Corpo da solicitação
Endpoint
POST /api/admin/audit-logs/search
Exemplo de solicitação
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 '{}'
Resposta
{}
Obter estatísticas de registros de auditoria em cache no Redis (acesso ao módulo IAM & Admin)
Recupera estatísticas agregadas do cache do Redis para carregamento instantâneo do painel
Parâmetros
timeWindow `string` (opcional) Janela de tempo das estatísticas (padrão: 12h)Endpoint
GET /api/admin/audit-logs/statistics-cached
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/admin/audit-logs/statistics-cached \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obter estatísticas de registros de auditoria (acesso ao módulo IAM & Admin)
Recupera estatísticas agregadas para o painel. Limitado às organizações do usuário.
Parâmetros
startTime `number` (opcional) Hora de início (timestamp Unix); padrão: 24 horas atrás endTime `number` (opcional) Hora de término (timestamp Unix); padrão: agoraEndpoint
GET /api/admin/audit-logs/statistics
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/admin/audit-logs/statistics \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obter dados de séries temporais dos registros de auditoria (acesso ao módulo IAM & Admin)
Recupera dados de séries temporais agrupados em intervalos para visualizar a linha do tempo das solicitações
Parâmetros
timeWindow `string` (opcional) Janela de tempo dos dados de séries temporais: - 1h: última 1 hora (blocos de 10 minutos) - 12h: últimas 12 horas (blocos de 10 minutos) - 24h: últimas 24 horas (blocos de 10 minutos) - 7d: últimos 7 dias (blocos de 1 hora) - 14d: últimos 14 dias (blocos de 1 hora)Endpoint
GET /api/admin/audit-logs/timeseries
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/admin/audit-logs/timeseries \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obter as organizações às quais o usuário tem acesso nos registros de auditoria (acesso ao módulo IAM & Admin)
Retorna a lista de organizações cujos registros de auditoria o usuário atual pode visualizar
Endpoint
GET /api/admin/audit-logs/user-organisations
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/admin/audit-logs/user-organisations \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
A chamada inicial para criar um novo clube. Observe que apenas o objeto de clube 'modelo' é criado; depois, é necessária uma segunda solicitação à API para atualizar o clube com seus dados, como horário de funcionamento, localização, URLs de redes sociais etc.
Parâmetros
body `string` (obrigatório) Objeto JSON do novo clube a ser adicionado ao sistema.Endpoint
POST /api/admin/clubs/addclub
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/admin/clubs/addclub \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Adiciona um novo usuário ao sistema
Parâmetros
body `string` (obrigatório) Objeto JSON dos dados do usuário que você deseja adicionar/atualizar.Endpoint
POST /api/users
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/users \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Lista todos os usuários (contas do Google Apps) que têm acesso ao sistema/API de backoffice
Endpoint
GET /api/admin/users/listusers
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/admin/users/listusers \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Lista as chaves MCP de um usuário (ocultadas). Os usuários podem listar as próprias chaves.
Parâmetros
userId `string` (obrigatório)Endpoint
GET /api/users/{userId}/mcp-keys
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/users/{userId}/mcp-keys \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Cria uma nova chave de API MCP para um usuário. Os usuários podem criar as próprias chaves.
Parâmetros
userId `string` (obrigatório) body `object` (opcional)Endpoint
POST /api/users/{userId}/mcp-keys
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/users/{userId}/mcp-keys \
-H "x-api-key: YOUR_API_KEY"
Revoga/remove uma chave de API MCP. Os usuários podem excluir as próprias chaves.
Parâmetros
userId `string` (obrigatório) keyId `string` (obrigatório)Endpoint
DELETE /api/users/{userId}/mcp-keys/{keyId}
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/users/{userId}/mcp-keys/{keyId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Remover uma função de um usuário
Parâmetros
userId `string` (opcional) O e-mail do usuário do qual você deseja remover a função. roleId `string` (opcional) O ID da função que você deseja remover do usuário.Endpoint
DELETE /api/users/{userId}/roles/{roleId}
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/users/{userId}/roles/{roleId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualiza os detalhes do perfil de um usuário existente (firstName, lastName, phoneNumber)
Parâmetros
userId `string` (obrigatório) Endereço de e-mail do usuário body `object` (obrigatório) Dados do perfil do usuário a atualizarEndpoint
PATCH /api/users/{userId}
Exemplo de solicitação
curl -X PATCH https://portal.hub.gymsystems.co/api/users/{userId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Criar ou atualizar uma função de usuário
Parâmetros
body `object` (opcional)Endpoint
PUT /api/users/{userId}/roles
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/users/{userId}/roles \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Live Services em execução no Agente de IA de uma instalação (seletor de publicação)
Busca pelo túnel os Live Services do dispositivo detectados pela bridge para o seletor "Publish to Performance Hub" do applet. Requer o módulo ph-ai-agent E acesso 'open' por dispositivo (o mesmo requisito da própria publicação). Cada serviço é anotado com publishedAppId quando já existe um Custom App para a porta dele.
Parâmetros
club `string` (obrigatório) device `string` (obrigatório)Endpoint
GET /api/agent-apps/services/{club}/{device}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/services/{club}/{device} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Índice de nomes de ícones MDI incorporado ao Agente de IA de uma instalação (seletor de ícones)
Faz proxy, pelo túnel, do índice de ícones MDI incorporado à bridge do dispositivo (GET /__services/icons/mdi/index.json). O seletor de publicação/edição usa o catálogo incluído no applet (mesma versão fixada 7.4.47); os SVGs dos apps publicados são resolvidos a partir do pacote @mdi/js local do portal-server. Mesmo requisito de acesso do seletor de serviços (módulo ph-ai-agent + acesso 'open' por dispositivo).
Parâmetros
club `string` (obrigatório) device `string` (obrigatório)Endpoint
GET /api/agent-apps/mdi-index/{club}/{device}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/mdi-index/{club}/{device} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Buscar um lote de SVGs de ícones MDI do Agente de IA de uma instalação (prévias do seletor)
Resolve até 60 glifos MDI nomeados do conjunto de ícones incorporado ao dispositivo em uma única chamada, sanitizados no servidor com a mesma lista de permissões aplicada aos ícones de apps persistidos. Usado pelo seletor de ícones para exibir os resultados da pesquisa; nomes desconhecidos retornam null.
Parâmetros
club `string` (obrigatório) device `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/agent-apps/mdi-icons/{club}/{device}
Exemplo de solicitação
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 '{}'
Resposta
{}
Escopos de público para os quais o solicitante pode publicar a partir desta instalação
O limite de público que o publicador pode conceder no seletor de publicação/edição: as instalações alcançadas pelas funções ph-ai-agent dele (escopo de várias instalações) e se ele tem o nível de organização necessário para públicos de toda a marca / toda a organização na marca/organização desta instalação. As mesmas regras são aplicadas novamente no servidor ao publicar/atualizar (validatePublishAudience); este endpoint apenas molda a interface.
Parâmetros
club `string` (obrigatório)Endpoint
GET /api/agent-apps/audience-options/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/audience-options/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Preenchimento automático de colegas para um público de app com usuários nomeados
Pesquisa SOMENTE os usuários que o solicitante já pode ver: pessoas cujas funções coincidem com pelo menos uma instalação/região/organização do próprio acesso ph-ai-agent do solicitante. Uma consulta mínima de 2 caracteres e um limite de 10 resultados tornam o endpoint inútil para scraping; o mesmo conjunto de alcance é aplicado novamente no servidor quando o público é salvo.
Parâmetros
club `string` (obrigatório) q `string` (obrigatório)Endpoint
GET /api/agent-apps/user-search/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/user-search/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Publicar um Live Service do Agente de IA como Custom App do Performance Hub
Registra um web app hospedado pelo Agente de IA da instalação (um Live Service detectado pela bridge) como item do menu lateral "Custom Apps" para o público escolhido. Requer o módulo ph-ai-agent nesta instalação E acesso 'open' por dispositivo; o público é limitado pelos escopos das funções do próprio publicador (você nunca pode publicar além do que alcança). A identidade do serviço é resolvida AO VIVO a partir da lista /__services do dispositivo; o esquema http/https nunca é persistido.
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/agent-apps/publish/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Custom Apps publicados visíveis nesta instalação
Retorna os apps publicados ativos cujo público abrange esta instalação, no formato que o menu lateral exibe (appId, name, icon, description). O público é resolvido novamente ao vivo a cada chamada, para que as alterações de acesso entrem em vigor imediatamente.
Parâmetros
club `string` (obrigatório)Endpoint
GET /api/agent-apps/menu/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/menu/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Apps publicados gerenciados a partir desta instalação (visão do publicador)
Linhas completas dos apps cuja instalação PRINCIPAL é este clube, para a lista de gerenciamento "Published Apps" do applet. Cada linha é anotada com canManage para o usuário solicitante (publicador).
Parâmetros
club `string` (obrigatório)Endpoint
GET /api/agent-apps/manage/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/manage/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Emitir um token de visualização restrito ao serviço para um Custom App publicado
Retorna uma URL assinada de curta duração + token que o navegador usa para abrir UM app publicado diretamente no gateway de retransmissão regional do dispositivo. O token contém uma claim svc com a porta do serviço, então o gateway restringe a sessão a /__services/proxy/
Parâmetros
club `string` (obrigatório) appId `string` (obrigatório)Endpoint
POST /api/agent-apps/access/{club}/{appId}
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/agent-apps/access/{club}/{appId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atribuição de suporte de um Custom App publicado (contato do proprietário)
Quem dá suporte a este app publicado por um usuário: o e-mail do publicador (ou, na falta dele, o proprietário do agente que o hospeda). Exibido nos painéis de offline/erro do visualizador para que as solicitações de suporte vão para o proprietário do app, e não para o Performance Hub; apps publicados não fazem parte do suporte principal do PH. O público do app é verificado novamente primeiro; visualizadores com quem o app nunca foi compartilhado não recebem nenhuma informação. Apps pausados ainda são resolvidos (os proprietários também respondem a perguntas do tipo "por que está pausado?").
Parâmetros
club `string` (obrigatório) appId `string` (obrigatório)Endpoint
GET /api/agent-apps/support-info/{club}/{appId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/support-info/{club}/{appId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Enviar por e-mail uma solicitação de suporte ao proprietário de um Custom App publicado
Envia a mensagem do visualizador ao contato de suporte do app (o publicador ou, na falta dele, o proprietário do agente) como um e-mail com a marca: Para o proprietário, CC para o visualizador (como registro da solicitação) e Responder para o visualizador, para que o proprietário responda diretamente a ele. Os apps publicados são mantidos pelos usuários, então isso mantém o suporte deles fora da fila do Performance Hub. O público é verificado novamente; uma solicitação por visualizador por app a cada 15 minutos (intervalo de espera no Redis, fail-open).
Parâmetros
club `string` (obrigatório) appId `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/agent-apps/support-request/{club}/{appId}
Exemplo de solicitação
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 '{}'
Resposta
{}
Atualizar um Custom App publicado (nome, ícone, descrição, status, público)
Somente o publicador. As alterações de público são validadas novamente em relação aos escopos das funções do EDITOR, com as mesmas regras de limite da publicação. O status alterna entre ativo e pausado (apps pausados somem dos menus e recusam emissões de token).
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/agent-apps/update/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Cancelar a publicação de um Custom App (exclusão lógica)
Somente o publicador. Faz a exclusão lógica da linha do registro: o app some dos menus imediatamente e as emissões de token para visualizadores são recusadas; as sessões de gateway já emitidas expiram quando o token expira.
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/agent-apps/unpublish/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Transferir a propriedade de um Custom App publicado
Espelha o fluxo de reatribuição de proprietário do Agente de IA: o publicador atual ou um proprietário da conta (módulo de faturamento) pode passar o app para outro usuário, que passa a gerenciá-lo. O novo proprietário precisa ter acesso à instalação no clube principal do app.
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/agent-apps/transfer-owner/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Relatório completo da verificação (+ revisão por LLM) de uma versão da skill
A lista completa de resultados de uma versão, somente para o publicador e os administradores da organização (revisões de aprovação); quem instala vê, em vez disso, as contagens resumidas nos detalhes da skill.
Parâmetros
club `string` (obrigatório) skillId `string` (obrigatório) version `string` (obrigatório)Endpoint
GET /api/agent-skills/scan-report/{club}/{skillId}/{version}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/scan-report/{club}/{skillId}/{version} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Enviar uma versão de rascunho da skill (publicar ou colocar na fila de aprovação)
Avança uma versão de rascunho conforme a governança da organização. Quando a organização optou pela revisão por LLM, a revisão das instruções é executada primeiro (melhor esforço; um veredito 'fail' rejeita e um veredito 'flag' força a fila de aprovação). Compartilhamentos no nível da instalação são publicados imediatamente, a menos que a governança exija aprovação; compartilhamentos na biblioteca da organização (público da marca/organização) exigem aprovação por padrão. A publicação define o latestVersion da skill; as instalações com política 'auto' o aplicam na próxima varredura de reconciliação.
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/agent-skills/submit/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Biblioteca de skills visível nesta instalação (filtrada por público)
Skills ativas com pelo menos uma versão publicada cujo público abrange esta instalação (ou nomeia o visualizador), anotadas com o resumo da última versão publicada e a adoção na organização (instalações distintas, nunca contagens brutas de instalações). O público é resolvido novamente ao vivo a cada chamada.
Parâmetros
club `string` (obrigatório)Endpoint
GET /api/agent-skills/library/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/library/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Detalhes da skill (versões, requisitos, resumo da verificação, adoção)
Detalhes completos de uma skill da biblioteca: histórico de versões com changelogs e resumos de verificação (as listas de endpoints por versão alimentam a comparação de verificação na atualização), requisitos declarados no manifesto, procedência do publicador e o indicador de adoção por número de instalações. O público é verificado novamente: visualizadores com quem a skill nunca foi compartilhada não recebem nenhuma informação (o publicador e os administradores da organização sempre a veem).
Parâmetros
club `string` (obrigatório) skillId `string` (obrigatório)Endpoint
GET /api/agent-skills/skill/{club}/{skillId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/skill/{club}/{skillId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Skills publicadas a partir desta instalação (lista de gerenciamento do publicador)
Linhas completas das skills cuja instalação PRINCIPAL é este clube, cada uma anotada com canManage para o usuário solicitante e com o resumo da versão mais recente (incluindo rascunhos e aprovações pendentes, pois esta é a visão de trabalho do publicador).
Parâmetros
club `string` (obrigatório)Endpoint
GET /api/agent-skills/manage/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/manage/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Instalar uma skill da biblioteca no Agente de IA de uma instalação
Controlado pela governança: o installSources da organização precisa permitir, o público da skill precisa abranger esta instalação (ou nomear o solicitante), a versão precisa estar publicada e o solicitante precisa atender ao nível whoCanInstall do dispositivo de destino (proprietário / usuário permitido / administrador da instalação / administrador da organização; consulte a governança). Grava a linha do ciclo de vida da instalação (a fonte da verdade) e faz um envio imediato em melhor esforço; o cron de reconciliação garante a entrega assim que o dispositivo estiver acessível.
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/agent-skills/install/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Aprovar uma atualização de skill pendente para uma instalação
Move o desiredVersion da instalação para a versão publicada mais recente (a etapa manual das políticas 'notify' e 'pinned', e o caminho quando a governança define updatePosture como 'approvalRequired'). Mantém a versão atual como destino de reversão em uma etapa e limpa qualquer fixação de atualização pós-reversão (skipVersion). Mesmo nível de permissão whoCanInstall da instalação.
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/agent-skills/update-approve/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Reverter uma skill instalada para a versão anterior
Define desiredVersion como o previousVersion da linha da instalação (mantido a cada mudança de versão) e deixa o caminho normal de entrega reinstalá-la. Em uma etapa: as versões são trocadas, então reverter duas vezes volta ao ponto de partida. Também fixa as atualizações (skipVersion = a versão da qual se reverteu) para que as políticas auto/notify mantenham a reversão; a fixação é limpa quando uma versão estritamente mais nova é publicada, em update-approve ou em set-policy.
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/agent-skills/rollback/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Desinstalar uma skill do Agente de IA de uma instalação
Marca a linha da instalação como pending-uninstall e envia o estado desejado; a linha é excluída assim que o dispositivo confirma a remoção (leitura de retorno da reconciliação). Mesmo nível de permissão whoCanInstall da instalação.
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/agent-skills/uninstall/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Definir a política de atualização por instalação de uma skill em um dispositivo
auto (a reconciliação aplica automaticamente as novas versões publicadas, a menos que o updatePosture da organização exija aprovação), notify (o proprietário é notificado uma vez por nova versão e a aplica manualmente) ou pinned (nunca muda sem um update-approve explícito). Alterar a política limpa qualquer fixação de atualização pós-reversão (skipVersion). Mesmo nível de permissão whoCanInstall da instalação.
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/agent-skills/set-policy/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Instalações de skills no Agente de IA de uma instalação (aba Skills)
As linhas do ciclo de vida das instalações de um dispositivo, cada uma anotada com os campos de listagem da skill e se existe uma versão publicada mais nova. Requer acesso 'open' por dispositivo (a aba Skills fica dentro do painel do agente).
Parâmetros
club `string` (obrigatório) device `string` (obrigatório)Endpoint
GET /api/agent-skills/installs/{club}/{device}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/installs/{club}/{device} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Versões de skills aguardando aprovação na organização desta instalação
A fila de aprovação dos administradores da organização: todas as versões com aprovação pendente nas skills da organização, com a listagem da skill e os resumos da verificação/LLM. Somente administradores da organização.
Parâmetros
club `string` (obrigatório)Endpoint
GET /api/agent-skills/approvals/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/approvals/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Aprovar uma versão de skill pendente (publica-a)
Somente administradores da organização. A versão passa a ser publicada, o latestVersion da skill é atualizado e o publicador é notificado. As instalações com política 'auto' aplicam a versão na próxima varredura de reconciliação.
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/agent-skills/approve/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Rejeitar uma versão de skill pendente
Somente administradores da organização. A versão passa a ser rejeitada com o motivo do revisor e o publicador é notificado; ele pode corrigir os problemas encontrados e enviar uma nova versão (as versões são imutáveis).
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/agent-skills/reject/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Governança de Agent Skills em vigor na organização desta instalação
A política armazenada da organização mesclada sobre os padrões da plataforma (uma organização sem linha armazenada vê apenas os padrões). Somente administradores da organização.
Parâmetros
club `string` (obrigatório)Endpoint
GET /api/agent-skills/governance/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/governance/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualizar a governança de Agent Skills na organização desta instalação
Atualização parcial: somente os campos informados mudam; todo o resto mantém o valor armazenado/padrão. Somente administradores da organização. As substituições por dispositivo ficam na linha de registro, por meio das rotas de configuração de dispositivo existentes.
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/agent-skills/governance/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Obter dados ambientais de uma instalação
Retorna as condições meteorológicas atuais, incluindo nascer/pôr do sol (via Open-Meteo), e a temperatura interna da instalação (dos sensores de Duress) do clube especificado. Armazenado em cache no Redis por 30 minutos.
Parâmetros
clubId `string` (obrigatório) ID interno do clube/instalaçãoEndpoint
GET /api/clubs/{clubId}/environment
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/environment \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Adiciona/associa um dispositivo IoT genérico a um clube.
Parâmetros
club `string` (obrigatório) ID interno do clube ao qual você deseja adicionar o dispositivo. body `string` (obrigatório) Objeto JSON da nova tela a associar.Endpoint
POST /api/devices/addGenericDevice/{club}
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/devices/addGenericDevice/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Remover e restaurar as configurações de fábrica de uma tela
Remove a associação ativa da tela com a instalação e programa uma restauração de fábrica persistente. Uma tela desligada aplica a restauração depois que for ligada e se reconectar, e então volta à página de pareamento HDMI. Os registros históricos de faturamento são mantidos.
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/devices/display-screens/reset/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Associa um controlador de porta a uma instalação.
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/devices/door-controllers/associate/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Atualiza as configurações do controlador de porta de uma instalação.
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/devices/door-controllers/update/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Desativa um controlador de porta de uma instalação.
Parâmetros
club `string` (obrigatório)Endpoint
POST /api/devices/door-controllers/decommission/{club}
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/devices/door-controllers/decommission/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a configuração dos relés de um controlador de porta.
Parâmetros
uuid `string` (obrigatório)Endpoint
GET /api/devices/door-controllers/config/{uuid}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/devices/door-controllers/config/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna os metadados do dispositivo
Parâmetros
uuid `string` (obrigatório) ID exclusivo do dispositivoEndpoint
GET /api/devices/metadata/{uuid}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/devices/metadata/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna os metadados do dispositivo. A resposta é a linha de metadados no nível superior (formato legado) mais `detectedType` (camera | ai-edge-processor | door-controller | ph-ai-agent | null) e `online` (true quando atualizado nos últimos 5 minutos).
Parâmetros
deviceSerialNumber `string` (obrigatório) Número de série do dispositivoEndpoint
GET /api/devices/metadata/serial/{serialNo}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/devices/metadata/serial/{serialNo} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna os dados de Smart Club do clube.
Parâmetros
club_id `string` (obrigatório) ID interno do clube ao qual você deseja adicionar o dispositivo.Endpoint
GET /api/clubs/{club_id}/smart-club-data
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club_id}/smart-club-data \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna todos os dispositivos associados a um clube específico.
Parâmetros
club `string` (obrigatório) ID interno do clube cujos dispositivos você deseja listar.Endpoint
GET /api/devices/list/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/devices/list/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna todas as versões de aplicativos para os nossos dispositivos balena.
Endpoint
GET /api/devices/listReleases
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/devices/listReleases \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Move um dispositivo para uma nova instalação (clube) e atualiza os sistemas relacionados.
Parâmetros
club `string` (obrigatório) ID da instalação de origem (clube atual do dispositivo) body `object` (obrigatório) Parâmetros da transferênciaEndpoint
POST /api/devices/move/{club}
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/devices/move/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Tenta estabelecer uma conexão com o roteador de uma instalação selecionando o melhor dispositivo do clube e enviando um comando MQTT para criar um túnel.
Parâmetros
facilityID `string` (obrigatório) ID interno da instalação com cujo roteador a conexão está sendo tentada.Endpoint
GET /api/devices/openRouterWebpage/{facilityID}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/devices/openRouterWebpage/{facilityID} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Catálogo de Cloud Agents (zonas, tamanhos, preços de venda ao vivo)
Parâmetros
club `string` (obrigatório)Endpoint
GET /api/devices/ph-ai-agent/cloud/catalog/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/catalog/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Fazer uma cotação de Cloud Agent (software + hospedagem)
Endpoint
POST /api/devices/ph-ai-agent/cloud/quote/{club}
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/quote/{club} \
-H "x-api-key: YOUR_API_KEY"
Iniciar um Cloud Agent (enfileirar provisionamento + associação automática)
Endpoint
POST /api/devices/ph-ai-agent/cloud/launch/{club}
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/launch/{club} \
-H "x-api-key: YOUR_API_KEY"
Status do job do Cloud Agent
Endpoint
GET /api/devices/ph-ai-agent/cloud/jobs/{club}/{jobId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/jobs/{club}/{jobId} \
-H "x-api-key: YOUR_API_KEY"
Eliminar um Cloud Agent (VM + balena + registro)
Endpoint
POST /api/devices/ph-ai-agent/cloud/delete/{club}
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/delete/{club} \
-H "x-api-key: YOUR_API_KEY"
Resolver uma remoção de Cloud Agent pendente (tentar o backup novamente, excluir sem backup ou cancelar)
Endpoint
POST /api/devices/ph-ai-agent/cloud/delete-decision/{club}
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/delete-decision/{club} \
-H "x-api-key: YOUR_API_KEY"
Listar os Connected Apps de um agente (suítes + apps com contas conectadas)
Retorna o estado dos Connected Apps do agente: a flag de ativação, os resumos por suíte (Google Workspace, Microsoft 365) e o catálogo selecionado de apps com as contas conectadas de cada app (várias contas: um agente pode ter várias contas por app, cada uma com um alias opcional), resolvidos a partir da sessão upstream do agente.
Parâmetros
facilityId `string` (obrigatório) deviceId `string` (obrigatório) O UUID balena do dispositivo do agente.Endpoint
GET /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Catálogo completo do marketplace de Connected Apps de um agente
Retorna todos os apps conectáveis (o catálogo completo de toolkits com autenticação gerenciada, em cache no servidor por ~12h) com os níveis de destaque/suíte e as contas conectadas do agente por app, mais os resumos por suíte e as solicitações de conexão pendentes do agente: um único payload para o marketplace de apps pesquisável no lado do cliente.
Parâmetros
facilityId `string` (obrigatório) deviceId `string` (obrigatório) O UUID balena do dispositivo do agente.Endpoint
GET /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/catalog
Exemplo de solicitação
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"
Resposta
{}
Dispensar uma solicitação de conexão pendente do agente
Marca como dispensada a solicitação de conexão pendente do agente para um toolkit (ela desaparece da seção "Requested by your agent" do marketplace). Idempotente: dispensar uma solicitação que não está pendente não tem efeito.
Parâmetros
facilityId `string` (obrigatório) deviceId `string` (obrigatório) O UUID balena do dispositivo do agente.Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/requests/dismiss
Exemplo de solicitação
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 '{}'
Resposta
{}
Ativar ou desativar os Connected Apps de um agente
Persiste a chave de Connected Apps do agente e envia a variável de dispositivo Balena PH_APPS_MCP_ENABLED somente para esse dispositivo (melhor esforço: a flag no PH é o bloqueio definitivo na retransmissão MCP).
Parâmetros
facilityId `string` (obrigatório) deviceId `string` (obrigatório) O UUID balena do dispositivo do agente.Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/enable
Exemplo de solicitação
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 '{}'
Resposta
{}
Iniciar a conexão de um único app a um agente (fluxo OAuth Connect Link)
Inicia um fluxo hospedado Connect Link para um toolkit e retorna a URL para a qual enviar o usuário. Um alias opcional identifica a nova conta (várias contas: conectar um app já conectado adiciona OUTRA conta, até 10 por app). Passa pelo mesmo callback encadeado das conexões de suítes (uma suíte com um único toolkit), então a conclusão volta para a página do applet ph-ai-agent.
Parâmetros
facilityId `string` (obrigatório) deviceId `string` (obrigatório) O UUID balena do dispositivo do agente.Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect
Exemplo de solicitação
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 '{}'
Resposta
{}
Payload de preparação da conexão de um app (modo, campos de credenciais, guia de configuração)
Tudo o que a caixa de diálogo de conexão precisa antes de iniciar uma conexão: como o app se conecta (oauth = fluxo de consentimento hospedado, credentials = formulário no produto), os campos de credenciais a coletar no modo de credenciais e o guia de configuração no produto (escrito para apps prioritários; caso contrário, gerado a partir dos metadados dos campos do app, nunca um link para documentação externa). Apps OAuth do tipo bring-your-own também informam se o app OAuth do cliente já está registrado para ESTE agente (byoConfigured) e a URL de redirecionamento a registrar no provedor.
Parâmetros
facilityId `string` (obrigatório) deviceId `string` (obrigatório) O UUID balena do dispositivo do agente. toolkit `string` (obrigatório)Endpoint
GET /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-info/{toolkit}
Exemplo de solicitação
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"
Resposta
{}
Conectar um app com credenciais fornecidas pelo usuário (chave de API etc., sem OAuth)
Cria uma conta conectada para um app no modo de credenciais diretamente a partir do formulário no produto, sem fluxo de consentimento hospedado. Os campos de credenciais vêm do payload connect-info do app; todos os campos obrigatórios precisam ser informados. As credenciais são validadas com o provedor quando há suporte (melhor esforço: alguns apps só rejeitam uma chave errada na primeira chamada de ferramenta do agente). Um alias opcional identifica a nova conta (várias contas: conectar um app já conectado adiciona OUTRA conta).
Parâmetros
facilityId `string` (obrigatório) deviceId `string` (obrigatório) O UUID balena do dispositivo do agente.Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-credentials
Exemplo de solicitação
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 '{}'
Resposta
{}
Registrar o app OAuth próprio do cliente para um app BYO e iniciar o fluxo de conexão dele
Para apps OAuth do tipo bring-your-own (Xero, Shopify...): recebe o client ID e o client secret do app OAuth que o cliente criou no provedor (com a ajuda do guia de configuração do app), registra-o para ESTE agente (o secret é armazenado apenas na plataforma de integração upstream, nunca no Performance Hub) e inicia imediatamente o fluxo de login hospedado com ele. Retorna a URL de consentimento para a qual enviar o usuário, com o mesmo contrato do endpoint de conexão. Enviar novamente substitui o app registrado do agente (por exemplo, após a rotação do secret); as contas conectadas existentes continuam funcionando.
Parâmetros
facilityId `string` (obrigatório) deviceId `string` (obrigatório) O UUID balena do dispositivo do agente.Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-oauth-app
Exemplo de solicitação
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 '{}'
Resposta
{}
Iniciar a conexão de uma suíte com um clique para um agente (fluxos Connect Link encadeados)
Inicia o fluxo de conexão encadeado para uma suíte inteira (por exemplo, google-workspace). A URL retornada abre a tela de consentimento do primeiro toolkit; cada conclusão redireciona (302) diretamente para o fluxo do próximo toolkit, terminando na página do applet ph-ai-agent. Os membros que já têm uma conta conectada são IGNORADOS, então tentar novamente após uma falha no meio da cadeia retoma com os apps que faltam, em vez de criar contas duplicadas. Quando todos os membros já estão conectados, a cadeia completa é executada novamente: esse é o fluxo explícito de "adicionar outra conta".
Parâmetros
facilityId `string` (obrigatório) deviceId `string` (obrigatório) O UUID balena do dispositivo do agente.Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-suite
Exemplo de solicitação
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 '{}'
Resposta
{}
Desconectar uma conta conectada de um agente
Exclui uma única conta conectada (várias contas: as outras contas do mesmo app continuam conectadas). Antes da exclusão, é validado que a conta pertence a este agente; quando era a ÚLTIMA conta do app, o toolkit é removido do conjunto conectado do agente (a sessão é recriada sob demanda para que a lista de ferramentas do agente seja atualizada).
Parâmetros
facilityId `string` (obrigatório) deviceId `string` (obrigatório) O UUID balena do dispositivo do agente.Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/disconnect
Exemplo de solicitação
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 '{}'
Resposta
{}
Renomear (alterar o alias de) uma das contas conectadas de um agente
Define o alias de exibição de uma única conta conectada. Normalmente, os aliases são definidos automaticamente após o OAuth (a partir da identidade conectada); este endpoint dá suporte à renomeação manual na caixa de diálogo de detalhes do app. Um alias vazio limpa o rótulo. Antes da atualização upstream, é validado que a conta pertence a este agente.
Parâmetros
facilityId `string` (obrigatório) deviceId `string` (obrigatório) O UUID balena do dispositivo do agente.Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/rename-account
Exemplo de solicitação
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 '{}'
Resposta
{}
Ativar ou desativar um serviço integrado do Performance Hub para um agente
Ativa ou desativa, para este agente, um serviço integrado sempre ativo (Smart Search, Weather...). Os serviços integrados não precisam de conexão nem de OAuth: vêm incluídos em todos os agentes e ativados por padrão; esta opção persiste a substituição por agente e recria imediatamente a sessão upstream do agente para que o conjunto de ferramentas seja atualizado. Observe que a chave separada "External apps" (a rota /enable) é um desligamento definitivo de todo o servidor MCP de apps: quando está desativada, os serviços integrados também ficam indisponíveis, independentemente das opções individuais.
Parâmetros
facilityId `string` (obrigatório) deviceId `string` (obrigatório) O UUID balena do dispositivo do agente. slug `string` (obrigatório) Slug do serviço integrado.Corpo da solicitação
Endpoint
PATCH /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/built-in/{slug}
Exemplo de solicitação
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 '{}'
Resposta
{}
Associar um dispositivo de Agente de IA a uma instalação
Associação baseada primeiro nos metadados. Procura o dispositivo pelo número de série nos metadados ao vivo dos dispositivos, exige que esteja online e então cria sob demanda a linha de registro, atribui uma região de retransmissão Chisel + porta do túnel + secret, registra esse slot na retransmissão e envia a configuração da instalação + do túnel ao dispositivo via Balena. Os novos dispositivos também recebem uma conta de serviço MCP padrão (ativada, restrita a esta instalação, com todos os recursos); o novo pareamento mantém qualquer concessão MCP existente. Configurações avançadas opcionais substituem os padrões aplicados no momento do pareamento (configuração de backup, MCP ativado/desativado, restrição de acesso), e `restoreFrom` inicializa o novo dispositivo a partir do backup na nuvem de outro dispositivo da instalação (origem ativa ou desativada; coloca na fila uma restauração entre repositórios, retornada como `restoreRequest` para acompanhar o progresso).
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/associate/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Listar os dispositivos de Agente de IA de uma instalação
Retorna os dispositivos de Agente de IA da instalação com o status ao vivo de conexão + túnel (usado pelo seletor de dispositivos do applet).
Parâmetros
club `string` (obrigatório)Endpoint
GET /api/devices/ph-ai-agent/list/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/list/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualização + status online do Agente de IA
Informa se o dispositivo está online, se há uma atualização disponível/pendente e a versão oferecida (a versão fixada da frota quando ela está fixada; a mais alta bem-sucedida quando a frota acompanha a mais recente).
Parâmetros
club `string` (obrigatório) uuid `string` (obrigatório)Endpoint
GET /api/devices/ph-ai-agent/update-status/{club}/{uuid}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/update-status/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Status ao vivo + métricas do dispositivo de Agente de IA
Retorna um instantâneo selecionado para a faixa de métricas e o painel de gerenciamento do applet: campos de identidade + registro, atividade + conexão, versões de software e as métricas de heartbeat mais recentes (CPU, temperatura, memória, armazenamento por ponto de montagem, tempo de atividade, rede). Combina o beacon de metadados do dispositivo + o status de atualização do Balena; qualquer uma das metades pode faltar durante uma interrupção temporária.
Parâmetros
club `string` (obrigatório) uuid `string` (obrigatório)Endpoint
GET /api/devices/ph-ai-agent/device-status/{club}/{uuid}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/device-status/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Narrativa de IA para o relatório de integridade do dispositivo
Retorna uma breve explicação, voltada ao operador, dos problemas de integridade identificados no momento. Os fatos e as etapas do playbook estão sempre em device-status; este parágrafo extra é de melhor esforço e pode ser null.
Parâmetros
club `string` (obrigatório) uuid `string` (obrigatório)Endpoint
POST /api/devices/ph-ai-agent/health/{club}/{uuid}/explain
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/health/{club}/{uuid}/explain \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Emitir um token de acesso direto à retransmissão para um Agente de IA
Retorna uma URL assinada de curta duração que o navegador usa para se conectar DIRETAMENTE ao gateway de retransmissão regional do dispositivo (eliminando o salto global PH/Sydney), mais o token HS256. O PH continua sendo a autoridade (Google SSO + verificações de módulo/instalação aqui); o relay-gateway verifica o token. O proxy /ai-agent-ui continua sendo a alternativa.
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/access/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Enviar uma mensagem de chat para uma sessão do Agente de IA (resposta direta na notificação)
Retransmissão no servidor usada pela ação de resposta direta da notificação web push: o service worker faz POST aqui (mesma origem, cookies de SSO) para que a resposta funcione sem nenhuma aba do Performance Hub aberta. O PH resolve o destino de retransmissão do dispositivo (mesma consulta do proxy /ai-agent-ui), adiciona x-ph-user para atribuir o turno (o push de conclusão resultante volta para este usuário) e encaminha para /api/chat/start do dispositivo com o ID da sessão.
Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/reply
Exemplo de solicitação
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 '{}'
Resposta
{}
Ler as configurações de controle de acesso de um Agente de IA (proprietário)
Retorna o bloco de acesso do dispositivo (modo, lista de permissões, visibilidade, opção PH Support) mais as solicitações de acesso pendentes. Pode ser lido pelo proprietário do dispositivo; os outros usuários recebem 403.
Parâmetros
club `string` (obrigatório) uuid `string` (obrigatório)Endpoint
GET /api/devices/ph-ai-agent/access-settings/{club}/{uuid}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/access-settings/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualizar as configurações de controle de acesso de um Agente de IA (proprietário)
Grava o modo (org/restricted), a lista de permissões restrita, a visibilidade da lista (all/admins) e a opção "permit access from Performance Hub Support". Permitido para o proprietário do dispositivo. O próprio proprietário só pode ser alterado via reallocate-owner. As solicitações de acesso aprovadas são persistentes: os solicitantes ainda aprovados são incluídos novamente na lista de permissões salva; remover um deles da lista enviada revoga a aprovação (a solicitação passa a negada; ele pode solicitar novamente).
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/access-settings/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Reatribuir o proprietário de um Agente de IA
Reatribui a propriedade do dispositivo a outro usuário do Performance Hub. Restrito aos proprietários da conta (acesso ao módulo de faturamento SaaS): a saída de emergência quando o proprietário de um agente restrito sai. O proprietário anterior e o novo são notificados (no app + push + e-mail).
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/reallocate-owner/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Lista de usuários da instalação para os seletores de lista de permissões / proprietário do Agente de IA
Retorna o e-mail + nome (+ flags isOrgAdmin) de todos os usuários cuja função dá acesso a ESTA instalação. Restrito ao proprietário do dispositivo e a quem pode reatribuí-lo (proprietário da conta), para que usuários comuns não possam enumerar a base de usuários.
Parâmetros
club `string` (obrigatório) uuid `string` (obrigatório)Endpoint
GET /api/devices/ph-ai-agent/org-users/{club}/{uuid}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/org-users/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Solicitar acesso a um Agente de IA restrito
Cria (ou reabre) a solicitação de acesso do solicitante a um dispositivo restrito; idempotente por usuário+dispositivo. O proprietário é notificado no app, por web push e por e-mail, com um link direto para o módulo do agente.
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/access-request/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Aprovar ou negar uma solicitação de acesso a um Agente de IA (proprietário)
Resolução de uma solicitação pendente pelo proprietário do dispositivo. Aprovar adiciona o solicitante à lista de permissões do dispositivo; em qualquer dos casos, o solicitante é notificado (no app + push + e-mail).
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/access-request-resolve/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Permitir + aplicar uma atualização do Agente de IA
Fixa o dispositivo na versão oferecida (a versão fixada da frota ou a mais alta bem-sucedida quando a frota acompanha a mais recente) e libera o bloqueio de atualização para que o supervisor do balena a aplique. O estado no volume de dados do dispositivo é preservado na atualização.
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/update/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Agendar uma atualização do Agente de IA para mais tarde
Armazena um horário de instalação agendado no registro do dispositivo. Um job recorrente do back-end (a cada 5 minutos) aplica a atualização (fixação + desbloqueio) assim que o horário agendado passa. O agendamento substitui qualquer agendamento existente do dispositivo.
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/update-schedule/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Cancelar uma atualização agendada do Agente de IA
Limpa a instalação agendada pendente do dispositivo (sem efeito quando não há nada agendado).
Parâmetros
club `string` (obrigatório) uuid `string` (obrigatório)Endpoint
DELETE /api/devices/ph-ai-agent/update-schedule/{club}/{uuid}
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/update-schedule/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Executar um comando remoto em um dispositivo de Agente de IA
Publica um comando MQTT da lista de permissões (reinicializar, reiniciar um contêiner, bloquear/desbloquear atualizações, gerenciamento de Wi-Fi) no device-controller em execução no Agente de IA. O dispositivo precisa estar associado à instalação.
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/command/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Atualizar a configuração de um Agente de IA voltada para a instalação
Salva as configurações editáveis pelo operador de um Agente de IA associado: o nome do dispositivo, a localização física do dispositivo e a frequência da reinicialização agendada. O agendamento de reinicialização também é enviado ao dispositivo como a variável de ambiente REBOOT_DEVICE do Balena (2h no horário local), igual ao comportamento das Display Screens.
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/config/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Instalações para as quais um Agente de IA desta instalação pode ser movido
Retorna as instalações da mesma organização que o usuário conectado pode acessar (exceto a instalação atual), para o seletor "Mover para outra instalação". A movimentação em si é feita por POST /api/devices/move/:club, que aplica no servidor as mesmas regras de mesma organização e de acesso ao destino.
Parâmetros
club `string` (obrigatório)Endpoint
GET /api/devices/ph-ai-agent/move-targets/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/move-targets/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
O conjunto de acesso MCP que o solicitante pode conceder aos Agentes de IA de uma instalação
Retorna o que o usuário conectado pode conceder a uma conta de serviço MCP de Agente de IA na organização desta instalação: as instalações e regiões dentro do próprio acesso dele, se ele pode conceder escopo para toda a organização, o conjunto de módulos que ele possui e o catálogo completo de ferramentas MCP (para a máscara avançada por ferramenta). A interface usa isso para que os usuários vejam apenas opções dentro do próprio conjunto de permissões; o endpoint POST mcp-access aplica a mesma atenuação no servidor.
Parâmetros
club `string` (obrigatório)Endpoint
GET /api/devices/ph-ai-agent/mcp-grantable/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/mcp-grantable/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obter a configuração da conta de serviço MCP de um Agente de IA
Retorna a configuração de acesso MCP do dispositivo (escopo, módulos, máscara de ferramentas, campos de auditoria).
Parâmetros
club `string` (obrigatório) uuid `string` (obrigatório)Endpoint
GET /api/devices/ph-ai-agent/mcp-access/{club}/{uuid}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/mcp-access/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Configurar a conta de serviço MCP de um Agente de IA
Salva a configuração de acesso MCP do dispositivo com atenuação no momento da concessão. Os solicitantes só podem conceder instalações e regiões dentro do próprio acesso, escopo de organização apenas quando possuem uma função para toda a organização e módulos que eles mesmos possuem na organização da instalação. O sinalizador enabled também é enviado ao dispositivo como a variável de ambiente PH_MCP_ENABLED do Balena.
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/mcp-access/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Obter a configuração de VPN de um Agente de IA (com dados ocultados)
Retorna o sinalizador de suporte a VPN do dispositivo e a lista de conexões. O conteúdo dos perfis e os valores das credenciais nunca são retornados, apenas os metadados da importação (remotos, rotas, DNS) e sinalizadores has-credential. O estado em tempo real de cada conexão vem do endpoint device-status (beacon metadata.vpn).
Parâmetros
club `string` (obrigatório) uuid `string` (obrigatório)Endpoint
GET /api/devices/ph-ai-agent/vpn-config/{club}/{uuid}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/vpn-config/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Ativar ou desativar o suporte a VPN de um Agente de IA
Ativa ou desativa o recurso de VPN do dispositivo. Envia a variável de dispositivo PH_VPN_ENABLED do Balena e notifica o dispositivo (MQTT vpnConfigChanged); as conexões são mantidas quando o recurso é desativado (os túneis param; a configuração permanece para reativação).
Parâmetros
club `string` (obrigatório) uuid `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/vpn-config/{club}/{uuid}
Exemplo de solicitação
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 '{}'
Resposta
{}
Importar perfis OpenVPN para um Agente de IA
Aceita uploads codificados em base64: arquivos .ovpn/.conf únicos, pacotes de arquivos separados (configuração + certificados/chaves) e arquivos compactados (.zip, exportações .tar/.tgz do Pritunl, .tblk do Tunnelblick, .visc/.visz do Viscosity). Os perfis são normalizados para um formato inline canônico; cada perfil se torna uma conexão (importada desconectada: informe as credenciais e depois conecte). Retorna erros 400 com orientação para uploads inutilizáveis.
Parâmetros
club `string` (obrigatório) uuid `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/vpn-import/{club}/{uuid}
Exemplo de solicitação
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 '{}'
Resposta
{}
Atualizar uma conexão VPN de um Agente de IA (nome / credenciais / DNS dividido)
Atualiza a conexão armazenada. Os campos de credenciais são somente gravação (omitido = manter o valor armazenado; string vazia = limpar). Alterações de credenciais ou de DNS dividido incrementam a revisão da conexão para que um túnel ativo reinicie com os novos valores.
Parâmetros
club `string` (obrigatório) uuid `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/vpn-connection/{club}/{uuid}
Exemplo de solicitação
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 '{}'
Resposta
{}
Excluir uma conexão VPN de um Agente de IA
Remove a conexão do registro e notifica o dispositivo, que desativa o túnel e apaga o perfil e as credenciais em cache.
Parâmetros
club `string` (obrigatório) uuid `string` (obrigatório) connectionId `string` (obrigatório)Endpoint
DELETE /api/devices/ph-ai-agent/vpn-connection/{club}/{uuid}/{connectionId}
Exemplo de solicitação
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"
Resposta
{}
Conectar / desconectar uma conexão VPN de um Agente de IA
Modelo de estado desejado: define o sinalizador enabled da conexão no registro e notifica o dispositivo (MQTT vpnConfigChanged sem payload); o dispositivo obtém o estado oficial por meio da chamada universal-api autenticada por JWT e reconcilia os túneis. Uma notificação perdida é compensada na sincronização periódica.
Parâmetros
club `string` (obrigatório) uuid `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/vpn-command/{club}/{uuid}
Exemplo de solicitação
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 '{}'
Resposta
{}
Obter a configuração e o status do backup em nuvem de um Agente de IA
Retorna as configurações de backup do dispositivo (ativado, retenção, região de armazenamento), o status contínuo do backup (último backup, tamanho, erros), a região automática resolvida e as regiões de armazenamento disponíveis para o seletor. A senha do repositório restic nunca é retornada.
Parâmetros
club `string` (obrigatório) uuid `string` (obrigatório)Endpoint
GET /api/devices/ph-ai-agent/backup-config/{club}/{uuid}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-config/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualizar a configuração de backup em nuvem de um Agente de IA
Salva ativação, retenção e região. Entra em vigor no próximo ciclo de backup por hora do dispositivo (o dispositivo solicita ao PH o contexto de execução antes de cada execução), portanto não é necessário reiniciar o dispositivo.
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/backup-config/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Listar origens de restauração de backup para emparelhar um novo Agente de IA
Visão de toda a instalação para a opção "restaurar a partir de um backup" da caixa de diálogo de adição de agente: todos os registros da instalação (ativos E desativados/substituídos) que ainda têm um repositório de backup descriptografável e pelo menos um ponto de restauração utilizável, com os snapshots mais recentes. Também retorna as listas de opções de configuração de backup (allowedRetentionDays, availableRegions) para que a caixa de diálogo não precise de um UUID de dispositivo para preencher os seletores.
Parâmetros
club `string` (obrigatório)Endpoint
GET /api/devices/ph-ai-agent/backup-sources/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-sources/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Listar os pontos de restauração de backup de um Agente de IA
Retorna o índice de snapshots do dispositivo (mais recentes primeiro) a partir do DynamoDB, sem ida e volta ao dispositivo ou ao repositório, além do estado atual das solicitações de backup manual e de restauração para a consulta periódica do painel lateral. Solicitações obsoletas (nunca recebidas ou sem sinal de progresso) são apresentadas como falhas para que a interface sempre possa enviar uma nova.
Parâmetros
club `string` (obrigatório) uuid `string` (obrigatório)Endpoint
GET /api/devices/ph-ai-agent/backup-snapshots/{club}/{uuid}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-snapshots/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Solicitar agora um backup manual de um Agente de IA
Grava uma solicitação de execução manual (com a observação do usuário) na linha de registro e notifica o dispositivo via MQTT. O dispositivo obtém a solicitação verificada por meio da chamada run-context da universal-api autenticada por JWT; mesmo sem MQTT, ela é recebida no próximo ciclo do agendador. É rejeitada enquanto outro backup ou restauração estiver em andamento.
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/backup-run/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Fixar ou desafixar um ponto de restauração de um Agente de IA
Pontos de restauração fixados são protegidos da limpeza por retenção (a manutenção noturna do dispositivo recebe os IDs dos snapshots fixados pela chamada run-context e os exclui do restic forget), e as linhas de índice deles nunca expiram por TTL. Desafixar restaura o comportamento normal de retenção.
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/backup-pin/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Restaurar um Agente de IA a partir de um ponto de restauração de backup
Grava uma solicitação de restauração na linha de registro e notifica o dispositivo. Restaurações completas sobrescrevem /data e /home/hermeswebui (o dispositivo primeiro cria um snapshot de segurança automático pré-restauração e interrompe o agente durante a restauração) e exigem que o nome do dispositivo seja digitado como confirmação. Informar `paths` executa, em vez disso, uma restauração não disruptiva no nível de arquivo apenas desses caminhos. Opcionalmente, fixa o dispositivo de volta na versão de software do snapshot quando a restauração dos dados é concluída (consulte backup-restore-release).
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/backup-restore/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Aplicar a versão de software registrada em uma restauração concluída
Etapa final de uma restauração que solicitou a versão de software do snapshot: assim que o dispositivo informa que a restauração dos dados foi concluída, fixa o dispositivo na versão armazenada e desbloqueia as atualizações (mesma mecânica do endpoint de atualização). Acionada pela consulta periódica do painel lateral; idempotente: a fixação armazenada é limpa após a aplicação.
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/backup-restore-release/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Navegar pelos arquivos de um ponto de restauração de backup
Lista um nível de diretório de um snapshot restic, fornecido inteiramente pelo servidor a partir do repositório Wasabi (funciona com o dispositivo off-line). Apenas os metadados da árvore são lidos; nenhum dado de arquivo é baixado para as listagens.
Parâmetros
club `string` (obrigatório) uuid `string` (obrigatório) takenAt `number` (obrigatório) path `string` (opcional)Endpoint
GET /api/devices/ph-ai-agent/backup-files/{club}/{uuid}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-files/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Pesquisar nomes de arquivo em um ponto de restauração de backup
Pesquisa de nomes de arquivo sem diferenciar maiúsculas e minúsculas a partir de um diretório para baixo, feita no servidor com os metadados da árvore restic (nenhum dado de arquivo é lido; funciona com o dispositivo off-line). Transmite a listagem e para nas primeiras 200 correspondências.
Parâmetros
club `string` (obrigatório) uuid `string` (obrigatório) takenAt `number` (obrigatório) q `string` (obrigatório) path `string` (opcional)Endpoint
GET /api/devices/ph-ai-agent/backup-search/{club}/{uuid}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-search/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
O que mudou entre dois pontos de restauração de backup
Executa no servidor um restic diff entre dois snapshots do dispositivo (somente metadados da árvore) e retorna a lista de arquivos adicionados/removidos/modificados (limitada a 500 alterações), além de estatísticas resumidas. Os resultados ficam em cache, pois os snapshots são imutáveis.
Parâmetros
club `string` (obrigatório) uuid `string` (obrigatório) fromTakenAt `number` (obrigatório) toTakenAt `number` (obrigatório)Endpoint
GET /api/devices/ph-ai-agent/backup-diff/{club}/{uuid}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-diff/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Histórico de versões de um arquivo em todos os pontos de restauração
Um único restic find no servidor em todos os snapshots do repositório do dispositivo, agrupado em versões DISTINTAS (ocorrências consecutivas com tamanho e mtime idênticos são mescladas) e associado às linhas do índice de snapshots para datas, tipos e observações.
Parâmetros
club `string` (obrigatório) uuid `string` (obrigatório) path `string` (obrigatório)Endpoint
GET /api/devices/ph-ai-agent/backup-file-versions/{club}/{uuid}
Exemplo de solicitação
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"
Resposta
{}
Pesquisar por nome de arquivo em todos os pontos de restauração dos backups de um dispositivo
O caminho de recuperação de arquivos excluídos: um único restic find no servidor em TODOS os snapshots do repositório (sem diferenciar maiúsculas e minúsculas, por substring ou glob), agrupado por caminho com os pontos de restauração em que cada arquivo aparece. Um arquivo excluído do dispositivo ainda pode ser encontrado aqui enquanto algum ponto de restauração o contiver.
Parâmetros
club `string` (obrigatório) uuid `string` (obrigatório) q `string` (obrigatório)Endpoint
GET /api/devices/ph-ai-agent/backup-find/{club}/{uuid}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-find/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Baixar um único arquivo de um ponto de restauração de backup
Transmite um arquivo diretamente do repositório restic para o navegador (como anexo). Diretórios são transmitidos como um arquivo tar. Com limite de tamanho; fornecido pelo servidor, portanto funciona com o dispositivo off-line.
Parâmetros
club `string` (obrigatório) uuid `string` (obrigatório) takenAt `number` (obrigatório) path `string` (obrigatório)Endpoint
GET /api/devices/ph-ai-agent/backup-file-download/{club}/{uuid}
Exemplo de solicitação
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"
Resposta
{}
Desativar um Agente de IA de uma instalação
Parâmetros
club `string` (obrigatório)Endpoint
POST /api/devices/ph-ai-agent/decommission/{club}
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/decommission/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Remover um Agente de IA de uma instalação e restaurar o hardware para as configurações de fábrica
Desassocia totalmente o dispositivo para que ele possa ser emparelhado em QUALQUER instalação e apaga todos os dados do NUC. A limpeza é armada pela variável de dispositivo PH_FACTORY_RESET do Balena (um nonce de uso único) ANTES da desmontagem na nuvem, então ela é mantida mesmo que o dispositivo esteja off-line no momento da remoção: a limpeza é executada na próxima conexão. Uma notificação MQTT factoryReset torna o caso on-line imediato. Em seguida, a desmontagem na nuvem revoga todas as credenciais e concessões, limpa o vínculo de instalação no Balena (variáveis do dispositivo + tag club) e o clubID dos metadados, e exclui as solicitações de acesso e o registro DNS da LAN. Os backups em nuvem são MANTIDOS: o índice de snapshots e a senha do repositório permanecem no registro excluído logicamente, utilizáveis como origem de restauração ao adicionar um substituto. Exige que o nome do dispositivo seja digitado como confirmação.
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/reset/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Substituir um Agente de IA inoperante por um novo NUC (recuperação de desastres)
Substituição do dispositivo em uma única etapa: associa o NUC substituto (slot de túnel, segredos, variáveis do Balena, semente de backup), transfere o nome, a localização, o agendamento de reinicialização, as configurações de backup, o bloqueio de acesso e a concessão MCP do dispositivo antigo, reatribui o índice de snapshots antigo ao novo dispositivo (para que todo o histórico de backup continue navegável), desativa o registro antigo (marcado com replacedBy / replacedFrom) e, a menos que `restore` seja false, enfileira uma restauração completa do ponto de restauração escolhido a partir do repositório de backup do dispositivo ANTIGO para o novo hardware. Funciona com o dispositivo antigo inoperante/off-line; exige que o nome do dispositivo antigo seja digitado como confirmação. Somente na mesma instalação.
Parâmetros
club `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/devices/ph-ai-agent/replace/{club}
Exemplo de solicitação
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 '{}'
Resposta
{}
Resolve um link curto de QR de dispositivo do Performance Hub para o link direto ao qual ele aponta, para que o leitor de Adicionar dispositivo possa detectar o tipo de dispositivo. Apenas hosts performancehub.co são seguidos.
Parâmetros
url `string` (obrigatório) O link curto lidoEndpoint
GET /api/devices/resolve-qr
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/devices/resolve-qr \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Testa a conectividade com o controlador Unifi de uma instalação e se as credenciais estão corretas.
Parâmetros
facilityID `string` (obrigatório) ID interno da instalação com a qual você quer testar a conectividade UnifiEndpoint
GET /api/devices/testUnifiController/{facilityID}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/devices/testUnifiController/{facilityID} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualiza um dispositivo IoT genérico com uma instalação.
Parâmetros
club `string` (obrigatório) ID interno da instalação na qual você quer atualizar o dispositivo. body `string` (obrigatório) Objeto JSON dos parâmetros de atualização.Endpoint
PUT /api/devices/updateGenericDevice/{club}
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/devices/updateGenericDevice/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Lista o número de contratos pendentes que exigem ação, com base no usuário e nos clubes associados a ele
Endpoint
GET /api/agreements/agreements-outstanding
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/agreements/agreements-outstanding \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Lista todos os contratos disponíveis para um clube
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar. contracts-sort `string` (opcional) Ordena os contratos por date-effective ou alphabetical. Padrão: date-effective. contracts-acknowledgement `string` (opcional) Filtra os contratos por all, acknowledged ou unacknowledged. Padrão: all. contracts-requirement `string` (opcional) Filtra os contratos por all, signature, checkbox, popup ou none. Padrão: all. contracts-status `string` (opcional) Filtra os contratos por all, active ou archived. Padrão: all.Endpoint
GET /api/agreements/list-agreements/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/agreements/list-agreements/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Assina um contrato com base no ID dele.
Parâmetros
club `string` (obrigatório) ID interno do clube que está assinando o contrato. agreementid `string` (obrigatório) ID do contrato que está sendo assinado. body `string` (obrigatório) Objeto JSON com o contrato e os parâmetros a adicionar/enviar ao sistema...Endpoint
POST /api/agreements/sign/{club}/{agreementid}
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/agreements/sign/{club}/{agreementid} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Resumo do Model Router da instalação (configuração, saldo, gastos).
Parâmetros
clubID `string` (obrigatório) tz `string` (opcional) Fuso horário IANA do visualizador, usado como alternativa nas janelas de gastos por dia/mês quando a instalação não tem dados de fuso horário.Endpoint
GET /api/clubs/{clubID}/ai-credits/overview
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/overview \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Catálogo dos modelos disponíveis com o estado de ativação por instalação (por padrão, todos ativados).
Parâmetros
clubID `string` (obrigatório)Endpoint
GET /api/clubs/{clubID}/ai-credits/models
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/models \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Guardrails disponíveis e modelos predefinidos do PH.
Parâmetros
clubID `string` (obrigatório)Endpoint
GET /api/clubs/{clubID}/ai-credits/guardrails
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/guardrails \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Serviços conectados ao Model Router. Inclui dispositivos de Agente de IA pareados, agentes externos com tipo explícito e o serviço de Workflow da instalação. A configuração é editada via PATCH /keys/{keyHash}.
Parâmetros
clubID `string` (obrigatório) tz `string` (opcional) Fuso horário IANA do visualizador, usado como alternativa nas janelas de gastos por dia/mês quando a instalação não tem dados de fuso horário.Endpoint
GET /api/clubs/{clubID}/ai-credits/agents
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/agents \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Ativa o Model Router para uma instalação e provisiona o acesso de inferência dela.
Parâmetros
clubID `string` (obrigatório)Endpoint
POST /api/clubs/{clubID}/ai-credits/enable
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/enable \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualiza o plano, a lista de modelos permitidos, os guardrails, os filtros de conteúdo (ocultação/bloqueio por regex no PH), o limite de gastos e a configuração de recarga automática.
Parâmetros
clubID `string` (obrigatório)Endpoint
PATCH /api/clubs/{clubID}/ai-credits/config
Exemplo de solicitação
curl -X PATCH https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/config \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Zera o contador do limite rígido vitalício (nova linha de base no gasto atual) e registra o período encerrado no histórico.
Parâmetros
clubID `string` (obrigatório)Endpoint
POST /api/clubs/{clubID}/ai-credits/spend-limit/reset-total
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/spend-limit/reset-total \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Histórico de redefinições do limite rígido (mais recentes primeiro): limite, valor gasto e timestamps de cada período encerrado.
Parâmetros
clubID `string` (obrigatório)Endpoint
GET /api/clubs/{clubID}/ai-credits/spend-limit/history
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/spend-limit/history \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Cria uma nova chave de API phk_ para a instalação (o texto simples é retornado uma única vez). Aceita, opcionalmente, limites de gastos, lista de modelos permitidos, guardrails, filtros de conteúdo e limites de taxa rpmLimit/tpmLimit.
Parâmetros
clubID `string` (obrigatório)Endpoint
POST /api/clubs/{clubID}/ai-credits/keys
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/keys \
-H "x-api-key: YOUR_API_KEY"
Atualiza os campos editáveis da chave: rótulo, limites de gastos por chave, lista de modelos permitidos, guardrails, filtros de conteúdo e limites de taxa rpmLimit/tpmLimit (sincronizados com a chave).
Parâmetros
clubID `string` (obrigatório) keyHash `string` (obrigatório)Endpoint
PATCH /api/clubs/{clubID}/ai-credits/keys/{keyHash}
Exemplo de solicitação
curl -X PATCH https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/keys/{keyHash} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Registros de inferência por solicitação da instalação (ao vivo, somente metadados).
Parâmetros
clubID `string` (obrigatório) page `string` (opcional) pageSize `string` (opcional) status `string` (opcional) model `string` (opcional) provider `string` (opcional) source `string` (opcional) `key` ou `agent` keyHash `string` (opcional) Filtra por uma única chave/agente pelo keyHash do PH. q `string` (opcional) Pesquisa de texto livre em ID da solicitação, rótulo da chave/agente, modelo, provedor e usuário final. minutes `string` (opcional) Janela menor que um dia (por exemplo, Live=1440); substitui startDate/endDate. startTs `string` (opcional) Início da janela em segundos epoch (clicar para ampliar); substitui minutes/dates. endTs `string` (opcional) Fim da janela em segundos epoch (clicar para ampliar); substitui minutes/dates.Endpoint
GET /api/clubs/{clubID}/ai-credits/logs
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/logs \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Histograma de solicitações ao longo do tempo para a visualização de registros. Mesmos filtros da rota de lista, mas agregados no servidor em intervalos de tempo (contagens de sucesso/falha), para que a resposta seja pequena independentemente do volume de registros. O tamanho do intervalo é escolhido automaticamente para o período.
Parâmetros
clubID `string` (obrigatório) status `string` (opcional) model `string` (opcional) provider `string` (opcional) source `string` (opcional) keyHash `string` (opcional) q `string` (opcional) minutes `string` (opcional) startDate `string` (opcional) endDate `string` (opcional) startTs `string` (opcional) endTs `string` (opcional)Endpoint
GET /api/clubs/{clubID}/ai-credits/logs/histogram
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/logs/histogram \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Intervalos de análise de uso + totais por modelo de um período (ao vivo).
Parâmetros
clubID `string` (obrigatório) range `string` (opcional) 24h | 7 | 30 | 90 | year | all (ignorado se startDate/endDate forem informados) startDate `string` (opcional) endDate `string` (opcional) groupBy `string` (opcional) model (padrão) | key | source | provider | status: dimensão para intervalos + grupos subgroupBy `string` (opcional) segunda dimensão opcional aninhada em cada grupo (Explore) keyHash `string` (opcional) filtro de análise detalhada: restringe a uma única chave/agente model `string` (opcional) filtro de análise detalhada: restringe a um único modelo provider `string` (opcional) source `string` (opcional) compare `string` (opcional) defina como "prev" para retornar também groupsPrev (período imediatamente anterior de mesma duração)Endpoint
GET /api/clubs/{clubID}/ai-credits/stats
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/stats \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Calendário de atividade diária do último ano móvel (~53 semanas, no estilo do GitHub).
Parâmetros
clubID `string` (obrigatório)Endpoint
GET /api/clubs/{clubID}/ai-credits/activity
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/activity \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Cobra o cartão armazenado do faturamento SaaS para adicionar crédito pré-pago do Model Router.
Parâmetros
clubID `string` (obrigatório) body `object` (opcional)Endpoint
POST /api/clubs/{clubID}/ai-credits/topup
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/topup \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Finaliza uma recarga depois que o applet conclui a autenticação 3DS.
Parâmetros
clubID `string` (obrigatório)Endpoint
POST /api/clubs/{clubID}/ai-credits/topup/confirm
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/topup/confirm \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Resumo do cartão armazenado do faturamento SaaS que será cobrado nas recargas / recarga automática.
Parâmetros
clubID `string` (obrigatório)Endpoint
GET /api/clubs/{clubID}/ai-credits/payment-method
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/payment-method \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Transações do livro-razão da instalação, mais recentes primeiro. Opcionalmente filtradas por tipo (por exemplo, `types=topup,adjustment` para o histórico de movimentações financeiras ou `types=charge-reconcile` com `from`/`to` para as deduções de uso de um mês).
Parâmetros
clubID `string` (obrigatório) limit `integer` (opcional) Máximo de linhas (padrão 50, máximo 200) types `string` (opcional) Tipos de transação separados por vírgula (topup, charge-reconcile, refund, adjustment, trueup-shortfall) from `integer` (opcional) Somente transações com createdAt >= from (segundos unix) to `integer` (opcional) Somente transações com createdAt <= to (segundos unix)Endpoint
GET /api/clubs/{clubID}/ai-credits/transactions
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/transactions \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Meses `YYYY-MM` distintos (UTC, mais recentes primeiro) que contêm pelo menos uma transação dos tipos solicitados. Alimenta os menus suspensos de filtro de ano/mês baseados em dados, para que a interface ofereça apenas períodos que realmente têm dados.
Parâmetros
clubID `string` (obrigatório) types `string` (opcional) Tipos de transação separados por vírgula (topup, charge-reconcile, refund, adjustment, trueup-shortfall)Endpoint
GET /api/clubs/{clubID}/ai-credits/transactions/available-periods
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/transactions/available-periods \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Recibo de pagamento em PDF com a marca para uma única transação do Model Router.
Parâmetros
clubID `string` (obrigatório) txId `string` (obrigatório)Endpoint
GET /api/clubs/{clubID}/ai-credits/transactions/{txId}/receipt.pdf
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/transactions/{txId}/receipt.pdf \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Pacote de recibos de pagamento em PDF com a marca para as transações de recarga selecionadas, em um ZIP. Cada ID precisa ser uma recarga pertencente à instalação; deduções de uso e ajustes administrativos não têm recibos e são rejeitados.
Parâmetros
clubID `string` (obrigatório) ids `string` (obrigatório) IDs de transação separados por vírgula (máximo 50)Endpoint
GET /api/clubs/{clubID}/ai-credits/transactions/receipts.zip
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/transactions/receipts.zip \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Consolidações por mês civil (UTC) das deduções de uso da instalação, mais recentes primeiro. O mês atual é sempre incluído e marcado com `isCurrentMonth` (mês até a data).
Parâmetros
clubID `string` (obrigatório) months `integer` (opcional) Período retroativo em meses (padrão 12, máximo 24; ignorado quando `year` é definido) year `integer` (opcional) Restringe as consolidações a um ano civil UTC (por exemplo, 2026)Endpoint
GET /api/clubs/{clubID}/ai-credits/usage-statements
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/usage-statements \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
PDF mensal do demonstrativo de uso com a marca: um resumo das deduções de uso do mês (subtotais diários + total). Explicitamente não é uma fatura nem um recibo; nenhum pagamento é cobrado pelas deduções de uso.
Parâmetros
clubID `string` (obrigatório) month `string` (obrigatório) Mês civil UTC, `YYYY-MM`Endpoint
GET /api/clubs/{clubID}/ai-credits/usage-statements/{month}/statement.pdf
Exemplo de solicitação
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"
Resposta
{}
Itens brutos de dedução de uso de um mês em CSV (ID da transação, timestamp UTC, valor, saldo posterior, instantâneo do gasto vitalício): a exportação detalhada que concilia com o total do demonstrativo do mês.
Parâmetros
clubID `string` (obrigatório) month `string` (obrigatório) Mês civil UTC, `YYYY-MM`Endpoint
GET /api/clubs/{clubID}/ai-credits/usage-statements/{month}/detail.csv
Exemplo de solicitação
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"
Resposta
{}
Resumo de uso/gastos da instalação (ao vivo mais o livro-razão conciliado).
Parâmetros
clubID `string` (obrigatório) tz `string` (opcional) Fuso horário IANA do visualizador, usado como alternativa nas janelas de gastos por dia/mês quando a instalação não tem dados de fuso horário.Endpoint
GET /api/clubs/{clubID}/ai-credits/usage
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/usage \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Associa/atualiza um dispositivo AI Edge Processor a um clube
Parâmetros
body `string` (obrigatório) Objeto JSON para atualizar o registro do dispositivo AI Edge Processor.Endpoint
POST /api/ai-edge-processor/devices
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/ai-edge-processor/devices \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Associa um dispositivo AI Edge Processor a um clube. Resolve o dispositivo priorizando os metadados (o heartbeat ao vivo prevalece), preenche a linha de registro se o dispositivo nunca se registrou sozinho e remove linhas de registro obsoletas deixadas por hardware reprovisionado.
Parâmetros
body `string` (obrigatório) Objeto JSON para atualizar o registro do dispositivo AI Edge Processor.Endpoint
POST /api/ai-edge-processor/devices/associate
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/ai-edge-processor/devices/associate \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna uma lista dos registros de envio de bbox de um clube
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar.Endpoint
GET /api/cctv/bbox-timeline/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/bbox-timeline/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Índice de pesquisa do banco de dados de câmeras
Faz proxy do índice de pesquisa público camera-db da documentação (fabricantes, séries, modelos, aliases) usado pela caixa de diálogo Find my camera ao adicionar câmeras de rede. Armazenado em cache no servidor por 12 horas.
Endpoint
GET /api/cctv/camera-db/search-index
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/camera-db/search-index \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Modelos de fabricantes do banco de dados de câmeras
Faz proxy dos modelos de URL RTSP e dos padrões de um único fabricante a partir do banco de dados público de câmeras da documentação. O slug é validado para evitar path traversal. Armazenado em cache no servidor por 12 horas.
Parâmetros
slug `string` (obrigatório) Slug do fabricante (por exemplo, hikvision)Endpoint
GET /api/cctv/camera-db/manufacturers/{slug}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/camera-db/manufacturers/{slug} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna uma lista de dados de check-ins de uma instalação
Parâmetros
club `string` (obrigatório) ID interno do clube/instalação que você deseja acessar. startDate `string` (opcional) Data de início no formato YYYY-MM-DD endDate `string` (opcional) Data de término no formato YYYY-MM-DD timezone `string` (opcional) Fuso horário para interpretar as datas (padrão Australia/Brisbane) nextToken `string` (opcional) Token de paginação para buscar a próxima páginaEndpoint
GET /api/cctv/check-ins/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/check-ins/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Recuperar a configuração do front-end ou da interface de CFTV
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar.Endpoint
GET /api/cctv/config/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/config/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obter a configuração de entrega de conteúdo de CFTV
Retorna o domínio de conteúdo usado pelos clientes de CFTV para resolver recursos de mídia. O domínio é definido pela variável de ambiente CONTENT_DOMAIN e, na falta dela, por um padrão que depende do estágio (produção serve /cctv, os outros estágios servem /cctv-stg).
Endpoint
GET /api/cctv/content-config
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/content-config \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Alterar a configuração do front-end ou da interface de CFTV
Parâmetros
body `object` (obrigatório) Objeto JSON do novo bloco de configuração a adicionar ao sistema.Endpoint
PUT /api/cctv/config/:club/:section
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/cctv/config/:club/:section \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna uma lista da disponibilidade de regiões de bucket para a configuração do provedor de armazenamento de CFTV
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar.Endpoint
GET /api/cctv/bucket-region/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/bucket-region/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Redefinir a coleção de rostos não identificados
Redefine a coleção CompreFace de não identificados da instalação, excluindo todos os sujeitos. Os registros de pessoas no DynamoDB, as detecções de rostos e os blocos da linha do tempo no OpenSearch NÃO são afetados. Somente os dados subjacentes de reconhecimento facial são apagados. Novos perfis sombra serão criados automaticamente à medida que o sistema processar novas detecções das câmeras.
Parâmetros
facilityId `string` (obrigatório)Endpoint
DELETE /api/cctv/config/{facilityId}/unidentified-collection
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/config/{facilityId}/unidentified-collection \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obter informações da coleção de não identificados
Retorna a contagem atual de sujeitos da coleção CompreFace de não identificados da instalação.
Parâmetros
facilityId `string` (obrigatório)Endpoint
GET /api/cctv/config/{facilityId}/unidentified-collection-info
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/config/{facilityId}/unidentified-collection-info \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Adiciona uma câmera de rede (câmera OEM/IP) por URL de stream (RTSP, HTTP, HTTPS)
Parâmetros
body `string` (obrigatório) Objeto JSON para adicionar uma câmera de rede.Endpoint
POST /api/cctv/devices/add-network-camera
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/add-network-camera \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Adicionar câmeras de rede em massa a um Edge Processor
Registra várias câmeras de rede RTSP/HTTP em um Edge Processor e depois envia FEED_CONFIG uma única vez, para que o dispositivo recarregue a configuração uma só vez.
Parâmetros
body `object` (obrigatório)Endpoint
POST /api/cctv/devices/add-network-cameras
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/add-network-cameras \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Associa/atualiza um dispositivo a um clube
Parâmetros
body `string` (obrigatório) Objeto JSON para atualizar o registro do dispositivo de CFTV.Endpoint
POST /api/cctv/devices
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Associa um dispositivo a um clube
Parâmetros
body `string` (obrigatório) Objeto JSON para atualizar o registro do dispositivo de CFTV.Endpoint
POST /api/cctv/devices/associate
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/associate \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Dispara uma solicitação MQTT para o UUID de um dispositivo específico e espera uma resposta (via websocket) com os recursos disponíveis da câmera.
Parâmetros
club `string` (obrigatório) ID interno do clube proprietário do dispositivo que você está consultando. body `string` (obrigatório) Objeto JSON dos parâmetros de atualização.Endpoint
POST /api/cctv/devices/list-camera-capabilities/{club}
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/list-camera-capabilities/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Listar os registros de dispositivos
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar.Endpoint
GET /api/cctv/devices/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/devices/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Remove uma câmera de rede marcando-a como excluída e retirando-a do FEED_CONFIG do Edge Processor
Parâmetros
club `string` (obrigatório) ID interno do clube proprietário do dispositivo. balenaUUID `string` (obrigatório) UUID da câmera de rede a remover.Endpoint
DELETE /api/cctv/devices/remove-network-camera/{club}/{balenaUUID}
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/devices/remove-network-camera/{club}/{balenaUUID} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Salva todos os recursos de câmera configurados e os aplica ao dispositivo como variável de ambiente (via balena)
Parâmetros
club `string` (obrigatório) ID interno do clube proprietário do dispositivo que você está consultando. body `string` (obrigatório) Objeto JSON dos parâmetros de atualização.Endpoint
POST /api/cctv/devices/save-camera-capabilities/{club}
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/save-camera-capabilities/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Salva uma máscara de movimento (se configurada) para a câmera e a aplica ao dispositivo como variável de ambiente (via balena)
Parâmetros
club `string` (obrigatório) ID interno do clube proprietário do dispositivo que você está consultando. body `string` (obrigatório) Objeto JSON da máscara da câmera.Endpoint
POST /api/cctv/devices/save-camera-mask/{club}
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/save-camera-mask/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Envia um comando v4l2 específico (como brilho ou contraste) ao dispositivo físico
Parâmetros
club `string` (obrigatório) ID interno do clube proprietário do dispositivo que você está consultando. body `string` (obrigatório) Objeto JSON dos parâmetros de atualização.Endpoint
POST /api/cctv/devices/set-camera-capability/{club}
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/set-camera-capability/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Testar a URL de stream de uma câmera de rede
Envia um comando de teste a um Edge Processor para validar a URL de stream de uma câmera usando o ffprobe
Corpo da solicitação
Endpoint
POST /api/cctv/devices/test-stream
Exemplo de solicitação
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 '{}'
Resposta
{}
Exclui permanentemente um único registro de detecção de rosto do banco de dados. Usado para remover entradas de rastreamento incorretas ou não correspondentes do registro de atividades de uma pessoa.
Parâmetros
club `string` (obrigatório) fdID `string` (obrigatório)Endpoint
DELETE /api/cctv/face-detections/:club/:fdID
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/face-detections/:club/:fdID \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna uma lista de dados de detecções de rosto de uma pessoa
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar. personID `string` (obrigatório) ID da pessoa no sistema de identificação facialEndpoint
GET /api/cctv/face-detections/:club/:personID
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/face-detections/:club/:personID \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna as detecções de rosto que fazem referência a uma determinada imagem recortada da pessoa, consultadas pelo GSI personCropImage.
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar. personCropImage `string` (obrigatório) URL da imagem recortada da pessoa armazenada no registro de detecção de rosto. limit `string` (opcional) Número máximo de detecções a retornar. nextToken `string` (opcional) Token de paginação de uma resposta anterior.Endpoint
GET /api/cctv/face-detections-by-person-crop-image/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/face-detections-by-person-crop-image/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna uma lista de dados de detecções de rosto de um clube, agrupados por intervalo em relação à hora atual
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar.Endpoint
GET /api/cctv/face-detections/:club/timeline
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/face-detections/:club/timeline \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna uma lista de dados de detecções de rosto de um clube
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar.Endpoint
GET /api/cctv/face-detections/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/face-detections/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Pesquisar blocos da linha do tempo de detecções de rosto em uma instalação usando o OpenSearch
Parâmetros
facilityId `string` (obrigatório) ID interno da instalação na qual pesquisar timezone `string` (obrigatório) Fuso horário IANA para conversão de datas (por exemplo, Pacific/Auckland) startDate `string` (opcional) Filtro de data de início (YYYY-MM-DD), convertido em startUnix usando o fuso horário endDate `string` (opcional) Filtro de data de término (YYYY-MM-DD), convertido em endUnix usando o fuso horário personId `string` (opcional) Filtrar por um ID de pessoa específico query `string` (opcional) Pesquisa de texto livre (por exemplo, nome da pessoa) limit `string` (opcional) Resultados por página (padrão 20, máximo 100) filters `string` (opcional) Objeto de filtros codificado em JSON (por exemplo, {"matchType":"identified"}) sortBy `string` (opcional) Campo de ordenação (startUnix, endUnix, created). O padrão é endUnix. page `string` (opcional) Número da página para paginação (padrão 1) sortOrder `string` (opcional) Direção da ordenação (asc ou desc). O padrão é desc.Endpoint
GET /api/cctv/search/face-detections/timeline-blocks/{facilityId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/search/face-detections/timeline-blocks/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna uma lista de relatórios sobre a instalação do clube
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar.Endpoint
GET /api/cctv/facility/:club/reports
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/facility/:club/reports \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Aciona a geração de mapas de calor sob demanda. Invoca a mesma lógica do Starter usada pelo cron agendado, mas permite direcionar a uma instalação específica, data/hora e conjunto de períodos. Quando chamado sem corpo, comporta-se exatamente como o cron: verifica todas as instalações elegíveis e coloca todos os dispositivos na fila.
Corpo da solicitação
Endpoint
POST /api/cctv/heatmaps/generate
Exemplo de solicitação
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 '{}'
Resposta
{}
Resolve a localização de um PNG de mapa de calor composto em janela móvel para um único dispositivo. Retorna apenas metadados JSON: os bytes do PNG ficam no domínio de conteúdo, e o front-end monta a URL assim: `${contentDomain}/cctv/${storageService}/${region}/${filePath}?s=${token}` Ordem de resolução: 1. Acerto no índice `composed#…` do DynamoDB → retorna imediatamente (~10 ms). 2. HEAD no Wasabi na chave de cache determinística. Em caso de acerto, grava uma linha de índice de preenchimento e retorna. 3. Alternativa obsoleta: existe algum registro composto para esta tupla (dispositivo, intervalo, hora), mesmo de outra data. Retornado imediatamente com `cache: 'HIT-STALE'` para que o FE possa exibir *alguma coisa*. Uma nova composição é disparada de forma assíncrona. 4. Caminho frio: não existe nenhum registro. A Lambda de composição é colocada na fila via `InvocationType: 'Event'` e o endpoint retorna `202 { cache: 'PENDING' }`. O FE consulta periodicamente até que um registro chegue (normalmente de 3 a 5 segundos). Tratamento do dia atual: quando `endDate` é o "hoje" local da instalação, o endpoint serve o PNG de ontem: as fatias de hoje ainda estão sendo gravadas pelo cron do Starter e uma nova composição ficaria incompleta. A resposta repete o `endDate` solicitado e inclui `endDateUsed` (= ontem). Enum `cache`: - `HIT`: servido do índice do DDB para a data solicitada. - `HIT-FALLBACK`: hoje solicitado; servida a linha de índice de ontem. - `HIT-BACKFILL`: ausente no DDB, mas o Wasabi tinha o PNG; a linha acabou de ser gravada. - `HIT-FALLBACK-BACKFILL`: preenchimento na alternativa de ontem. - `HIT-STALE`: nenhum registro para a data solicitada, mas existe um registro de outra data para esta tupla; servido imediatamente e uma nova composição é colocada na fila em segundo plano. - `PENDING`: nenhum registro; a composição foi colocada na fila. O FE deve consultar periodicamente. A resposta é `202 Accepted`, sem `filePath`.
Parâmetros
facilityId `string` (obrigatório) deviceUUID `string` (obrigatório) Dispositivo para o qual compor. As composições são por dispositivo. hour `integer` (obrigatório) Hora do dia (0–23) a compor ao longo da janela retroativa. endDate `string` (opcional) Última data da janela (YYYY-MM-DD). Padrão: hoje (fuso horário da instalação). range `string` (opcional) Janela retroativa. Precisa ser um dos intervalos permitidos. nocache `integer` (opcional) Defina como `1` para ignorar as camadas de cache DDB + HEAD e forçar uma nova composição.Endpoint
GET /api/cctv/heatmaps/hourly/{facilityId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/heatmaps/hourly/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Descobre quais horas do dia têm registros de fatias de `1h` para um dispositivo em uma janela retroativa móvel. O front-end usa isso para preencher o seletor de hora junto com um seletor de data + intervalo antes de chamar o endpoint de composição (`/api/cctv/heatmaps/hourly/...`). Exemplo: `GET /api/cctv/heatmaps/query-hourly/Birkdale?deviceUUID=abc123&endDate=2026-04-16&range=30d` Internamente: uma consulta de intervalo do DynamoDB em `cctvheatmaps` (`sk BETWEEN 1h#{start}-00 AND 1h#{end}-23`), agrupada por hora. Retorna uma entrada por hora que tenha pelo menos uma fatia, incluindo um JPEG de referência representativo (obtido do dia mais recente da janela; a referência é compartilhada por dispositivo por dia).
Parâmetros
facilityId `string` (obrigatório) deviceUUID `string` (obrigatório) Dispositivo a consultar. As fatias por hora são por dispositivo. endDate `string` (opcional) Última data da janela (YYYY-MM-DD). Padrão: hoje (fuso horário da instalação). range `string` (opcional) Janela retroativa. Precisa ser um dos intervalos permitidos.Endpoint
GET /api/cctv/heatmaps/query-hourly/{facilityId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/heatmaps/query-hourly/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Consulta registros de mapas de calor pré-gerados de uma instalação. **Todos os registros de um tipo de período:** - `/api/cctv/heatmaps/Birkdale?periodType=1y` - `/api/cctv/heatmaps/Birkdale?deviceUUID=abc123&periodType=1d` **Intervalo de datas, um único tipo de período:** - `/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` **Intervalo de datas, todos os tipos de período aplicáveis (omita periodType):** - `/api/cctv/heatmaps/Birkdale?from=2026-03-01&to=2026-03-31` Retorna registros anuais, semestrais, trimestrais etc., até os de 6h, que se sobrepõem ao intervalo informado. **Momento específico, todos os 9 tipos de período de um dispositivo:** - `/api/cctv/heatmaps/Birkdale?deviceUUID=abc123&date=2026-03-15T14:30` Retorna até 9 registros (1y, 6m, 3m, 2m, 1m, 1w, 1d, 12h, 6h).
Parâmetros
facilityId `string` (obrigatório) O identificador da instalação. deviceUUID `string` (opcional) Consulta um dispositivo específico. Quando omitido, consulta todos os dispositivos (GSI). periodType `string` (opcional) Filtra por um único tipo de período. Quando omitido com from/to, consulta todos os tipos. from `string` (opcional) Data de início (yyyy-mm-dd). Precisa ser usada com `to`. to `string` (opcional) Data de término (yyyy-mm-dd). Precisa ser usada com `from`. date `string` (opcional) Consulta de um momento específico (yyyy-mm-dd ou yyyy-mm-ddTHH:mm). Requer deviceUUID. Retorna um registro por tipo de período.Endpoint
GET /api/cctv/heatmaps/{facilityId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/heatmaps/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obter a miniatura da transmissão ao vivo do dispositivo
Parâmetros
club `string` (obrigatório) ID interno do clube. deviceId `string` (obrigatório) ID interno do dispositivo de CFTV.Endpoint
GET /api/cctv/livestream/:club/thumbnail/:deviceId
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/livestream/:club/thumbnail/:deviceId \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Informar ao sistema de CFTV que você vai assistir a uma transmissão ao vivo
Parâmetros
club `string` (obrigatório) ID interno do clube. deviceId `string` (obrigatório) ID interno do dispositivo de CFTV.Endpoint
POST /api/cctv/livestream/:club/iswatching/:deviceId
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/cctv/livestream/:club/iswatching/:deviceId \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Aprovar uma correspondência de interseção
Define o status da correspondência como confirmado e registra o revisor.
Parâmetros
club `string` (obrigatório) matchId `string` (obrigatório)Endpoint
POST /api/cctv/matching/{club}/detail/{matchId}/approve
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/cctv/matching/{club}/detail/{matchId}/approve \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obter uma única correspondência de interseção com os detalhes da visita
Retorna o registro da correspondência e o detalhamento de horários por visita.
Parâmetros
club `string` (obrigatório) matchId `string` (obrigatório)Endpoint
GET /api/cctv/matching/{club}/detail/{matchId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/matching/{club}/detail/{matchId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Vincular manualmente uma pessoa sem correspondência a um membro
Associa um personId de CFTV a um membro específico, definindo a correspondência como confirmada.
Parâmetros
club `string` (obrigatório) matchId `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/cctv/matching/{club}/detail/{matchId}/link
Exemplo de solicitação
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 '{}'
Resposta
{}
Listar as correspondências de interseção de uma instalação
Retorna correspondências paginadas filtradas por status.
Parâmetros
club `string` (obrigatório) status `string` (opcional) limit `integer` (opcional) nextToken `string` (opcional)Endpoint
GET /api/cctv/matching/{club}/list
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/matching/{club}/list \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Rejeitar uma correspondência de interseção
Define o status da correspondência como rejeitado e registra o revisor.
Parâmetros
club `string` (obrigatório) matchId `string` (obrigatório)Endpoint
POST /api/cctv/matching/{club}/detail/{matchId}/reject
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/cctv/matching/{club}/detail/{matchId}/reject \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obter as contagens resumidas das correspondências de interseção
Retorna as contagens de correspondências agrupadas por status para a instalação.
Parâmetros
club `string` (obrigatório) ID da instalaçãoEndpoint
GET /api/cctv/matching/{club}/summary
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/matching/{club}/summary \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Desvincular uma correspondência de perfil aprendida automaticamente
Reverte uma correspondência vinculada para o status rejeitado e limpa autoLearnedFrom no registro do membro.
Parâmetros
club `string` (obrigatório) matchId `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/cctv/matching/{club}/detail/{matchId}/unlink
Exemplo de solicitação
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 '{}'
Resposta
{}
Lê o status de uma operação "upsert identified person" em andamento (abrange criação e edição). Lê a linha diretamente da tabela `people-ops`, pertencente ao cctv-rekognition-api, sem passar por uma Lambda. Usado pelo front-end de CFTV para acompanhar o progresso após POST /api/cctv/people/{facility}/identified. O caminho é irmão de `/cctv/people/...` (não aninhado nele) para que o roteador do express não confunda `operationId` com `:personID` em `/cctv/people/:club/:personID`. Consulte a ordem dos globs em createAPIRouter. Retorna um marcador `pending` enquanto a Lambda upsertIdentifiedPerson ainda não gravou a primeira entrada de etapa (janela de inicialização a frio). O hook de consulta do FE trata o marcador e pending da mesma forma, o que mantém o contrato estável para quem chama.
Parâmetros
operationId `string` (obrigatório)Endpoint
GET /api/cctv/people-operations/{operationId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people-operations/{operationId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Adiciona uma imagem de rosto (de uma detecção de rastreamento existente) ao sujeito de reconhecimento CompreFace da pessoa e armazena uma referência na tabela de fotos sombra. NÃO envia a imagem ao Wasabi, pois ela já está lá como captura de detecção de rosto.
Parâmetros
club `string` (obrigatório) personID `string` (obrigatório) body `string` (obrigatório)Endpoint
POST /api/cctv/people/:club/:personID/add-face
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/:club/:personID/add-face \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Adicionar fotos sombra ao registro de uma pessoa
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar. personID `string` (obrigatório) ID do registro da pessoa body `string` (obrigatório) Objeto JSON do novo bloco de configuração a adicionar ao sistema.Endpoint
POST /api/cctv/people/:club/shadow-photos/:personID
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/:club/shadow-photos/:personID \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Consultar as fotos sombra de uma pessoa
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar. personID `string` (obrigatório) ID do registro da pessoaEndpoint
GET /api/cctv/people/:club/shadow-photos/:personID
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/:club/shadow-photos/:personID \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Remove permanentemente um registro de foto sombra da CCTVShadowPhotosTable e remove o rosto correspondente do CompreFace (se o faceId estiver armazenado).
Parâmetros
club `string` (obrigatório) personID `string` (obrigatório) id `string` (obrigatório) O ID do registro da foto sombra (chave primária)Endpoint
DELETE /api/cctv/people/:club/shadow-photos/:personID/:id
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/people/:club/shadow-photos/:personID/:id \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Exclui as referências e os registros de reconhecimento associados por um personID
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar. personID `string` (obrigatório) ID exclusivo da pessoa no CFTV.Endpoint
DELETE /api/cctv/people/:club/:personID
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/people/:club/:personID \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna o registro de uma pessoa de um clube
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar. personID `string` (obrigatório) ID da pessoa no banco de dados.Endpoint
GET /api/cctv/people/:club/:personID
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/:club/:personID \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obter as zonas de acesso correspondentes ao perfil de associação de uma pessoa
Resolve o tipo de membro, as tags e os planos de associação da pessoa e depois retorna as zonas de acesso reais (origin=membership-plan, não absorvidas) correspondentes às regras de inclusão/exclusão. O accessRestriction de cada zona é reduzido apenas às regras que corresponderam à pessoa. As câmeras das zonas filhas são mescladas nas zonas pai.
Parâmetros
club `string` (obrigatório) ID interno da instalação personID `string` (obrigatório) ID da pessoa na tabela de pessoas do CFTVEndpoint
GET /api/cctv/people/{club}/{personID}/allowed-zones
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/{club}/{personID}/allowed-zones \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna o status atual de um job de mesclagem, incluindo os resultados por origem. Consulte este endpoint a cada 3 a 5 segundos enquanto o status for IN_PROGRESS.
Parâmetros
club `string` (obrigatório) mergeJobID `string` (obrigatório)Endpoint
GET /api/cctv/people/:club/merge-status/:mergeJobID
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/:club/merge-status/:mergeJobID \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Inicia em segundo plano a mesclagem de vários perfis de pessoas não identificadas em um único perfil sobrevivente. Responde 202 imediatamente com um mergeJobID. Consulte /merge-status/:mergeJobID para acompanhar o progresso.
Parâmetros
club `string` (obrigatório) body `string` (obrigatório)Endpoint
POST /api/cctv/people/:club/merge-unidentified
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/:club/merge-unidentified \
-H "x-api-key: YOUR_API_KEY"
Adicionar um rosto à coleção da lista de bloqueio de uma instalação
Parâmetros
facilityId `string` (obrigatório) ID interno da instalaçãoCorpo da solicitação
Endpoint
POST /api/cctv/people/{facilityId}/blacklist
Exemplo de solicitação
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 '{}'
Resposta
{}
Cria ou atualiza uma pessoa identificada em uma instalação: cria um novo registro ou atualiza um existente. Faz proxy para a Lambda upsertIdentifiedPerson, que grava o registro da pessoa, envia ao Wasabi a foto fornecida e reindexa o rosto no CompreFace. Quando `isNewRecord` é true (padrão), a Lambda executa o ramo de criação (cctvPeople.save) e um `personID` é gerado se não for informado. Quando `isNewRecord` é false, a Lambda executa o ramo de atualização (cctvPeople.update): `personID` é obrigatório e precisa identificar um registro existente.
Parâmetros
facilityId `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/cctv/people/{facilityId}/identified
Exemplo de solicitação
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 '{}'
Atualiza o conjunto de campos opcionais de parceiros sincronizados com a tabela de pessoas do CFTV de uma instalação.
Parâmetros
facilityId `string` (obrigatório) ID interno da instalaçãoCorpo da solicitação
Endpoint
PUT /api/cctv/people/{facilityId}/sync-fields
Exemplo de solicitação
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 '{}'
Resposta
{}
Retorna uma lista de dados de pessoas de um clube
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar.Endpoint
GET /api/cctv/people/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Pesquisa pessoas em uma instalação por imagem de rosto. Invoca a Lambda imageFaceSearch do cctv-rekognition-api com a imagem base64 enviada e o ID da instalação do caminho. Retorna correspondências classificadas mais um resumo de atributos do DeepFace.
Parâmetros
club `string` (obrigatório) ID da instalação / clube body `string` (obrigatório)Endpoint
POST /api/cctv/people/{club}/search-by-face
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/{club}/search-by-face \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Pesquisar pessoas em uma instalação usando o OpenSearch
Parâmetros
facilityId `string` (obrigatório) ID interno da instalação na qual pesquisar query `string` (opcional) Termo de pesquisa (por exemplo, nome) page `string` (opcional) Número da página (padrão 1) limit `string` (opcional) Resultados por página (padrão 20, máximo 100) filters `string` (opcional) Objeto de filtros codificado em JSON (por exemplo, {"membershipStatus":"active"}) sortBy `string` (opcional) Campo de ordenação (created, lastName, firstName, membershipUpdatedOn). O padrão é created. sortOrder `string` (opcional) Direção da ordenação (asc ou desc). O padrão é desc.Endpoint
GET /api/cctv/search/people/:facilityId
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/search/people/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualiza itens de detecção de rosto com um novo personID e associa os registros de reconhecimento
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar. body `string` (obrigatório) Objeto JSON do novo bloco de configuração a adicionar ao sistema.Endpoint
POST /api/cctv/people/:club/validate
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/:club/validate \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna um objeto com todos os filtros disponíveis para os dados de gravações de CFTV de um clube
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar.Endpoint
GET /api/cctv/recordings/filters/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/filters/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Transmitir a gravação.
Endpoint
GET /api/cctv/recordings/:club/:dir/:filename
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/:club/:dir/:filename \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualizar as informações sobre a gravação.
Endpoint
PUT /api/cctv/recordings/:club/:dir/:filename
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/cctv/recordings/:club/:dir/:filename \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna um resumo dos dados de gravações de CFTV de um clube
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar.Endpoint
GET /api/cctv/recordings/:club/summary
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/:club/summary \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna uma lista de dados de gravações de CFTV de um clube com base em um intervalo relativo à hora atual
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar.Endpoint
GET /api/cctv/recordings/:club/timeline
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/:club/timeline \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna uma lista de dados de gravações de CFTV de um clube
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar.Endpoint
GET /api/cctv/recordings/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
As gravações são excluídas automaticamente após um período definido; use esta função para reter gravações
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar.Endpoint
POST /api/cctv/recordings/:club/:action
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/cctv/recordings/:club/:action \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Pesquisar instantâneos de relatórios de uma instalação em um intervalo de datas
Parâmetros
facilityId `string` (obrigatório) ID interno da instalação startDate `string` (obrigatório) Filtro de data de início (YYYY-MM-DD) endDate `string` (obrigatório) Filtro de data de término (YYYY-MM-DD) deviceIds `string` (opcional) Lista separada por vírgulas de IDs de câmeras/dispositivos pelos quais filtrar view `string` (opcional) Visualização alternativa do relatório a calcular (encaminhada à Lambda de relatórios)Endpoint
GET /api/cctv/reports/search-report-snapshots/{facilityId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/reports/search-report-snapshots/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Pesquisa vetorial nas mídias de CFTV indexadas de uma instalação. Responde com um text/event-stream retransmitido da Lambda searchAnything, para que o cliente possa exibir o progresso enquanto um contêiner frio carrega o codificador. Os eventos são `status` e depois `result` ou `error`. Há três formas de consultar, duas delas neste verbo. Envie `query` para pesquisar por texto livre. Envie `seedIndex` + `seedKey` para pesquisar por exemplo ("mais como este") usando o vetor de uma linha que já está no índice; é assim que você encontra mais resultados parecidos com o que o usuário está vendo. Para pesquisar por uma imagem que o usuário tem, faça `POST` dos bytes neste mesmo caminho. Envie palavras com uma imagem para restringir uma pela outra: **o texto filtra, a imagem classifica**. Os candidatos vêm da semente, as palavras decidem quais deles permanecem e a semelhança visual decide a ordem; assim, os resultados continuam parecidos com a imagem e as palavras descartam os que não correspondem. Os dois nunca são combinados em um único vetor, e é por isso que `queryKind` continua `similar` em uma pesquisa combinada; a presença de `query` no resultado é o que indica que um filtro de texto foi aplicado. Espere que pesquisas combinadas não retornem nada com certa frequência e trate isso como um resultado distinto: `perIndex.
Parâmetros
facilityId `string` (obrigatório) ID interno da instalação na qual pesquisar query `string` (opcional) Descrição em texto livre do que procurar. Obrigatória, a menos que warm=1 ou uma semente seja enviada. Combinada com uma semente, deixa de ser o que é classificado e passa a ser um filtro sobre os candidatos da semente, descartando aqueles cuja pontuação de texto fica abaixo do piso de relevância do índice. seedIndex `string` (opcional) Pesquisa por exemplo em vez de por texto: o índice em que a linha semente está (person-crops, recording-frames, timelapse-frames). É o `index` do resultado em que o usuário clicou. Precisa ser enviado com seedKey. seedKey `string` (opcional) A `key` da linha semente, copiada literalmente do resultado. A semente é excluída dos próprios resultados; no caso de uma gravação, isso significa o clipe inteiro, já que os outros quadros dele têm 2s de intervalo e são quase idênticos. seedFrameId `string` (opcional) Obrigatório quando seedIndex é recording-frames: esse índice armazena uma linha por quadro amostrado e todas compartilham a chave do clipe, então a chave sozinha identifica um clipe, e não um momento. Envie o `frameId` do resultado. Linhas mais antigas não têm esse valor; nesse caso, envie seedOffsetMs. seedOffsetMs `string` (opcional) Identificador de quadro alternativo para sementes de recording-frames cuja linha é anterior a `frame_id`. Envie o `offsetMs` do resultado. Ignorado quando seedFrameId é informado. warm `string` (opcional) Prepara um contêiner Lambda sem executar uma pesquisa. Chame ao carregar a página. warmTarget `string` (opcional) Qual codificador `warm` carrega: `text` (padrão), `image` ou `both`. A torre de visão tem 355 MB, contra 283 MB da torre de texto, então prepará-la é opcional: peça `image` somente quando o usuário tiver de fato selecionado uma imagem, e não ao carregar a página. index `string` (opcional) Conjuntos de dados a pesquisar, separados por vírgula: person-crops, recording-frames, timelapse-frames. Os resultados são mesclados em uma única lista ordenada por pontuação. Os três são pesquisados por padrão; passe uma lista explícita para restringir. timelapse-frames abrange câmeras que não gravam nada e só produzem um quadro por minuto, e o piso de relevância dele ainda não está calibrado. model `string` (opcional) Codificador usado na consulta. Precisa corresponder ao codificador com que o conjunto de dados foi indexado. limit `string` (opcional) Resultados a retornar por índice (padrão 50, máximo 100). Não é um total, então pesquisar os três índices pode retornar até o triplo disso. Para gravações, conta clipes em vez de quadros correspondentes. from `string` (opcional) Corresponde apenas a mídias capturadas neste horário ou depois dele, em milissegundos desde o epoch. Observe que é o horário de captura, não o de envio. to `string` (opcional) Corresponde apenas a mídias capturadas antes deste horário (exclusivo), em milissegundos desde o epoch. cameraId `string` (opcional) balenaUUIDs de câmeras, separados por vírgula, aos quais restringir: o campo `balenaUUID` de cada entrada retornada por /api/cctv/recordings/filters/:club. É o filtro de câmera preferido: todos os índices armazenam esse mesmo valor, então um único filtro restringe todos eles. Observe que só os recortes cuja junção com a detecção de rosto foi resolvida o têm (~1% hoje), então restringir recortes por câmera retornará poucos ou nenhum até que o preenchimento dos recortes seja executado; as gravações estão totalmente preenchidas e filtram com exatidão. camera `string` (opcional) Nomes de câmeras, separados por vírgula, aos quais restringir. Na prática, só vale para gravações: person-crops armazena um nome de câmera vazio em todas as linhas, então qualquer valor aqui exclui todos os recortes. Prefira cameraId. cameraGroup `string` (opcional) Grupos de câmeras, separados por vírgula, aos quais restringir. Preenchido em todas as gravações, mas em apenas ~1% dos recortes, pelo mesmo motivo de cameraId. minScore `string` (opcional) Substitui o piso de cosseno por índice que filtra o ruído. Omita em produção; cada índice tem um padrão calibrado (e outro separado, não calibrado, para pesquisas com semente). Passe 0 para ver os vizinhos mais próximos sem filtro ao depurar a relevância.Endpoint
GET /api/cctv/search/anything/:facilityId
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/search/anything/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Pesquisa por uma imagem que o usuário tem, em vez de por palavras ou por um resultado já exibido na tela. Idêntico ao GET em todos os outros aspectos (mesmos parâmetros de consulta, mesmo fluxo de eventos, mesmo formato de resultado), então aqui está documentado apenas o que difere. Envie os **bytes originais do arquivo** como corpo da solicitação, com um Content-Type `image/*`. Não redimensione, recorte nem recodifique a imagem no navegador antes: o servidor reproduz um redimensionamento muito específico (uma compressão para 256x256 com um kernel bilinear com antialiasing) com o qual os vetores indexados foram criados, e o dimensionamento do canvas usa outro. Na medição, essa substituição fica a cerca de 0,93 de cosseno da resposta certa, mais distante do que duas imagens realmente diferentes; assim, os resultados voltam classificados de forma plausível e errada, sem nenhum erro. Limitado a 4 MB, o que é uma restrição de transporte, e não de qualidade: os bytes viajam dentro do payload de invocação da Lambda, limitado a 6 MB, e o base64 os aumenta em um terço. Os resultados são pontuados de imagem para imagem, então `queryKind` é `image` e as pontuações estão na mesma escala, muito mais alta, de uma pesquisa com semente; nunca são comparáveis com pontuações de texto. Espere que fiquem um pouco *abaixo* de uma pesquisa com semente equivalente: o vetor de uma semente foi gravado pelo próprio dispositivo, enquanto um envio é recodificado aqui por outro mecanismo, o que o coloca alguns centésimos longe de onde o dispositivo o teria colocado. Na medição, os resultados têm a mesma qualidade apesar disso; apenas não são exatamente o mesmo conjunto. Adicionar `query` filtra os resultados por essas palavras, exatamente como acontece com uma semente. Enviar uma semente *e* uma imagem é rejeitado: as duas são o que está sendo classificado, então o par não faz sentido. Esta é a solicitação mais cara atendida pelo endpoint. Uma imagem enviada carrega a torre de visão, e adicionar palavras carrega também a torre de texto, ambas em um contêiner frio. Usar `warm=1&warmTarget=image` assim que o usuário selecionar uma imagem tira isso do caminho crítico.
Parâmetros
facilityId `string` (obrigatório) ID interno da instalação na qual pesquisar body `string` (obrigatório) Bytes brutos da imagem, sem modificação, no máximo 4 MB query `string` (opcional) Palavras opcionais para restringir os resultados da imagem, descartando correspondências cuja pontuação de texto fica abaixo do piso de relevância do índice.Endpoint
POST /api/cctv/search/anything/:facilityId
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/cctv/search/anything/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna os detalhes de armazenamento e outros dados de métricas do CFTV do clube
Endpoint
GET /api/cctv/storage-details/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/storage-details/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna uma lista dos registros de envio de timelapses de um clube
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar.Endpoint
GET /api/cctv/timelapse/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/timelapse/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Listar as ações dos usuários realizadas nas gravações no front-end ou na interface de CFTV
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar.Endpoint
GET /api/cctv/ui/actions/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/ui/actions/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Registrar uma ação do usuário realizada nas gravações no front-end ou na interface de CFTV
Parâmetros
body `string` (obrigatório) Objeto JSON do novo bloco de configuração a adicionar ao sistema.Endpoint
POST /api/cctv/ui/actions/:club
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/cctv/ui/actions/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obter o token do usuário para o front-end ou a interface de CFTV
Parâmetros
club `string` (obrigatório) ID do clubeEndpoint
GET /api/cctv/ui/token/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/ui/token/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Gerar um token para acesso temporário ou de convidado
Parâmetros
club `string` (obrigatório) O identificador exclusivo do clube. body `string` (obrigatório) Objeto JSON dos detalhes do token a emitir.Endpoint
POST /api/cctv/token/{club}
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/cctv/token/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{
"accessID": "00000000-0000-0000-0000-000000000014"
}
Retorna uma lista de registros de tokens de acesso temporário ou de convidado
Parâmetros
club `string` (obrigatório) O identificador exclusivo do clube.Endpoint
GET /api/cctv/token/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/cctv/token/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obter o token de acesso pelo ID de acesso
Parâmetros
accessID `string` (obrigatório) ID do registro do token no banco de dados.Endpoint
POST /guest/cctv/token/:accessID
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/guest/cctv/token/:accessID \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Excluir um horário de acesso da instalação
Parâmetros
facilityId `string` (obrigatório) body `object` (obrigatório) Objeto JSON do novo horário de acesso.Endpoint
DELETE /api/ai/computer-vision/access-hours/:facilityId
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/ai/computer-vision/access-hours/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna uma lista dos horários de acesso da instalação
Parâmetros
facilityId `string` (obrigatório)Endpoint
GET /api/ai/computer-vision/access-hours/:facilityId
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/ai/computer-vision/access-hours/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualiza ou cria um horário de acesso da instalação
Parâmetros
facilityId `string` (obrigatório) body `object` (obrigatório) Objeto JSON do novo horário de acesso.Endpoint
POST /api/ai/computer-vision/access-hours/:facilityId
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/ai/computer-vision/access-hours/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Excluir uma zona de acesso da instalação
Parâmetros
facilityId `string` (obrigatório) body `object` (obrigatório) Objeto JSON da nova zona de acesso.Endpoint
DELETE /api/ai/computer-vision/access-zones/:facilityId
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/ai/computer-vision/access-zones/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna uma lista das zonas de acesso da instalação
Parâmetros
facilityId `string` (obrigatório)Endpoint
GET /api/ai/computer-vision/access-zones/:facilityId
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/ai/computer-vision/access-zones/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualiza ou cria uma zona de acesso da instalação
Parâmetros
facilityId `string` (obrigatório) body `object` (obrigatório) Objeto JSON da nova zona de acesso.Endpoint
POST /api/ai/computer-vision/access-zones/:facilityId
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/ai/computer-vision/access-zones/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a união de todos os IDs de módulos de administração entre as marcas e instalações de uma organização, preenchidos como objetos de módulo.
Parâmetros
organisationId `string` (obrigatório) ID da organizaçãoEndpoint
GET /api/organisations/{organisationId}/admin-modules
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/organisations/{organisationId}/admin-modules \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna uma lista de todas as organizações
Parâmetros
includeBrands `string` (opcional) Incluir as marcas associadas à organização includeFacilities `string` (opcional) Incluir as instalações associadas à organização includeRegions `string` (opcional) Incluir as regiões associadas à organizaçãoEndpoint
GET /api/organisations
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/organisations \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Um auxiliar de IA simples que analisa o conteúdo de um chamado de suporte e cria sugestões com base nos tópicos disponíveis, além de sugerir tópicos de pesquisa no Algolia...
Parâmetros
messageBody `string` (obrigatório) Corpo da mensagem a enviar topicData `string` (obrigatório) Objeto/array JSON do topicData retornado pelo osTicket (sistema de chamados/suporte) facilityId `string` (opcional) O ID interno do clube, necessário para determinar o índice correto do Algolia a ser pesquisado.Endpoint
PUT /api/ai/helpers/analyse-support-ticket
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/ai/helpers/analyse-support-ticket \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Uma API simples de geração de imagens
Parâmetros
type `string` (obrigatório) Tipo de imagem a gerar name `string` (obrigatório) Nome da imagem maxSize `string` (opcional) Tamanho máximo opcional da resposta, por exemplo 200KB, 1MB ou uma contagem simples de bytes. A imagem é reduzida/comprimida para caber.Endpoint
PUT /api/ai/images/:type/:name
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/ai/images/:type/:name \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Consulta simples a LLM
Endpoint leve para consultas simples e sem estado a LLMs. Usa um modelo barato, sem raciocínio (gpt-4o-mini), com limites rígidos de tokens. Sem histórico de conversa, sem ferramentas, sem streaming: apenas prompt de entrada e texto de saída.
Corpo da solicitação
Endpoint
POST /api/ai/llm/query
Exemplo de solicitação
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 '{}'
Resposta
{}
Retorna a configuração do Algolia, incluindo o nome do índice, o ID do app e a chave de API.
Parâmetros
facilityId `string` (obrigatório)Endpoint
GET /api/facilities/{facilityId}/algolia/config
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/algolia/config \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Inicializa o índice de impressos de marketing do Algolia
Parâmetros
organisationId `string` (obrigatório)Endpoint
PUT /api/algolia/index
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/algolia/index \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Pesquisar materiais impressos de marketing
Corpo da solicitação
Endpoint
POST /algolia/search-marketing-print
Exemplo de solicitação
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 '{}'
Resposta
{}
Pesquisar materiais impressos de marketing
Parâmetros
club `string` (opcional) ID do clube searchTerms `string` (opcional) Termos de pesquisa algoliaArgs `object` (opcional) Argumentos adicionais de pesquisa do AlgoliaEndpoint
GET /algolia/search-marketing-print
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/algolia/search-marketing-print \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualizar em massa os objetos de impressos de marketing de um clube específico
Endpoint
POST /algolia/bulk-update-marketing-print
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/algolia/bulk-update-marketing-print \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Busca os recursos de impressos de marketing no Algolia.
Parâmetros
organisationId `string` (obrigatório) search `string` (opcional) limit `string` (opcional) brand `string` (opcional) tag `string` (opcional)Endpoint
GET /api/algolia/marketing/assets
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/algolia/marketing/assets \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Inicializa o índice de impressos de marketing do Algolia com a configuração da instalação.
Parâmetros
organisationId `string` (obrigatório)Endpoint
POST /api/algolia/marketing/assets
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/algolia/marketing/assets \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Realiza uma pesquisa em um índice do Algolia especificado com base em termos de pesquisa, clube e/ou localidade. A pesquisa pode ser personalizada ainda mais com argumentos adicionais do Algolia.
Parâmetros
searchTerms `string` (obrigatório) Os termos a pesquisar no índice do Algolia. club `string` (opcional) ID interno do clube que está fazendo a solicitação. Se especificado, a pesquisa será filtrada com base na região associada ao clube. locale `string` (opcional) A localidade usada para determinar a região se nenhum clube for especificado. Derivada de navigator.languages. algoliaArgs `string` (opcional) Argumentos adicionais/personalizados a repassar para a solicitação de pesquisa do Algolia.Endpoint
POST /api/algolia/search-wiki
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/algolia/search-wiki \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Lista todos os anúncios
Endpoint
GET /api/announcements/list
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/announcements/list \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Envia um recurso para um BUCKET S3 PÚBLICO (pela Upload API), que depois fará o pós-processamento/otimização do arquivo, gerará miniaturas etc. *Observação: os recursos ficarão disponíveis publicamente*
Parâmetros
file `string` (opcional) Nome do arquivo/recurso a ser enviado.Endpoint
POST /api/asset-upload
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/asset-upload \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna o status do envio pelo UUID informado do registro de envio
Parâmetros
uuid `string` (obrigatório) UUID do registro de envioEndpoint
GET /api/asset-upload/:uuid
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/asset-upload/:uuid \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Enviar um comando ao Sonos do clube
Parâmetros
body `object` (obrigatório) Objeto JSON do comando e da entrada a enviar ao Sonos.Endpoint
PUT /api/audio-control/command/:club
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/audio-control/command/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Recuperar a configuração do front-end do Controle de áudio
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar.Endpoint
GET /api/audio-control/config/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/audio-control/config/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Alterar a configuração do front-end do Controle de áudio
Parâmetros
body `object` (obrigatório) Objeto JSON do novo bloco de configuração a adicionar ao sistema.Endpoint
PUT /api/audio-control/config/:club/:section
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/audio-control/config/:club/:section \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Recupera as configurações da marca de uma região específica
Parâmetros
brandId `string` (opcional) O ID da marca regionCode `string` (opcional) O código ISO da região cujas configurações serão recuperadasEndpoint
GET /api/brands/{brandId}/regions/{regionCode}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId}/regions/{regionCode} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualiza várias configurações da marca de uma região específica
Parâmetros
brandId `string` (opcional) O ID da marca a atualizar regionCode `string` (opcional) O código ISO da região cujas configurações serão atualizadas acceptFreeTrialBookingsVisibility `string` (opcional) customTrackingCodeVisibility `string` (opcional) displayDataSources `string` (opcional) displayDefaultDataSource `string` (opcional) displayDefaultUI `string` (opcional) displayUIOptions `string` (opcional) defaultAboutBusiness `string` (opcional) defaultAboutBusinessFacebook `string` (opcional) facilityCoverImage `string` (opcional) digitalProfileSettingsVisibility `string` (opcional) facilityHoursVisibility `string` (opcional) facilityLocationVisibility `string` (opcional) facilityPaymentMethods `string` (opcional) facilityPrimaryLogo `string` (opcional) facilityStatusVisibility `string` (opcional) landingPagesVisibility `string` (opcional) lineChatIntegrationVisibility `string` (opcional) whatsAppIntegrationVisibility `string` (opcional) defaultWhatsAppMessage `string` (opcional) socialUrlsVisibility `string` (opcional) yextApiKey `string` (opcional) Chave de API usada pela integração com o Yext para esta marca-região. Só é consultada quando `directorySyncMode` é `yext`. directorySyncMode `string` (opcional) Qual back-end de sincronização deve ser executado para as instalações desta marca-região. Quando ausente, o padrão é `yext`, para compatibilidade com marcas anteriores à implantação dos Directory Publishers. websiteUrl `string` (opcional) androidAppUrl `string` (opcional) iosAppUrl `string` (opcional) featuredMessageDescription `string` (opcional) yextCategoryIds `string` (opcional) Chave de armazenamento legada: na verdade, são IDs de categoria do Google Business Profile (por exemplo, gcid:gym). O prefixo "yext" é anterior à descontinuação do Yext; mantido para compatibilidade com as linhas existentes no banco de dados. customInputFields `string` (opcional) customInputFieldsToRemove `string` (opcional)Endpoint
PUT /api/brands/{brandId}/regions/{regionCode}
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/brands/{brandId}/regions/{regionCode} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Recupera as configurações da marca de uma instalação específica
Parâmetros
facilityId `string` (opcional) O ID da instalação cujas configurações da marca serão recuperadasEndpoint
GET /api/facilities/{facilityId}/brand-settings
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/brand-settings \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Cria uma nova marca
Parâmetros
name `string` (obrigatório) O nome da marca organisationId `string` (obrigatório) O ID da organização à qual a marca pertence redirectDashboard `string` (opcional) A URL para a qual redirecionar após o login, em vez do painel padrãoEndpoint
POST /api/brands
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/brands \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a lista de todas as marcas
Endpoint
GET /api/brands
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/brands \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna o objeto da marca
Parâmetros
brandId `string` (obrigatório) O ID da marca a recuperar includeOrganisation `boolean` (opcional) Se os dados da organização devem ser incluídos na respostaEndpoint
GET /api/brands/{brandId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualiza uma marca pelo ID
Parâmetros
brandId `string` (opcional) O ID da marca a atualizar name `string` (obrigatório) O nome da marca brandOrganisationId `string` (opcional) O ID da organização à qual a marca pertence redirectDashboard `string` (opcional) A URL para a qual redirecionar após o login, em vez do painel padrão yextApiKey `string` (opcional) A chave de API usada para acessar a API do Yext para esta marca customMenuLayout `object` (opcional) Árvore de layout do menu lateral por marca (seções / grupos / itens com referências a módulos do sistema ou URLs personalizadas). Só pode ser definida por um administrador da organização desta marca.Endpoint
PUT /api/brands/{brandId}
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/brands/{brandId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Listar as instalações de uma marca
Retorna uma lista simplificada das instalações (ID, nome, código ISO da região) pertencentes à marca. Usada para preencher os seletores de instalações de destino na configuração da marca.
Parâmetros
brandId `string` (obrigatório) O ID da marca cujas instalações serão listadasEndpoint
GET /api/brands/{brandId}/facilities
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId}/facilities \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a lista de todas as marcas associadas à organização do clube.
Endpoint
GET /api/clubs/{club}/brands
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/brands \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a lista de todos os tipos de calendário
Endpoint
GET /api/programs/calendars/calendar-types
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/programs/calendars/calendar-types \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna o arquivo KYC de um clube.
Parâmetros
clubId `string` (obrigatório) O ID do clube. key `string` (obrigatório) A chave do arquivo KYC.Endpoint
GET /api/clubs/{clubId}/kyc-assets/{key}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/kyc-assets/{key} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna as informações KYC do clube.
Endpoint
GET /api/clubs/{clubId}/kyc
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/kyc \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualiza as informações KYC do clube.
Parâmetros
clubId `string` (obrigatório) O ID do clube a atualizar. body `object` (obrigatório)Endpoint
PUT /api/clubs/{clubId}/kyc
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubId}/kyc \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Envia um arquivo KYC de um clube.
Parâmetros
clubId `string` (obrigatório) O ID do clube. file `string` (obrigatório) O arquivo a enviar.Endpoint
POST /api/clubs/{clubId}/kyc-assets
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubId}/kyc-assets \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna as configurações de preferências do clube.
Endpoint
GET /api/club/preferences/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/club/preferences/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Cria ou atualiza a entrada de preferências do clube.
Corpo da solicitação
Endpoint
POST /api/club/preferences/:club
Exemplo de solicitação
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 '{}'
Resposta
{}
Retorna a lista de membros com contrato.
Endpoint
GET /api/clubpass/user/email/exist/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubpass/user/email/exist/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a lista de membros com contrato.
Endpoint
GET /api/clubpass/user/phone/exist/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubpass/user/phone/exist/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna uma lista dos usuários do clube especificado
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessarEndpoint
GET /api/clubs/{club}/members
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/members \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Informa se o clube está aberto na data especificada.
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar. date `string` (obrigatório) Data a verificar, em formato unixEndpoint
GET /api/club-busy-hours/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/club-busy-hours/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna todos os metadados do clube exibidos nos sites do Example Club.
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar.Endpoint
GET /api/clubs/clubpage/clubdata/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/clubpage/clubdata/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualiza os metadados de um clube com novos dados fornecidos pelo front-end. Os campos ausentes do corpo da solicitação são preservados (sem SET, sem REMOVE). Os campos enviados como `null` ou string vazia são apagados. Passe `updateAll: false` para usar o caminho dedicado de mesclagem parcial; de qualquer forma, quem chama nunca precisa enviar campos que não são seus.
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar. body `string` (obrigatório) Objeto JSON dos dados do clube que você deseja atualizar.Endpoint
POST /api/clubs/clubpage/updateclub/{club}
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/clubs/clubpage/updateclub/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
adicionar um novo registro de rastreamento personalizado
Parâmetros
club `string` (obrigatório) ID do clube body `string` (obrigatório) Array de itens de rastreamento personalizado.Endpoint
POST /api/clubs/{club}/customtracking
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{club}/customtracking \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna o rastreamento personalizado de um clube específico
Endpoint
GET /api/clubs/customtracking/:clubID
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/customtracking/:clubID \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualizar entradas de rastreamento personalizado
Parâmetros
club `string` (obrigatório) ID do clube body `string` (obrigatório) Objeto JSON dos dados do clube que você deseja atualizar.Endpoint
POST /api/clubs/{club}/customtracking/update
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{club}/customtracking/update \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a imagem padrão da fachada de um clube.
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar.Endpoint
GET /api/clubs/{club}/default-shop-front
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/default-shop-front \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Listar as portas disponíveis na instalação
Parâmetros
body `object` (obrigatório) Objeto JSON dos dados do clube que você deseja atualizar.Endpoint
POST /api/clubs/integrations/doors/:facilityId
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/clubs/integrations/doors/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Destrancar uma porta específica da instalação
Parâmetros
body `object` (obrigatório) Objeto JSON dos dados do clube que você deseja atualizar.Endpoint
POST /api/clubs/integrations/doors/unlock
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/clubs/integrations/doors/unlock \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna todas as integrações e os detalhes de configuração do clube especificado.
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar.Endpoint
GET /api/clubs/integrations/list/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/integrations/list/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualiza os metadados de um clube com novos dados fornecidos pelo front-end.
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar. body `object` (obrigatório) Objeto JSON dos dados do clube que você deseja atualizar.Endpoint
POST /api/clubs/integrations/update/{club}
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/clubs/integrations/update/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna um booleano indicando se o clube está ou não em um país europeu
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar. date `string` (obrigatório) Data a verificar, em formato unixEndpoint
GET /api/clubs/is-eu/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/is-eu/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna uma lista geral de todos os clubes do nosso banco de dados.
Endpoint
GET /api/clubs/listclubs
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/listclubs \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Informa se o clube está aberto na data especificada.
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar. date `string` (obrigatório) Data a verificar, em formato unixEndpoint
GET /api/clubs/{club}/open-on/{date}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/open-on/{date} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obter as avaliações do clube no DynamoDB.
Parâmetros
club `string` (obrigatório) ID do clubeEndpoint
GET /api/clubs/{club}/reviews
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/reviews \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obter as configurações de avaliações do clube no DynamoDB.
Parâmetros
facilityId `string` (obrigatório) ID da instalaçãoEndpoint
GET /api/clubs/{club}/reviews-settings
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/reviews-settings \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualizar as configurações de avaliações do clube no DynamoDB.
Parâmetros
club `string` (obrigatório) ID do clubeEndpoint
PUT /api/clubs/{club}/reviews-settings
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews-settings \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Reativar a publicação automática nas configurações de avaliações.
Parâmetros
club `string` (obrigatório) ID do clubeEndpoint
PUT /api/clubs/{club}/reviews/publish-recent-reviews
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/publish-recent-reviews \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Publica uma avaliação
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar. review `string` (obrigatório) ID interno da avaliação que você deseja publicar.Endpoint
PUT /api/clubs/{club}/reviews/{review}/publish
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/{review}/publish \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Reativar a publicação automática nas configurações de avaliações.
Parâmetros
club `string` (obrigatório) ID do clubeEndpoint
PUT /api/clubs/{club}/reviews-settings/re-enable-auto-publish
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews-settings/re-enable-auto-publish \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Publica uma resposta a uma avaliação pelo publicador de origem (Google etc.).
Parâmetros
club `string` (obrigatório) ID da instalação reviewId `string` (obrigatório) ID da avaliação no PH (consultado na tabela club-social-reviews) body `string` (obrigatório)Endpoint
POST /api/clubs/{club}/reviews/{reviewId}/respond
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/{reviewId}/respond \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Cancela a publicação de uma avaliação
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar. review `string` (obrigatório) ID interno da avaliação cuja publicação você deseja cancelar.Endpoint
PUT /api/clubs/{club}/reviews/{review}/un-publish
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/{review}/un-publish \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna uma lista dos proprietários do clube especificado a partir do banco de dados do PH
Parâmetros
clubID `string` (obrigatório) ID interno do clube que você deseja acessarEndpoint
GET /api/clubs/{clubID}/owners
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/owners \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna todos os planos de associação da instalação.
Parâmetros
facilityId `string` (obrigatório) ID interno da instalaçãoEndpoint
GET /api/facilities/membership-plans/:facilityId
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/facilities/membership-plans/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualiza um registro de plano de associação.
Parâmetros
facilityId `string` (obrigatório) ID interno da instalação body `object` (obrigatório) Objeto JSON dos dados do plano de associação que você deseja atualizar.Endpoint
PUT /api/facilities/membership-plans/:facilityId
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/facilities/membership-plans/:facilityId \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Reativar a publicação automática nas configurações de avaliações.
Parâmetros
club `string` (obrigatório) ID do clubeEndpoint
PUT /api/clubs/{club}/reviews/publish-recent-reviews
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/publish-recent-reviews \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Reativar a publicação automática nas configurações de avaliações.
Parâmetros
club `string` (obrigatório) ID do clubeEndpoint
PUT /api/clubs/{club}/reviews-settings/re-enable-auto-publish
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews-settings/re-enable-auto-publish \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a lista de todas as moedas disponíveis
Endpoint
GET /api/currencies
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/currencies \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a localização geográfica com base no endereço IP.
Parâmetros
ip `string` (obrigatório) Endereço IP a consultarEndpoint
GET /api/geo/ip-location/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/geo/ip-location/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a localização geográfica do usuário atual com base no IP dele.
Endpoint
GET /api/geo/ip-current
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/geo/ip-current \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna apenas o endereço IP público do cliente solicitante (sem consulta de geolocalização e sem chamada a APIs de terceiros). Usado pelo aplicativo de Agente de IA para comparar o IP público do navegador com o IP WAN informado pelo dispositivo, para detectar se estão na mesma rede.
Endpoint
GET /api/geo/client-ip
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/geo/client-ip \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Analisador de números de telefone.
Parâmetros
body `string` (obrigatório) Objeto JSON com o número que você quer analisar.Endpoint
POST /api/phone/parser
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/phone/parser \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna o dispositivo de relógio principal
Parâmetros
club_id `string` (obrigatório) ID interno do clube ao qual você deseja adicionar o dispositivo.Endpoint
GET /api/clubs/{club_id}/smart-club/health-check/master-clock
Exemplo de solicitação
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"
Resposta
{}
Retorna o dispositivo Sonos principal
Parâmetros
club_id `string` (obrigatório) ID interno do clube ao qual você deseja adicionar o dispositivo.Endpoint
GET /api/clubs/{club_id}/smart-club/health-check/sonos-mqtt
Exemplo de solicitação
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"
Resposta
{}
obter as notificações de bateria fraca do Duress de um clube.
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar.Endpoint
GET /api/clubs/{club}/smart-club/health-check/low-battery-duress
Exemplo de solicitação
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"
Resposta
{}
Retorna dados de análise da rede
Parâmetros
club_id `string` (obrigatório) ID interno do clube ao qual você deseja adicionar o dispositivo.Endpoint
GET /api/clubs/{club_id}/smart-club/health-check/network-analysis
Exemplo de solicitação
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"
Resposta
{}
enviar as notificações de bateria fraca do Duress de um clube.
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar.Endpoint
GET /api/clubs/{club}/smart-club/health-check/send-low-battery-duress-notifs
Exemplo de solicitação
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"
Resposta
{}
Retorna dados de teste de velocidade dos dispositivos para cada tipo de dispositivo
Parâmetros
club_id `string` (obrigatório) ID interno do clube ao qual você deseja adicionar o dispositivo.Endpoint
GET /api/clubs/{club_id}/smart-club/health-check/speed-test
Exemplo de solicitação
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"
Resposta
{}
Obtém os insights de listagem de uma instalação. Por padrão, retorna totais diários agregados de todos os publicadores, ou de um único publicador quando `publisherId` é informado.
Parâmetros
facilityId `string` (obrigatório) publisherId `string` (opcional) startDate `string` (obrigatório) endDate `string` (obrigatório)Endpoint
GET /api/facilities/{facilityId}/directory-insights
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/directory-insights \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obtém os insights de listagem agregados de uma marca em todos os publicadores.
Parâmetros
brandId `string` (obrigatório) startDate `string` (obrigatório) endDate `string` (obrigatório)Endpoint
GET /api/brands/{brandId}/directory-insights
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId}/directory-insights \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Principais palavras-chave de pesquisa (com divisão entre com marca e sem marca) de uma instalação, atualmente obtidas do Google Business Profile.
Parâmetros
facilityId `string` (obrigatório) publisherId `string` (opcional) O padrão é "google"; atualmente apenas o Google é compatível. startDate `string` (obrigatório) endDate `string` (obrigatório) limit `string` (opcional)Endpoint
GET /api/facilities/{facilityId}/directory-search-keywords
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/directory-search-keywords \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Principais palavras-chave de pesquisa de uma marca, agregadas em todas as instalações.
Parâmetros
brandId `string` (obrigatório) startDate `string` (obrigatório) endDate `string` (obrigatório) limit `string` (opcional)Endpoint
GET /api/brands/{brandId}/directory-search-keywords
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId}/directory-search-keywords \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Listar as perguntas e respostas de uma instalação.
Parâmetros
facilityId `string` (obrigatório)Endpoint
GET /api/facilities/{facilityId}/qna
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/qna \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Responder a uma pergunta.
Endpoint
POST /api/facilities/{facilityId}/qna/{questionId}/answer
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/facilities/{facilityId}/qna/{questionId}/answer \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Excluir uma resposta.
Endpoint
DELETE /api/facilities/{facilityId}/qna/{questionId}/answer/{answerId}
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/facilities/{facilityId}/qna/{questionId}/answer/{answerId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna os publicadores ativados para a organização da instalação, com o status de conexão de cada um.
Parâmetros
facilityId `string` (obrigatório) organisationId `string` (obrigatório)Endpoint
GET /api/facilities/{facilityId}/directory-publishers/resolved
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/directory-publishers/resolved \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obter as Access Policies de uma instalação
A configuração de acesso existente é convertida automaticamente em políticas aplicadas equivalentes na primeira leitura.
Parâmetros
facilityId `string` (obrigatório)Endpoint
GET /api/door-access/policies/{facilityId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Substituir as Access Policies com verificação otimista de revisão
Parâmetros
facilityId `string` (obrigatório)Corpo da solicitação
Endpoint
PUT /api/door-access/policies/{facilityId}
Exemplo de solicitação
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 '{}'
Resposta
{}
Criar uma Access Policy
Parâmetros
facilityId `string` (obrigatório)Endpoint
POST /api/door-access/policies/{facilityId}
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualizar uma Access Policy
Parâmetros
facilityId `string` (obrigatório) policyId `string` (obrigatório)Endpoint
PATCH /api/door-access/policies/{facilityId}/{policyId}
Exemplo de solicitação
curl -X PATCH https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/{policyId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Excluir uma Access Policy
Parâmetros
facilityId `string` (obrigatório) policyId `string` (obrigatório) revision `integer` (obrigatório)Endpoint
DELETE /api/door-access/policies/{facilityId}/{policyId}
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/{policyId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Duplicar uma Access Policy com um novo ID estável
Parâmetros
facilityId `string` (obrigatório) policyId `string` (obrigatório)Endpoint
POST /api/door-access/policies/{facilityId}/{policyId}/duplicate
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/{policyId}/duplicate \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Contar os usuários e as portas afetados por todas as Access Policies
Parâmetros
facilityId `string` (obrigatório)Endpoint
GET /api/door-access/policies/{facilityId}/impacts
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/impacts \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Contar os usuários e as portas afetados por uma Access Policy
Parâmetros
facilityId `string` (obrigatório) policyId `string` (obrigatório)Endpoint
GET /api/door-access/policies/{facilityId}/{policyId}/impact
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/{policyId}/impact \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Listar os controladores de porta de uma instalação com as regras efetivas do Door & Gate Access
Parâmetros
facilityId `string` (obrigatório)Endpoint
GET /api/door-access/doors/{facilityId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Salvar as substituições por porta, o ícone e a configuração do lado do dispositivo
Ponto único de gravação para tudo o que o aplicativo de administração do DGA edita em uma porta: - `accessRulesOverride` / `geofenceOverride`: informe `null` para limpar e voltar ao padrão da instalação. - `icon`: chave estável de transmissão (consulte services/door-access/door-icons.js); valores desconhecidos retornam 400. - `holdTimeSeconds` (1–30), `maintenanceMode` (`off` / `force-open` / `force-closed`), `doorLocation` (texto livre, ≤64 caracteres), `playNotificationSoundOnRelayToggle` (booleano), `autoUnlockSchedule` (grade de janelas semanais). Antes eram campos exclusivos do Gerenciamento de dispositivos, mas agora o aplicativo os grava diretamente para que os administradores não precisem sair do painel lateral da porta para alterações de configuração do dia a dia. Quando algum dos campos do lado do dispositivo é alterado, a rota também envia as variáveis de ambiente correspondentes do Balena (`RELAY_NOTIFICATION_SOUND`, `DOOR_MAINTENANCE_MODE`, `DOOR_AUTO_UNLOCK_SCHEDULE`) e dispara um comando MQTT `unlockUpdates` para que o dispositivo receba a nova configuração sem esperar a próxima atualização de ambiente do Balena. Melhor esforço: a resposta é 200 mesmo que o Balena esteja temporariamente inacessível.
Parâmetros
facilityId `string` (obrigatório) doorId `string` (obrigatório)Corpo da solicitação
Endpoint
PUT /api/door-access/doors/{facilityId}/{doorId}/override
Exemplo de solicitação
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 '{}'
Resposta
{}
Verificação leve do status do Balena para o aviso de recarga no painel lateral da porta
O painel lateral do aplicativo DGA busca isso sob demanda quando um administrador abre uma porta, para mostrar o texto correto de "salvar recarregará o controlador": a variante padrão "alguns segundos" ou a variante mais forte "vários minutos" quando também há uma atualização de versão pendente. Retorna um snapshot simples derivado de `balena.models.device.get()`. Em caso de falha, retorna `data: null` (em vez de um erro 5xx) para que uma indisponibilidade do Balena apenas degrade o texto do aviso em vez de impedir a abertura do painel lateral.
Parâmetros
facilityId `string` (obrigatório) doorId `string` (obrigatório)Endpoint
GET /api/door-access/doors/{facilityId}/{doorId}/device-status
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId}/{doorId}/device-status \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Substituição pelo administrador: destravar uma porta pelo aplicativo
Aciona brevemente o relé usando o `holdTimeSeconds` atual da porta, gravando uma linha de auditoria `admin-override` em ph-door-app-access-events para que a ação seja atribuível nos Registros de acesso. Sempre funciona, independentemente de `maintenanceMode === 'force-closed'`: esta é a saída de emergência do administrador. Retorna 200 assim que a publicação MQTT é despachada; os estados confirmado / com falha / expirado não são aguardados aqui (o fluxo legado /api/devices/door-controllers + /api/ics/devices/command também é do tipo disparar e esquecer).
Parâmetros
facilityId `string` (obrigatório) doorId `string` (obrigatório)Endpoint
POST /api/door-access/doors/{facilityId}/{doorId}/unlock
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId}/{doorId}/unlock \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Tocar um padrão de bipes de localização no controlador de porta
Publica um comando MQTT `beep` para que o controlador emita três bipes de duração média (~500 ms cada, intervalo de ~350 ms, ~2 s no total). Usado pelos administradores para localizar fisicamente um controlador de porta no local. O botão legado do Gerenciamento de dispositivos usa uma sequência de ~30 s de bipes curtos, mas o driver do buzzer do firmware só emite o primeiro de forma confiável, por isso o aplicativo envia um padrão mais curto e confiável. Sem linha de auditoria: é uma ação de diagnóstico sem efeito colateral no controle de acesso.
Parâmetros
facilityId `string` (obrigatório) doorId `string` (obrigatório)Endpoint
POST /api/door-access/doors/{facilityId}/{doorId}/identify
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId}/{doorId}/identify \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Reiniciar remotamente um controlador de porta
Publica o mesmo comando MQTT `rebootDevice` do tipo disparar e esquecer que o botão legado "Remotely Reboot Device" do Gerenciamento de dispositivos envia, mas controlado pelo módulo `door-gate-access` para que os administradores do DGA possam reiniciar um controlador na seção Advanced do painel lateral da porta sem uma concessão `device-management` separada. Retorna 200 assim que a publicação é despachada; o dispositivo fica off-line durante a reinicialização.
Parâmetros
facilityId `string` (obrigatório) doorId `string` (obrigatório)Endpoint
POST /api/door-access/doors/{facilityId}/{doorId}/reboot
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId}/{doorId}/reboot \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Listar as linhas de acesso de usuários de uma instalação
Retorna todas as linhas de acesso de usuários não excluídas da instalação. Aceita filtros do lado do cliente (source, search, accessEnabled, hasGrants). O cálculo `hideExcluded` no servidor, da Fase 4, será adicionado quando o avaliador de concessões híbridas for lançado; por enquanto, o parâmetro é aceito, mas retorna o conjunto completo.
Parâmetros
facilityId `string` (obrigatório) search `string` (opcional) source `string` (opcional) accessEnabled `string` (opcional) hasGrants `string` (opcional) hideExcluded `boolean` (opcional) Quando true, os usuários sincronizados (source != manual) que não poderiam passar por nenhuma porta em nenhum momento nesta instalação ficam ocultos. A resposta inclui um envelope `hidden: { count, sample }`.Endpoint
GET /api/door-access/users/{facilityId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/door-access/users/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Criar manualmente uma linha de acesso de usuário em uma instalação
Cria uma nova linha com `source: 'manual'`. Retorna 409 com `existingUserId` se o telefone ou e-mail informado já corresponder a uma linha nesta instalação.
Parâmetros
facilityId `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/door-access/users/{facilityId}
Exemplo de solicitação
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 '{}'
Obter uma única linha de acesso de usuário
Parâmetros
facilityId `string` (obrigatório) userId `string` (obrigatório)Endpoint
GET /api/door-access/users/{facilityId}/{userId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualização parcial de uma linha de acesso de usuário
Edita qualquer subconjunto dos campos de identidade / autorização. Informe `null` para limpar um campo opcional. Retorna 409 se o novo telefone ou e-mail coincidir com outra linha na mesma instalação. `appMessage` aceita o mesmo formato da mensagem para toda a instalação em PUT /api/door-access/rules/{facilityId}: texto do corpo, gravidade, link opcional e agendamento opcional de início/fim. O aplicativo móvel mostra isso no painel apenas para o usuário em questão.
Parâmetros
facilityId `string` (obrigatório) userId `string` (obrigatório)Corpo da solicitação
Endpoint
PATCH /api/door-access/users/{facilityId}/{userId}
Exemplo de solicitação
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 '{}'
Resposta
{}
Excluir logicamente uma linha de acesso de usuário
Marca a linha como `deleted: true` e desativa o acesso. O vínculo do registro de auditoria com o userId é preservado; os administradores podem reativá-la manualmente.
Parâmetros
facilityId `string` (obrigatório) userId `string` (obrigatório)Endpoint
DELETE /api/door-access/users/{facilityId}/{userId}
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atribuição de acesso por porta de um usuário
Para cada porta, retorna a autorização determinística atual (`allowedNow`, `allowedVia`, `deniedReason`) e os caminhos configurados para Access Policies, concessões permanentes, agendamentos de políticas, concessões de janela de tempo do administrador e janelas de origem de parceiros mapeadas e recentes. Também retorna a disponibilidade ativa/próxima e a atualidade das origens. O blockAllAccess e a manutenção da porta são avaliados antes de todos os caminhos de permissão.
Parâmetros
facilityId `string` (obrigatório) userId `string` (obrigatório)Endpoint
GET /api/door-access/users/{facilityId}/{userId}/effective-access
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/effective-access \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Criar em massa linhas de acesso de usuários a partir de uma importação CSV
Cria várias linhas `source: 'manual'` em uma única solicitação, reutilizando a mesma validação, normalização de telefone/e-mail, verificação de conflito por instalação, mensagens automáticas e lógica de convite (opcional) da criação individual. As linhas são processadas em ordem, portanto uma linha posterior que conflite com outra criada antes é informada como duplicada. As concessões são fornecidas como IDs de porta/grupo já resolvidos (o cliente converte os nomes em IDs). Concessões de janela de tempo são rejeitadas intencionalmente em massa e devem ser adicionadas pelo endpoint de substituição por usuário após a importação. Nunca gera exceção por linha; o resultado de cada linha é informado individualmente.
Parâmetros
facilityId `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/door-access/users/{facilityId}/bulk
Exemplo de solicitação
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 '{}'
Resposta
{}
Substituir as concessões adicionais de Access Time Windows em uma linha de acesso de usuário
Substitui apenas `timeWindowGrants`; as `grants` permanentes e as `sourceTimeWindows` de integrações não são alteradas. Cada item exige um escopo (`facilityWide`, `doors` ou `groups`) e uma `window` absoluta ou semanal. Enviar uma matriz vazia limpa explicitamente todas as janelas do administrador.
Parâmetros
facilityId `string` (obrigatório) userId `string` (obrigatório)Corpo da solicitação
Endpoint
PUT /api/door-access/users/{facilityId}/{userId}/time-window-grants
Exemplo de solicitação
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 '{}'
Resposta
{}
Congelar uma linha de acesso de usuário contra atualizações de sincronização da origem
Define `decoupledFromSource: true`, limpa todas as `sourceTimeWindows` pertencentes a integrações e faz com que a sincronização (cron + streams) registre e ignore esta linha até que um administrador limpe o sinalizador via /recouple.
Parâmetros
facilityId `string` (obrigatório) userId `string` (obrigatório)Endpoint
POST /api/door-access/users/{facilityId}/{userId}/decouple
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/decouple \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Reconectar uma linha de acesso de usuário às atualizações de sincronização da origem
Parâmetros
facilityId `string` (obrigatório) userId `string` (obrigatório)Endpoint
POST /api/door-access/users/{facilityId}/{userId}/recouple
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/recouple \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Revogar todos os tokens de atualização do aplicativo Door & Gate Access de um usuário
Revoga pelo telefone/e-mail armazenado do usuário (a tabela de tokens de atualização é indexada por `sha256(plaintext)`; os GSIs byMobilePhone / byEmail permitem excluir em cascata a partir de um único usuário). Outros usuários que compartilham o mesmo telefone/e-mail em outra instalação também seriam desconectados.
Parâmetros
facilityId `string` (obrigatório) userId `string` (obrigatório)Endpoint
POST /api/door-access/users/{facilityId}/{userId}/logout
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/logout \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
(Re)enviar a um usuário o e-mail de convite do aplicativo Door & Gate Access
Força o envio do e-mail de convite para baixar o aplicativo ao endereço de e-mail armazenado do usuário (somente e-mail, sem SMS). Ignora as verificações de elegibilidade e de envio anterior usadas no caminho de sincronização automática: esta é uma ação explícita do administrador. Retorna 400 se o usuário não tiver e-mail cadastrado.
Parâmetros
facilityId `string` (obrigatório) userId `string` (obrigatório)Endpoint
POST /api/door-access/users/{facilityId}/{userId}/resend-invite
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/resend-invite \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Visualizar os destinatários de um envio em massa de convites do aplicativo
Calcula o conjunto de usuários que receberiam um e-mail de convite do aplicativo. O grupo base são todos os usuários não excluídos com e-mail que nunca usaram o aplicativo (`appLastSeenAt` vazio). Por padrão, o grupo é restrito aos usuários que têm acesso no momento (correspondência de regra ou concessão) e nunca foram convidados; `includeAlreadyInvited` e `includeNoAccess` o ampliam. Nenhum e-mail é enviado: retorna contagens, uma pequena amostra e os userIds candidatos para o endpoint de execução.
Parâmetros
facilityId `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/door-access/users/{facilityId}/bulk-invite/preview
Exemplo de solicitação
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 '{}'
Resposta
{}
Enviar e-mails de convite do aplicativo a um lote de usuários
Envia o e-mail de convite para baixar o aplicativo a cada um dos userIds informados (máximo de 50 por solicitação; o cliente divide em lotes a lista completa de candidatos da visualização). Cada usuário é revalidado no momento do envio: linhas que não existem mais, não têm e-mail ou usaram o aplicativo desde a visualização são ignoradas, nunca marcadas como falha. Os resultados por usuário são informados individualmente para que o cliente possa resumir enviados / com falha / ignorados.
Parâmetros
facilityId `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/door-access/users/{facilityId}/bulk-invite
Exemplo de solicitação
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 '{}'
Resposta
{}
Listar os grupos de portas de uma instalação
Parâmetros
facilityId `string` (obrigatório)Endpoint
GET /api/door-access/door-groups/{facilityId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/door-access/door-groups/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Criar um grupo de portas
Parâmetros
facilityId `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/door-access/door-groups/{facilityId}
Exemplo de solicitação
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 '{}'
Obter um único grupo de portas
Parâmetros
facilityId `string` (obrigatório) groupId `string` (obrigatório)Endpoint
GET /api/door-access/door-groups/{facilityId}/{groupId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/door-access/door-groups/{facilityId}/{groupId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualizar um grupo de portas
Parâmetros
facilityId `string` (obrigatório) groupId `string` (obrigatório)Corpo da solicitação
Endpoint
PATCH /api/door-access/door-groups/{facilityId}/{groupId}
Exemplo de solicitação
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 '{}'
Resposta
{}
Excluir logicamente um grupo de portas
Parâmetros
facilityId `string` (obrigatório) groupId `string` (obrigatório)Endpoint
DELETE /api/door-access/door-groups/{facilityId}/{groupId}
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/door-access/door-groups/{facilityId}/{groupId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Listar as integrações de parceiros configuradas em uma instalação
Retorna as integrações de parceiros da instalação (id, nome, logotipo, ativado) combinando ph-facility-partner-config com o catálogo ph-partners. Restrito ao escopo do Door & Gate Access (para que administradores sem acesso a external-integrations ainda possam exibir os selos de parceiros e a lista de sincronização por parceiro).
Parâmetros
facilityId `string` (obrigatório)Endpoint
GET /api/door-access/partners/{facilityId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/door-access/partners/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Ler a configuração de sincronização de acesso de usuários de uma instalação
Parâmetros
facilityId `string` (obrigatório)Endpoint
GET /api/door-access/sync-config/{facilityId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/door-access/sync-config/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualizar a configuração de sincronização de acesso de usuários de uma instalação
Somente os campos controlados pelo administrador (`enabled`, `requireIdentifier` e o mapa `partners` do parceiro) são aceitos; `lastRunAt` e `lastRunCounts` são gravados pelo próprio mecanismo de sincronização. `partner.partners` é um mapa de ativação por parceiro indexado por partnerId (exclusão voluntária): quando o `partner.enabled` principal está ativado, um parceiro é sincronizado, a menos que tenha aqui uma entrada explícita `{ enabled: false }`.
Parâmetros
facilityId `string` (obrigatório)Corpo da solicitação
Endpoint
PUT /api/door-access/sync-config/{facilityId}
Exemplo de solicitação
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 '{}'
Resposta
{}
Ler a configuração de mensagens automáticas por usuário de uma instalação
Parâmetros
facilityId `string` (obrigatório)Endpoint
GET /api/door-access/auto-messages/{facilityId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/door-access/auto-messages/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualizar a configuração de mensagens automáticas por usuário de uma instalação
Salva as regras e, em seguida, reavalia imediatamente todas as linhas de acesso de usuários da instalação para que os usuários existentes recebam ou percam a mensagem automática na hora. Mensagens manuais e linhas desvinculadas não são alteradas.
Parâmetros
facilityId `string` (obrigatório)Corpo da solicitação
Endpoint
PUT /api/door-access/auto-messages/{facilityId}
Exemplo de solicitação
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 '{}'
Resposta
{}
Status da reavaliação em segundo plano das mensagens automáticas
Parâmetros
facilityId `string` (obrigatório)Endpoint
GET /api/door-access/auto-messages/{facilityId}/sweep-status
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/door-access/auto-messages/{facilityId}/sweep-status \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Executar sob demanda uma sincronização de acesso de usuários para uma instalação
Percorre de forma síncrona todas as origens ativadas (partner / cctv) da instalação e consolida as linhas de ph-door-access-users por meio da cascata de desduplicação. Retorna contagens por origem. Origens desativadas aparecem como `skippedSyncDisabled: 1` em vez de ausentes, para que a interface possa exibir as duas linhas de forma consistente.
Parâmetros
facilityId `string` (obrigatório)Endpoint
POST /api/door-access/sync/{facilityId}/run
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/door-access/sync/{facilityId}/run \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Simulação de uma exclusão em massa de usuários sincronizados por parceiros
Retorna a contagem + uma amostra das linhas de acesso de usuários que seriam excluídas logicamente, além de um confirmToken que deve ser enviado de volta ao endpoint de execução. Nenhum dado é modificado. Os registros de acesso nunca são afetados.
Parâmetros
facilityId `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/door-access/sync/{facilityId}/bulk-delete/preview
Exemplo de solicitação
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 '{}'
Resposta
{}
Executar uma exclusão em massa de usuários sincronizados por parceiros (exclusão lógica)
Exclui logicamente todas as linhas de acesso de usuários sincronizadas por parceiros no escopo. Exige o confirmToken retornado pela visualização; se o conjunto atual tiver mudado desde a visualização, o token não corresponderá e a solicitação será rejeitada (409) para que o administrador revise novamente. Os registros de acesso são preservados.
Parâmetros
facilityId `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/door-access/sync/{facilityId}/bulk-delete
Exemplo de solicitação
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 '{}'
Resposta
{}
Atividade recente de sincronização de acesso de usuários (registro para solução de problemas)
Retorna os resultados de sincronização mais recentes de uma instalação (criado / ignorado / desativado) com o motivo, para que os administradores possam ver por que um membro foi ou não sincronizado. Mais recentes primeiro.
Parâmetros
facilityId `string` (obrigatório) limit `integer` (opcional)Endpoint
GET /api/door-access/sync/{facilityId}/log
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/door-access/sync/{facilityId}/log \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Listar os eventos do Door & Gate Access de uma instalação
Retorna os eventos de destravamento pelo celular, por substituição do administrador e pela Partner API externa em um único feed em ordem cronológica inversa.
Parâmetros
facilityId `string` (obrigatório) from `integer` (opcional) to `integer` (opcional) limit `integer` (opcional)Endpoint
GET /api/door-access/events/{facilityId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/door-access/events/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Simular uma avaliação de geofence para o pino do modo de teste do administrador
Corpo da solicitação
Endpoint
POST /api/door-access/geofence/test
Exemplo de solicitação
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 '{}'
Resposta
{}
Obter o status de integração / ativação de uma instalação
Alimenta a página inicial "Get Started" e o banner de progresso da configuração do aplicativo. Retorna as contagens atuais de portas e usuários, as duas etapas principais derivadas (existe um usuário, existe uma porta), os sinalizadores opcionais "reviewed" salvos e se a instalação está ativada (ambas as etapas principais concluídas). Na primeira vez que uma instalação é ativada, o carimbo de data/hora activatedAt é registrado.
Parâmetros
facilityId `string` (obrigatório)Endpoint
GET /api/door-access/onboarding/{facilityId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/door-access/onboarding/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualizar os sinalizadores opcionais de integração "reviewed" de uma instalação
Salva os sinalizadores opcionais da lista de configuração que um administrador marca (regras de acesso, configurações de sincronização, geofencing). As etapas principais e a ativação são derivadas em tempo real das contagens de dados e não podem ser definidas aqui. Retorna o status de integração completo e atualizado.
Parâmetros
facilityId `string` (obrigatório)Corpo da solicitação
Endpoint
PUT /api/door-access/onboarding/{facilityId}
Exemplo de solicitação
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 '{}'
Resposta
{}
Retorna uma resposta JSON com os dados de análise da instalação.
Parâmetros
clubId `string` (opcional) O ID da instalação cujos dados de análise serão obtidos. fromDate `string` (opcional) A data de início dos dados de análise a obter. toDate `string` (opcional) A data de término dos dados de análise a obter.Endpoint
GET /clubs/{clubId}/lead-events
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/lead-events \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna uma resposta JSON com os dados de análise da instalação.
Parâmetros
clubId `string` (opcional) O ID da instalação cujos dados de análise serão obtidos. fromDate `string` (opcional) A data de início dos dados de análise a obter. toDate `string` (opcional) A data de término dos dados de análise a obter.Endpoint
GET /clubs/{clubId}/analytics/page-views
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/page-views \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna uma resposta JSON com os dados de análise da instalação.
Parâmetros
clubId `string` (opcional) O ID da instalação cujos dados de análise serão obtidos. fromDate `string` (opcional) A data de início dos dados de análise a obter. toDate `string` (opcional) A data de término dos dados de análise a obter.Endpoint
GET /clubs/{clubId}/analytics/referrers
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/referrers \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna uma resposta JSON com os dados de análise da instalação.
Parâmetros
clubId `string` (opcional) O ID da instalação cujos dados de análise serão obtidos. fromDate `string` (opcional) A data de início dos dados de análise a obter. toDate `string` (opcional) A data de término dos dados de análise a obter.Endpoint
GET /clubs/{clubId}/analytics/socials
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/socials \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna uma resposta JSON com os dados de análise da instalação.
Parâmetros
clubId `string` (opcional) O ID da instalação cujos dados de análise serão obtidos. fromDate `string` (opcional) A data de início dos dados de análise a obter. toDate `string` (opcional) A data de término dos dados de análise a obter.Endpoint
GET /clubs/{clubId}/analytics/top-cities
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/top-cities \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna uma resposta JSON com os dados de análise da instalação.
Parâmetros
clubId `string` (opcional) O ID da instalação cujos dados de análise serão obtidos. fromDate `string` (opcional) A data de início dos dados de análise a obter. toDate `string` (opcional) A data de término dos dados de análise a obter.Endpoint
GET /clubs/{clubId}/analytics/total-page-views
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/total-page-views \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna uma resposta JSON com os dados de análise da instalação.
Parâmetros
clubId `string` (opcional) O ID da instalação cujos dados de análise serão obtidos. fromDate `string` (opcional) A data de início dos dados de análise a obter. toDate `string` (opcional) A data de término dos dados de análise a obter.Endpoint
GET /clubs/{clubId}/analytics/traffic
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/traffic \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Gera um JWT (JSON Web Token) temporário de front-end para os gráficos incorporáveis do Google Analytics na página 'analytics' do front-end.
Endpoint
GET /api/ga/onetimetoken
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/ga/onetimetoken \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna widgets do painel do 'The Training Camp' se a instalação tiver membros ativos.
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar.Endpoint
GET /api/reporting/apps/widgets/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/reporting/apps/widgets/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna todos os feriados da instalação ainda não revisados.
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar.Endpoint
GET /api/reporting/club/{club}/unreviewed-holidays
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/reporting/club/{club}/unreviewed-holidays \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Marcar como revisados todos os feriados da instalação ainda não revisados.
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar.Endpoint
PUT /api/reporting/club/{club}/review-holidays
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/reporting/club/{club}/review-holidays \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna o relatório de KPIs em formato CSV, detalhado mês a mês nos últimos 12 meses. *OBSERVAÇÃO* Isso cria um único relatório para TODAS as instalações do sistema. Não execute isso várias vezes em paralelo, ou você sobrecarregará o GymMaster!
Parâmetros
months `string` (opcional) Número de meses (a partir da data atual) a buscar (padrão: 12)Endpoint
GET /api/reporting/gymmaster/all-clubs-kpi-report
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/reporting/gymmaster/all-clubs-kpi-report \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna os gráficos de receita do MMS de uma determinada instalação.
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar. range `string` (opcional) Intervalo em dias (contando a partir da data atual para trás) que queremos buscarEndpoint
GET /api/reporting/gymmaster/revenuegraph/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/reporting/gymmaster/revenuegraph/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna os dados/análises do MMS (Member Management System) do painel para uma determinada instalação. Os dados incluem estatísticas do GymMaster/Perfect Gym, além de outras métricas internas coletadas pelo nosso sistema.
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar. range `string` (opcional) Intervalo em dias (contando a partir da data atual para trás) que queremos buscarEndpoint
GET /api/reporting/gymmaster/widgets/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/reporting/gymmaster/widgets/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna os dados do widget Myzone do painel para uma determinada instalação.
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar.Endpoint
GET /api/reporting/myzone/widgets/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/reporting/myzone/widgets/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna um objeto com os serviços considerados off-line por um ou mais dos nossos endpoints de página de status/monitoramento, configurados pela ferramenta interna 'Uptime Kuma'.
Endpoint
GET /api/reporting/statuspage/events
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/reporting/statuspage/events \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna as reservas de treino dos próximos 7 dias.
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar.Endpoint
GET /api/reporting/clubs/{club}/workout-bookings
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/reporting/clubs/{club}/workout-bookings \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a lista de feriados históricos de uma instalação.
Parâmetros
clubId `string` (opcional) ID do clube fromDate `string` (opcional) Carimbo de data/hora Unix da data de início do intervalo de feriados a retornar. toDate `string` (opcional) Carimbo de data/hora Unix da data de término do intervalo de feriados a retornar.Endpoint
GET /api/clubs/{clubId}/historical-holidays
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/historical-holidays \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna as automações de dispositivos associadas à instalação.
Parâmetros
club `string` (obrigatório) ID interno do clube cujos dispositivos você deseja listar.Endpoint
GET /api/ics/automations/list/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/ics/automations/list/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualiza a configuração de uma tela/dispositivo existente.
Parâmetros
club `string` (obrigatório) ID interno da instalação na qual você quer atualizar o dispositivo. body `string` (obrigatório) Objeto JSON dos parâmetros de atualização.Endpoint
POST /api/ics/automations/update/{club}
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/ics/automations/update/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Adiciona/associa à sua instalação um dispositivo de tela ou computador físico.
Parâmetros
club `string` (obrigatório) ID interno do clube ao qual você deseja adicionar o dispositivo. body `string` (obrigatório) Objeto JSON da nova tela a associar.Endpoint
POST /api/ics/devices/add/{club}
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/ics/devices/add/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Instrui o dispositivo a se conectar a um novo SSID com base nos parâmetros.
Parâmetros
club `string` (obrigatório) ID interno da instalação na qual você quer atualizar o dispositivo. body `string` (obrigatório) Objeto JSON dos parâmetros de atualização.Endpoint
POST /api/ics/devices/changewifi/{club}
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/ics/devices/changewifi/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualiza a configuração de uma tela/dispositivo existente.
Parâmetros
club `string` (obrigatório) ID interno da instalação na qual você quer atualizar o dispositivo. body `string` (obrigatório) Objeto JSON dos parâmetros de atualização.Endpoint
POST /api/ics/devices/command/{club}
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/ics/devices/command/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Carrega uma URL/página da web na tela de um dispositivo específico.
Parâmetros
club `string` (obrigatório) ID interno da instalação na qual você quer atualizar o dispositivo. body `string` (obrigatório) Objeto JSON dos parâmetros de atualização.Endpoint
POST /api/ics/devices/loadurl/{club}
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/ics/devices/loadurl/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualiza a configuração de uma tela/dispositivo existente.
Parâmetros
club `string` (obrigatório) ID interno da instalação na qual você quer atualizar o dispositivo. body `string` (obrigatório) Objeto JSON dos parâmetros de atualização.Endpoint
PUT /api/ics/devices/update/{club}
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/ics/devices/update/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Renomeia uma tela/dispositivo. Altera apenas o registro: diferentemente do endpoint de atualização, nada é enviado ao dispositivo, por isso também está disponível para telas que executam uma versão de software em fim de vida útil.
Parâmetros
club `string` (obrigatório) ID interno da instalação à qual o dispositivo pertence. body `string` (obrigatório) Objeto JSON com os parâmetros de renomeação.Endpoint
PUT /api/ics/devices/rename/{club}
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/ics/devices/rename/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obtém os widgets e os links para mídia off-line de uma instalação, com base na data informada.
Parâmetros
club `string` (obrigatório) ID interno da instalação na qual você quer alterar o programa de treino. date `string` (obrigatório) Data para a qual retornar as URLs dos widgets. Use o formato `YYYY-MM-DD`.Endpoint
GET /api/ics/external-resources/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/ics/external-resources/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obtém os widgets e os links para mídia off-line de uma instalação, com base na data informada.
Parâmetros
club `string` (obrigatório) ID interno da instalação na qual você quer alterar o programa de treino.Endpoint
GET /api/ics/list-scheduled-workouts/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/ics/list-scheduled-workouts/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Altera o programa de treino de uma determinada instalação.
Parâmetros
club `string` (obrigatório) ID interno da instalação na qual você quer alterar o programa de treino. body `string` (obrigatório) Objeto JSON com o novo treino a ser alterado.Endpoint
POST /api/ics/loadprogram/{club}
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/ics/loadprogram/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obtém a configuração de programa de uma tela/dispositivo existente.
Parâmetros
club `string` (obrigatório) ID interno da instalação cujos dados de programa você quer obter.Endpoint
GET /api/ics/programs/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/ics/programs/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualiza a configuração de programa de uma tela/dispositivo existente.
Parâmetros
club `string` (obrigatório) ID interno da instalação na qual você quer atualizar o dispositivo. body `string` (obrigatório) Objeto JSON com os parâmetros de atualização.Endpoint
PUT /api/ics/programs/{club}
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/ics/programs/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obtém as opções de configuração de programa.
Endpoint
GET /api/ics/programs/options/{facilityID}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/ics/programs/options/{facilityID} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Chat com contexto RAG. Não tem acesso a ferramentas, apenas a uma ferramenta simples de solicitação|resposta de API que permite obter conhecimento diretamente da base de conhecimento.
Parâmetros
organisationId `string` (opcional) O ID da organização (detectado automaticamente se não for informado)Corpo da solicitação
Endpoint
POST /api/llm/chat
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/llm/chat \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Resposta
{}
Excluir os embeddings de artigos do repositório de vetores e atualizar o status de rastreamento de embeddings
Corpo da solicitação
Endpoint
DELETE /api/llm/delete-article
Exemplo de solicitação
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 '{}'
Resposta
{}
Listar os registros do rastreador de embeddings por organização e status
Parâmetros
organisationId `string` (opcional) ID da organização (determinado automaticamente se omitido) status `string` (obrigatório) Status pelo qual filtrar (deve ser um de in_queue, done, anomaly, fail, deleted) Limit `string` (opcional) Máximo de itens por página LastEvaluatedKey `string` (opcional) JSON do LastEvaluatedKey do DynamoDB para paginaçãoEndpoint
GET /api/llm/embedding-track/by-org-and-status
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/llm/embedding-track/by-org-and-status \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Listar os registros do rastreador de embeddings por organização (opcionalmente filtrados por tipo de recurso)
Parâmetros
organisationId `string` (opcional) ID da organização (determinado automaticamente se omitido) resourceType `string` (opcional) Tipo de recurso opcional (por exemplo, "article"). Quando informado, filtra os itens em que resourceTypeId começa com "{type}#". Limit `string` (opcional) Máximo de itens por página LastEvaluatedKey `string` (opcional) JSON do LastEvaluatedKey do DynamoDB para paginaçãoEndpoint
GET /api/llm/embedding-track/by-org
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/llm/embedding-track/by-org \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Inicializar a coleção do banco de dados de vetores da organização
Parâmetros
organisationId `string` (opcional) O ID da organização (detectado automaticamente se não for informado)Endpoint
POST /api/llm/init-org
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/llm/init-org \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Pesquisa semântica na base de conhecimento
Parâmetros
organisationId `string` (opcional) O ID da organização (detectado automaticamente se não for informado)Corpo da solicitação
Endpoint
POST /api/llm/semantic-search
Exemplo de solicitação
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 '{}'
Resposta
{}
Iniciar o processamento em streaming dos artigos na fila para embedding, com atualizações de progresso em tempo real
Parâmetros
organisationId `string` (opcional) O ID da organização (detectado automaticamente se não for informado)Endpoint
POST /api/llm/start-embedding-stream
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/llm/start-embedding-stream \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Inserir ou atualizar os embeddings de artigos no banco de dados de vetores
Trata o embedding do artigo com base no estado atual: - Se o artigo não estiver publicado OU for privado: exclui os embeddings - Se o artigo estiver publicado E for público: refaz os embeddings com o conteúdo completo Sempre exige o corpo completo do artigo.
Parâmetros
organisationId `string` (opcional) O ID da organização (detectado automaticamente se não for informado)Corpo da solicitação
Endpoint
POST /api/llm/upsert-embeddings
Exemplo de solicitação
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 '{}'
Resposta
{}
Endpoint de teste para excluir em lote os embeddings de artigos por organização e, opcionalmente, por status
Parâmetros
organisationId `string` (opcional) ID da organização (determinado automaticamente a partir do contexto do usuário se omitido) status `string` (opcional) Status pelo qual filtrar (opcional; se omitido, exclui TODOS os artigos da organização, independentemente do status) hardDelete `string` (opcional) Se os registros de rastreamento de embeddings devem ser excluídos definitivamente (true) ou excluídos logicamente com a atualização do status (false)Endpoint
DELETE /api/llm/test/batch-delete-by-status
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/llm/test/batch-delete-by-status \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Transformar e dividir texto em blocos com estatísticas detalhadas
Endpoint de teste que transforma o texto e o divide em blocos, depois fornece estatísticas detalhadas sobre a distribuição dos blocos, incluindo contagens de caracteres, porcentagens e métricas de qualidade, para ajudar a avaliar a eficácia da divisão.
Corpo da solicitação
Endpoint
POST /api/llm/test/transform-chunk
Exemplo de solicitação
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 '{}'
Resposta
{}
Obter a contagem total de vetores no índice de vetores da organização
Endpoint de teste para contar todos os vetores no índice de vetores da organização do usuário atual
Parâmetros
organisationId `string` (opcional) O ID da organização (detectado automaticamente se não for informado)Endpoint
GET /api/llm/test/vector-count
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/llm/test/vector-count \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Excluir do índice de vetores todos os vetores de um articleId específico
Endpoint de teste para excluir todos os vetores associados a um articleId específico do índice de vetores da organização do usuário atual.
Parâmetros
organisationId `string` (opcional) O ID da organização (detectado automaticamente se não for informado) articleId `string` (obrigatório) O articleId cujos vetores serão excluídos dryRun `string` (opcional) Se true, apenas mostra o que seria excluído, sem excluir de fatoEndpoint
DELETE /api/llm/test/vector-delete-article
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/llm/test/vector-delete-article \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Testar o Vector SDK listando todos os índices
Endpoint de teste para verificar a conectividade do Vector SDK e listar todos os índices do bucket de vetores
Endpoint
GET /api/llm/test/vector-indices
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/llm/test/vector-indices \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Inicializar o índice de vetores de uma organização
Cria o bucket e o índice de vetores da organização do usuário atual
Parâmetros
organisationId `string` (opcional) O ID da organização (detectado automaticamente se não for informado)Endpoint
POST /api/llm/test/vector-init-index
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/llm/test/vector-init-index \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obter todos os metadados de vetores de um articleId específico
Endpoint de teste para obter todos os blocos de vetores e seus metadados de um articleId específico no índice de vetores. Útil para inspecionar como um artigo é dividido e armazenado. A filtragem é feita pelo serviço de repositório de vetores.
Parâmetros
organisationId `string` (opcional) O ID da organização (detectado automaticamente se não for informado) articleId `string` (obrigatório) O ID do artigo cujos metadados de vetores serão obtidosEndpoint
GET /api/llm/test/vector-metadata-by-article
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/llm/test/vector-metadata-by-article \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obter os vetores recentes com metadados do índice de vetores
Endpoint de teste para obter os 10 vetores mais recentes com metadados (mas sem os dados dos vetores) do índice de vetores da organização do usuário atual. Útil para inspecionar a estrutura dos metadados.
Parâmetros
organisationId `string` (opcional) O ID da organização (detectado automaticamente se não for informado) limit `string` (opcional) Número de vetores recentes a retornar (máximo de 100)Endpoint
GET /api/llm/test/vector-recent
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/llm/test/vector-recent \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Envia um ativo do Marketing Manager/Designer para o armazenamento S3.
Parâmetros
file `string` (opcional) Nome do arquivo/recurso a ser enviado.Endpoint
POST /api/marketing/design/static/download
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/marketing/design/static/download \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna o ativo individual em formato JSON para ser carregado no gerenciador de ativos.
Parâmetros
id `string` (obrigatório) ID do ativo a obter. organisationId `string` (obrigatório) O ID da organização da instalação à qual o ativo pertence.Endpoint
GET /api/marketing/assets/get/{id}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/marketing/assets/get/{id} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna todos os ativos de design.
Parâmetros
body `string` (obrigatório) Objeto JSON com os dados da instalação que você quer salvar. organisationId `string` (obrigatório) O ID da organização da instalação à qual o ativo pertence. useCache `string` (opcional) search `string` (opcional) A consulta de pesquisa para filtrar os ativos por nome ou tags. brand `string` (opcional) A marca pela qual filtrar os ativos. tag `string` (opcional) A tag pela qual filtrar os ativos.Endpoint
GET /api/marketing/assets/get
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/marketing/assets/get \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna uma única página de ativos de marketing e impressão de uma organização. Usa o Algolia para pesquisa por relevância + paginação por páginas (com contagens totais) e recorre ao DynamoDB quando o Algolia não está disponível.
Parâmetros
organisationId `string` (obrigatório) O ID da organização da instalação à qual os ativos pertencem. search `string` (opcional) A consulta de pesquisa para filtrar os ativos por nome ou tags. brand `string` (opcional) A marca pela qual filtrar os ativos. tag `string` (opcional) A tag pela qual filtrar os ativos. page `string` (opcional) Número da página a buscar, começando em zero. limit `string` (opcional) Número de ativos por página (máximo de 300). useCache `string` (opcional) Quando false, ignora o Algolia e consulta o DynamoDB diretamente.Endpoint
GET /api/marketing/assets
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/marketing/assets \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a lista de ativos disponíveis que foram enviados pelo gerenciador de ativos.
Parâmetros
organisationId `string` (obrigatório)Endpoint
GET /api/marketing/assets/list
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/marketing/assets/list \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Adiciona/salva um ativo.
Parâmetros
body `string` (obrigatório) Objeto JSON com os dados da instalação que você quer salvar. organisationId `string` (obrigatório) O ID da organização da instalação à qual o ativo pertence.Endpoint
PUT /api/marketing/assets/save
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/assets/save \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Envia um ativo do Marketing Manager/Designer para o armazenamento S3.
Parâmetros
file `string` (opcional) Nome do arquivo/recurso a ser enviado. organisationId `string` (opcional) O ID da organização à qual o ativo pertence.Endpoint
POST /api/marketing/assets/upload
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/marketing/assets/upload \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna uma lista de todas as páginas personalizadas de uma organização.
Parâmetros
organisationId `string` (obrigatório) ID interno da organização cujas páginas personalizadas serão retornadas.Endpoint
GET /api/marketing/custom-pages
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/marketing/custom-pages \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Insere ou atualiza uma página personalizada de uma organização.
Parâmetros
organisationId `string` (obrigatório) ID interno da organização cujas páginas personalizadas serão retornadas. body `object` (obrigatório) Dados da página personalizada a inserir ou atualizar.Endpoint
PUT /api/marketing/custom-pages
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/custom-pages \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna uma lista de todas as páginas personalizadas de uma instalação.
Parâmetros
facilityId `string` (obrigatório) ID interno da instalação cujas páginas personalizadas serão retornadas.Endpoint
GET /api/facilities/{facilityId}/marketing/custom-pages
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/marketing/custom-pages \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna todos os designs exportados/renderizados de um ID de instalação específico.
Parâmetros
club `string` (obrigatório) ID interno da instalação que está fazendo a solicitação. sort `string` (opcional) Filtro para ordenar os designs; 'oldest', 'newest' ou 'design' são aceitos.Endpoint
GET /api/marketing/designs/{club}/exports
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/{club}/exports \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna o conteúdo HTML individual de um design em formato JSON para ser carregado no editor.
Parâmetros
id `string` (obrigatório) ID do design a obter.Endpoint
GET /api/marketing/designs/get/{id}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/get/{id} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a lista de mapeamentos de entrada nos designs e modelos de design de marketing e impressão
Parâmetros
clubId `string` (obrigatório) ID interno da instalação que está fazendo a solicitação. availableFeatures `string` (opcional) Retornar todos os itens com recursos específicos brand `string` (opcional) Filtra os designs por marca features `string` (opcional) Filtrar os resultados com base nos recursosEndpoint
GET /api/marketing/designs/input-mapping/{clubId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/input-mapping/{clubId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a lista de designs disponíveis para uma determinada instalação, que podem ser usados em designs (Print Designs) criados no editor de marketing/impressão do hub.
Parâmetros
club `string` (obrigatório) ID interno da instalação que está fazendo a solicitação. designAdmin `string` (opcional) Retornar todos os dados de design (visão de administrador / exige que o usuário seja administrador). brand `string` (opcional) Filtra os designs por marcaEndpoint
GET /api/marketing/designs/{club}/list
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/{club}/list \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Força o sistema a renderizar/renderizar novamente todas as miniaturas e visualizações de designs (usado principalmente se mudarmos ativos 'upstream' no S3 etc.)... **OBSERVAÇÃO** Você só pode chamar esta função uma vez a cada X minutos (ou, se uma renderização já estiver em execução, não é possível chamar esta função). Isso garante que não haja carga excessiva nos nossos servidores ao renderizar todos os designs...
Endpoint
GET /api/marketing/designs/render-all-thumbnails
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/render-all-thumbnails \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Inicia a renderização de um design dinâmico
Parâmetros
body `string` (obrigatório) Objeto JSON com os dados da instalação que você quer enviar ao processador de renderização de designs...Endpoint
POST /api/marketing/designs/dynamic/render-design
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/marketing/designs/dynamic/render-design \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Adiciona/salva/atualiza um design.
Parâmetros
body `string` (obrigatório) Objeto JSON com os dados da instalação que você quer salvar.Endpoint
PUT /api/marketing/designs/{club}/save
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/designs/{club}/save \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna o design estático individual em formato JSON para ser carregado
Parâmetros
id `string` (obrigatório) ID do design estático a obter.Endpoint
GET /api/marketing/designs/static/get/{id}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/static/get/{id} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Adiciona/salva/atualiza um modelo de design estático.
Parâmetros
body `string` (obrigatório) Objeto JSON com os dados da instalação que você quer salvar.Endpoint
PUT /api/marketing/designs/static/{club}/save
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/designs/static/{club}/save \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Remove do sistema uma variável definida pelo usuário.
Parâmetros
club `string` (obrigatório) ID interno da instalação que está fazendo a solicitação. body `string` (obrigatório) JSON com o ID da variável a remover.Endpoint
DELETE /api/marketing/variables/{club}/delete
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/marketing/variables/{club}/delete \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a lista de variáveis disponíveis para uma determinada instalação, que podem ser usadas em designs (Print Designs) criados no editor de marketing/impressão do hub.
Parâmetros
club `string` (obrigatório) ID interno da instalação que está fazendo a solicitação.Endpoint
GET /api/marketing/variables/{club}/list
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/marketing/variables/{club}/list \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Cria uma única nova 'variável' do usuário para a instalação informada.
Parâmetros
club `string` (obrigatório) ID interno da instalação que está fazendo a solicitação. body `string` (obrigatório) Objeto JSON com a nova variável.Endpoint
POST /api/marketing/variables/{club}/new
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/marketing/variables/{club}/new \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Adiciona/salva/atualiza uma ou mais variáveis de design no sistema por meio de uma matriz de objetos.
Parâmetros
club `string` (obrigatório) ID interno da instalação que está fazendo a solicitação. body `string` (obrigatório) Matriz com um ou mais objetos JSON a adicionar/atualizar (permite salvar vários itens/objetos em uma única solicitação de API).Endpoint
PUT /api/marketing/variables/{club}/save
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/variables/{club}/save \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna o manifesto da documentação MCP do usuário conectado
Alimenta a página `/mcp-docs` do aplicativo. Retorna a URL do servidor MCP, os cabeçalhos de autenticação aceitos, a identidade e o sinalizador de administrador do chamador e a lista de ferramentas filtrada (filtrada da mesma forma que `/mcp/tools/list`, para que a página de documentação nunca mostre uma ferramenta que o chamador não possa usar de fato).
Endpoint
GET /api/mcp/docs-manifest
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/mcp/docs-manifest \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Criar um contrato de usuário.
Parâmetros
body `object` (obrigatório) Objeto JSON com os dados da instalação que você quer salvar.Endpoint
POST /api/member-agreements/contracts-tna/:club
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a lista de contratos.
Endpoint
GET /api/member-agreements/contracts-tna/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Excluir um contrato de usuário.
Endpoint
DELETE /api/member-agreements/contracts-tna/:club/:id
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club/:id \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna os detalhes de um contrato.
Endpoint
GET /api/member-agreements/contracts-tna/:club/:id
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club/:id \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualizar um contrato de usuário.
Parâmetros
body `object` (obrigatório) Objeto JSON com os dados da instalação que você quer salvar.Endpoint
PATCH /api/member-agreements/contracts-tna/:club/:id
Exemplo de solicitação
curl -X PATCH https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club/:id \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obter os contratos padrão da instalação.
Parâmetros
body `object` (obrigatório) Objeto JSON com os dados da instalação que você quer salvar.Endpoint
GET /api/member-agreements/default-tna/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/default-tna/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Definir o contrato padrão da instalação.
Parâmetros
body `object` (obrigatório) Objeto JSON com os dados da instalação que você quer salvar.Endpoint
POST /api/member-agreements/default-tna/:club
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/member-agreements/default-tna/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a lista de contratos globais ou regionais.
Endpoint
GET /api/member-agreements/global-tna/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/global-tna/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a lista de membros com contrato.
Endpoint
GET /api/member-agreements/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a lista de membros da instalação por temporada para o aplicativo do training camp.
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar. season `string` (opcional) Temporada do training camp pela qual você quer filtrar. userIds `string` (opcional) Matriz de IDs de usuário para filtrar. useCache `string` (opcional) Se o cache deve ser usado. isUserMemberInfo `string` (opcional) Se ativado, filtra os dados com base em userIds (recomenda-se usar apenas um ID de usuário) e inclui os dados necessários, como a tabela de classificação e as preferências do usuário.Endpoint
GET /api/members-leads/trainingcamp/club/season-members/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/members-leads/trainingcamp/club/season-members/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Exclui vários leads de reserva de treino.
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar. body `string` (obrigatório)Endpoint
DELETE /api/members-leads/workout-booking/club/leads/{club}
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/members-leads/workout-booking/club/leads/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a lista de leads de reserva de treino de uma instalação.
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar. all `string` (opcional) Para mostrar todos os leads ou apenas os próximos.Endpoint
GET /api/members-leads/workout-booking/club/leads/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/members-leads/workout-booking/club/leads/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualiza um lead de reserva de treino.
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar. body `string` (obrigatório)Endpoint
PUT /api/members-leads/workout-booking/club/leads/{club}
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/members-leads/workout-booking/club/leads/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Alterna o estado de sinalização de um lead de reserva de treino.
Parâmetros
club `string` (obrigatório) ID interno do clube. body `string` (obrigatório)Endpoint
PATCH /api/members-leads/workout-booking/club/leads/{club}/flag
Exemplo de solicitação
curl -X PATCH https://portal.hub.gymsystems.co/api/members-leads/workout-booking/club/leads/{club}/flag \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obter os módulos efetivos de uma instalação
Retorna todos os módulos disponíveis para uma instalação resolvendo a hierarquia: preferências da instalação → módulos da marca → módulos da organização. Os resultados ficam em cache no Redis para melhor desempenho.
Parâmetros
facilityId `string` (obrigatório) O ID da instalação cujos módulos serão resolvidosEndpoint
GET /api/facilities/{facilityId}/modules
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/modules \
-H "x-api-key: YOUR_API_KEY"
Resposta
[]
Retorna o catálogo de módulos e a configuração de renderização do menu lateral. A lista completa de módulos é retornada para que o renderizador do front-end possa decidir a visibilidade por usuário; a ACL continua sendo aplicada no servidor via `auth.checkModuleAccess()`.
Endpoint
GET /api/modules
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/modules \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
obter as categorias de notificação.
Endpoint
GET /api/notification/categories
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/notification/categories \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Excluir uma notificação consumida.
Endpoint
DELETE /api/club/notification/consumed/:club
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/club/notification/consumed/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
cria uma mensagem de notificação.
Endpoint
POST /api/club/notification/consumed/:club
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/club/notification/consumed/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a matriz de notificações consumidas.
Endpoint
GET /api/club/notification/consumed/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/club/notification/consumed/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Excluir uma mensagem de notificação.
Endpoint
DELETE /api/club/notification/messages/:club
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/club/notification/messages/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a matriz de mensagens de notificação.
Endpoint
GET /api/club/notification/messages/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/club/notification/messages/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
atualiza uma mensagem de notificação.
Endpoint
PATCH /api/club/notification/messages/:club
Exemplo de solicitação
curl -X PATCH https://portal.hub.gymsystems.co/api/club/notification/messages/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
cria uma mensagem de notificação.
Parâmetros
body `string` (obrigatório)Endpoint
POST /api/club/notification/messages/:club
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/club/notification/messages/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
obter os visualizadores de uma notificação por instalação.
Endpoint
POST /api/club/notification/viewers/:club
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/club/notification/viewers/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
obter as categorias de notificação por usuário.
Endpoint
GET /api/club/notification/user-categories/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/club/notification/user-categories/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
cria uma mensagem de notificação.
Endpoint
POST /api/notification/webhook
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/notification/webhook \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obter a chave pública VAPID para push HTML5
Retorna a chave pública VAPID usada para criar assinaturas de push no navegador.
Endpoint
GET /html5-push/vapid-public-key
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/html5-push/vapid-public-key \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Salvar ou atualizar uma assinatura de push HTML5
Salva uma assinatura de push do navegador para o usuário atual.
Corpo da solicitação
Endpoint
POST /html5-push/subscribe
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/html5-push/subscribe \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Resposta
{}
Excluir uma assinatura de push HTML5
Remove uma assinatura de push do navegador do usuário atual.
Corpo da solicitação
Endpoint
POST /html5-push/unsubscribe
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/html5-push/unsubscribe \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Resposta
{}
Obter o status de integração do local para o usuário chamador
Retorna as duas partes da integração de uma instalação: configuração (detalhes + seleções de produtos, armazenados nas preferências da instalação) e pagamento (derivado em tempo real do registro payment-settings do faturamento SaaS), além de um sinalizador `required` personalizado para o chamador, usado pelo shell do aplicativo para bloquear o acesso. Somente para locais da pilha de tecnologia; locais da pilha de negócios sempre retornam required=false.
Parâmetros
facilityId `string` (obrigatório)Endpoint
GET /api/onboarding/{facilityId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/onboarding/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Salvar o progresso em andamento do assistente de integração de uma instalação
Salva o estado parcial do assistente (seleções de produtos, texto livre de "Other", detalhes comerciais revisados, etapa atual) para que, ao atualizar ou abandonar a página, o usuário retome de onde parou. Nunca registra a conclusão; consulte o endpoint complete.
Parâmetros
facilityId `string` (obrigatório)Corpo da solicitação
Endpoint
PUT /api/onboarding/{facilityId}
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/onboarding/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Resposta
{}
Gerar sugestões de preenchimento por IA para o assistente de integração
Usa o contexto existente da instalação, da marca e da organização para propor detalhes da instalação (texto de apresentação, campos de contato organizados), seleções de produtos sugeridas e dicas curtas personalizadas. Os resultados ficam em cache no Redis por 7 dias. As sugestões são apenas recomendações: o cliente as exibe em um formulário de revisão editável. Sempre responde 200; `suggestions` é null quando a IA não está disponível, para que o assistente continue funcionando normalmente.
Parâmetros
facilityId `string` (obrigatório)Endpoint
POST /api/onboarding/{facilityId}/ai-prefill
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/onboarding/{facilityId}/ai-prefill \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Concluir a parte de configuração da integração do local
Valida as seleções e os detalhes confirmados, salva os detalhes comerciais no registro da instalação, inicializa o layout do menu de tecnologia da instalação a partir das seleções de produtos (a menos que já exista um layout personalizado) e registra a conclusão da configuração. A parte de pagamento intencionalmente NÃO pode ser concluída aqui: ela é derivada em tempo real do registro payment-settings do faturamento SaaS, portanto o requisito obrigatório de cartão não pode ser contornado chamando este endpoint. Retorna o status atualizado.
Parâmetros
facilityId `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/onboarding/{facilityId}/complete
Exemplo de solicitação
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 '{}'
Resposta
{}
Acionar uma ação declarada de integração de parceiro para uma instalação
Executa uma ação "Run integration" declarada no registro do parceiro (ph-partners.actions[]), com escopo de uma instalação. Um bloqueio single-flight no Redis impede execuções manuais simultâneas para a mesma ação+instalação.
Parâmetros
partnerId `string` (obrigatório) actionId `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/partners/{partnerId}/actions/{actionId}/run
Exemplo de solicitação
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 '{}'
Ler o status de execução de uma ação de integração de parceiro
Retorna se uma execução manual está em andamento no momento (bloqueio single-flight ativo), além da última execução solicitada, para que o botão das configurações faça consultas periódicas.
Parâmetros
partnerId `string` (obrigatório) actionId `string` (obrigatório) facilityId `string` (obrigatório)Endpoint
GET /api/partners/{partnerId}/actions/{actionId}/status
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/partners/{partnerId}/actions/{actionId}/status \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obter todas as configurações de parceiros de uma marca
Parâmetros
brandId `string` (obrigatório) O ID da marcaEndpoint
GET /api/partners/brand-config/{brandId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/partners/brand-config/{brandId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
[]
Criar ou atualizar a configuração de parceiro de uma marca
Parâmetros
body `object` (obrigatório)Endpoint
PUT /api/partners/brand-config
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/partners/brand-config \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Migrar os dados da integração GymMaster para facility-partner-config
Consulta todas as instalações com os campos gymMasterAPI e gymMasterDomain e cria/atualiza os registros facility-partner-config correspondentes. Este é um endpoint de migração de uso único.
Parâmetros
partnerId `string` (obrigatório) O ID de parceiro GymMaster a ser usado em todos os registros migrados dryRun `boolean` (opcional) Se true, apenas informa o que seria migrado, sem gravar no banco de dadosEndpoint
GET /api/partners/migrate-gymmaster
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/partners/migrate-gymmaster \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Ativar um parceiro para uma organização.
Parâmetros
partnerId `string` (obrigatório) ID do parceiroEndpoint
POST /api/partners/organisation/enable
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/partners/organisation/enable \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Listar os parceiros da organização. Os administradores da organização veem apenas os parceiros da própria organização.
Endpoint
GET /api/partners/organisation
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/partners/organisation \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Remover um parceiro da organização.
Parâmetros
keyId `string` (obrigatório) ID da chave do parceiro da organização organisationId `string` (obrigatório) ID da organização do parceiroEndpoint
DELETE /api/partners/organisation/{keyId}
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/partners/organisation/{keyId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualizar o modo de acesso e os módulos de um parceiro da organização.
Parâmetros
keyId `string` (obrigatório) ID da chave do parceiro da organização organisationId `string` (obrigatório) ID da organização do parceiro partnerId `string` (obrigatório) ID do parceiro accessMode `string` (obrigatório) Modo de acesso do parceiro modules `string` (opcional) Lista de módulos para o modo de acesso LIMITEDEndpoint
PUT /api/partners/organisation/update-access
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/partners/organisation/update-access \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Criar check-ins para uma instalação
Aceita uma matriz de objetos de check-in e os encaminha à Partner API para processamento. Máximo de 25 check-ins por solicitação.
Corpo da solicitação
Endpoint
POST /api/partners/check-ins
Exemplo de solicitação
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 '{}'
Resposta
{}
Excluir a configuração de um parceiro em uma instalação
Remove a configuração de uma integração de parceiro em uma instalação
Parâmetros
facilityId `string` (obrigatório) ID da instalação (club ID) partnerId `string` (obrigatório) ID do parceiroEndpoint
DELETE /api/partners/facility-config/{facilityId}/{partnerId}
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/partners/facility-config/{facilityId}/{partnerId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Listar todas as configurações de parceiros de uma instalação
Retorna todas as integrações de parceiros configuradas para a instalação informada
Parâmetros
facilityId `string` (obrigatório) ID da instalação (club ID)Endpoint
GET /api/partners/facility-config/{facilityId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/partners/facility-config/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Criar ou atualizar a configuração de um parceiro em uma instalação
Insere ou atualiza a configuração de uma integração de parceiro em uma instalação
Corpo da solicitação
Endpoint
POST /api/partners/facility-config
Exemplo de solicitação
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 '{}'
Resposta
{}
Excluir um membro por memberId
Exclui um registro de membro existente usando o memberId.
Parâmetros
memberId `string` (obrigatório) Identificador exclusivo do membroEndpoint
DELETE /api/partners/members/{memberId}
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/partners/members/{memberId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualizar um membro por memberId
Atualiza um registro de membro existente usando o memberId.
Parâmetros
memberId `string` (obrigatório) Identificador exclusivo do membroCorpo da solicitação
Endpoint
PUT /api/partners/members/{memberId}
Exemplo de solicitação
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 '{}'
Resposta
{}
Obter o status de uma operação de sincronização de membros
Retorna o estado atual de uma operação assíncrona de criação/exclusão de membros iniciada via POST /api/partners/members ou DELETE /api/partners/members/{memberId}. O front-end consulta este endpoint periodicamente para substituir o fluxo legado de consulta da lista + correspondência por nome. OBSERVAÇÃO O escopo de partnerId/facilityId por linha é exigido pelas regras de isolamento multilocatário, mas foi adiado para um PR de reforço da Fase 3a.1: os operationIds são UUIDs de 128 bits e a rota já é controlada pelo acesso ao módulo `external-integrations`. Qualquer pessoa com um operationId válido e acesso ao módulo de administração pode consultar o status.
Parâmetros
operationId `string` (obrigatório) UUID retornado por POST/DELETEEndpoint
GET /api/partners/members/operations/{operationId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/partners/members/operations/{operationId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Criar ou atualizar membros de uma instalação
Aceita uma matriz de objetos de membro e os encaminha à Partner API para processamento. Máximo de 25 membros por solicitação.
Corpo da solicitação
Endpoint
POST /api/partners/members
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/partners/members \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Resposta
{}
Criar ou atualizar planos de associação de uma instalação
Aceita uma matriz de objetos de plano de associação e os encaminha à Partner API para processamento. Máximo de 25 planos de associação por solicitação.
Corpo da solicitação
Endpoint
POST /api/partners/membership-plans
Exemplo de solicitação
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 '{}'
Resposta
{}
Cria uma nova função
Parâmetros
body `string` (obrigatório) Objeto de funçãoEndpoint
POST /api/roles
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/roles \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a lista de todas as funções
Endpoint
GET /api/roles
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/roles \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Exclui uma função por ID
Endpoint
DELETE /api/roles/{roleId}
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/roles/{roleId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualiza uma função por ID
Parâmetros
body `string` (obrigatório) Objeto de funçãoEndpoint
PUT /api/roles/{roleId}
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/roles/{roleId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Criar um novo item de linha adicional para a fatura do faturamento SaaS
Parâmetros
organisationId `string` (opcional) O ID da organização para a qual o item de linha adicional será criado body `string` (opcional) Corpo da solicitaçãoEndpoint
POST /api/saas-billing/additional-line-items
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/saas-billing/additional-line-items \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a lista de itens de linha adicionais da fatura do faturamento SaaS
Parâmetros
organisationId `string` (obrigatório) O ID da organizaçãoEndpoint
GET /api/saas-billing/additional-line-items
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/additional-line-items \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a lista de itens de linha adicionais da fatura do faturamento SaaS da instalação
Endpoint
GET /api/clubs/{clubId}/saas-billing/additional-line-items
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/saas-billing/additional-line-items \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualiza um item de linha adicional da fatura do faturamento SaaS
Parâmetros
itemId `string` (obrigatório) O ID do item de linha adicional a atualizar body `string` (obrigatório) O corpo da solicitaçãoEndpoint
PUT /api/saas-billing/additional-line-items/{itemId}
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/saas-billing/additional-line-items/{itemId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Tarifas por hora combinadas de Cloud Agent para Your Rates
Retorna os tamanhos de Cloud Agent oferecidos com um único preço por hora combinado (hospedagem + software). A divisão não é incluída. usedPlans são os SKUs que esta instalação executou nos últimos 30 dias.
Parâmetros
clubID `string` (obrigatório)Endpoint
GET /api/clubs/{clubID}/saas-billing/cloud-agent-rates
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/cloud-agent-rates \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Excluir um relatório mensal importado
Parâmetros
club `string` (opcional) ID do clube reportId `string` (opcional) ID do relatórioEndpoint
DELETE /api/saas-billing/extended-access/monthly-usage-report/{reportId}
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/saas-billing/extended-access/monthly-usage-report/{reportId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obter o relatório de armazenamento de CFTV mais recente de uma instalação
Retorna o snapshot diário de armazenamento de CFTV mais recente da instalação a partir dos registros de faturamento armazenados (até os últimos 31 dias). Inclui totalStorage, a data e as cobranças relacionadas ao armazenamento.
Parâmetros
club `string` (obrigatório) ID do clubeEndpoint
GET /api/saas-billing/extended-access/latest-cctv-storage-report/{club}
Exemplo de solicitação
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"
Resposta
{}
Retorna uma fatura em PDF da instalação para o período informado.
Parâmetros
club `string` (opcional) ID do clube month `string` (opcional) mês do relatório em formato numérico. 1 = janeiro, 2 = fevereiro etc. year `string` (opcional) ano do relatório em formato numérico, por exemplo, 2021Endpoint
GET /api/saas-billing/extended-access/monthly-usage-report/:club/invoice
Exemplo de solicitação
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"
Resposta
{}
Pacote ZIP com os PDFs das faturas da plataforma dos meses de uso selecionados. Equivalente em massa do endpoint .../invoice individual: alimenta o download com seleção múltipla na guia Invoices & Receipts do aplicativo Billing & Cost Management.
Parâmetros
club `string` (opcional) ID do clube months `string` (opcional) Meses de uso/relatório separados por vírgula no formato YYYY-MM (máximo de 24)Endpoint
GET /api/saas-billing/extended-access/monthly-usage-report/{club}/invoices.zip
Exemplo de solicitação
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"
Resposta
{}
Retorna os relatórios mensais de uso de vários meses em uma única chamada. Alimenta o gráfico de histórico de custos e as variações mês a mês no aplicativo Billing & Cost Management. Meses ainda sem uso retornam report: null (equivalente ao 404 → $0 na interface do endpoint de mês único).
Parâmetros
club `string` (opcional) ID do clube months `string` (opcional) Meses de uso separados por vírgula no formato YYYY-MM (máximo de 12)Endpoint
GET /api/saas-billing/extended-access/monthly-usage-report/{club}/batch
Exemplo de solicitação
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"
Resposta
{}
Importar os relatórios mensais da instalação.
Parâmetros
club `string` (opcional) ID do clubeEndpoint
PUT /api/saas-billing/extended-access/usage-report/:club
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/saas-billing/extended-access/usage-report/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna um relatório CSV do uso de CFTV dos últimos 30 dias de todas as instalações.
Endpoint
GET /api/saas-billing/extended-access/usage-report/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/usage-report/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Lista todos os relatórios diários do mês da instalação.
Parâmetros
club `string` (opcional) ID do clube month `string` (opcional) mês do relatório em formato numérico. 1 = janeiro, 2 = fevereiro etc. year `string` (opcional) ano do relatório em formato numérico, por exemplo, 2021Endpoint
GET /api/saas-billing/extended-access/monthly-usage-report/{club}/daily-reports
Exemplo de solicitação
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"
Resposta
{}
Retorna uma lista de relatórios mensais importados para o administrador
Parâmetros
organisationId `string` (obrigatório) ID da organizaçãoEndpoint
GET /api/saas-billing/extended-access/usage-report/imported
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/usage-report/imported \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna um relatório CSV do uso de CFTV dos últimos 30 dias de todas as instalações.
Parâmetros
club `string` (opcional) ID do clube month `string` (opcional) mês do relatório em formato numérico. 1 = janeiro, 2 = fevereiro etc. year `string` (opcional) ano do relatório em formato numérico, por exemplo, 2021Endpoint
GET /api/saas-billing/extended-access/monthly-usage-report/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/monthly-usage-report/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna o relatório de uso periódico da instalação.
Parâmetros
club `string` (opcional) ID do clube periodStart `string` (opcional) Início do período no formato YYYY-MM-DD periodEnd `string` (opcional) Fim do período no formato YYYY-MM-DDEndpoint
GET /api/saas-billing/extended-access/periodical-usage-report/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/periodical-usage-report/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Pacote ZIP único com PDFs de documentos de faturamento de tipos variados: faturas da plataforma (por mês de uso), recibos de recarga da carteira SaaS e recibos de recarga do Model Router. Equivalente em massa dos endpoints invoices.zip / receipts.zip por tipo, para a guia consolidada Invoices & Receipts. Cada mês/ID solicitado deve corresponder a um documento da instalação; qualquer valor inválido faz o pacote inteiro falhar.
Parâmetros
clubID `string` (obrigatório) invoiceMonths `string` (opcional) Meses de uso separados por vírgula no formato YYYY-MM walletIds `string` (opcional) IDs de transações de recarga da carteira SaaS separados por vírgula aiIds `string` (opcional) IDs de transações de recarga do Model Router separados por vírgulaEndpoint
GET /api/clubs/{clubID}/saas-billing/documents.zip
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/documents.zip \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Adicionar uma observação a um registro mensal
Parâmetros
recordID `string` (opcional) O ID do registro a obter note `string` (opcional) A observação a adicionar ao registroEndpoint
POST /api/saas-billing/monthly-records/{recordID}/notes
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/saas-billing/monthly-records/{recordID}/notes \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a lista de registros mensais do faturamento SaaS
Parâmetros
club `string` (opcional) O ID da instalação a obter month `string` (opcional) O mês de faturamento no formato YYYY-MMEndpoint
GET /api/saas-billing/monthly-records/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/monthly-records/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a lista de registros mensais do faturamento SaaS que falharam ou exigem 3D Secure
Parâmetros
clubID `string` (opcional) O ID da instalação cujos registros mensais com falha serão obtidosEndpoint
GET /api/clubs/:clubID/saas-billing/flagged
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/:clubID/saas-billing/flagged \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna TODOS os registros mensais do faturamento SaaS (o livro de faturas) de uma instalação, do mês de faturamento mais recente para o mais antigo. Equivalente com escopo de instalação do endpoint paginate-monthly-records exclusivo para administradores: alimenta a guia "Invoices & Receipts" do cliente no aplicativo Billing & Cost Management.
Parâmetros
clubID `string` (opcional) O ID da instalação cujos registros mensais serão listadosEndpoint
GET /api/clubs/{clubID}/saas-billing/monthly-records
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/monthly-records \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a lista de registros mensais do faturamento SaaS
Parâmetros
organisationId `string` (opcional) ID da organização month `string` (opcional) Mês no formato MM. year `string` (opcional) Ano no formato YYYY. filters `string` (opcional) Filtros de string de consulta criados pela tabela de dados. order `string` (opcional) String de consulta criada pela tabela de dados.Endpoint
GET /api/saas-billing/monthly-records
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/monthly-records \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Tentar novamente os pagamentos com falha de uma instalação
Parâmetros
clubID `string` (opcional) O ID da instalação cujos registros mensais com falha serão obtidosEndpoint
PUT /api/clubs/:clubID/saas-billing/retry-failed-payments
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/:clubID/saas-billing/retry-failed-payments \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualizar um registro mensal
Parâmetros
recordID `string` (opcional) O ID do registro a obter status `string` (opcional) O status para o qual o registro será atualizadoEndpoint
PUT /api/saas-billing/monthly-records/{recordID}
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/saas-billing/monthly-records/{recordID} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Verifica se os pagamentos foram bem-sucedidos e atualiza o status do registro
Parâmetros
clubID `string` (opcional) recordID `string` (opcional) O ID do registro a obterEndpoint
PUT /api/clubs/{clubID}/saas-billing/monthly-records/{recordID}/validate
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/monthly-records/{recordID}/validate \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Adicionar uma forma de pagamento para uma instalação.
Parâmetros
clubID `string` (opcional)Endpoint
POST /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings/payment-methods \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Sincroniza as formas de pagamento de uma instalação com o Stripe.
Parâmetros
clubID `string` (opcional)Endpoint
PUT /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings/payment-methods \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna o orçamento de gastos da instalação, além dos valores calculados do mês até a data e da previsão.
Parâmetros
clubID `string` (opcional)Endpoint
GET /api/clubs/{clubID}/saas-billing/budget
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/budget \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Criar/atualizar/limpar o orçamento de gastos da instalação.
Parâmetros
clubID `string` (opcional) body `object` (opcional)Endpoint
PUT /api/clubs/{clubID}/saas-billing/budget
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/budget \
-H "x-api-key: YOUR_API_KEY"
Excluir uma forma de pagamento das configurações de pagamento da instalação.
Parâmetros
clubID `string` (opcional) paymentMethodID `string` (opcional)Endpoint
DELETE /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods/{paymentMethodID}
Exemplo de solicitação
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"
Resposta
{}
Obter as configurações de pagamento de uma instalação.
Parâmetros
clubID `string` (opcional)Endpoint
GET /api/clubs/{clubID}/saas-billing/payment-settings
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualizar as configurações de pagamento de uma instalação.
Parâmetros
clubID `string` (opcional) lockedOut `boolean` (opcional) Se a instalação será bloqueada no sistema. pauseBilling `boolean` (opcional) Se o faturamento automático da instalação será pausado. customerID `string` (opcional) Informar isso atualiza o ID de cliente do Stripe da instalação. deleteSourceID `string` (opcional) Se o cliente de origem deve ser excluído do Stripe.Endpoint
PUT /api/clubs/{clubID}/saas-billing/payment-settings
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obter o primeiro mês faturado de todas as instalações.
Parâmetros
clubID `string` (opcional)Endpoint
GET /api/saas-billing/payment-settings/earliest-billed-month
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/payment-settings/earliest-billed-month \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Lista as contas que podem liberar um bloqueio de faturamento de uma instalação, em níveis: primeiro os usuários que têm o módulo de faturamento; os administradores da organização apenas como alternativa, quando ninguém o tem.
Parâmetros
clubID `string` (obrigatório)Endpoint
GET /api/clubs/{clubID}/saas-billing/lockout-contacts
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/lockout-contacts \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Percorrer de forma paginada todas as instalações do sistema e retornar os IDs de cliente de cada uma.
Parâmetros
clubID `string` (opcional) organisationId `string` (opcional) ID da organizaçãoEndpoint
GET /api/saas-billing/payment-settings/customer-ids
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/payment-settings/customer-ids \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Definir a forma de pagamento principal de uma instalação.
Parâmetros
clubID `string` (opcional)Endpoint
PUT /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods/{paymentMethodID}/primary
Exemplo de solicitação
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"
Resposta
{}
Atualizar o perfil de faturamento de uma instalação.
Parâmetros
clubID `string` (opcional) invoiceEntity `string` (opcional) billingContacts `string` (opcional) Lista de UUIDs dos contatos de KYC ccEmails `string` (opcional) Lista de e-mails a incluir em cópia nas faturasEndpoint
PUT /api/clubs/{clubID}/saas-billing/payment-settings/billing-profile
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings/billing-profile \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualizar uma forma de pagamento de uma instalação.
Parâmetros
clubID `string` (opcional) cardID `string` (opcional)Endpoint
PUT /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods/{cardID}
Exemplo de solicitação
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"
Resposta
{}
Retorna um detalhamento por instalação de todas as cobranças de produtos aplicáveis e dos itens de linha adicionais para exportação em CSV. Resolve a hierarquia de substituição global/região/instalação para cada instalação à qual o usuário tem acesso.
Parâmetros
organisationId `string` (obrigatório) ID da organização para a ACLEndpoint
GET /api/saas-billing/charges-config/export
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/charges-config/export \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna a configuração de cobranças de um destino específico
Parâmetros
clubId `string` (opcional) O ID da instalação cuja configuração de cobranças será obtidaEndpoint
GET /api/saas-billing/charges-config/{clubId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/charges-config/{clubId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Resumo do faturamento da organização desta instalação: escopo efetivo do pagador, qualquer alteração de consolidação agendada e se o chamador pode gerenciar a opção de consolidação.
Parâmetros
clubID `string` (obrigatório)Endpoint
GET /api/clubs/{clubID}/saas-billing/org/summary
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/org/summary \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Registros mensais consolidados da organização (extratos) com o detalhamento por instalação, mais recentes primeiro. Fica vazio até a liquidação do primeiro mês consolidado da organização.
Parâmetros
clubID `string` (obrigatório)Endpoint
GET /api/clubs/{clubID}/saas-billing/org/monthly-records
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/org/monthly-records \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Resumo da carteira pré-paga: saldo, débitos de uso do mês até a data, configuração de recarga automática e método de faturamento.
Parâmetros
clubID `string` (obrigatório)Endpoint
GET /api/clubs/{clubID}/saas-billing/wallet
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Livro-razão da carteira, mais recentes primeiro. Carteiras com escopo de organização incluem as linhas de todas as instalações (cada uma traz o clubID de origem).
Parâmetros
clubID `string` (obrigatório) limit `string` (opcional) types `string` (opcional) tipos de transação separados por vírgula from `string` (opcional) to `string` (opcional) cursor `string` (opcional) nextCursor de uma página anteriorEndpoint
GET /api/clubs/{clubID}/saas-billing/wallet/transactions
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/transactions \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Recibo em PDF com a marca para uma única transação da carteira (recargas e créditos).
Parâmetros
clubID `string` (obrigatório) txId `string` (obrigatório)Endpoint
GET /api/clubs/{clubID}/saas-billing/wallet/transactions/{txId}/receipt.pdf
Exemplo de solicitação
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"
Resposta
{}
Pacote ZIP com os recibos em PDF com a marca das transações de recarga da carteira selecionadas. Cada ID deve ser uma recarga (cartão ou fatura) da carteira desta instalação; débitos de uso e ajustes não têm recibos e são rejeitados.
Parâmetros
clubID `string` (obrigatório) ids `string` (obrigatório) IDs de transação separados por vírgula (máximo 50)Endpoint
GET /api/clubs/{clubID}/saas-billing/wallet/transactions/receipts.zip
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/transactions/receipts.zip \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Cobrar um cartão armazenado do faturamento SaaS para adicionar saldo pré-pago. Retorna requires_action + clientSecret quando o 3DS é necessário.
Parâmetros
clubID `string` (obrigatório) body `object` (opcional)Endpoint
POST /api/clubs/{clubID}/saas-billing/wallet/topup
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/topup \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Finalizar uma recarga da carteira depois que o aplicativo concluir a autenticação 3DS. Idempotente.
Parâmetros
clubID `string` (obrigatório)Endpoint
POST /api/clubs/{clubID}/saas-billing/wallet/topup/confirm
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/topup/confirm \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualizar a regra de recarga automática da instalação (armazenada na linha de substituição do perfil de faturamento).
Parâmetros
clubID `string` (obrigatório) body `object` (opcional)Endpoint
PATCH /api/clubs/{clubID}/saas-billing/wallet/auto-topup
Exemplo de solicitação
curl -X PATCH https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/auto-topup \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Faturas de recarga da carteira desta instalação (forma de pagamento por fatura), mais recentes primeiro.
Parâmetros
clubID `string` (obrigatório)Endpoint
GET /api/clubs/{clubID}/saas-billing/wallet/invoices
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/invoices \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Solicitar uma fatura de recarga com pagamento por referência (somente para a forma de pagamento por fatura). No máximo uma fatura pendente por carteira: uma segunda solicitação retorna a existente com alreadyPending=true.
Parâmetros
clubID `string` (obrigatório) body `string` (opcional) { amountCents: number }Endpoint
POST /api/clubs/{clubID}/saas-billing/wallet/topup-invoice
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/topup-invoice \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna uma lista de pedidos da instalação.
Parâmetros
facilityID `string` (opcional)Endpoint
GET /api/store/facilities/:facilityID/orders
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/store/facilities/:facilityID/orders \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna uma lista de produtos disponíveis para a instalação.
Parâmetros
clubID `string` (obrigatório) search `string` (opcional) limit `string` (opcional) page `string` (opcional) O número da página para paginação (começa em 1).Endpoint
GET /api/store/clubs/{clubID}/products
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/store/clubs/{clubID}/products \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Listar os registros do Stripe da instalação.
Parâmetros
club `string` (obrigatório) fromDate `string` (opcional) Carimbo de data/hora Unix toDate `string` (opcional) Carimbo de data/hora Unix socketID `string` (obrigatório) Identificador exclusivo da solicitação de socketEndpoint
GET /api/club/{club}/stripe/records
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/club/{club}/stripe/records \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Cancelar uma intenção de pagamento
Parâmetros
club `string` (obrigatório) paymentIntent `string` (opcional)Endpoint
GET /api/club/{club}/stripe/payment-intent/:paymentIntent/cancel
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/club/{club}/stripe/payment-intent/:paymentIntent/cancel \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Criar uma Stripe Account Session para componentes incorporados
Cria uma Stripe Account Session para uma conta conectada. Retorna um client_secret usado para inicializar os componentes incorporados do Connect (contestações, repasses, gerenciamento de conta, documentos).
Corpo da solicitação
Endpoint
POST /api/stripe/account-session
Exemplo de solicitação
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 '{}'
Resposta
{}
Gera um link de uso único para a página de KYC do Stripe de uma conta conectada.
Parâmetros
club `string` (obrigatório)Endpoint
GET /api/club/{club}/stripe/generate-kyc-token
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/club/{club}/stripe/generate-kyc-token \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obtém os detalhes de uma conta conectada do Stripe como parte do processo de KYC.
Parâmetros
club `string` (obrigatório)Endpoint
GET /api/club/{club}/stripe/connect-account-details
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/club/{club}/stripe/connect-account-details \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorna todo o histórico de tickets com base no ID da instalação
Parâmetros
club `string` (obrigatório) ID interno do clube que você deseja acessar.Endpoint
GET /api/ticketing/clubtickets/{club}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/clubtickets/{club} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obtém os departamentos
Endpoint
GET /api/ticketing/departments
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/departments \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obtém os detalhes de um único ticket
Parâmetros
user `string` (obrigatório) e-mail do usuário. ticketNumber `string` (obrigatório) ID de 6 dígitos do ticket que você quer acessar. club `string` (obrigatório) o ID da instalação selecionada.Endpoint
GET /api/ticketing/ticket-details/:ticketNumber/:club
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/ticket-details/:ticketNumber/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obtém os tópicos
Endpoint
GET /api/ticketing/topics
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/topics \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obtém todos os tickets criados pelo usuário conectado no momento. Observação: isso é definido a partir dos cabeçalhos fornecidos pelo nosso serviço de SSO do Google.
Parâmetros
user `string` (obrigatório) E-mail do usuário conectado no momentoEndpoint
GET /api/ticketing/usertickets
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/usertickets \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Cria um novo ticket
Parâmetros
club `string` (obrigatório) o ID da instalação selecionada.Endpoint
POST /api/ticketing/clubticket/:club
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/ticketing/clubticket/:club \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Cria um novo ticket
Parâmetros
subject `string` (obrigatório) Assunto do ticket. message `string` (obrigatório) Mensagem completa do ticket.Endpoint
POST /api/ticketing/userticket
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/ticketing/userticket \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Cria uma resposta a um ticket existente
Parâmetros
subject `string` (obrigatório) Assunto do ticket. message `string` (obrigatório) Mensagem completa do ticket.Endpoint
POST /api/ticketing/user-reply
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/ticketing/user-reply \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obtém as preferências de um usuário
Endpoint
GET /api/user-preferences
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/user-preferences \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualiza as preferências de um usuário
Parâmetros
body `string` (obrigatório)Endpoint
PUT /api/user-preferences
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/user-preferences \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Alterar a senha do usuário
Altera a senha do usuário. Exige verificação por OTP se o usuário tiver um número de telefone, ou exige que um número de telefone seja adicionado se não houver.
Corpo da solicitação
Endpoint
POST /api/user/change-password
Exemplo de solicitação
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 '{}'
Resposta
{}
Verificar o status da 2FA do usuário
Retorna se a 2FA está ativada para o usuário e se alguma das funções dele exige a 2FA
Endpoint
GET /api/user/check-2fa-status
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/user/check-2fa-status \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Listar as organizações, instalações e regiões às quais o usuário tem acesso para um módulo específico.
Parâmetros
moduleId `string` (obrigatório)Endpoint
POST /api/user/me/modules/{moduleId}/org-access
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/user/me/modules/{moduleId}/org-access \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Cria uma 'solicitação de vínculo' de um usuário final, pedindo para 'entrar' em uma instalação.
Parâmetros
body `string` (obrigatório) Objeto JSON do novo clube a ser adicionado ao sistema.Endpoint
POST /api/user/linkclub
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/user/linkclub \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Lista todas as instalações autorizadas para o usuário.
Endpoint
GET /api/user/listauthorised
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/user/listauthorised \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Enviar OTP por dois canais (e-mail + SMS)
Envia códigos OTP para o endereço de e-mail do usuário e para um número de telefone especificado. Usado em operações de alta segurança, como a primeira verificação de um número de telefone. Este endpoint apenas envia OTPs e não modifica nenhum dado do usuário.
Corpo da solicitação
Endpoint
POST /api/user/send-dual-otp
Exemplo de solicitação
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 '{}'
Resposta
{}
Enviar OTP para um número de telefone ou e-mail
Envia um código OTP para o número de telefone (SMS) ou o endereço de e-mail do usuário para verificação
Corpo da solicitação
Endpoint
POST /api/user/send-otp
Exemplo de solicitação
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 '{}'
Resposta
{}
Verificar se o usuário tem acesso válido a páginas confidenciais
Retorna se o usuário tem uma sessão válida verificada por OTP para acessar páginas confidenciais
Endpoint
GET /api/user/sensitive-page-access
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/user/sensitive-page-access \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Verificar o OTP e conceder acesso a páginas confidenciais
Verifica o código OTP e, se for válido, concede acesso de 1 hora às páginas confidenciais
Corpo da solicitação
Endpoint
POST /api/user/sensitive-page-access/verify
Exemplo de solicitação
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 '{}'
Resposta
{}
Revogar o acesso a páginas confidenciais (sair das páginas confidenciais)
Revoga a sessão atual de acesso a páginas confidenciais do usuário
Endpoint
POST /api/user/sensitive-page-access/revoke
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/user/sensitive-page-access/revoke \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Ativar ou desativar a 2FA
Ativa ou desativa a autenticação de dois fatores para o usuário. Exige número de telefone e verificação por OTP.
Corpo da solicitação
Endpoint
POST /api/user/toggle-2fa
Exemplo de solicitação
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 '{}'
Resposta
{}
Atualizar o próprio perfil do usuário
Permite que um usuário atualize as informações do próprio perfil (nome, sobrenome, número de telefone). Ao adicionar um número de telefone pela primeira vez, é necessária a verificação por OTP em dois canais (códigos por e-mail e por SMS). Ao alterar um número de telefone existente, apenas o OTP por e-mail é necessário.
Corpo da solicitação
Endpoint
PATCH /api/user/update-profile
Exemplo de solicitação
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 '{}'
Resposta
{}
Obter um ícone com base na URL.
Endpoint
GET /api/website-icon
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/website-icon \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Listar os modelos de entrada do cofre de senhas
Parâmetros
organisationId `string` (opcional) Contexto da organização para as verificações de acesso ao móduloEndpoint
GET /api/vault/templates
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/vault/templates \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Listar as entradas visíveis do cofre de senhas
Parâmetros
organisationId `string` (obrigatório) scope `string` (opcional)Endpoint
GET /api/vault/entries
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/vault/entries \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Criar uma entrada no cofre de senhas
Endpoint
POST /api/vault/entries
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/vault/entries \
-H "x-api-key: YOUR_API_KEY"
Obter uma entrada do cofre de senhas sem revelar os valores secretos
Parâmetros
entryId `string` (obrigatório) organisationId `string` (obrigatório)Endpoint
GET /api/vault/entries/{entryId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/vault/entries/{entryId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Atualizar uma entrada do cofre de senhas
Endpoint
PUT /api/vault/entries/{entryId}
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/vault/entries/{entryId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Excluir uma entrada do cofre de senhas
Endpoint
DELETE /api/vault/entries/{entryId}
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/vault/entries/{entryId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Revelar os campos ocultos ou secretos selecionados
Endpoint
POST /api/vault/entries/{entryId}/reveal
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/vault/entries/{entryId}/reveal \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Listar os resumos das pastas do cofre de senhas
Endpoint
GET /api/vault/folders
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/vault/folders \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Listar as entradas com códigos de autenticador
Endpoint
GET /api/vault/authenticator
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/vault/authenticator \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Listar os tipos de nó de workflow registrados
Endpoint
GET /api/workflow-engine/node-types
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/node-types \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Obter a projeção do horário da instalação usada pelos blocos de workflow
Parâmetros
facilityId `string` (obrigatório)Endpoint
GET /api/workflow-engine/facility-hours/{facilityId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/facility-hours/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Visualizar o remetente de e-mail de workflow com a marca da instalação
Parâmetros
facilityId `string` (obrigatório)Endpoint
GET /api/workflow-engine/email-branding/{facilityId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/email-branding/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Listar os recursos da instalação para a configuração de gatilhos
Parâmetros
facilityId `string` (obrigatório) resourceType `string` (obrigatório)Endpoint
GET /api/workflow-engine/resources/{facilityId}/{resourceType}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/resources/{facilityId}/{resourceType} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Listar os workflows de uma instalação
Parâmetros
facilityId `string` (obrigatório)Endpoint
GET /api/workflow-engine/workflows/{facilityId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Criar um workflow de rascunho a partir de um grafo não vazio
O editor mantém um novo workflow localmente até que ele tenha pelo menos um bloco, então o primeiro salvamento o cria junto com o grafo em uma única chamada. Um corpo sem `nodes` é rejeitado em vez de armazenado.
Parâmetros
facilityId `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/workflow-engine/workflows/{facilityId}
Exemplo de solicitação
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 '{}'
Resposta
{}
Listar as credenciais que os workflows de uma instalação podem usar
Retorna as credenciais da própria instalação, além das compartilhadas na marca ou na organização dela. Os segredos nunca são retornados; `hasValue` informa apenas que há um armazenado.
Parâmetros
facilityId `string` (obrigatório)Endpoint
GET /api/workflow-engine/credentials/{facilityId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/credentials/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Criar uma credencial de workflow
O nível de escopo vem de `scopeType`; os IDs da marca e da organização são determinados a partir da instalação, e não aceitos do chamador.
Parâmetros
facilityId `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/workflow-engine/credentials/{facilityId}
Exemplo de solicitação
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 '{}'
Configurações de workflow para toda a instalação (destinatários das notificações de falha)
Parâmetros
facilityId `string` (obrigatório)Endpoint
GET /api/workflow-engine/facility-settings/{facilityId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/facility-settings/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Armazenar os destinatários das notificações de falha para toda a instalação
Parâmetros
facilityId `string` (obrigatório)Corpo da solicitação
Endpoint
PUT /api/workflow-engine/facility-settings/{facilityId}
Exemplo de solicitação
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 '{}'
Resposta
{}
Substituir uma credencial de workflow
Um `secret` vazio mantém o armazenado, para que uma credencial possa ser renomeada sem informá-lo novamente. Não há como ler um segredo de volta.
Parâmetros
facilityId `string` (obrigatório) credentialId `string` (obrigatório)Endpoint
PUT /api/workflow-engine/credentials/{facilityId}/{credentialId}
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/workflow-engine/credentials/{facilityId}/{credentialId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Excluir uma credencial de workflow
Os nós que fazem referência a ela falham de forma segura na próxima chamada, inclusive em workflows já publicados, porque um snapshot armazena apenas a referência.
Parâmetros
facilityId `string` (obrigatório) credentialId `string` (obrigatório)Endpoint
DELETE /api/workflow-engine/credentials/{facilityId}/{credentialId}
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/workflow-engine/credentials/{facilityId}/{credentialId} \
-H "x-api-key: YOUR_API_KEY"
Obter a URL de webhook de um gatilho de workflow
Parâmetros
facilityId `string` (obrigatório) workflowId `string` (obrigatório) nodeId `string` (obrigatório)Endpoint
GET /api/workflow-engine/workflows/{facilityId}/{workflowId}/nodes/{nodeId}/webhook
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/nodes/{nodeId}/webhook \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Trocar a URL de webhook de um gatilho de workflow
Invalida imediatamente a URL anterior.
Parâmetros
facilityId `string` (obrigatório) workflowId `string` (obrigatório) nodeId `string` (obrigatório)Endpoint
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/nodes/{nodeId}/webhook/rotate
Exemplo de solicitação
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"
Resposta
{}
Obter um workflow por ID
Parâmetros
facilityId `string` (obrigatório) workflowId `string` (obrigatório)Endpoint
GET /api/workflow-engine/workflows/{facilityId}/{workflowId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Criar ou atualizar um workflow de rascunho
Parâmetros
facilityId `string` (obrigatório) workflowId `string` (obrigatório)Corpo da solicitação
Endpoint
PUT /api/workflow-engine/workflows/{facilityId}/{workflowId}
Exemplo de solicitação
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 '{}'
Resposta
{}
Atualizar o nome e/ou a descrição do workflow
Parâmetros
facilityId `string` (obrigatório) workflowId `string` (obrigatório)Corpo da solicitação
Endpoint
PATCH /api/workflow-engine/workflows/{facilityId}/{workflowId}
Exemplo de solicitação
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 '{}'
Resposta
{}
Excluir um workflow e as versões dele
Parâmetros
facilityId `string` (obrigatório) workflowId `string` (obrigatório)Endpoint
DELETE /api/workflow-engine/workflows/{facilityId}/{workflowId}
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Duplicar um workflow em um novo rascunho inativo
Parâmetros
facilityId `string` (obrigatório) workflowId `string` (obrigatório)Endpoint
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/duplicate
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/duplicate \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Publicar o rascunho atual (snapshot de versão imutável)
Parâmetros
facilityId `string` (obrigatório) workflowId `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/publish
Exemplo de solicitação
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 '{}'
Resposta
{}
Redefinir o rascunho para a última versão publicada
Parâmetros
facilityId `string` (obrigatório) workflowId `string` (obrigatório)Endpoint
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/discard
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/discard \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Ativar ou desativar um workflow
Parâmetros
facilityId `string` (obrigatório) workflowId `string` (obrigatório)Corpo da solicitação
Endpoint
PATCH /api/workflow-engine/workflows/{facilityId}/{workflowId}/active
Exemplo de solicitação
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 '{}'
Resposta
{}
Gerar ou revisar um grafo de workflow com IA
Parâmetros
facilityId `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/workflow-engine/generate/{facilityId}
Exemplo de solicitação
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 '{}'
Resposta
{}
Listar os modelos nos quais um nó Agent pode ser executado nesta instalação
Parâmetros
facilityId `string` (obrigatório)Endpoint
GET /api/workflow-engine/agent-models/{facilityId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/agent-models/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Listar as ferramentas MCP que um nó Agent pode anexar nesta instalação
Parâmetros
facilityId `string` (obrigatório)Endpoint
GET /api/workflow-engine/agent-tools/{facilityId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/agent-tools/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Pesquisar as conversas do Agent salvas desta instalação (vínculos de Conversation key)
Parâmetros
facilityId `string` (obrigatório) deviceId `string` (opcional) Restringir às conversas de um único dispositivo Agent (o deviceId configurado no nó) q `string` (opcional) Correspondência de substring sem diferenciar maiúsculas e minúsculas na Conversation key, no ID da sessão ou no nome do dispositivo limit `integer` (opcional) offset `integer` (opcional)Endpoint
GET /api/workflow-engine/agent-conversations/{facilityId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/agent-conversations/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Pesquisar as conversas mantidas no próprio dispositivo Agent da instalação
Lista as sessões do próprio dispositivo (as conversas da barra lateral da interface do Agent) para que um workflow possa continuar uma conversa existente com o contexto dela. O histórico pertence ao dispositivo; quando a instalação tem vários dispositivos, `deviceId` escolhe qual deles (o dispositivo configurado no nó). Dispositivo inacessível → 502.
Parâmetros
facilityId `string` (obrigatório) deviceId `string` (opcional) O dispositivo Agent configurado no nó; omita para usar o único dispositivo da instalação q `string` (opcional) Correspondência de substring sem diferenciar maiúsculas e minúsculas no título ou ID da sessão limit `integer` (opcional) offset `integer` (opcional)Endpoint
GET /api/workflow-engine/agent-device-sessions/{facilityId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/agent-device-sessions/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Pesquisar os quadros no kanban do dispositivo Agent da instalação
Alimenta o seletor de Board ID do bloco Agent: Kanban. Correspondência de substring sem diferenciar maiúsculas e minúsculas no nome ou slug do quadro; `current` é o slug do quadro ativo do dispositivo, para que o seletor de tarefas possa usá-lo como escopo padrão. Quando a instalação tem vários dispositivos, `deviceId` escolhe qual deles. Dispositivo inacessível → 502.
Parâmetros
facilityId `string` (obrigatório) deviceId `string` (opcional) O dispositivo Agent configurado no nó; omita para usar o único dispositivo da instalação q `string` (opcional) Correspondência de substring sem diferenciar maiúsculas e minúsculas no nome ou slug do quadro limit `integer` (opcional) offset `integer` (opcional)Endpoint
GET /api/workflow-engine/kanban-boards/{facilityId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/kanban-boards/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Pesquisar as tarefas de um quadro no kanban do dispositivo Agent da instalação
Alimenta o seletor de Task ID do bloco Agent: Kanban. Correspondência de substring sem diferenciar maiúsculas e minúsculas no ID, título ou corpo da tarefa; as tarefas ficam em cada quadro (o dispositivo não tem pesquisa entre quadros), então `board` define o escopo da busca; omita-o para usar o quadro ativo do dispositivo. Dispositivo inacessível → 502.
Parâmetros
facilityId `string` (obrigatório) deviceId `string` (opcional) O dispositivo Agent configurado no nó; omita para usar o único dispositivo da instalação board `string` (opcional) O slug do quadro a listar; omita para usar o quadro ativo do dispositivo q `string` (opcional) Correspondência de substring sem diferenciar maiúsculas e minúsculas no ID, título ou corpo da tarefa limit `integer` (opcional) offset `integer` (opcional)Endpoint
GET /api/workflow-engine/kanban-tasks/{facilityId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/kanban-tasks/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Listar os modelos de workflow selecionados, filtrados para esta instalação
Parâmetros
facilityId `string` (obrigatório)Endpoint
GET /api/workflow-engine/templates/{facilityId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/templates/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Instanciar um modelo como fragmento de grafo para o rascunho aberto
Parâmetros
facilityId `string` (obrigatório) templateId `string` (obrigatório)Endpoint
POST /api/workflow-engine/templates/{facilityId}/{templateId}
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/templates/{facilityId}/{templateId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Contexto do seletor de escopo para a página de administração de modelos (níveis de administrador)
Endpoint
GET /api/workflow-engine/template-admin/context
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/template-admin/context \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Listar os modelos que o chamador pode administrar, com sinalizadores de permissão
Endpoint
GET /api/workflow-engine/template-admin
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/template-admin \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Criar um modelo (níveis de administrador)
Corpo da solicitação
Endpoint
POST /api/workflow-engine/template-admin
Exemplo de solicitação
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 '{}'
Detalhes do modelo, incluindo o grafo, para o editor de administração
Endpoint
GET /api/workflow-engine/template-admin/{templateId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/template-admin/{templateId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Substituir um modelo (organização proprietária)
Endpoint
PUT /api/workflow-engine/template-admin/{templateId}
Exemplo de solicitação
curl -X PUT https://portal.hub.gymsystems.co/api/workflow-engine/template-admin/{templateId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Excluir logicamente um modelo (organização proprietária)
Endpoint
DELETE /api/workflow-engine/template-admin/{templateId}
Exemplo de solicitação
curl -X DELETE https://portal.hub.gymsystems.co/api/workflow-engine/template-admin/{templateId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Duplicar um modelo visível em um escopo de destino que o chamador pode usar
Corpo da solicitação
Endpoint
POST /api/workflow-engine/template-admin/{templateId}/duplicate
Exemplo de solicitação
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 '{}'
Executar o grafo publicado de um workflow a partir de um gatilho manual
Parâmetros
facilityId `string` (obrigatório) workflowId `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/run
Exemplo de solicitação
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 '{}'
Resposta
{}
Testar o rascunho salvo sem publicá-lo
Executa o grafo do rascunho atual e registra o resultado com `mode: test` e sem `versionId`. A publicação, o sinalizador live e `publishedVersionId` nunca são alterados. Os efeitos colaterais são simulados por padrão; `sideEffects: live` também exige `confirmLiveSideEffects: true`.
Parâmetros
facilityId `string` (obrigatório) workflowId `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/test
Exemplo de solicitação
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 '{}'
Resposta
{}
Testar um nó de workflow da lista de permissões
Executa um nó testável de forma independente a partir do rascunho salvo. Os valores das variáveis podem ser fornecidos a partir das etapas de execuções registradas. Métodos HTTP que alteram dados exigem confirmação explícita.
Parâmetros
facilityId `string` (obrigatório) workflowId `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/test-node
Exemplo de solicitação
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 '{}'
Resposta
{}
Listar as execuções recentes de um workflow
Parâmetros
facilityId `string` (obrigatório) workflowId `string` (obrigatório)Endpoint
GET /api/workflow-engine/workflows/{facilityId}/{workflowId}/runs
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/runs \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Ler uma execução (status + etapas em ordem)
Parâmetros
facilityId `string` (obrigatório) workflowId `string` (obrigatório) executionId `string` (obrigatório)Endpoint
GET /api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Cancelar o Delay pendente em que uma execução em espera está parada
Parâmetros
facilityId `string` (obrigatório) workflowId `string` (obrigatório) executionId `string` (obrigatório)Endpoint
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId}/cancel
Exemplo de solicitação
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId}/cancel \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Reproduzir uma execução concluída a partir do payload de gatilho registrado
`mode: published` executa novamente a versão exata à qual a execução original estava fixada, com efeitos colaterais reais. `mode: draft-test` executa novamente o rascunho atual como um teste simulado. Uma execução cujo payload de gatilho foi truncado na gravação não pode ser reproduzida.
Parâmetros
facilityId `string` (obrigatório) workflowId `string` (obrigatório) executionId `string` (obrigatório)Corpo da solicitação
Endpoint
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId}/retry
Exemplo de solicitação
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 '{}'
Resposta
{}
Consulta indexada dos workflows que contêm um tipo de nó
Parâmetros
nodeType `string` (obrigatório) facilityId `string` (opcional) organisationId `string` (opcional)Endpoint
GET /api/workflow-engine/master-view/{nodeType}
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/master-view/{nodeType} \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Proxy de redirecionamento OAuth white-label (Connected Apps)
Redirecionamento 302 público e sem autenticação que encaminha o retorno de chamada de um provedor OAuth para o retorno de chamada de autenticação da plataforma de ferramentas upstream, preservando a string de consulta. Permite que aplicativos OAuth do PH registrem um URI de redirecionamento performancehub.co para que o domínio do fornecedor upstream nunca apareça na barra de endereços (necessário para o futuro projeto de aplicativos OAuth personalizados; inofensivo com autenticação gerenciada).
Endpoint
GET /guest/connected-apps/oauth-callback
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/guest/connected-apps/oauth-callback \
-H "x-api-key: YOUR_API_KEY"
Página de conclusão da cadeia de conexão (Connected Apps)
Página leve de "você pode fechar esta janela" para a guia OAuth em que uma cadeia de conexão foi executada. Envia o resultado (suíte/toolkit conectado + novos IDs de conta, ou o toolkit com falha) de volta à guia do marketplace via window.opener.postMessage de mesma origem; quando a referência à janela de origem foi perdida, recorre a um link direto para o aplicativo ph-ai-agent que reproduz a página de destino no aplicativo. Puramente informativa: não guarda segredos e não faz gravações.
Parâmetros
connected `string` (opcional) ID da suíte ou slug do toolkit cuja conexão foi concluída (caso de sucesso). accounts `string` (opcional) IDs de contas conectadas criadas pela cadeia, separados por vírgula. connectError `string` (opcional) Slug do toolkit cuja etapa falhou (caso de falha).Endpoint
GET /guest/connected-apps/finish
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/guest/connected-apps/finish \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}
Retorno de chamada do encadeamento de conexão da suíte (Connected Apps)
Etapa de retorno de chamada OAuth do fluxo de conexão de suíte com um clique. O JWT de estado assinado (HS256, TTL de 30 min) codifica { clubID, deviceId, suite, toolkits, step, caids }: as contas se conectam a esse único dispositivo de agente, e caids acumula os IDs de conta criados em cada etapa (o redirecionamento final para o aplicativo os carrega para que o marketplace possa oferecer a rotulagem das novas contas). Marca o toolkit da etapa como conectado e, em seguida, redireciona com 302 para o Connect Link do próximo toolkit ou para a página do aplicativo ph-ai-agent (com link direto para o agente) quando a suíte estiver concluída. Conexões de um único toolkit passam pelo mesmo manipulador com uma suíte de um toolkit.
Parâmetros
state `string` (obrigatório) JWT de estado assinado da cadeia de conexão.Endpoint
GET /guest/connected-apps/connect-next
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/guest/connected-apps/connect-next \
-H "x-api-key: YOUR_API_KEY"
Disparar o e-mail de definição de senha
Valida o link assinado de um e-mail de boas-vindas, dispara um e-mail de redefinição de senha e mostra uma página de confirmação. Não exige autenticação.
Parâmetros
email `string` (obrigatório) Endereço de e-mail do usuário sig `string` (obrigatório) Assinatura HMAC do e-mailEndpoint
GET /guest/setup-password
Exemplo de solicitação
curl -X GET https://portal.hub.gymsystems.co/guest/setup-password \
-H "x-api-key: YOUR_API_KEY"
Resposta
{}