Skip to main content

Flow Builder

The flow is the Dataset's transformation pipeline: an ordered list of steps applied to query results during refresh. Each step is an object keyed by its flow-step driver id, for example { "calculatedField": { "alias": "lineTotal", "label": "Line Total", "script": "UnitPrice * Quantity" } }.

Available step types include calculatedField, templatedField, concatenate, findAndReplace, removeField, fieldSettings, normalize, percentOfTotal, timeBetween, counter, coordinates, zip2geo, expandToIntervals, mergeDuplicates, datasetJoin, and powerScript; each takes its own config.

Flow changes take effect on the next refresh. Modify flows through a draft when you want to test before committing.

GET /api/datasets/{id}/flow

Get the flow as a collection; each step carries its index.

Authentication: Required

Get the flowGET /api/datasets/admin:northwind-orders/flow
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasets/admin%3Anorthwind-orders/flow"
}
},
"start": 0,
"count": 1,
"total": 1,
"_embedded": {
"inf:flow": [
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasets/admin%3Anorthwind-orders/flow/0"
}
},
"calculatedField": {
"alias": "lineTotal",
"label": "Line Total",
"script": "UnitPrice * Quantity"
}
}
]
}
}
Captured from the API examples test suite; ids and timestamps are normalized.

PUT /api/datasets/{id}/flow

Replace the whole flow with the payload (an array of steps).

Authentication: Required

Permission: dataset:write (Data Wizard or above on the owning team)

Replace the flowPUT /api/datasets/admin:northwind-orders/flow
Each step is an object keyed by its flow-step driver id. The response is the stored flow with an index per step.
Request body
[
{
"calculatedField": {
"alias": "lineTotal",
"label": "Line Total",
"script": "UnitPrice * Quantity"
}
}
]
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasets/admin%3Anorthwind-orders/flow"
}
},
"start": 0,
"count": 1,
"total": 1,
"_embedded": {
"inf:flow": [
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasets/admin%3Anorthwind-orders/flow/0"
}
},
"calculatedField": {
"alias": "lineTotal",
"label": "Line Total",
"script": "UnitPrice * Quantity"
}
}
]
}
}
Captured from the API examples test suite; ids and timestamps are normalized.

POST /api/datasets/{id}/flow

Append steps to the flow. Unlike PUT, the response is the bare updated flow array.

Authentication: Required

Permission: dataset:write (Data Wizard or above on the owning team)

Append flow stepsPOST /api/datasets/admin:northwind-orders/flow
Request body
[
{
"calculatedField": {
"alias": "discounted",
"label": "Discounted Total",
"script": "lineTotal * 0.9"
}
}
]
Response · 200
[
{
"calculatedField": {
"alias": "lineTotal",
"label": "Line Total",
"script": "UnitPrice * Quantity"
}
},
{
"calculatedField": {
"alias": "discounted",
"label": "Discounted Total",
"script": "lineTotal * 0.9"
}
}
]
Captured from the API examples test suite; ids and timestamps are normalized.

DELETE /api/datasets/{id}/flow

Clear the flow.

Authentication: Required

Permission: dataset:write (Data Wizard or above on the owning team)

Clear the flowDELETE /api/datasets/admin:northwind-orders/flow
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasets/admin%3Anorthwind-orders/flow"
}
},
"items": [],
"start": 0,
"count": 0,
"total": 0
}
Captured from the API examples test suite; ids and timestamps are normalized.

GET /api/datasets/{id}/flow/{index}

Get one step by position. Answers 404 for an index past the end.

Authentication: Required

Get one stepGET /api/datasets/admin:northwind-orders/flow/0
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasets/admin%3Anorthwind-orders/flow/0"
}
},
"calculatedField": {
"alias": "lineTotal",
"label": "Line Total",
"script": "UnitPrice * Quantity"
}
}
Captured from the API examples test suite; ids and timestamps are normalized.

PUT /api/datasets/{id}/flow/{index}

Replace one step. The response is the stored step.

Authentication: Required

Permission: dataset:write (Data Wizard or above on the owning team)

Replace one stepPUT /api/datasets/admin:northwind-orders/flow/1
Request body
{
"calculatedField": {
"alias": "discounted",
"label": "Discounted Total",
"script": "lineTotal * 0.85"
}
}
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasets/admin%3Anorthwind-orders/flow/1"
}
},
"calculatedField": {
"alias": "discounted",
"label": "Discounted Total",
"script": "lineTotal * 0.85"
}
}
Captured from the API examples test suite; ids and timestamps are normalized.

DELETE /api/datasets/{id}/flow/{index}

Remove one step; later steps shift down. The response is the remaining flow array.

Authentication: Required

Permission: dataset:write (Data Wizard or above on the owning team)

Remove one stepDELETE /api/datasets/admin:northwind-orders/flow/1
Response · 200
[
{
"calculatedField": {
"alias": "lineTotal",
"label": "Line Total",
"script": "UnitPrice * Quantity"
}
}
]
Captured from the API examples test suite; ids and timestamps are normalized.