Créer un endpoint
Créez les endpoints dans le tableau de bord (Développeur > Webhooks) ou par l’API (POST /webhooks, permission Gérer les intégrations) :
La réponse contient le
secret de signature, affiché une seule fois. Conservez-le avec vos autres secrets.
Un endpoint reçoit les charges utiles dans la version de l’API utilisée pour le créer (
api_version) : une nouvelle version de l’API ne change donc jamais ce que vous recevez.Événements
GET /webhooks/events renvoie le catalogue.
De nouveaux types d’événements peuvent apparaître à tout moment : ignorez ceux que vous ne traitez pas.
Charge utile
Chaque livraison est unPOST avec un corps JSON :
data dépend du type :
En-têtes
Vérifier la signature
Vérifiez chaque requête avant de lui faire confiance :- Lisez le corps brut, avant toute analyse JSON : le réencoder change les octets et casse la signature.
- Rejetez les requêtes dont l’horodatage s’écarte de plus de 5 minutes de votre horloge (rejeu).
- Comparez
attenduavecX-Shortext-Signatureen temps constant.
Répondre et dédoublonner
- Répondez avec n’importe quel statut 2xx en moins de 10 secondes. Faites le traitement après avoir répondu, dans une file.
- Tout le reste (autre statut, délai dépassé, redirection, erreur réseau) est un échec et sera relancé.
- Un même événement peut arriver plusieurs fois. Dédoublonnez sur l’
idde l’événement (evt_...), identique lors des relances et des nouvelles livraisons. - Les événements peuvent arriver dans le désordre : appuyez-vous sur
created_atet sur l’API quand l’ordre compte.
Relances
Une livraison échouée est relancée avec un délai croissant : après 10 secondes, 1 minute, 5 minutes, 30 minutes, 2 heures, 6 heures et 12 heures, soit 8 tentatives sur environ 21 heures. Après la dernière, la livraison est marquée en échec. Un endpoint qui échoue sans interruption pendant 72 heures est désactivé :is_enabled passe à false et disabled_reason en donne la raison. Corrigez votre serveur, puis réactivez l’endpoint (PUT /webhooks/{id} avec "is_enabled": true).