Architect Data Action: External REST JSON Mapping to Variables

Struggling to figure out why my Data Action fails to map the nested JSON response from our external scheduling API to Architect variables. The HTTP 200 OK is returned, but the variables remain null. My mapping JSON uses response.body.data.schedule as the source. Is the syntax incorrect for accessing array indices in the response body? Here is the relevant Mapping Configuration snippet. Any ideas on why the extraction fails?

Verify the JSON structure first. Architect paths do not auto-index arrays.

  • Check if data.schedule is an array.
  • Use response.body.data.schedule[0].startTime for the first item.
  • Ensure variable types match the payload (String vs Number).
"startTime": "response.body.data.schedule[0].startTime"

Make sure you validate your custom integration timeout settings before deploying. The suggestion above regarding array indexing is correct for the path syntax, but it ignores the backend failure mode common in data actions. If response.body.data.schedule is large or the external API has latency spikes, the Data Action execution might timeout before the full JSON is parsed into the context, resulting in null variables despite a 200 OK header from the remote service. I see this often in Asia/Seoul deployments where cross-region calls to US-East APIs exceed the default 30s limit.

First, check the timeout property in your Custom Integration configuration. If it is not explicitly set, it defaults to a value that might be too short for complex payloads. Second, verify the Content-Type header. Architect expects application/json. If your external API returns text/plain or omits the header, the parser might fail silently.

Here is the corrected Custom Integration JSON snippet with explicit timeout and header validation:

{
 "name": "ExternalScheduler",
 "endpoint": "https://api.example.com/schedule",
 "method": "POST",
 "headers": {
 "Content-Type": "application/json"
 },
 "timeout": 60,
 "responseMapping": {
 "startTime": "response.body.data.schedule[0].startTime",
 "endTime": "response.body.data.schedule[0].endTime"
 }
}

If the variable remains null, add a debug step in Architect to log response.body as a string. This reveals if the payload is actually empty due to a timeout or if the JSON structure differs from your expectation. Do not rely on the HTTP status alone; inspect the raw body in the error logs.