Dernière revue: 2026-09-11
Webhooks sortants
Livrez de façon sécurisée les événements de scan, politique, score et constats CodeCleared vers votre récepteur HTTPS, avec signatures, retries et idempotence.
Objectif
Les webhooks livrent les événements de scan, politique, score, contrôles de PR et cycle de vie des constats vers votre récepteur HTTPS. Configurez les endpoints dans Paramètres → Webhooks et stockez chaque secret d’endpoint dans un gestionnaire de secrets dédié.
Prérequis
Les webhooks sont généralement disponibles à partir du plan Team. Votre récepteur doit accepter HTTPS, conserver le corps brut de la requête, répondre rapidement avec succès, et pouvoir dédupliquer les livraisons.
Étapes
- Ajoutez un endpoint HTTPS et sélectionnez uniquement les événements dont votre process a besoin.
- Conservez le secret d’endpoint hors du code source.
- Envoyez une livraison de test et inspectez vos logs sans retenir de secrets de payload.
- Vérifiez la signature avant de parser ou d’agir sur l’événement.
import crypto from 'node:crypto';
export function verifyWebhook(rawBody, signature, secret, now = Math.floor(Date.now() / 1000)) {
const fields = Object.fromEntries(signature.split(',').map(part => part.split('=')));
const timestamp = Number(fields.t);
if (!Number.isFinite(timestamp) || Math.abs(now - timestamp) > 300) return false;
const expected = crypto.createHmac('sha256', secret).update(`${timestamp}.${rawBody}`).digest('hex');
return fields.v1 && crypto.timingSafeEqual(Buffer.from(fields.v1), Buffer.from(expected));
}
Règles métier
En-têtes : X-CodeCleared-Event, X-CodeCleared-Delivery, X-CodeCleared-Signature. La signature est t=unix,v1=hex : HMAC-SHA256 sur ${t}.${rawBody}. Rejetez les horodatages hors d’environ 300 secondes et utilisez l’ID de livraison comme clé d’idempotence. Les événements visibles incluent scan.completed, compliance_score.changed, violations de politique / PR check, et le cycle de vie SLA / gouvernance.
Scénarios et cas limites
Livraison en double : accuserez réception après contrôle d’idempotence. Signature incorrecte : utilisez le corps brut intact et le bon secret. Livraison trop ancienne : rejetez-la. Migration d’endpoint : ajoutez et testez le nouveau avant de retirer l’ancien.
Limites
Une organisation peut configurer environ 10 endpoints et consulter environ 100 entrées d’historique de livraison. Ce sont des limites produit ; n’utilisez pas l’URL d’endpoint pour des credentials. Pour créer des tickets Jira/Linear sans construire de récepteur, voir Suivi des tickets.
Erreurs courantes
- Parser puis resérialiser le corps avant vérification.
- Comparer les signatures avec une égalité de chaînes classique.
- Ignorer
X-CodeCleared-Deliveryet créer des tickets en double. - Traiter un échec de livraison comme une permission de sauter la vérification.