Événements
Chataigne persiste l’événement et le changement métier dans la même transaction de base de données avant la mise en file. BullMQ transporte la livraison persistée ; il n’est pas la source de vérité.
Routage des endpoints
Un endpoint peut être observateur ou receiver primaire des commandes.- Un endpoint d’établissement est prioritaire sur un endpoint d’organisation pour le même événement.
- En l’absence d’observateur d’établissement abonné, les observateurs d’organisation servent de fallback.
- Le receiver primaire effectif est celui de l’établissement s’il existe, sinon celui de l’organisation.
- Exactement un receiver primaire reçoit chaque événement de commande pour un établissement.
- Une intégration POS synchrone et un receiver API peuvent être actifs simultanément. Chataigne envoie les événements de commande aux deux ; les opérateurs du restaurant doivent configurer leurs systèmes destinataires afin de ne pas créer de commandes opérationnelles en double.
- Des endpoints observateurs peuvent s’abonner en parallèle pour l’analytics et d’autres usages non opérationnels.
Enveloppe d’événement
id de l’événement, pas celui de la commande. Stockez l’identifiant avant d’appliquer vos effets, puis retournez n’importe quelle réponse 2xx. Une nouvelle livraison du même événement doit être sans effet.
Vérification de la signature
Chaque requête contient :Chataigne-Event-IdChataigne-Timestampen secondes UnixChataigne-Signature: v1=<HMAC hexadécimal>
Chataigne-Event-Id. Vérifiez toujours le body brut avant de parser le JSON ; une nouvelle sérialisation modifie la signature.
Livraison et retries
La livraison est au moins une fois. Chataigne considère tout2xx comme un succès. Les réponses HTTP 408, 425, 429, 5xx, les timeouts et les erreurs réseau sont retentés jusqu’à sept fois avec un backoff exponentiel commençant à cinq secondes. Les autres réponses 4xx sont terminales.
Le processus durable de récupération remet en file les livraisons en attente et libère les traitements bloqués depuis deux minutes. Un échec terminal apparaît dans le journal de livraison et déclenche une alerte opérationnelle ; il n’annule ni ne rembourse jamais la commande automatiquement.
Utilisez le dashboard pour envoyer un événement de test synthétique, inspecter les tentatives, faire tourner un secret, désactiver un endpoint ou relancer manuellement un échec terminal. Répondre 2xx signifie « reçu », pas « accepté » ; envoyez séparément un statut lorsque le POS a pris sa décision métier.