> ## Documentation Index
> Fetch the complete documentation index at: https://docs.blobhub.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Definition Format

> Understanding the structure of a Workflow Definition

A **Workflow Definition** is a JSON object that acts as the blueprint for an executable backend workflow. It describes the individual components, their configurations, and how they are wired together to process information linearly or conditionally.

## High-Level Structure

Every Workflow Definition adheres to the following core JSON schema:

```json theme={null}
{
  "type": "workflow_definition",
  "version": "1.0.1",
  "components": [
    // Array of Component Objects
  ],
  "connections": [
    // Array of Connection Objects
  ]
}
```

### Top-Level Properties

| Property      | Type   | Description                                                                    |
| :------------ | :----- | :----------------------------------------------------------------------------- |
| `type`        | string | Constant identifier. Must be exactly `"workflow_definition"`.                  |
| `version`     | string | Schema version. Currently `"1.0.1"`.                                           |
| `components`  | array  | A list of distinct node instances representing processing steps.               |
| `connections` | array  | A list of edges dictating the logic flow and data transfer between components. |

## Components Array

The `components` array contains objects detailing the individual processing units. Each component has an ID, a type definition, and configurations for its specific behavior and positional placement if rendered visually in the UI.

```json theme={null}
{
  "id": "860e7fd4-ef39-4d1f-9a89-a5f092b7cf9d",
  "category": "flow",
  "type": "flow.start",
  "name": "Flow Start",
  "position": {
    "x": 591.2513211879909,
    "y": -96.87519807561236
  }
}
```

For an exhaustive list of components and their configurations, refer to the [Workflow Components](./components) page.

## Connections Array

The `connections` array defines how control passes between components upon execution. Connections are directional edges between a specific output "route" of a source component and a specific input "route" of a target component.

```json theme={null}
{
  "id": "e56127f7-0b96-4e75-bfb9-064849e6c762",
  "source_id": "598218d4-c7b2-4b52-9411-314058ae0148",
  "target_id": "3b75732b-705d-46ed-a7af-f01f9a78d777",
  "source_port": "flow_output",
  "target_port": "flow_input",
  "route": "success"
}
```

### Connection Properties

* **`source_id`**: The ID of the component yielding control.
* **`target_id`**: The ID of the component receiving control.
* **`source_port`**: The physical output port the connection originates from.
* **`target_port`**: The physical input port the connection arrives at.
* **`route`**: The semantic logic path dictating when this edge fires (e.g., `"success"`, `"failure"`, `"next"`).
