Skip to main content

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.

List available flow step typesGET /api/flows
GET /api/flows returns the eligible flow-step types as a HAL collection (rel inf:flows, items embedded as inf:flow). It is a server-global registry filtered by each type’s isEligible(), not tenant data.
Response · 200
{
"_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"
]
}
}
Captured from the API examples test suite; ids and timestamps are normalized.

GET /api/flows/{id}

Get a single flow-step type by id.

Authentication: Required (session or API token). No special permission.

Path Parameters:

ParameterTypeRequiredDescription
idstringYesThe 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.

Get a single flow step typeGET /api/flows/calculatedField
GET /api/flows/{id} returns one flow-step type. An unknown id 404s (the lookup does an explicit exists() check because the flow driver manager has a `missing` impl).
Response · 200
{
"_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
}
Captured from the API examples test suite; ids and timestamps are normalized.