{
"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.