Aponte o BugCapturer para qualquer endpoint seu e cada relatório chega como payload JSON assinado e versionado — ideal para serviços próprios, filas e ferramentas internas.
A estrutura abaixo é garantida na versão 1. Campos novos são adicionados, nunca renomeados em silêncio.
| Campo | Tipo | Descrição |
|---|---|---|
| event | string | Nome do evento — share.created para um relatório, test para o botão de teste |
| schema_version | number | Versão do esquema, atualmente 1 — confira antes de fazer o parse |
| share.report_url | string | Link público para o relatório completo |
| report.console_errors | array | Mensagens de erro do console com a origem, até 30 entradas |
| report.network_errors | array | Requisições falhas com método, URL e status, até 30 entradas |
| report.*_errors_count | number | Contagem de erros — mesmo tamanho dos dois arrays acima |
| reporter | object | A identidade enviada pelo seu site (name / email / uid); strings vazias quando anônimo |
Cada requisição é assinada com um segredo que você controla, para o seu endpoint poder recusar qualquer coisa forjada.
| Cabeçalho de assinatura | x-bugcapturer-signature |
|---|---|
| Algoritmo | HMAC-SHA256 sobre o corpo bruto da requisição |
| Segredo | Exibido uma única vez ao criar a integração |
| Comparação | Use uma comparação de tempo constante |
const crypto = require('crypto');
const expected = crypto
.createHmac('sha256', process.env.BC_WEBHOOK_SECRET)
.update(rawBody)
.digest('hex');
const received = req.headers['x-bugcapturer-signature'];
crypto.timingSafeEqual(
Buffer.from(expected),
Buffer.from(received)
);
Webhooks falham por motivos banais — um deploy, um reinício, uma rede ruim. O BugCapturer conta com isso.
Entregas com falha são repetidas com backoff antes de serem marcadas como falhas.
Um endpoint que falha continuamente é pausado automaticamente e você recebe um e-mail.
Cada tentativa e a sua resposta ficam registradas, para você depurar sem adivinhar.
Reenvie à mão uma entrega com falha quando o seu endpoint voltar a funcionar.