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
{
"_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"
}
}
]
}
}
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)
[
{
"calculatedField": {
"alias": "lineTotal",
"label": "Line Total",
"script": "UnitPrice * Quantity"
}
}
]
{
"_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"
}
}
]
}
}
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)
[
{
"calculatedField": {
"alias": "discounted",
"label": "Discounted Total",
"script": "lineTotal * 0.9"
}
}
]
[
{
"calculatedField": {
"alias": "lineTotal",
"label": "Line Total",
"script": "UnitPrice * Quantity"
}
},
{
"calculatedField": {
"alias": "discounted",
"label": "Discounted Total",
"script": "lineTotal * 0.9"
}
}
]
DELETE /api/datasets/{id}/flow
Clear the flow.
Authentication: Required
Permission: dataset:write (Data Wizard or above on the owning team)
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasets/admin%3Anorthwind-orders/flow"
}
},
"items": [],
"start": 0,
"count": 0,
"total": 0
}
GET /api/datasets/{id}/flow/{index}
Get one step by position. Answers 404 for an index past the end.
Authentication: Required
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasets/admin%3Anorthwind-orders/flow/0"
}
},
"calculatedField": {
"alias": "lineTotal",
"label": "Line Total",
"script": "UnitPrice * Quantity"
}
}
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)
{
"calculatedField": {
"alias": "discounted",
"label": "Discounted Total",
"script": "lineTotal * 0.85"
}
}
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasets/admin%3Anorthwind-orders/flow/1"
}
},
"calculatedField": {
"alias": "discounted",
"label": "Discounted Total",
"script": "lineTotal * 0.85"
}
}
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)
[
{
"calculatedField": {
"alias": "lineTotal",
"label": "Line Total",
"script": "UnitPrice * Quantity"
}
}
]