Loading the API description…
Events & webhooks
Signing depends on people: days can pass between dispatching a flow and completing it. Instead of polling, register a webhook and get a signed POST every time something happens.
There is no separate list of “webhook events”. What your system receives is exactly what the evidence record will show later, with the same code. So when your system says signed and the evidence record is asked in court, there is one version of the facts to discuss instead of two — and an event added to the record can never quietly stop reaching you.
Each event's code goes inside the hash that chains the evidence record together, and a database trigger stops anyone from renaming one: that is why a code never changes, not even when the language of the interface does. Some of the words in them are Spanish because the product started that way; read them as identifiers, not as text. So map them once, like you would map an OID or a PREMIS eventType, and they will still mean the same thing in ten years. What changes with the language is the readable description: every webhook carries it in English as event_label, and GET /api/v1/event-types serves it for each code. The keys of the body are in English too (event, event_label, occurred_at, account, workflow, document, data); the Spanish keys it used before (evento, ocurrido_en, cuenta, circuito, instancia, datos) travel alongside for one more version, with payload_version: 2, so you can move over without breaking anything.
| Event | What it means for your system |
|---|---|
circuito.despachado |
It left draft. The people were invited and the clock started. |
documento.abierto |
Somebody opened the document. Useful to tell “did not see it” from “saw it and did not sign”. |
firma.aplicada |
One person signed. Carries who, with what kind of signature, and the hash of the document before and after. |
firma.rechazada |
Somebody declined, with their reason. The flow stops. |
circuito.completo |
Everyone signed. This is the moment the completion report exists, and it carries the instance id you ask the delivery package for. |
documento.preservado |
The document now carries inside itself what is needed to validate its signatures years from now: the certificate chain, the revocation answers and, where a timestamp authority answers, a document timestamp. |
circuito.cancelado |
The sender called it off. |
The seven above are the ones an integration usually listens to. The complete, authoritative vocabulary — every code the evidence record can carry, with its category and its description in three languages — is served at GET /api/v1/event-types, so your system can read it instead of hard-coding it.