JSONata expressions
FetchCatch evaluates JSONata expressions in condition, transform, wait_for_event, HTTP input mappings, and decision responseValues.
Library: JSONata via Jsonata.Net.Native.
Run state available to expressions
Typical bindings (exact shape depends on flow):
| Binding | Description |
|---|---|
input |
Caller payload from /v1/evaluate |
nodes |
Map of node id → that node's output state |
context |
Optional evaluate context (legacy envelope) |
After an http node runs:
nodes.http_fetch_user.status
nodes.http_fetch_user.body.fieldName
Common patterns
Condition
"expression": "nodes.http_fetch_user.body.balance >= input.amount"
HTTP input mapping
"inputs": {
"userId": "input.userId",
"filter": "\"active\""
}
Transform
"expression": "{ \"fullName\": nodes.http_1.body.firstName & ' ' & nodes.http_1.body.lastName }"
Decision with dynamic value
Prefix with = to evaluate as JSONata:
"responseValues": {
"approved": true,
"reason": "=nodes.cond_1.expression ? 'auto-approved' : 'manual review'"
}
Tips for AI agents
- Quote strings inside JSONata correctly; the expression is a JSON string value.
- Prefer
input.fieldover deep paths when the start node declaresinputSchema. - Reference HTTP bodies via
nodes.{id}.body, not the raw response object. - Test complex expressions in the web console designer (Monaco + intellisense) before syncing.
- Keep expressions pure — no side effects; runtime does not allow custom functions beyond JSONata standard.
Intellisense
The console exposes TypeScript declarations for input and prior node outputs. After pulling flows, use the designer for expression authoring when possible.
Public API: GET /v1/intellisense/... (console-authenticated) generates .d.ts from the graph.