#Schemas and transformations
An action's schemas describe the fields it sends and returns, and drive what the Designer offers to fill in and to pick; transformations decode single fields of an answer before the process sees it.
#What a schema drives
flowchart LR S["Response Body schema<br/>customer.name · creditLimit"] --> V["Variable list after the task<br/>Activity_fetch.customer.name"] S --> T["Type check of expressions<br/>creditLimit is a number"] P["Parameter / Request Body schema"] --> F["Fields to fill in on the task,<br/>required ones marked"]
A missing response schema means later steps have nothing to pick — the task shows "No response body schema available" — and expressions that use the answer are not type-checked.
#Edit a schema
Every schema card on an action has two views:
- Visual — one row per field: its name, an example, its type and, for what is sent, whether it is required. + Field adds one; an object or list gets sub-fields.
- Code — the JSON schema itself, applied as you type.
Types: String, Number, Integer, Boolean, Object, Array and File. A list can hold texts, numbers, true/false values or objects — not lists and not files.
Allowed values, patterns, formats and defaults are shown as small tags on a field; change them in the Code view.
⚠️ Saving an action rewrites its schemas from the visual rows. Anything the rows cannot show is
dropped — "either text or empty" types, extra properties, length limits, alternatives
(oneOf, allOf) and references. Keep an imported schema as it is unless you need to change it.
⚠️ A field's description can only be edited in the Code view.
⚠️ A response that is a single file, not an object, is turned into an empty object when the action is saved.
❌ A schema cannot be created from an example answer.
#Files in a schema
A File field marks a place where a file travels:
- in what is sent, a file reference from an earlier step is uploaded;
- in what is returned, a file in the answer is stored and handed on as a reference.
See Call a system with a service task.
#Transformations
Some APIs wrap data — a Base64-encoded JSON inside a JSON answer, a JSON text inside a field. Transformationen on the action's Schema tab unwraps them:
| Type | Turns |
|---|---|
| Base64 → JSON | a Base64 text into the object it encodes |
| Base64 → Text | a Base64 text into plain text |
| JSON Parse | a JSON text into an object |
Each row takes a source and a target path, written with dots — message.data →
message.decodedData. The rows run in order; a row whose source is missing or not a text is
skipped, and a row that fails is skipped with a warning — the step does not fail.
Transformations apply to the answer of an HTTP or GraphQL action, and to an incoming webhook delivery. ⚠️ Not to a file answer, and not to a delivery at a static URL.
⚠️ The fields a transformation adds are not offered in the variable list — they exist at run time, but you type their path yourself.
❌ A path cannot reach into a list: items.0.data is not possible.
⚠️ The Transformations section on the adapter's own Configuration tab is saved, but not applied — use the action's.
