Skip to content
SENS Platform Docs

Execute a synchronous, side-effect-free preview against Raw, manual or fixture input.

POST
/v1/flows/{flowId}/test-runs
curl --request POST \
--url https://api.dev.iot-sens.schlossers.at/v1/flows/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/test-runs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "flowVersionId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "graph": { "schemaVersion": "flow-graph.v2", "deviceTypeId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "nodes": [ { "kind": "block", "nodeId": "example", "block": {}, "name": "example", "configuration": {}, "position": { "x": 1, "y": 1 } } ], "edges": [ {} ], "parameters": [ {} ] }, "fixtureId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "raw": { "rawIngestionMessageId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "receivedAt": "2026-04-15T12:00:00Z" }, "manualInput": { "mode": "live", "rawPayload": { "encoding": "base64", "data": "example" }, "observedAt": "2026-04-15T12:00:00Z", "rawReceivedAt": "2026-04-15T12:00:00Z", "tenantId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "deviceId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "deviceTypeId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "correlationId": "example", "connectionData": {}, "parameters": {} } }'
flowId
required
string format: uuid
Media typeapplication/json
One of:
Any of:
object
flowVersionId
string format: uuid
graph

Contains exactly one current-output and one timeseries-output system node.

object
schemaVersion
required
string
Allowed value: flow-graph.v2
deviceTypeId
required
string format: uuid
nodes
required
Array
>= 2 items <= 102 items
One of:
object
kind
required
string
Allowed value: block
nodeId
required
string
>= 1 characters <= 120 characters
block
required
object
name
required
string
>= 1 characters <= 200 characters
configuration
required
object
position
required
object
x
required
number
y
required
number
edges
required
Array<object>
object
parameters
required
Array<object>
object
fixtureId
required
string format: uuid
raw
object
rawIngestionMessageId
required
string format: uuid
receivedAt
required
string format: date-time
manualInput
object
mode
required
string
Allowed values: live preview replay
rawPayload
required
object
encoding
required
string
Allowed values: base64 hex utf8
data
required
string
observedAt
required

Normalized Netmore timestamp used by both storage targets.

string format: date-time
rawReceivedAt
required

Local MQTT/raw receipt timestamp used for provenance and tie-breaking.

string format: date-time
tenantId
required
string format: uuid
deviceId
required
string format: uuid
deviceTypeId
required
string format: uuid
correlationId
required
string
>= 1 characters
connectionData
required
object
parameters
required
object

Node trace

A safe platform error response.

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: VALIDATION_FAILED AUTHENTICATION_FAILED AUTHORIZATION_FAILED RESOURCE_NOT_FOUND CONFLICT DEPENDENCY_FAILURE FLOW_FAILURE RATE_LIMITED INTERNAL_ERROR
category
required
string
Allowed values: validation authentication authorization not_found conflict dependency_failure flow_failure rate_limit internal
message
required

Safe client-facing diagnostic message.

string
correlationId
required

Correlation ID for operational investigation.

string
>= 1 characters
details

Safe bounded diagnostic details.

object
key
additional properties
One of:
string
Example
{
"error": {
"code": "VALIDATION_FAILED",
"category": "validation"
}
}
Cache-Control
string
Allowed value: no-store