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

Endpoint

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 atualizar

Endpoint

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//; o chat/terminal do agente nunca pode ser acessado com ele. Os visualizadores precisam do módulo custom-apps em uma instalação abrangida pelo público do app; NÃO precisam do módulo ph-ai-agent nem de acesso ao agente por dispositivo.

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

{}

Exportações de skills preparadas no Agente de IA de uma instalação (seletor de compartilhamento)

Faz proxy, pelo túnel, da lista de exportações preparadas da bridge do dispositivo (GET /__skills/exports) para o seletor "Share a skill" do applet. As exportações são preparadas pela verificação de segurança/portabilidade ph-skill-sharing no dispositivo; cada entrada traz o resultado da verificação feita no dispositivo. Requer o módulo ph-ai-agent E acesso 'open' por dispositivo (o mesmo requisito da própria publicação).

Parâmetros

club `string` (obrigatório) device `string` (obrigatório)

Endpoint

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

Exemplo de solicitação

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

Resposta

{}

Publicar uma exportação de skill preparada como uma NOVA skill compartilhada (versão de rascunho)

Obtém pelo túnel o tarball da exportação preparada indicada na bridge do dispositivo, extrai-o na memória (path traversal, symlinks e tamanho excessivo são rejeitados), executa a verificação de segurança determinística na nuvem, monta o manifesto a partir do frontmatter do SKILL.md, armazena o tarball endereçado por conteúdo no bucket privado de skills e cria o registro principal da skill + uma versão de RASCUNHO. Um bloqueio na verificação NÃO persiste nada e retorna os resultados. O público é limitado pelos escopos das funções do próprio publicador. Envie o rascunho (POST submit) para publicá-lo.

Parâmetros

club `string` (obrigatório)

Corpo da solicitação

Endpoint

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

Exemplo de solicitação

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

Resposta

{}

Publicar uma exportação preparada como NOVA VERSÃO de uma skill compartilhada existente

Mesmo pipeline da publicação, aplicado a uma skill existente: o nome no SKILL.md da exportação precisa corresponder à skill, a versão precisa ser nova (as versões são imutáveis) e um changelog é obrigatório. Somente o publicador pode adicionar versões. Um bloqueio na verificação persiste uma linha de versão com status 'rejected' (somente o relatório, sem artefato) para que os resultados apareçam no histórico do publicador.

Parâmetros

club `string` (obrigatório)

Corpo da solicitação

Endpoint

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

Exemplo de solicitação

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

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

{}

Remover uma skill compartilhada da listagem (retira-a da biblioteca)

Somente o publicador. A skill some da biblioteca e recusa novas instalações imediatamente; as instalações EXISTENTES continuam funcionando, pois remover da listagem é uma ação de listagem, não um botão de desligamento.

Parâmetros

club `string` (obrigatório)

Corpo da solicitação

Endpoint

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

Exemplo de solicitação

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

Resposta

{}

Editar a listagem de uma skill compartilhada (nome de exibição, descrição, ícone)

Somente o publicador. Campos apenas de apresentação: o nome canônico da skill é a identidade dela (manifestos, diretórios de instalação, correspondência de versões) e nunca muda. Uma string vazia redefine o campo para null (voltando ao nome canônico / sem ícone). Os ícones usam o catálogo MDI (mdi:icon-name), o mesmo formato dos apps de agente publicados.

Parâmetros

club `string` (obrigatório)

Corpo da solicitação

Endpoint

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

Exemplo de solicitação

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

Resposta

{}

Transferir a propriedade de uma skill compartilhada

Espelha o fluxo de transferência de apps publicados: o publicador atual ou um proprietário da conta (módulo de faturamento) pode passar a skill para outro usuário, que passa a gerenciar as versões e a listagem dela. O novo proprietário precisa ter acesso à instalação no clube principal da skill.

Parâmetros

club `string` (obrigatório)

Corpo da solicitação

