requests[]), and response mapping.
Defining an Action
renderStrategy values:
Parameters (JSON Schema)
Parameters define the user-facing form using JSON Schema. Extended with customx-* properties for dynamic data.
type values:
Custom extensions:
Requests & Chaining
Each action has arequests array. Requests execute sequentially — the response from request N is available as placeholders in request N+1.
Single request:
Placeholders
There are two placeholder syntaxes:
Placeholder resolution order for
{{key}}:
- User’s form input (
parameters) - Previous request’s mapping output (in chained requests)
auth.configvalues (for registration requests)- System-injected values (
webhookUrl,subdomain,uid)
body: { data: '{{myObject}}' }), the raw type is preserved — objects remain objects, arrays remain arrays. If a placeholder is part of a larger string (e.g., "Hello {{name}}!"), it’s stringified.
Response Mapping
Mapping extracts values from API responses. Two formats with different behaviors: Object mapping — Values are persisted in the database:get_token, refresh_token, registrationRequests, and userDetails.
Array mapping — Values are forwarded to the next request only (not persisted):
requests when you need to chain request outputs.
Dot-path syntax: Values use JSONPath-like syntax starting with $:
App Functions (pipeline steps)
Actions are not limited to HTTP. Therequests[] array is a step pipeline where each entry is either an HTTP request (default) or an App Function step.
App Functions are small, sandboxed JavaScript helpers shipped in the mini-app definition (sibling of source and actions). They let you search, reshape, or assert on data between HTTP calls — for example, find a spreadsheet row by column name, or build a sparse update body.
Defining functions
Using a function as a pipeline step
found, rowNumber, row, …) are merged into the shared placeholder context and are available to later steps and to automation custom-field mappings.