Nodes
Browse the node library and inspect individual node definitions through the DRAGOPS API.
Nodes are the building blocks of patterns. DRAGOPS includes 179 language-agnostic primitives across 16 categories. Each node definition describes the node's inputs, outputs, behavior, and visual appearance in the editor.
List all nodes
GET /api/nodes
Return the complete list of available node definitions. Each definition includes the node's category, pins, default values, and metadata.
Response
{
"nodes": [
{
"id": "OnWebhook",
"label": "On Webhook",
"category": "Events",
"description": "Triggers when an HTTP request arrives at the webhook URL",
"isPure": false,
"inputs": [],
"outputs": [
{ "name": "exec", "type": "exec", "label": "" },
{ "name": "body", "type": "object", "label": "Body" },
{ "name": "headers", "type": "object", "label": "Headers" },
{ "name": "query", "type": "object", "label": "Query" },
{ "name": "method", "type": "string", "label": "Method" }
]
},
{
"id": "Log",
"label": "Log",
"category": "Utility",
"description": "Writes a message to the execution log",
"isPure": false,
"inputs": [
{ "name": "exec", "type": "exec", "label": "" },
{ "name": "message", "type": "string", "label": "Message" }
],
"outputs": [
{ "name": "exec", "type": "exec", "label": "" }
]
},
{
"id": "Add",
"label": "Add",
"category": "Math",
"description": "Returns the sum of two numbers",
"isPure": true,
"inputs": [
{ "name": "a", "type": "number", "label": "A" },
{ "name": "b", "type": "number", "label": "B" }
],
"outputs": [
{ "name": "result", "type": "number", "label": "Result" }
]
}
]
}Node categories
| Category | Count | Description |
|---|---|---|
| Events | 7 | Trigger nodes that start pattern execution |
| Flow Control | 20 | Branch, loop, sequence, and error handling |
| Literals | 8 | Constant value nodes for strings, numbers, booleans |
| Variables | 7 | Get and set pattern-scoped variables |
| Math | 23 | Arithmetic, rounding, min/max, and trigonometry |
| Comparison | 10 | Equality, ordering, and range checks |
| Logical | 5 | AND, OR, NOT, and boolean operations |
| String | 20 | Concatenation, splitting, formatting, and regex |
| Object / Map | 13 | Property access, merging, and key iteration |
| Array | 22 | Map, filter, reduce, sort, and element access |
| Type Conversion | 7 | Convert between strings, numbers, booleans, and objects |
| Date Time | 10 | Parse, format, compare, and calculate date/time values |
| HTTP | 6 | Make HTTP requests and parse responses |
| Data Formats | 7 | JSON, CSV, XML, and YAML parsing and generation |
| File I/O | 12 | Read and write files in cloud storage |
| Encoding | 10 | Base64, URL encoding, hashing, and HMAC |
| Utility | 6 | Logging, delays, and debugging |
Pure vs. impure nodes
Nodes have an isPure flag that determines their behavior:
- Pure nodes (
isPure: true) have no execution pins. They evaluate inline when their output is needed by another node. Examples: Add, String Length, Get Property. - Impure nodes (
isPure: false) have execution input and output pins. They execute in sequence as part of the execution flow. Examples: Log, HTTP Request, Set Variable.
Get node definition
GET /api/nodes/:id
Return the full definition for a single node by its ID.
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Node definition ID (e.g., OnWebhook, HttpRequest, Log) |
Response
{
"id": "HttpRequest",
"label": "HTTP Request",
"category": "HTTP",
"description": "Makes an HTTP request and returns the response",
"isPure": false,
"inputs": [
{ "name": "exec", "type": "exec", "label": "" },
{ "name": "url", "type": "string", "label": "URL" },
{ "name": "method", "type": "string", "label": "Method", "defaultValue": "GET" },
{ "name": "headers", "type": "object", "label": "Headers" },
{ "name": "body", "type": "object", "label": "Body" }
],
"outputs": [
{ "name": "exec", "type": "exec", "label": "" },
{ "name": "statusCode", "type": "integer", "label": "Status Code" },
{ "name": "responseBody", "type": "object", "label": "Response Body" },
{ "name": "responseHeaders", "type": "object", "label": "Response Headers" }
],
"searchAliases": ["fetch", "curl", "api call", "rest"]
}Introspect module
POST /api/nodes/introspect
Introspect a module to discover its available operations and parameters. This endpoint is used for dynamic node generation from external service definitions.
Request body
| Parameter | Type | Required | Description |
|---|---|---|---|
module | object | Yes | Module definition to introspect |
{
"module": {
"name": "my-custom-module",
"version": "1.0.0"
}
}Response
{
"operations": [
{
"name": "listItems",
"description": "List all items",
"inputs": [
{ "name": "limit", "type": "integer", "defaultValue": 10 }
],
"outputs": [
{ "name": "items", "type": "array" }
]
}
]
}