Skip to main content
Version: 1.0.8

Pipeline Node Reference

All 26 node types, generated from the pipeline node templates. For usage guidance and worked examples see Pipeline nodes.

At a glance​

TypeLabelCategoryInOutDescription
aiAIai✓✓Classify, extract or summarise with AI — and optionally look things up first
rest-apiREST APIapi✓✓Define HTTP endpoint (ingress) or make outbound HTTP calls (egress). Outbound sends the incoming message only in Dynamic configuration mode
rest-responseHTTP Responseapi✓—Send the final HTTP response for a REST Ingress pipeline
injectInjectcommon—✓Trigger flow manually or on a schedule
linkLinkcommon✓—Send or receive messages between pipelines
rbeRBE (Filter)common✓✓Report-by-exception: only pass a message when the value changes
switchSwitchcommon✓✓Route a message to different branches depending on its value
timerTimercommon✓✓Delay, debounce or watch for silence — per topic
database-sqlSQL Querydatasource✓✓Execute SQL queries on connected database
mongodbMongoDBdatasource✓✓Find, Insert, Update, or Delete documents in MongoDB
questdbQuestDBdatasource✓✓High-speed Ingress or SQL query on QuestDB
message-inMessage Inmessagebus—✓Start this pipeline when a message arrives on a subject
message-outMessage Outmessagebus✓✓Send a message on a subject, or request and wait for a reply
message-replyMessage Replymessagebus✓✓Answer the request that started this run — with a result, or with the error a Catch node caught
notify-emailSend Emailnotification✓—Send an email via a saved SMTP connection
telegramTelegramnotification✓—Send messages, or receive messages/commands (e.g. /data), via a saved Telegram bot
user-rosterOn-Call Rosternotification✓✓Resolve the on-shift roster members into recipients for a Send node
whatsappWhatsAppnotification✓—Send WhatsApp messages (Twilio), or receive inbound messages via a webhook
catchCatchoutput—✓Report failures from other nodes in this pipeline
debugDebugoutput✓—Send a node's output to the Debug panel
alarmAlarmrealtime✓✓Subscribe to alarm events (raised, cleared, acknowledged) for alarm-enabled Tags
industrial-ioIndustrial I/Orealtime✓✓Read, write, or subscribe to Tags (OPC-UA, MQTT, etc.)
batch-transformBatch Transformtransform✓✓Apply transformation to each item in parallel
joinJointransform✓✓Collect array items or independent messages into a single array
pythonPython Scripttransform✓✓Execute custom Python code for transformations
splitArray Iteratortransform✓✓Iterate through an array and process items one by one

AI​

Classify, extract or summarise with AI — and optionally look things up first

Type: ai · Category: ai · Input: yes · Output: yes

Default configuration

KeyDefault
promptTemplate""
outputModefields
outputFields[]
choices[]
scope[]
skills[]
outputPathpayload.classification
temperature0
maxTokens1024
maxToolIterations8
timeoutMs60000
cache{"enabled":true,"ttlSeconds":3600}
onErrorfail

Alarm​

Subscribe to alarm events (raised, cleared, acknowledged) for alarm-enabled Tags

Type: alarm · Category: realtime · Input: yes · Output: yes

Default configuration

KeyDefault
operationsubscribe
payloadModeevent
events["raised"]
priorities[]
tagIds[]
includeTagMetafalse

Array Iterator​

Iterate through an array and process items one by one

Type: split · Category: transform · Input: yes · Output: yes

Default configuration

KeyDefault
payloadTypemsg
payloadValue""

Batch Transform​

Apply transformation to each item in parallel

Type: batch-transform · Category: transform · Input: yes · Output: yes

Default configuration

KeyDefault
code""
transformTypemap
payloadTypemsg
payloadValue""

Default code

# Batch Transform Node
# Process individual items in a collection

def transform(item, message):
"""
Called for each item in the incoming array.
:param item: Current item data
:param message: Parent message context
:return: Transformed item
"""
return item

Catch​

Report failures from other nodes in this pipeline

Type: catch · Category: output · Input: no · Output: yes

Default configuration

KeyDefault
scopeall
sourceNodeIds[]

Debug​

Send a node's output to the Debug panel

Type: debug · Category: output · Input: yes · Output: no

Default configuration

KeyDefault
displayModefull

HTTP Response​

Send the final HTTP response for a REST Ingress pipeline

Type: rest-response · Category: api · Input: yes · Output: no

Default configuration

KeyDefault
http_status200
content_typeapplication/json
http_headers{}
reply_to""

Industrial I/O​

Read, write, or subscribe to Tags (OPC-UA, MQTT, etc.)

Type: industrial-io · Category: realtime · Input: yes · Output: yes

Default configuration

KeyDefault
operationread
tagSourcestatic
tagId""
path""
valuePath""
value""
dataTypeHint""

Inject​

Trigger flow manually or on a schedule

Type: inject · Category: common · Input: no · Output: yes

Default configuration

KeyDefault
repeatnone
intervalValue60
intervalUnitseconds
cronExpression""
initialDelay0
payloadTypetimestamp
payloadValue""

Join​

