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 tempo | pontuaçõ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, Feriados | regras e pedidos de ausência, escalas e cobertura, definições de equipa, calendários |
| Mensagens diretas, Contactos, Consentimento | envios e agendamentos, dados de contacto, acordos e assinaturas |
| Fornecedores de IA, Relatórios, Alertas | troca de fornecedor e ordem de failover, exportações PDF, transporte de email |
| Integrações, Exportação | tokens, webhooks, CSV |
| ML | predict, 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