Built-in nodes
Config, ports and output of httprequest, transform, log, conditional, switch, wait and wait_until
Every built-in action has the input port main. A node's output is what later nodes read as {{.node_results.<node_id>...}}, and config strings are templates.
When a node has an error port and fails, the failure goes through it with the reason in error. With nothing connected to error, the execution fails.
httprequest
Calls an HTTP endpoint. It can reach any address the server can, so limit outbound traffic where you run Operion.
{
"id": "notify",
"name": "Notify Slack",
"type": "httprequest",
"category": "action",
"config": {
"url": "https://hooks.slack.com/services/T000/B000/XXXX",
"method": "POST",
"body": "{\"text\": \"Welcome, {{.node_results.trigger.body.name}}\"}"
}
}| Config | Description |
|---|---|
url | Required |
method | GET (default), POST, PUT, PATCH, DELETE, HEAD or OPTIONS |
headers | An object of header names and values |
body | The request body. When it is set and headers has no Content-Type, the request is sent as application/json |
timeout | Seconds, from 1 to 300. Defaults to 30 |
Ports: success and error.
success sends on status_code, headers, body (the response as text) and json (the response parsed, when it is JSON). A network error, a timeout or a status of 400 or more goes to error.
transform
Builds a value from a template.
{"id": "greet", "name": "greet", "type": "transform", "category": "action", "config": {"expression": "{\"full_name\": \"{{.node_results.trigger.body.first}} {{.node_results.trigger.body.last}}\"}"}}| Config | Description |
|---|---|
expression | Required. A template |
Ports: success and error. success sends on {"result": <value>}, where the value is an object, a list, a number, a boolean or a string, as described in what a template returns.
log
Writes a line to Operion's log.
{"id": "done", "name": "done", "type": "log", "category": "action", "config": {"message": "order {{.node_results.trigger.body.order_id}} handled", "level": "info"}}| Config | Description |
|---|---|
message | Required. A template |
level | debug, info (default), warn or error |
Ports: success and error. success sends on message, level and logged.
conditional
Takes one of two paths.
{"id": "big", "name": "Big order?", "type": "conditional", "category": "action", "config": {"condition": "{{gt .node_results.trigger.body.total 1000.0}}"}}| Config | Description |
|---|---|
condition | Required. A template |
Ports: true, false and error.
The rendered value is true when it is true, a non-zero number, a non-empty list or object, or a non-empty string other than false, 0 and the other spellings of false. Anything else takes false. Both ports send on condition_result and evaluated_value.
switch
Takes the path named after a value.
{
"id": "route",
"name": "Route by plan",
"type": "switch",
"category": "action",
"config": {
"value": "{{.node_results.trigger.body.plan}}",
"cases": [
{"value": "basic", "output_port": "basic"},
{"value": "premium", "output_port": "premium"}
]
}
}| Config | Description |
|---|---|
value | Required. A template |
cases | A list of {"value", "output_port"}. A case matches when the rendered value, as text, equals its value |
Ports: one per case output_port, default when no case matches, and error. Connect them as route:premium or route:default. The node sends on matched_value and output_port.
wait
Holds its branch for a duration.
{"id": "cool_off", "name": "Wait three days", "type": "wait", "category": "action", "config": {"duration": "72h"}}| Config | Description |
|---|---|
duration | Required. A positive Go duration such as 30m or 72h |
Port: success, which sends on the data the node received, or the body of an early resume.
wait_until
Holds its branch until a time.
{"id": "on_start", "name": "Wait for the first day", "type": "wait_until", "category": "action", "config": {"until": "{{.node_results.trigger.payload.start_date}}"}}| Config | Description |
|---|---|
until | Required. A template that renders an RFC 3339 time, such as 2026-11-03T09:00:00-03:00 |
Port: success, like wait. A time in the past continues right away. When until does not render a valid time, the execution fails.