Pointez BugCapturer vers n’importe quel endpoint que vous maîtrisez : chaque rapport arrive en payload JSON signé et versionné — idéal pour vos services, files d’attente et outils internes.
La structure ci-dessous est garantie en version 1. Des champs s’ajoutent, aucun n’est renommé en silence.
| Champ | Type | Description |
|---|---|---|
| event | string | Nom d’événement — share.created pour un rapport, test pour le bouton de test |
| schema_version | number | Version du schéma, actuellement 1 — vérifiez-la avant de parser |
| share.report_url | string | Lien public vers le rapport complet |
| report.console_errors | array | Messages d’erreur console avec leur source, jusqu’à 30 entrées |
| report.network_errors | array | Requêtes échouées avec méthode, URL et statut, jusqu’à 30 entrées |
| report.*_errors_count | number | Nombre d’erreurs — même longueur que les deux tableaux ci-dessus |
| reporter | object | L’identité transmise par votre site (name / email / uid) ; chaînes vides en cas d’anonymat |
Chaque requête est signée avec un secret que vous contrôlez, pour que votre endpoint puisse rejeter tout ce qui est falsifié.
| En-tête de signature | x-bugcapturer-signature |
|---|---|
| Algorithme | HMAC-SHA256 sur le corps brut de la requête |
| Secret | Affiché une seule fois à la création de l’intégration |
| Comparaison | Utilisez une comparaison à temps constant |
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)
);
Les webhooks échouent pour des raisons banales — un déploiement, un redémarrage, un réseau capricieux. BugCapturer en tient compte.
Les livraisons échouées sont retentées avec un backoff avant d’être marquées comme échouées.
Un endpoint qui échoue en continu est mis en pause automatiquement, et vous recevez un e-mail.
Chaque tentative et sa réponse sont enregistrées, pour déboguer sans deviner.
Renvoyez à la main une livraison échouée dès que votre endpoint est rétabli.