One integration = one dedicated transition. Never stack multiple integrations in one array.
Each integration step uses two transitions:
INITIATE_PUSH (system) → PENDING_PUSH_* with INTEGRATION in breakingAction, nextEvent: nullPUSH (system/partner callback) → next state with nextEvent: "INITIATE_PUSH" to continue chain{
"startState": "SUBMITTED",
"event": "INITIATE_PUSH",
"endStateOne": {
"stateName": "Pending Push",
"stateNames": null,
"stateCode": "PENDING_PUSH_STEP_1",
"breakingAction": {
"actionType": "INTEGRATION",
"args": {
"endpointCode": "TODO: endpoint_code",
"async": true,
"certificateWithList": false,
"updateFieldWithDatasetValue": false
}
},
"breakingActions": null,
"nonBreakingActions": null,
"nextEvent": null,
"position": null
},
"endStateTwo": null,
"endStateCondition": null,
"authorisation": { "authorisedRoles": null, "authorisedUsers": null, "systemAuthorised": true },
"position": null,
"eventNames": null,
"eventConfigs": null
}
{
"startState": "PENDING_PUSH_STEP_1",
"event": "PUSH",
"endStateOne": {
"stateName": "Pushed Step 1",
"stateNames": null,
"stateCode": "PUSHED_STEP_1",
"breakingAction": null,
"breakingActions": null,
"nonBreakingActions": null,
"nextEvent": "INITIATE_PUSH",
"position": null
},
"endStateTwo": null,
"endStateCondition": null,
"authorisation": { "authorisedRoles": null, "authorisedUsers": null, "systemAuthorised": true },
"position": null,
"eventNames": null,
"eventConfigs": null
}
"async": true — partner processes asynchronously and calls back with PUSH event"async": false — synchronous call, system auto-continuesWhen a partner RFA re-routes through the chain, some steps use endStateCondition to skip or alter behavior. See Conditional Branching.