Endpoint

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

Exemplo de solicitação

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

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ção

Endpoint

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 dispositivo

Endpoint

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 dispositivo

Endpoint

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ência

Endpoint

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

{}

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

{}

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 lido

Endpoint

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 Unifi

Endpoint

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ágina

Endpoint

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 facial

Endpoint

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

{}

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ção

Endpoint

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

{}

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 pessoa

Endpoint

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 CFTV

Endpoint

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ção

Corpo 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ção

Corpo 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..textGated` conta os candidatos que corresponderam à imagem, mas não às palavras, então uma página vazia pode ser explicada como "remova as palavras" em vez de "tente outra imagem". Uma pesquisa com semente e sem palavras não carrega nenhum codificador, então nunca sofre uma inicialização a frio; adicionar palavras abre mão disso. De qualquer forma, ela pesquisa todos os índices por padrão: os vetores de recortes, gravações e timelapses compartilham o mesmo espaço, então um recorte de pessoa pode encontrar gravações correspondentes. As pontuações com semente são bem mais altas que as de texto (imagem para imagem não atravessa diferença de modalidade) e são filtradas por um piso separado, ainda não calibrado; `result.queryKind` indica qual escala você está lendo, e uma pontuação de uma nunca deve ser comparada com a da outra. Pesquisa todos os índices por padrão e retorna uma única lista mesclada e ordenada por pontuação; cada resultado traz `index` e `kind` para que quem chama possa distinguir um resultado de imagem de um de vídeo (este último adiciona `offsetMs`). Índices sem tabela para a instalação são informados em `skipped` em vez de falhar. Resultados abaixo do piso de relevância calibrado de cada índice são descartados, então uma consulta sem correspondência real retorna uma lista vazia em vez de bobagens com aparência confiável; `perIndex` informa o que cada índice contribuiu e por quê. Os resultados podem ser restringidos por horário de captura e por câmera. Prefira `cameraId` a `camera`: é o balenaUUID da câmera, o único valor que todos os índices armazenam da mesma forma, então um único filtro restringe todos eles. Um filtro que um índice não consegue atender é informado em `perIndex..filtersIgnored` e esse índice é pesquisado sem restrição, em vez de ser retirado da pesquisa. Os resultados de gravações são **um por clipe, não um por quadro correspondente**: os quadros são amostrados a cada 2 s, então um sujeito que permanece no local corresponde a dez quadros quase idênticos da mesma gravação. Cada clipe retorna o melhor quadro, mais `matchCount` e `offsetsMs`, que listam todos os momentos correspondentes dentro dele e podem ser usados diretamente como pontos de busca. Recortes de pessoas nunca são agrupados, pois dois recortes da mesma pessoa são duas aparições distintas.

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 clube

Endpoint

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ção

Endpoint

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ção

Endpoint

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 Algolia

Endpoint

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 envio

Endpoint

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 recuperadas

Endpoint

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 recuperadas

Endpoint

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ão

Endpoint

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 resposta

Endpoint

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 listadas

Endpoint

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

{}

Excluir um banner do painel

Faz a exclusão lógica de um banner do painel pertencente à marca.

Parâmetros

brandId `string` (obrigatório) O ID da marca à qual o banner pertence bannerId `string` (obrigatório) O ID do banner a excluir

Endpoint

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

Exemplo de solicitação

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

Resposta

{}

Listar os banners do painel de uma marca

Retorna todos os banners do painel (não excluídos) configurados para a marca, para gerenciamento administrativo.

Parâmetros

brandId `string` (obrigatório) O ID da marca cujos banners serão listados

Endpoint

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

Exemplo de solicitação

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

Resposta

{}

Criar ou atualizar um banner do painel

Cria um novo banner do painel para a marca ou atualiza um existente quando `bannerId` é informado no corpo. Os banners podem ser agendados (início/fim em segundos unix, null = sem limite) e direcionados à marca inteira, a regiões específicas (códigos ISO) ou a instalações específicas.

Parâmetros

brandId `string` (obrigatório) O ID da marca à qual o banner pertence

Corpo da solicitação

Endpoint

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

Exemplo de solicitação

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

Resposta

{}

Obter os banners ativos do painel de uma instalação

Determina os banners do painel que devem ser exibidos no momento para uma instalação, com base na marca, na região (código de país ISO) da instalação e no sinalizador de ativação, na janela de agendamento e na segmentação de cada banner. Usado pelas interfaces do painel.

Parâmetros

facilityId `string` (obrigatório) O ID da instalação para a qual os banners serão determinados

Endpoint

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

Exemplo de solicitação

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

Endpoint

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 unix

Endpoint

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 unix

Endpoint

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 unix

Endpoint

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 clube

Endpoint

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ção

Endpoint

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 clube

Endpoint

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 clube

Endpoint

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 clube

Endpoint

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 acessar

Endpoint

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ção

Endpoint

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 clube

Endpoint

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 clube

Endpoint

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 consultar

Endpoint

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 configurações compartilhadas do Door & Gate Access de uma instalação

Parâmetros

facilityId `string` (obrigatório)

Endpoint

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

Exemplo de solicitação

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

Resposta

{}

Atualizar as configurações compartilhadas do Door & Gate Access de uma instalação

Parâmetros

facilityId `string` (obrigatório)

Corpo da solicitação

Endpoint

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

Exemplo de solicitação

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

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 tipos de pessoa, status e tags da instalação

Retorna os valores distintos de tipo de pessoa, status de associação e tag presentes nas linhas de acesso de usuários da instalação (ph-door-access-users), derivados da sincronização com parceiros e da entrada manual. O aplicativo door-gate-access usa esses valores para preencher as listas suspensas das regras de acesso. As tags são a união das `tags` sincronizadas com as `customTags` do administrador, igual ao avaliador de regras.

Parâmetros

facilityId `string` (obrigatório)

Endpoint

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

Exemplo de solicitação

curl -X GET https://portal.hub.gymsystems.co/api/door-access/people-config/{facilityId} \
  -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 de autorização híbrida em uma linha de acesso de usuário

Conexão do avaliador híbrido da Fase 3. As concessões coexistem com as regras de tag da instalação: um usuário é autorizado quando qualquer uma delas corresponde no momento do destravamento.

Parâmetros

facilityId `string` (obrigatório) userId `string` (obrigatório)

Corpo da solicitação

Endpoint

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

Exemplo de solicitação

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

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 buscar

Endpoint

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 buscar

Endpoint

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ção

Endpoint

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ção

Endpoint

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 fato

Endpoint

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 obtidos

Endpoint

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 recursos

Endpoint

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 marca

Endpoint

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 resolvidos

Endpoint

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 marca

Endpoint

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 dados

Endpoint

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 parceiro

Endpoint

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 parceiro

Endpoint

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 LIMITED

Endpoint

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 parceiro

Endpoint

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 membro

Endpoint

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 membro

Corpo 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/DELETE

Endpoint

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ção

Endpoint

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ção

Endpoint

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ção

Endpoint

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ção

Endpoint

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ção

Endpoint

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ório

Endpoint

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 clube

Endpoint

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

Endpoint

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 clube

Endpoint

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

Endpoint

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ção

Endpoint

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

Endpoint

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

Endpoint

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írgula

Endpoint

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 registro

Endpoint

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

Endpoint

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 obtidos

Endpoint

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 listados

Endpoint

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 obtidos

Endpoint

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á atualizado

Endpoint

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 obter

Endpoint

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ção

Endpoint

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 faturas

Endpoint

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 ACL

Endpoint

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á obtida

Endpoint

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 anterior

Endpoint

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 socket

Endpoint

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 momento

Endpoint

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ódulo

Endpoint

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

Endpoint

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

{}