Webhooks
Wat er gebeurd is, zonder te vragen.
KRONENWERK belt uw adres zodra er in de boeken iets gebeurt waarop u zich hebt geabonneerd. Elke bezorging is ondertekend en wordt herhaald tot ze wordt aangenomen.
| Gebeurtenis | Wanneer het verstuurd wordt |
|---|---|
| invoice.issued | Een factuur is uitgegeven: het nummer is verbruikt, het document is gearchiveerd en onveranderlijk. |
| invoice.paid | Een factuur is volledig voldaan — door een betaling, hoe die ook is vastgelegd. |
| invoice.cancelled | Een factuur is geannuleerd: er bestaat een creditdocument dat haar volledig opheft. Er wordt niets verwijderd. |
| purchase.recorded | Een inkoopfactuur of een uitgave is vastgelegd, met leverancier, datum en bedragen. |
| payment.recorded | Een betaling is vastgelegd, met richting, bedrag, dag en het document dat ermee voldaan wordt. |
| bank.transaction.imported | Een banktransactie is ingelezen en staat klaar om gekoppeld te worden. |
| kronenwerk.test | Een testbezorging die u zelf activeert om uw eigen controle te beproeven. |
De controle, volledig.
De volgorde telt: eerst het tijdstempel, dan de digest. Een opnieuw afgespeelde oude bezorging heeft een prima digest; alleen haar leeftijd verraadt haar. Vergelijk in constante tijd, over de ruwe bytes.
# 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
Reken op dubbele bezorging.
Elke bezorging draagt een idempotentieheader met de identificatie van de gebeurtenis. Een antwoord dat ons niet bereikt leidt tot een nieuwe poging met dezelfde identificatie: onthoud die, dan verandert een tweede binnenkomst niets.
Herhaling
Zes pogingen, en dan staat het in het logboek.
Antwoordt uw ontvanger niet met een succes, dan probeert KRONENWERK het opnieuw: na dertig seconden, daarna telkens twee keer zo lang, tot zes pogingen. Daarna geldt de aflevering als mislukt en staat ze in het logboek met tijd, status en een fragment van het antwoord, waar u ze met de hand opnieuw kunt versturen. Niets wordt eindeloos herhaald.