# Node Reference

This section documents all built-in nodes available in FlowDrop. Each node is described with its purpose, input/output ports, configuration options, and usage examples.

## Text & Output

Nodes for providing text input, formatting, and output.

| Node | Description |
|------|-------------|
| [Text Input](text-output.md#text-input) | Provides a static text value as output |
| [Text Output](text-output.md#text-output) | Outputs text with optional length limits and formatting |
| [Prompt Template](text-output.md#prompt-template) | Renders templates with `{{variable}}` substitution |
| [Chat Input](text-output.md#chat-input) | Accepts chat messages (for Playground workflows) |
| [Chat Output](text-output.md#chat-output) | Outputs chat-style messages |
| [Logger](text-output.md#logger) | Logs messages to Drupal's watchdog |
| [Messenger](text-output.md#messenger) | Displays Drupal status/warning/error messages |

## Data Processing

Nodes for transforming, extracting, and reshaping data.

| Node | Description |
|------|-------------|
| [Data Shaper](data-processing.md#data-shaper) | Reshapes data using field mappings and JSON Schema |
| [Data Extractor](data-processing.md#data-extractor) | Extracts values using JSONPath or property paths |
| [Data Operations](data-processing.md#data-operations) | Array operations: filter, sort, group, map, reduce, unique, merge |
| [Split Text](data-processing.md#split-text) | Splits text into chunks by words, sentences, or custom separator |
| [Regex Extractor](data-processing.md#regex-extractor) | Extracts data using regular expressions |
| [Data to JSON](data-processing.md#data-to-json) | Converts structured data to a JSON string |
| [JSON to Data](data-processing.md#json-to-data) | Parses a JSON string into structured data |
| [Data to Dataframe](data-processing.md#data-to-dataframe) | Converts data to dataframe format |
| [Message to Data](data-processing.md#message-to-data) | Converts messages to structured data (JSON, CSV, XML, YAML) |

## Control Flow

Nodes for branching, conditional logic, and routing.

| Node | Description |
|------|-------------|
| [IfElse](control-flow.md#ifelse) | Conditional branching with text comparison operators |
| [Boolean Gateway](control-flow.md#boolean-gateway) | Routes execution based on a boolean value |
| [Switch Gateway](control-flow.md#switch-gateway) | Multi-path routing based on expression matching |
| [A/B](control-flow.md#ab) | Random A/B split for testing |

## Entity Operations

Nodes for working with Drupal entities.

| Node | Description |
|------|-------------|
| [Entity Query](entity-operations.md#entity-query) | Queries entities with conditions, pagination, and sorting |
| [Entity Context](entity-operations.md#entity-context) | Loads a specific entity by type and ID |
| [Entity Save](entity-operations.md#entity-save) | Creates or updates entities |
| [Get Workflow Data](entity-operations.md#get-workflow-data) | Retrieves initial data passed to the workflow |

## HTTP & Integration

| Node | Description |
|------|-------------|
| [HTTP Request](http-integration.md#http-request) | Makes HTTP requests to external APIs |

## AI Integration

Nodes for AI language model integration. Requires `drupal/flowdrop_ai_provider` — see [AI nodes](ai.md) for setup.

| Node | Description |
|------|-------------|
| [Chat Model](ai.md#chat-model) | Sends a prompt to an AI model and returns the response |

## Utility

| Node | Description |
|------|-------------|
| [Calculator](utility.md#calculator) | Mathematical operations (add, subtract, average, etc.) |
| [DateTime](utility.md#datetime) | Date/time operations with timezone support |
| [Range](utility.md#range) | Generates numeric sequences |
| [Repeat](utility.md#repeat) | Repeats a value N times |
| [Note](utility.md#note) | Documentation node (no execution) |
| [Idea](utility.md#idea) | Placeholder for planned functionality |

## Human-in-the-Loop

Nodes that pause the workflow for user input. Requires `flowdrop_interrupt` module.

| Node | Description |
|------|-------------|
| [Confirmation](human-in-the-loop.md#confirmation) | Yes/No confirmation prompt |
| [Choice Input](human-in-the-loop.md#choice-input) | Select from a list of options |
| [Text Input (Interrupt)](human-in-the-loop.md#text-input-interrupt) | Free-form text input with validation |
| [Form Input](human-in-the-loop.md#form-input) | Structured form from JSON Schema |

## Loops & State (StateGraph)

Nodes for iteration and state management. Requires `flowdrop_stategraph` module.

| Node | Description |
|------|-------------|
| [ForEach](stategraph.md#foreach) | Iterates over an array |
| [Iterator Start](stategraph.md#iterator-start) | Initializes iteration |
| [Approval Gate](stategraph.md#approval-gate) | Pauses for human approval |
| [State Storage](stategraph.md#state-storage) | Read/write key-value state |

## Memory

Nodes for persisting and retrieving data across nodes, executions, or sessions. Requires `flowdrop_memory` module.

| Node | Description |
|------|-------------|
| [Memory Read](memory.md#memory-read) | Read a named value from scoped memory; scope ID auto-derived from execution context |
| [Memory Write](memory.md#memory-write) | Write a named value to scoped memory; scope ID auto-derived from execution context |
| [Memory Read Raw](memory.md#memory-read-raw) | Read with an explicit scope ID (no execution context required) |
| [Memory Write Raw](memory.md#memory-write-raw) | Write with an explicit scope ID (no execution context required) |

## Workflow Composition

Nodes for calling workflows from other workflows. Requires `flowdrop_workflow_executor` module.

| Node | Description |
|------|-------------|
| [Workflow Executor](workflow-composition.md#workflow-executor) | Executes a child workflow |
| [Workflow Results Retriever](workflow-composition.md#workflow-results-retriever) | Retrieves results from a child workflow |
