DRAGOPS
DRAGOPS
DocumentationAPI referenceNodes

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

CategoryCountDescription
Events7Trigger nodes that start pattern execution
Flow Control20Branch, loop, sequence, and error handling
Literals8Constant value nodes for strings, numbers, booleans
Variables7Get and set pattern-scoped variables
Math23Arithmetic, rounding, min/max, and trigonometry
Comparison10Equality, ordering, and range checks
Logical5AND, OR, NOT, and boolean operations
String20Concatenation, splitting, formatting, and regex
Object / Map13Property access, merging, and key iteration
Array22Map, filter, reduce, sort, and element access
Type Conversion7Convert between strings, numbers, booleans, and objects
Date Time10Parse, format, compare, and calculate date/time values
HTTP6Make HTTP requests and parse responses
Data Formats7JSON, CSV, XML, and YAML parsing and generation
File I/O12Read and write files in cloud storage
Encoding10Base64, URL encoding, hashing, and HMAC
Utility6Logging, 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

ParameterTypeRequiredDescription
idstringYesNode 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

ParameterTypeRequiredDescription
moduleobjectYesModule 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" }
      ]
    }
  ]
}

On this page