Skip to main content
0flaw pousse les événements vers votre endpoint HTTPS. Chaque livraison est signée : vous pouvez prouver qu’elle vient bien de nous.

Configurer un endpoint

Dans le dashboard : Réglages → Webhooks. Renseignez votre URL, cochez les événements souhaités, puis copiez le secret de signature — il n’est affiché qu’une seule fois. Le bouton Tester envoie immédiatement un webhook.ping pour valider votre réception.
Contraintes sur l’URL. Elle doit être en HTTPS, et les adresses réseau internes (127.0.0.1, 10.0.0.0/8, 192.168.0.0/16, 169.254.169.254…) sont refusées. C’est une protection contre les attaques SSRF : notre serveur ne doit pas pouvoir servir de relais vers un réseau privé. Les redirections ne sont pas suivies.

Événements disponibles

Les événements sont détectés en continu et livrés en général en moins de trente secondes.
Seuls les événements survenus après la création de l’abonnement sont envoyés : nous ne rejouons pas l’historique.

Format des livraisons

Toutes partagent la même enveloppe ; seul data varie selon le type.
id est votre clé d’idempotence. Un même événement métier porte toujours le même id et ne vous sera jamais livré deux fois. Si un employé clique dix fois, vous recevez une seule livraison.

Vérifier la signature

Vérifiez systématiquement la signature avant de traiter une livraison. Sans cette étape, quiconque connaît votre URL pourrait vous injecter de faux incidents. L’en-tête contient un horodatage et une signature : X-0flaw-Signature: t=1784718035,v1=8f794a…. La signature est un HMAC-SHA256, calculé avec votre secret sur la chaîne `${t}.${corps_brut}`.
Signez le corps brut, pas le JSON reparsé. Utilisez les octets exacts reçus. Si vous parsez puis re-sérialisez le JSON avant de calculer le HMAC, l’ordre des clés ou l’espacement changent et la signature ne correspondra jamais. C’est de loin l’erreur la plus fréquente.

Ce que nous attendons de votre endpoint

1

Répondez 2xx

N’importe quel code 2xx accuse réception.
2

Répondez vite

Moins de 5 secondes — au-delà nous considérons la livraison en échec. Mettez l’événement dans votre propre file et traitez-le ensuite.
3

Ne dépendez pas de l'ordre d'arrivée

Deux événements proches peuvent arriver dans le désordre.

Réessais et mise en pause

Si votre endpoint ne répond pas, nous réessayons avec un espacement croissant :
  • Nous réessayons sur les erreurs réseau, les 5xx et les 429.
  • Nous abandonnons immédiatement sur une 4xx (hors 429) : elle signale une configuration incorrecte, insister n’aiderait pas.
  • Après dix livraisons abandonnées consécutives, l’endpoint est mis en pause automatiquement et signalé dans le dashboard. Corrigez, puis réactivez-le d’un clic.
Vous pouvez régénérer le secret à tout moment depuis le dashboard. L’ancien cesse immédiatement d’être valide : prévoyez de mettre à jour votre configuration dans la foulée.