adverse_action.completed
The adverse-action flow finished
Emitted when the final (or post-adverse) notice has been delivered.
The notice PDF is listed by GET /executions/{workflow_execution_id}/notice_artifacts.
Payload
-
idstring (uuid) required -
eventstring required One ofadverse_action.completed -
created_atstring (date-time) required -
dataobject required-
workflow_execution_idinteger required -
workflow_idinteger required -
node_idstring required -
external_referencestring -
flowstring required -
notice_stagestring required One ofpost_adversefinal -
sent_tostring -
delivery_channelsarray of string -
completed_atstring (date-time) -
statusstring required One ofcompleted
-
How to handle it
- Answer
2xxas soon as the delivery is stored and do the real work on a queue. Any other response, a connection error or a timeout (5 s connect, 10 s read) counts as a failure: Cascades retries after 1m, 5m, 30m, 2h, 8h, 24h, then marks the deliverydead. - De-duplicate on the envelope's
id— it is identical across retries and across every subscriber's copy of the same event — or on theX-Cascades-Deliveryheader, which names one delivery row. - Verify
X-Cascades-Signaturebefore you act on the body (next section). - Treat
dataas a pointer, not the record: readdata.workflow_execution_idand call GET /executions/{id} for the current status, the decision and — withexecutions:read:full— thestep_outputs. - This event carries no
execution_mode. If your handler must tell test runs from live ones, join onworkflow_execution_idand readinput_context.execution_modefrom the execution.
Verify before you trust it
Compute HMAC-SHA256(signing_secret, "<t>.<raw body>") and compare it in constant time with the v1 (or, during rotation, v0) value in X-Cascades-Signature. Samples are in the right-hand rail and in the verify webhooks guide.
Deliveries retry on any non-2xx response, so handle the same X-Cascades-Delivery id more than once safely. See all webhook events.