Plataforma · Técnico

API REST & Webhooks

O Nodus expõe uma API REST simples com autenticação Bearer token e webhooks com assinatura HMAC-SHA256. Use pra integrar com qualquer sistema que fale HTTP — Zapier, n8n, ferramentas internas, automações.

Base URL: https://nodusrh.com.br/api/index.php
Auth: Bearer token
Formato: JSON

Gerar um token

  1. Logue no Nodus como admin.
  2. Menu ⚙️ Sistema → API & Webhooks.
  3. Click + Gerar Token.
  4. Dê um nome descritivo (ex: "Zapier produção", "Integração ERP X").
  5. Escolha o escopo:
    • Leitura — só GET (consulta dados)
    • Escrita — POST/PUT/DELETE (modifica dados)
  6. Click Gerar → o token aparece UMA vez. Copie e guarde com segurança.
⚠️ Token aparece uma vez só

O Nodus armazena só o hash do token. Se perder, gere outro e revogue o anterior. Não há "recuperação".

Exemplos cURL

Listar funcionários

curl https://nodusrh.com.br/api/index.php?action=api_rest&resource=funcionarios \
  -H "Authorization: Bearer ndus_xxxx_yyyyy"

Info da empresa do token

curl https://nodusrh.com.br/api/index.php?action=api_rest&resource=me \
  -H "Authorization: Bearer ndus_xxxx_yyyyy"

Listar vagas abertas

curl https://nodusrh.com.br/api/index.php?action=api_rest&resource=vagas \
  -H "Authorization: Bearer ndus_xxxx_yyyyy"

Recursos disponíveis

resourceRetornaMétodos
meInfo da empresa do tokenGET
funcionariosLista de colaboradores ativosGET
departamentosLista de departamentosGET
vagasVagas (abertas + fechadas)GET
candidatosCandidatos das vagasGET

Webhooks

Receba notificações em tempo real quando eventos acontecem na sua empresa. O Nodus posta JSON no seu endpoint com assinatura HMAC-SHA256.

Criar um webhook

  1. Menu ⚙️ Sistema → API & Webhooks → card Webhooks → + Novo Webhook.
  2. Nome: descritivo (ex: "Notificar ERP X").
  3. URL de destino: https://seusistema.com.br/webhooks/nodus
  4. Eventos: selecione quais quer receber (ou * pra todos).
  5. Click Salvar → o secret aparece uma vez. Guarde.

Validar a assinatura no seu endpoint

Cada POST recebido vem com header X-Nodus-Signature: sha256=<hex>. Calcule HMAC-SHA256 do body bruto usando seu secret e compare. Se diferente, descarte (alguém forjou).

// Node.js exemplo
const crypto = require('crypto');
const signature = req.headers['x-nodus-signature'].replace('sha256=', '');
const expected = crypto
  .createHmac('sha256', WEBHOOK_SECRET)
  .update(req.rawBody)
  .digest('hex');
if (!crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected))) {
  return res.status(401).send('invalid signature');
}
// processa o evento aqui...

Eventos disponíveis

A lista completa aparece dentro do produto. Categorias principais:

Rate limits

TipoLimiteResposta ao ultrapassar
Bearer token GET120 req/minHTTP 429
Bearer token POST60 req/minHTTP 429
Webhook outbound (do Nodus pra você)Retry exponencial em falha3 retries com backoff

Códigos de erro

HTTPSignificadoO que fazer
200OK
400Payload inválidoConfira corpo da requisição
401Token inválido ou ausenteGere outro token, revogue o antigo
403Token sem permissão pra esse recursoUse token com escopo "escrita" pra POST
429Rate limit excedidoEspere a janela (~1 min)
500Erro internoReporte no Suporte com timestamp

Endpoints públicos de saúde

Não exigem auth. Úteis pra monitoramento:

actionRetorna
health{status:'ok', db:'connected', ts} · 503 se DB caiu
version{app, version, env, php, time, schema}