Skip to main content
Version: Next

Pipeline Node Reference

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

At a glance

TypeLabelCategoryInOutDescription
aiAIaiClassify, extract or summarise with AI — and optionally look things up first
rest-apiREST APIapiDefine HTTP endpoint (ingress) or make outbound HTTP calls (egress). Outbound sends the incoming message only in Dynamic configuration mode
rest-responseHTTP ResponseapiSend the final HTTP response for a REST Ingress pipeline
injectInjectcommonTrigger flow manually or on a schedule
linkLinkcommonSend or receive messages between pipelines
rbeRBE (Filter)commonReport-by-exception: only pass a message when the value changes
switchSwitchcommonRoute a message to different branches depending on its value
timerTimercommonDelay, debounce or watch for silence — per topic
database-sqlSQL QuerydatasourceExecute SQL queries on connected database
mongodbMongoDBdatasourceFind, Insert, Update, or Delete documents in MongoDB
questdbQuestDBdatasourceHigh-speed Ingress or SQL query on QuestDB
notify-emailSend EmailnotificationSend an email via a saved SMTP connection
telegramTelegramnotificationSend messages, or receive messages/commands (e.g. /data), via a saved Telegram bot
user-rosterOn-Call RosternotificationResolve the on-shift roster members into recipients for a Send node
whatsappWhatsAppnotificationSend WhatsApp messages (Twilio), or receive inbound messages via a webhook
catchCatchoutputReport failures from other nodes in this pipeline
debugDebugoutputSend a node's output to the Debug panel
alarmAlarmrealtimeSubscribe to alarm events (raised, cleared, acknowledged) for alarm-enabled Tags
industrial-ioIndustrial I/OrealtimeRead, write, or subscribe to Tags (OPC-UA, MQTT, etc.)
batch-transformBatch TransformtransformApply transformation to each item in parallel
joinJointransformCollect array items or independent messages into a single array
pythonPython ScripttransformExecute custom Python code for transformations
splitArray IteratortransformIterate 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
maxToolIterations3
timeoutMs15000
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[]

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: Pushing a message to browser clients ("On message" handlers)
# system.message.send("high_pressure", {"value": value})

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