Fired when the execution is over. Nothing about it will change afterwards.
This is the event that closes your case, and the one to subscribe to if you subscribe to only one: it is the only event that says the results are there, the only one delivered for an execution that never got to run, and the only one the platform re-delivers if your endpoint was down.
Nothing is pushed here — read it over the authenticated API. The financial or public global position gives you everything at once; the per-product endpoints give you one thing at a time.
On your side, in your own model. The results stay readable while the execution exists, which is not forever.
Delete an Execution purges its records and documents. The less of somebody’s financial data sits anywhere, the better — including here.
status_reason says how it ended:
This is the only event the platform re-delivers on its own. If your endpoint was unreachable when it fired, a background job tries again — so a deploy window does not cost you a case. The other three are delivered once.
The payload carries no records, and that is deliberate: an execution event is a notification, which is what keeps somebody’s financial data off a public endpoint. Anything that arrives in data today is empty.
The application this execution was launched with — the one your secret belongs to. Worth keeping when your product uses more than one, a sandbox and a production app being the usual case: every record and every event we send carries it.
The customer_id you supplied when the execution was initialised, returned as you sent it — so an answer can be routed to the right case with no lookup on your side.
The execution this belongs to — the value you poll for the state and address every results endpoint with. Always present here: an event exists because an execution does.
The event type: ended.
When the event was raised, in UTC. Deliveries can arrive out of order — a retry is delivered after whatever came next — so order your own records by this, not by arrival.
Whether the execution was started as one a person can answer (customer_interaction_available). When false, a challenge from the source cannot be solved and the execution ends instead of waiting.
The precise reason for the state at the moment of the event — one of the execution reasons, or a feature’s own when producer names a feature. Branch on this and not on the message: it is a stable code. Every reason by family.
Payload class discriminator — always this value for an execution event. If the same endpoint also receives flow events, branch on it first.
Who raised it: engine for the execution itself — the login, typically — or the feature’s own code when a single feature is what needs something. An action_required from the accounts reader says accounts_read, so you know what is being asked for before reading the form.