Right, the contact.customFields.billing.address.street JSONPath is failing in a data action, but only when the billing.address array has more than one element. It’s returning null instead of the first element’s street value. Honestly, I’ve checked the input schema a dozen times and it’s valid - the billing.address field is always an array of objects, each with a street property. Not 100% sure but this feels like a regression in the JSONPath engine; the docs don’t mention array length limitations.
Here’s what’s been tried:
- Data action SDK version: es_next
- Architect flow version: 1.23.4
- Target API:
/api/v2/users/{userId}/dataactions - Input JSON (truncated):
{
"contact": {
"customFields": {
"billing": {
"address": [
{ "street": "123 Main St", "city": "Anytown" },
{ "street": "456 Oak Ave", "city": "Otherville" }
]
}
}
}
}
- JSONPath expression:
contact.customFields.billing.address[0].street- returns “123 Main St” consistently. - JSONPath expression:
contact.customFields.billing.address[1].street- returns “456 Oak Ave” consistently. - JSONPath expression:
contact.customFields.billing.address[*].street- returns["123 Main St", "456 Oak Ave"]consistently. - The problem is when attempting to resolve
contact.customFields.billing.address.street- the entire value is discarded and it returns null.
The flow is a simple data action triggered on a message received event - the input is a standard contact record, tbh. The data action’s purpose is to extract the street address for a custom header. We’ve verified that the input contact record always has the billing.address array populated. It’s baffling.