Data Action output mapping resolves to undefined on nested JSON path

{
 "success": true,
 "output": {
 "account_id": undefined,
 "segment": undefined
 }
}

The external endpoint returns 200 with the payload, but the Data Action mapping resolves all fields to undefined. I’m wiring this into a WebSocket subscription flow, and the Rust client keeps dropping events because serde deserializes the fields as None.

Backend response looks like:

{
 "data": {
 "result": {
 "id": "acct_998877",
 "properties": {
 "segment": "high_value"
 }
 }
 }
}

Mapping config is:

{
 "output": {
 "account_id": "$.data.result.id",
 "segment": "$.data.result.properties.segment"
 }
}

Tried bracket notation $.data['result'].id. Tried {{ $.data.result.id }}. The debug trace confirms the HTTP response body arrives correctly, so the network call isn’t the issue. The problem sits in the JSON path evaluation.

It’s not a timeout. Latency is under 200ms.
Checked the raw WebSocket frame on the wire. The field actually serializes as the string "undefined".
Architect seems to be injecting a JS undefined value into the JSON output when the path fails, rather than omitting the key or setting null.

Rust side, the struct expects Option<String>, and the literal string "undefined" breaks the deserialization logic since it’s not null.

Data Action export snippet:

{
 "id": "da_ext_lookup",
 "version": 1,
 "mappings": {
 "output": {
 "account_id": "$.data.result.id",
 "segment": "$.data.result.properties.segment"
 }
 }
}

Nothing looks malformed.
Maybe the JSON path engine has a nesting depth limit? Or it doesn’t traverse into properties objects?
Saw mentions of $.response vs $.body in older docs.
Tried $.response.body.data.result.id.
Still undefined.

You’re probably hitting the object wrapper. Change the mapping path to output.account_id instead of just account_id. The Data Action wraps the response body in an output object by default, so the root keys are one level deeper.