Collect array items or independent messages into a single array

Type: join · Category: transform · Input: yes · Output: yes

Default configuration

KeyDefault
modeauto

Send or receive messages between pipelines

Type: link · Category: common · Input: yes · Output: no

Default configuration

KeyDefault
modeegress
sourceNodeIds[]

Message In​

Start this pipeline when a message arrives on a subject

Type: message-in · Category: messagebus · Input: no · Output: yes

Default configuration

KeyDefault
subject""
includeAlltrue
queueGroup""

Message Out​

Send a message on a subject, or request and wait for a reply

Type: message-out · Category: messagebus · Input: yes · Output: yes

Default configuration

KeyDefault
subject""
scopeall
modesend
timeoutMs5000

Message Reply​

Answer the request that started this run — with a result, or with the error a Catch node caught

Type: message-reply · Category: messagebus · Input: yes · Output: yes

Default configuration

KeyDefault
statusok
errorMessage""

MongoDB​

Find, Insert, Update, or Delete documents in MongoDB

Type: mongodb · Category: datasource · Input: yes · Output: yes

Default configuration

KeyDefault
connectionId""
database""
collection""
operationfind
filter""
update""
limit0
timeout0

On-Call Roster​

Resolve the on-shift roster members into recipients for a Send node

Type: user-roster · Category: notification · Input: yes · Output: yes

Default configuration

KeyDefault
dbId""
rosterId""

Python Script​

Execute custom Python code for transformations

Type: python · Category: transform · Input: yes · Output: yes

Default configuration

KeyDefault
code""
timeout60

Default code

# Python Script Node
# Supported Modules: system, math, json, datetime
# Globals: payload (data), message (metadata)

def transform(payload, message):
"""
Transform incoming data.
:param payload: The primary data object (e.g., from the previous node)
:param message: The full StandardMessage including metadata and context
:return: The transformed result to pass to the next node
"""

# Example 1: Accessing real-time tags
# value = system.tag.read("Compressor/Pressure")
# log(f"Current Pressure: {value}")

# Example 2: Running a project-scoped Named Query
# results = system.db.runNamedQuery("GetActiveAlerts", {"area": "Floor-1"})

# Example 3: Messaging views and pipelines ("On message" handlers, Message In nodes)
# system.message.send("line1.pressure.high", {"value": value}, {"scope": "project"})

return payload

QuestDB​

High-speed Ingress or SQL query on QuestDB

Type: questdb · Category: datasource · Input: yes · Output: yes

Default configuration

KeyDefault
connectionId""
modeingress
table""
symbols""
query""
timeout0
maxRetries0
retryDelay0

RBE (Filter)​

Report-by-exception: only pass a message when the value changes

Type: rbe · Category: common · Input: yes · Output: yes

Default configuration

KeyDefault
moderbe
propertypayload
gap""
inoutout
start""
septopicstrue

REST API​

Define HTTP endpoint (ingress) or make outbound HTTP calls (egress). Outbound sends the incoming message only in Dynamic configuration mode

Type: rest-api · Category: api · Input: yes · Output: yes

Default configuration

KeyDefault
modeingress
methodGET
urlPattern/api/v1/example
timeout30
authTypenone
allowedIPs""
rateLimit0
burstLimit0
maxPayloadSize1048576
corsEnabledfalse
allowedOrigins*
ingressWhitelistHeaders""
egressStaticHeaders{}

Send Email​

Send an email via a saved SMTP connection

Type: notify-email · Category: notification · Input: yes · Output: no

Default configuration

KeyDefault
connectionId""
recipients[]
subject""
body""

SQL Query​

Execute SQL queries on connected database

Type: database-sql · Category: datasource · Input: yes · Output: yes

Default configuration

KeyDefault
connectionId""
query""

Switch​

Route a message to different branches depending on its value

Type: switch · Category: common · Input: yes · Output: yes

Default configuration

KeyDefault
propertypayload
checkalltrue
rules[{"operator":"eq","value":"","valueType":"str"}]

Telegram​

Send messages, or receive messages/commands (e.g. /data), via a saved Telegram bot

Type: telegram · Category: notification · Input: yes · Output: no

Default configuration

KeyDefault
modesend
connectionId""
to""
body""
commands""

Timer​

Delay, debounce or watch for silence — per topic

Type: timer · Category: common · Input: yes · Output: yes

Default configuration

KeyDefault
modeoneshot
duration5
durationUnitseconds
initialPayload1
finalPayload0
repeatWhileSilentfalse
maxQueue1000
directiondown
warningAt0
maxIterations0
loopTimeout0
septopicstrue
topicPropertytopic
maxTopics1000
controlPropertymetadata.timerCmd
startActionSTART
stopActionSTOP
resetActionRESET
pauseActionPAUSE
continueActionCONTINUE
targetProperty""
durationProperty""
durationOverrideOnstart
maxDuration86400

WhatsApp​

Send WhatsApp messages (Twilio), or receive inbound messages via a webhook

Type: whatsapp · Category: notification · Input: yes · Output: no

Default configuration

KeyDefault
modesend
connectionId""
recipients[]
body""
templateId""
waSendModefreeform