Plataforma

API e webhooks

Tudo o que o painel faz passa pela mesma API REST que podem chamar. Os eventos saem como webhooks assinados que são reenviados até chegarem.

Autenticação

  • O cookie de sessão emitido pelo fluxo de código de utilização única, ou o mesmo token assinado como cabeçalho bearer.
  • Um token de API pessoal como cabeçalho bearer. Age como o seu titular, por isso todas as verificações de função e de âmbito se aplicam sem alteração; aos tokens com âmbito de leitura são recusadas as mutações.
  • Cada rota declara a sua função mínima: qualquer utilizador autenticado, gestor e superior, administrador ou superadministrador. As rotas de dados limitam depois pela árvore de quem chama.
curl -H "Authorization: Bearer <token>" https://inroots.example.com/api/export/hours.csv?from=2026-08-01&to=2026-08-31

Descobri-la

O esquema OpenAPI é gerado a partir das rotas e servido, reservado a administradores, com um explorador interativo dentro do produto. Os sumários e as descrições vêm das definições das rotas, por isso não podem divergir do código.

GET /api/openapi.json
GET /api/docs
Eficiência, Objetivos, Saúde no trabalho, Linha do tempopontuações, metas, valores de referência, objetivos pessoais, sinais sobre pessoas, risco de excesso de trabalho, evidência de um dia
Férias, Prevenção, Equipas, Feriadosregras e pedidos de ausência, escalas e cobertura, definições de equipa, calendários
Mensagens diretas, Contactos, Consentimentoenvios e agendamentos, dados de contacto, acordos e assinaturas
Fornecedores de IA, Relatórios, Alertastroca de fornecedor e ordem de failover, exportações PDF, transporte de email
Integrações, Exportaçãotokens, webhooks, CSV
MLpredict, feedback, decisions, metrics, models, promote, train

Webhooks de saída

  • Criados com um URL de destino e um segredo que nunca volta a ser devolvido; a lista mostra apenas se existe um segredo.
  • Cada entrega transporta um cabeçalho de assinatura com um HMAC SHA-256 sobre o corpo exato, um cabeçalho de evento e um ID de entrega para deduplicação.
  • A emissão segue a transação de quem chama, por isso um evento nunca é entregue para uma decisão que foi revertida, e um endpoint recetor em baixo nunca bloqueia uma aprovação.
  • Uma tarefa de descarga publica a cada minuto e tenta de novo a 1, 5, 15, 60 e 360 minutos antes de desistir com a razão registada. Vinte falhas consecutivas abrem o circuito do endpoint até um administrador o reativar.
  • O botão Testar coloca em fila um ping assinado pelo percurso real. Eventos atualmente emitidos: pto.approved e pto.declined.
expected = hmac.new(secret, body, sha256).hexdigest()
compare(header, "sha256=" + expected)

Entrada

  • Eventos e ações interativas do Slack; atividades do Teams; o webhook do WhatsApp.
  • Tickets de suporte de sistemas externos, deduplicados por uma referência externa, para que os seguimentos atualizem um só ticket.
  • Qualquer webhook pode acionar um workflow n8n que chama a API de volta com um token.

Fluxo em direto

Um fluxo de eventos enviados pelo servidor transporta eventos de assiduidade e notificações pessoais para o painel e para qualquer cliente que escrevam. Os eventos pessoais chegam apenas à pessoa a quem dizem respeito.

GET /api/events