Webhooks
Webhooks permitem que a BuscaProcessos envie eventos para o seu backend quando há novidades em monitoramentos, atualizações e fluxos assíncronos.
Onde configurar
- Menu do painel: Webhooks
- Rota: https://buscaprocessos.app.br/dashboard/webhooks
A tela possui abas de configuração, teste, logs e monitoramentos.
Configuração da conta
Campos confirmados na UI/backend do painel:
| Campo | Função |
|---|---|
| URL do webhook | Endpoint HTTPS do seu receptor |
| Token Bearer | Enviado como Authorization: Bearer ... quando configurado |
| Chave secreta HMAC SHA-256 | Usada para X-BuscaProcessos-Signature |
| Formato do payload | NORMALIZED, RAW ou BOTH |
| Ativo | Liga/desliga a entrega |
| Eventos habilitados | Lista selecionável no painel |
Ações na UI:
- Salvar Configurações
- Regenerar Chave HMAC (invalida a anterior)
- Geração/visualização de token e secret com botões de copiar
Dois padrões de integração
1. Webhook da conta (painel)
Configurado em /dashboard/webhooks e usado para entregas centralizadas e callbacks de operações que dependem da configuração da conta (enviar_callback / send_callback).
2. webhook_url por monitoramento
webhook_url por monitoramentoAlguns recursos aceitam webhook_url HTTPS no body da API, por exemplo:
- monitoramento de intimações por OAB
- radar de novos processos
A URL deve ser HTTPS. URL inválida retorna erro como INVALID_WEBHOOK_URL.
Entrega HTTP
| Item | Valor confirmado |
|---|---|
| Método | POST |
| Content-Type | application/json |
| User-Agent | BuscaProcessos-Webhook/1.0 |
| Timeout | 10 segundos |
| Sucesso | resposta HTTP 2xx |
| Retry | backoff exponencial em minutos (min(120, 2^attempt)) |
Headers de entrega
Content-Type: application/json
User-Agent: BuscaProcessos-Webhook/1.0
X-BuscaProcessos-Event: <evento>
X-BuscaProcessos-Delivery-Id: <id-da-entrega>
X-BuscaProcessos-Timestamp: <unix-seconds>
Authorization: Bearer <token-configurado> # se configurado
X-BuscaProcessos-Signature: sha256=<hmac-hex> # se configuradoPayload normalizado (exemplo)
{
"id": "evt_01HXYZ1234567890",
"event": "novo_processo",
"source": "BUSCAPROCESSOS",
"created_at": "2026-07-10T13:00:00.000Z",
"data": {
"numeroCnj": "0000000-00.2026.8.26.0000",
"tribunal": "TJSP"
}
}Com formato BOTH, o payload também pode incluir o objeto raw.
Eventos
Eventos citados no processamento/documentação técnica
Incluem, entre outros:
novo_processonova_movimentacaoprocesso_encontradoprocesso_nao_encontradoprocesso_verificadoatualizacao_processo_concluidaatualizacao_concluida(legado)
Catálogo exibido no painel
A UI lista eventos de diário, tribunal e buscas assíncronas, por exemplo:
diario_movimentacao_novamovimentacao_novanovo_processo_envolvidoresultado_processo_asyncresultado_busca_oab_async
A lista efetiva entregue depende dos eventos habilitados na conta e do tipo de monitoramento.
Pendência
Nem todos os nomes do catálogo da UI e dos eventos normalizados de entrega estão unificados em um único enum público. Trate o campoeventde forma tolerante e mantenha o catálogo do painel como referência operacional.
Validação de assinatura (Node.js)
import crypto from "node:crypto";
import express from "express";
const app = express();
app.use(express.raw({ type: "application/json" }));
app.post("/webhooks/buscaprocessos", async (req, res) => {
const rawBody = req.body.toString("utf8");
const secret = process.env.BUSCAPROCESSOS_WEBHOOK_SECRET ?? "";
const received = req.header("X-BuscaProcessos-Signature");
if (secret && received) {
const digest = crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
const expected = `sha256=${digest}`;
if (
received.length !== expected.length ||
!crypto.timingSafeEqual(Buffer.from(received), Buffer.from(expected))
) {
return res.sendStatus(401);
}
}
const event = JSON.parse(rawBody);
const eventId = event.id ?? req.header("X-BuscaProcessos-Delivery-Id");
// deduplicar e enfileirar
void eventId;
return res.sendStatus(204);
});Valide o HMAC sobre o corpo bruto, antes de re-serializar o JSON.
Boas práticas do receptor
- Responda 2xx rapidamente.
- Processe em fila.
- Seja idempotente (mesmo evento pode ser reenviado).
- Deduplique por
ideX-BuscaProcessos-Delivery-Id. - Não logue tokens, secrets ou dados jurídicos desnecessários.
- Exija HTTPS.
- Use o histórico de entregas do painel para diagnosticar falhas e reenviar quando disponível.
Operações assíncronas com polling
Se não houver webhook configurado, use o endpoint de status retornado pela operação (por exemplo, status de atualização de processo) com polling finito.
Exemplo de fluxo:
POST /v1/processos/cnj/{cnj}/solicitar-atualizacao
→ GET /v1/processos/cnj/{cnj}/status-atualizacao
→ listar documentos/autos apenas após conclusão