Webhooks
Ce qui s'est passé, sans demander.
KRONENWERK appelle votre adresse dès qu'un fait souscrit survient dans les livres. Chaque livraison est signée et réessayée jusqu'à acceptation.
| Événement | Quand il est envoyé |
|---|---|
| invoice.issued | Une facture a été émise : le numéro est consommé, le document est archivé et immuable. |
| invoice.paid | Une facture est intégralement soldée — par un paiement, quelle qu'en soit la voie d'enregistrement. |
| invoice.cancelled | Une facture a été annulée : un avoir existe qui l'annule intégralement. Rien n'est supprimé. |
| purchase.recorded | Une facture fournisseur ou une dépense a été enregistrée, avec fournisseur, date et montants. |
| payment.recorded | Un paiement a été enregistré, avec sens, montant, jour et le document qu'il solde. |
| bank.transaction.imported | Une opération bancaire a été importée et attend d'être rapprochée. |
| kronenwerk.test | Une livraison d'essai que vous déclenchez pour tester votre vérification. |
La vérification, en entier.
L'ordre compte: d'abord l'horodatage, puis l'empreinte. Une ancienne livraison rejouée a une empreinte parfaite; seul son âge la trahit. Comparez en temps constant, sur les octets bruts.
# KRONENWERK-Signature: t=1775462400,v1=9f86d0…
t, v1 = parse(header) # t=<unix seconds>, v1=<hex hmac>
if abs(now() - t) > 300: reject() # replay window, checked first
expected = hmac_sha256(key=endpoint_secret, msg=f"{t}.{raw_body}").hexdigest()
if not constant_time_equals(expected, v1): reject()
accept() # then dedupe on Idempotency-Key
Attendez-vous aux doublons.
Chaque livraison porte un en-tête d'idempotence avec l'identifiant de l'événement. Une réponse qui ne nous parvient pas provoque une nouvelle tentative sous le même identifiant: mémorisez-le et un second passage ne change rien.
Relances
Six tentatives, puis cela figure au journal.
Si votre destinataire ne répond pas par un succès, KRONENWERK réessaie : après trente secondes, puis deux fois plus longtemps à chaque fois, jusqu'à six tentatives. La livraison est ensuite considérée comme échouée et figure au journal avec son heure, son statut et un extrait de la réponse, où vous pouvez la renvoyer à la main. Rien n'est relancé indéfiniment.