Flow Steps API
Flow steps are the transformation operations that make up a Dataset's data-prep flow (see the Dataset flow endpoints under the Dataset API). The Flow Steps API exposes the registry of step types the flow editor can offer: a server-global catalog of the available flow-step drivers, not tenant data.
Both endpoints are plain authenticated GETs with no permission pre-block: the
catalog of available step types is readable within the tenant.
GET /api/flows
List the available flow-step types.
Authentication: Required (session or API token). No special permission.
Response:
A HAL collection (rel inf:flows) whose items are embedded as inf:flow. The
handler reads the flow driver manager, filters by each driver's isEligible()
(called with no arguments, so eligibility is license- and request-independent; a
driver that does not implement it defaults to eligible), and sorts the result by
id. Because the list is a registry of registered drivers, it is the same for
every tenant.
{
"_links": {
"self": {
"href": "https://informer.example.com/api/flows"
}
},
"start": 0,
"count": 23,
"total": 23,
"_embedded": {
"inf:flow": [
{
"_links": {
"self": {
"href": "https://informer.example.com/api/flows/calculatedField"
}
},
"id": "calculatedField",
"group": "Add Field",
"name": "Calculated Field",
"description": "Add a new Field with the value of this expression (re-evaluated per row)",
"image": "/assets/flow-steps/images/calculated-field.svg",
"color": "teal",
"editor": "calculatedFieldEditor",
"labelExpr": "{{ field.label || data.label }}",
"descriptionExpr": "{{ data.script | maxCharacters:100 }}",
"exclude": false
},
{
"_links": {
"self": {
"href": "https://informer.example.com/api/flows/code"
}
},
"id": "code",
"group": "Add Field",
"name": "Code Field",
"description": "Add a new Field with the description value of a Code",
"icon": "fa-book",
"color": "purple",
"editor": "codeFlowEditor",
"labelExpr": "{{ field.label || data.label }}",
"descriptionExpr": "{{ field.alias || data.alias }}",
"exclude": false
},
{
"_links": {
"self": {
"href": "https://informer.example.com/api/flows/concatenate"
}
},
"id": "concatenate",
"name": "Concatenate",
"group": "Add Field",
"description": "Joins multiple Field values with a delimiter, removing empty values (for example - null, undefined, '', NaN, false)",
"image": "/assets/flow-steps/images/concatenate.svg",
"color": "indigo",
"labelExpr": "{{ field.label || data.label }}",
"editor": "concatenateEditor",
"exclude": false
},
"… 20 more items (23 total) — omitted from docs"
]
}
}
GET /api/flows/{id}
Get a single flow-step type by id.
Authentication: Required (session or API token). No special permission.
Path Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The flow-step type id (a driver id, e.g. as returned by GET /api/flows). |
Response:
The single flow-step type. An unknown id returns 404 — the lookup performs an
explicit exists() check first, because the flow driver manager has a missing
implementation that would otherwise resolve a stub.
{
"_links": {
"self": {
"href": "https://informer.example.com/api/flows/calculatedField"
}
},
"id": "calculatedField",
"group": "Add Field",
"name": "Calculated Field",
"description": "Add a new Field with the value of this expression (re-evaluated per row)",
"image": "/assets/flow-steps/images/calculated-field.svg",
"color": "teal",
"editor": "calculatedFieldEditor",
"labelExpr": "{{ field.label || data.label }}",
"descriptionExpr": "{{ data.script | maxCharacters:100 }}",
"exclude": false
}