Got a custom Data Action pulling inventory from a third-party endpoint. The API spits out a payload with a stockLevels array. Need to iterate through that array in Architect to build a lookup table for the screen pop trigger. The Data Action finishes with a 200 OK, and the raw response looks completely fine. Dropped a Loop block right after it, but the flow just jumps straight to the next step. Zero error logs. No timeout warning.
Walking through the logic step by step. The endpoint returns something along these lines:
{
"status": "success",
"data": {
"stockLevels": [
{ "sku": "A102", "qty": 45 },
{ "sku": "B99", "qty": 12 }
]
}
}
Mapped the loop input to {{data.stockLevels}} initially. Then tried {{responseBody.data.stockLevels}}. Loop count stays at zero every single time. Figured the issue might be how Architect parses nested objects, so threw in a simple ASSIGN block right after the Data Action to flatten the array into a temp variable. Still nothing. Flow engine seems to treat the whole array as an empty string.
Environment specs and steps tried:
- Data Action test console shows full JSON with valid brackets.
- Swapped standard Loop for For Each variant. Same dead end.
- Checked response mapping config to make sure
responseBodyisn’t stripping non-scalar values. - Added a debug log inside the loop body. Logs never fire.
- Tenant admin confirmed legacy loop restrictions are off.
- Running on Architect v2023.10.2 build.
Documentation mentions complex objects need unwrapping before iteration. Can’t find a concrete example of the exact expression syntax though. Using {{data.stockLevels}} based on a few old threads, but maybe the path needs a different resolver. SDK integration on the desktop side works perfectly, so token scopes are fine. Just need the flow to actually read the array length.
Reasoning through the expression builder, the inline syntax for array indexing usually looks like {{data.stockLevels[0]}}, but the Loop block expects a collection reference, not a single index. Tried wrapping it in {{array(data.stockLevels)}} as a fallback. The flow still bypasses the iteration block entirely. Expression syntax for nested arrays in this version feels inconsistent. The loop boundary just gets skipped.