# Flow Definition Reference

This page documents the YAML schema for Flow definitions used with the [Flows TF Provider](/automating-flows/flows-tf-provider).

## Flow
[Section titled “Flow”](#flow)
The root object for a flow definition.

### Syntax
[Section titled “Syntax”](#syntax)

**

```
appInstallations:  Key: AppInstallationblocks:  - Blocknotes:  - Note
```

### Properties
[Section titled “Properties”](#properties)
#### appInstallations
[Section titled “appInstallations”](#appinstallations)
**Type**: Map of String to [AppInstallation](#appinstallation)

App installations used by blocks in this flow. Keys are references used by app blocks.

#### blocks
[Section titled “blocks”](#blocks)
**Type**: Array of [Block](#block)

List of blocks in the flow.

#### notes
[Section titled “notes”](#notes)
**Type**: Array of [Note](#note)

Sticky notes on the canvas.

---

## Block
[Section titled “Block”](#block)
A block in the flow.

### Syntax
[Section titled “Syntax”](#syntax-1)

**

```
name: Stringdescription: StringalternativeLookupStrategy: BlockLookupStrategytype: BlockTypeposition: Positionconfig: BlockConfiginputs: BlockInputsoutputs: BlockOutputserrorHandler: Stringgroup: String
```

### Properties
[Section titled “Properties”](#properties-1)
#### name
[Section titled “name”](#name)
**Type**: String

The name of the block. Unique within the flow.

#### description
[Section titled “description”](#description)
**Type**: String

Optional description of what this block does.

#### alternativeLookupStrategy
[Section titled “alternativeLookupStrategy”](#alternativelookupstrategy)
**Type**: [BlockLookupStrategy](#blocklookupstrategy)

Alternative strategy for looking up an existing block (useful when renaming blocks).

#### type
[Section titled “type”](#type)
**Type**: [BlockType](#blocktype)

Block type specification. Either a core block or an app block.

#### position
[Section titled “position”](#position)
**Type**: [Position](#position)

Canvas position as [x, y] coordinates.

#### config
[Section titled “config”](#config)
**Type**: One of: [HTTPEndpointBlockConfig](#httpendpointblockconfig) (for `httpEndpoint`), [ScheduleBlockConfig](#scheduleblockconfig) (for `schedule`), [MCPToolBlockConfig](#mcptoolblockconfig) (for `mcpTool`), [AppBlockConfig](#appblockconfig) (for `app blocks`)

Block-specific configuration. Structure depends on the block type.

#### inputs
[Section titled “inputs”](#inputs)
**Type**: One of: [CoreBlockInputs](#coreblockinputs) (for `core blocks`), [AppBlockInputs](#appblockinputs) (for `app blocks`), [GroupBlockIOConfig](#groupblockioconfig) (for `group blocks`)

Input connections and configuration.

#### outputs
[Section titled “outputs”](#outputs)
**Type**: One of: [CustomizableBlockOutput](#customizableblockoutput) (for `most blocks`), [GroupBlockIOConfig](#groupblockioconfig) (for `group blocks`)

Output configuration and customization.

#### errorHandler
[Section titled “errorHandler”](#errorhandler)
**Type**: String

Name of the block to receive error events.

#### group
[Section titled “group”](#group)
**Type**: String

Name of the group this block belongs to.

---

## Note
[Section titled “Note”](#note)
A sticky note on the canvas.

### Syntax
[Section titled “Syntax”](#syntax-2)

**

```
body: Stringposition: Positionstyle: NoteStyleMetadataalternativeLookupStrategy: NoteLookupStrategy
```

### Properties
[Section titled “Properties”](#properties-2)
#### body
[Section titled “body”](#body)
**Type**: String

Markdown content of the note.

#### position
[Section titled “position”](#position-1)
**Type**: [Position](#position)

Canvas position as [x, y] coordinates.

#### style
[Section titled “style”](#style)
**Type**: [NoteStyleMetadata](#notestylemetadata)

Visual style settings for the note.

#### alternativeLookupStrategy
[Section titled “alternativeLookupStrategy”](#alternativelookupstrategy-1)
**Type**: [NoteLookupStrategy](#notelookupstrategy)

Alternative strategy for looking up an existing note.

---

## AppInstallation
[Section titled “AppInstallation”](#appinstallation)
Describes an app installation referenced by blocks.

### Syntax
[Section titled “Syntax”](#syntax-3)

**

```
appName: StringappVersion: Stringid: String
```

### Properties
[Section titled “Properties”](#properties-3)
#### appName
[Section titled “appName”](#appname)
**Type**: String

The name of the app.

#### appVersion
[Section titled “appVersion”](#appversion)
**Type**: String

Version of the app.

#### id
[Section titled “id”](#id)
**Type**: String (UUID)

Installation ID (UUID format).

---

## Expression
[Section titled “Expression”](#expression)
Expressions are values or JavaScript code snippets that are evaluated at runtime.

You can use a raw value, as simple as this:


**

```
body: 'Hello, World!'
```

To use a dynamic expression, prefix with `!expr`:


**

```
body: !expr '`Hello, ${outputs.endpoint.params.name}`'condition: !expr outputs.check.value > 10delay: !expr 5 + outputs.config.extraDelay
```

Expressions have access to:

 - **outputs**: Values from connected block outputs (e.g., `outputs.myBlock.someField`)
 - **config**: Block configuration values
 - **event** (for input config fields): The current event being processed
 - Standard JavaScript operators and functions

---

## BlockType
[Section titled “BlockType”](#blocktype)
Specifies whether the block is a core block or an app block. Exactly one must be set.

### Syntax
[Section titled “Syntax”](#syntax-4)

**

```
appBlock: AppBlockTypecoreBlock: String
```

### Properties
[Section titled “Properties”](#properties-4)
#### appBlock
[Section titled “appBlock”](#appblock)
**Type**: [AppBlockType](#appblocktype)

App block type specification.

#### coreBlock
[Section titled “coreBlock”](#coreblock)
**Type**: String (`httpEndpoint`, `httpRequest`, `condition`, `sleep`, `transform`, `explode`, `collect`, `memorySet`, `memoryGet`, `memoryList`, `schedule`, `mcpTool`, `group`)

Core block type name.

---

## AppBlockType
[Section titled “AppBlockType”](#appblocktype)
Specification for an app block.

### Syntax
[Section titled “Syntax”](#syntax-5)

**

```
block: StringappInstallation: Stringschema: AppBlockSchema
```

### Properties
[Section titled “Properties”](#properties-5)
#### block
[Section titled “block”](#block-1)
**Type**: String

The block type name within the app.

#### appInstallation
[Section titled “appInstallation”](#appinstallation-1)
**Type**: String

Reference to an app installation key defined in appInstallations.

#### schema
[Section titled “schema”](#schema)
**Type**: Object (app block schema)

Inline block schema (typically not used when appInstallation is set). Filled out automatically when exporting flows.

---

## HTTPEndpointBlockConfig
[Section titled “HTTPEndpointBlockConfig”](#httpendpointblockconfig)
Configuration for HTTP endpoint blocks.

### Syntax
[Section titled “Syntax”](#syntax-6)

**

```
path: Stringmethods:  - Stringaudience: String
```

### Properties
[Section titled “Properties”](#properties-6)
#### path
[Section titled “path”](#path)
**Type**: String

URL path pattern. Can include parameters like /hello/{name}.

#### methods
[Section titled “methods”](#methods)
**Type**: Array of String

HTTP methods to accept (GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS).

#### audience
[Section titled “audience”](#audience)
**Type**: String (`world`, `organization`, `project`)

Who can access this endpoint. Values: world, organization, project.

---

## ScheduleBlockConfig
[Section titled “ScheduleBlockConfig”](#scheduleblockconfig)
Configuration for schedule blocks.

### Syntax
[Section titled “Syntax”](#syntax-7)

**

```
definition: ScheduleDefinition
```

### Properties
[Section titled “Properties”](#properties-7)
#### definition
[Section titled “definition”](#definition)
**Type**: [ScheduleDefinition](#scheduledefinition)

Schedule definition (cron or frequency-based).

---

## MCPToolBlockConfig
[Section titled “MCPToolBlockConfig”](#mcptoolblockconfig)
Configuration for MCP tool blocks.

### Syntax
[Section titled “Syntax”](#syntax-8)

**

```
inputSchema: MCPToolInputSchema
```

### Properties
[Section titled “Properties”](#properties-8)
#### inputSchema
[Section titled “inputSchema”](#inputschema)
**Type**: [MCPToolInputSchema](#mcptoolinputschema)

JSON Schema defining the tool’s input parameters.

---

## AppBlockConfig
[Section titled “AppBlockConfig”](#appblockconfig)
Configuration for app blocks.

**Type**: Map of String to [Expression](#expression)

---

## CoreBlockInputs
[Section titled “CoreBlockInputs”](#coreblockinputs)
Input configuration for core blocks.

### Syntax
[Section titled “Syntax”](#syntax-9)

**

```
default: CoreBlockInput
```

### Properties
[Section titled “Properties”](#properties-9)
#### default
[Section titled “default”](#default)
**Type**: [CoreBlockInput](#coreblockinput)

The default input.

---

## CoreBlockInput
[Section titled “CoreBlockInput”](#coreblockinput)
A single input with links and configuration.

### Syntax
[Section titled “Syntax”](#syntax-10)

**

```
links:  - BlockIOLinkconfig: Object
```

### Properties
[Section titled “Properties”](#properties-10)
#### links
[Section titled “links”](#links)
**Type**: Array of [BlockIOLink](#blockiolink)

Connections from other block outputs.

#### config
[Section titled “config”](#config-1)
**Type**: One of: [ConditionBlockInputConfig](#conditionblockinputconfig) (for `condition`), [SleepBlockInputConfig](#sleepblockinputconfig) (for `sleep`), [TransformBlockInputConfig](#transformblockinputconfig) (for `transform`), [HTTPRequestBlockInputConfig](#httprequestblockinputconfig) (for `httpRequest`), [HTTPEndpointBlockInputConfig](#httpendpointblockinputconfig) (for `httpEndpoint`), [ExplodeBlockInputConfig](#explodeblockinputconfig) (for `explode`), [CollectBlockInputConfig](#collectblockinputconfig) (for `collect`), [MemorySetBlockInputConfig](#memorysetblockinputconfig) (for `memorySet`), [MemoryGetBlockInputConfig](#memorygetblockinputconfig) (for `memoryGet`), [MemoryListBlockInputConfig](#memorylistblockinputconfig) (for `memoryList`), [MCPToolBlockInputConfig](#mcptoolblockinputconfig) (for `mcpTool`)

Input-specific configuration. Structure depends on the block type.

---

## AppBlockInputs
[Section titled “AppBlockInputs”](#appblockinputs)
Input configuration for app blocks.

**Type**: Map of String to [AppBlockInput](#appblockinput)

---

## AppBlockInput
[Section titled “AppBlockInput”](#appblockinput)
A single app block input with links and configuration.

### Syntax
[Section titled “Syntax”](#syntax-11)

**

```
links:  - BlockIOLinkconfig:  Key: Expression
```

### Properties
[Section titled “Properties”](#properties-11)
#### links
[Section titled “links”](#links-1)
**Type**: Array of [BlockIOLink](#blockiolink)

Connections from other block outputs.

#### config
[Section titled “config”](#config-2)
**Type**: Map of String to [Expression](#expression)

Input-specific configuration expressions.

---

## GroupBlockIOConfig
[Section titled “GroupBlockIOConfig”](#groupblockioconfig)
Input/output configuration for group blocks.

**Type**: Map of String to [GroupBlockIOLinks](#groupblockiolinks)

---

## GroupBlockIOLinks
[Section titled “GroupBlockIOLinks”](#groupblockiolinks)
Configuration for a single group input/output socket.

### Syntax
[Section titled “Syntax”](#syntax-12)

**

```
name: Stringlinks:  - BlockIOLinkoutputCustomization: Expression
```

### Properties
[Section titled “Properties”](#properties-12)
#### name
[Section titled “name”](#name-1)
**Type**: String

Name of the socket.

#### links
[Section titled “links”](#links-2)
**Type**: Array of [BlockIOLink](#blockiolink)

Connections for this socket.

#### outputCustomization
[Section titled “outputCustomization”](#outputcustomization)
**Type**: [Expression](#expression)

Expression to transform the output value.

---

## ConditionBlockInputConfig
[Section titled “ConditionBlockInputConfig”](#conditionblockinputconfig)
Input configuration for condition blocks.

### Syntax
[Section titled “Syntax”](#syntax-13)

**

```
condition: Expression
```

### Properties
[Section titled “Properties”](#properties-13)
#### condition
[Section titled “condition”](#condition)
**Type**: [Expression](#expression)

JavaScript expression that evaluates to a boolean.

---

## SleepBlockInputConfig
[Section titled “SleepBlockInputConfig”](#sleepblockinputconfig)
Input configuration for sleep blocks.

### Syntax
[Section titled “Syntax”](#syntax-14)

**

```
sleep: Expression
```

### Properties
[Section titled “Properties”](#properties-14)
#### sleep
[Section titled “sleep”](#sleep)
**Type**: [Expression](#expression)

Duration to sleep in seconds.

---

## TransformBlockInputConfig
[Section titled “TransformBlockInputConfig”](#transformblockinputconfig)
Input configuration for transform blocks.

---

## HTTPRequestBlockInputConfig
[Section titled “HTTPRequestBlockInputConfig”](#httprequestblockinputconfig)
Input configuration for HTTP request blocks.

### Syntax
[Section titled “Syntax”](#syntax-15)

**

```
url: Expressionmethod: Stringbody: Expressionheaders:  Key: Expression
```

### Properties
[Section titled “Properties”](#properties-15)
#### url
[Section titled “url”](#url)
**Type**: [Expression](#expression)

The URL to send the request to.

#### method
[Section titled “method”](#method)
**Type**: String

HTTP method (GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS).

#### body
[Section titled “body”](#body-1)
**Type**: [Expression](#expression)

Request body expression.

#### headers
[Section titled “headers”](#headers)
**Type**: Map of String to [Expression](#expression)

HTTP headers as key-value expressions.

---

## HTTPEndpointBlockInputConfig
[Section titled “HTTPEndpointBlockInputConfig”](#httpendpointblockinputconfig)
Input configuration for HTTP endpoint blocks (response configuration).

### Syntax
[Section titled “Syntax”](#syntax-16)

**

```
statusCode: Expressionbody: Expressionheaders:  Key: Expression
```

### Properties
[Section titled “Properties”](#properties-16)
#### statusCode
[Section titled “statusCode”](#statuscode)
**Type**: [Expression](#expression)

HTTP response status code.

#### body
[Section titled “body”](#body-2)
**Type**: [Expression](#expression)

Response body expression.

#### headers
[Section titled “headers”](#headers-1)
**Type**: Map of String to [Expression](#expression)

Response headers as key-value expressions.

---

## ExplodeBlockInputConfig
[Section titled “ExplodeBlockInputConfig”](#explodeblockinputconfig)
Input configuration for explode blocks.

### Syntax
[Section titled “Syntax”](#syntax-17)

**

```
items: ExpressionemittedLimit: Integer
```

### Properties
[Section titled “Properties”](#properties-17)
#### items
[Section titled “items”](#items)
**Type**: [Expression](#expression)

Expression that evaluates to an array to explode into individual events.

#### emittedLimit
[Section titled “emittedLimit”](#emittedlimit)
**Type**: Number

Maximum number of items to emit. Maximum of 1024.

---

## CollectBlockInputConfig
[Section titled “CollectBlockInputConfig”](#collectblockinputconfig)
Input configuration for collect blocks.

### Syntax
[Section titled “Syntax”](#syntax-18)

**

```
group: Expressioncount: Expressionemit: Expressionitem: Expressiondelay: Integer
```

### Properties
[Section titled “Properties”](#properties-18)
#### group
[Section titled “group”](#group-1)
**Type**: [Expression](#expression)

Expression to group items by.

#### count
[Section titled “count”](#count)
**Type**: [Expression](#expression)

Trigger based on number of items to collect before emitting.

#### emit
[Section titled “emit”](#emit)
**Type**: [Expression](#expression)

Customized trigger to decide if the group is ready to be emitted.

#### item
[Section titled “item”](#item)
**Type**: [Expression](#expression)

Expression to extract the item value from each input event.

#### delay
[Section titled “delay”](#delay)
**Type**: Number

Trigger based on delay in seconds before emitting after last item received.

---

## MemorySetBlockInputConfig
[Section titled “MemorySetBlockInputConfig”](#memorysetblockinputconfig)
Input configuration for memory set blocks.

### Syntax
[Section titled “Syntax”](#syntax-19)

**

```
key: Expressioncollection: Stringvalue: Expressionttl: Expression
```

### Properties
[Section titled “Properties”](#properties-19)
#### key
[Section titled “key”](#key)
**Type**: [Expression](#expression)

Key to store the value under.

#### collection
[Section titled “collection”](#collection)
**Type**: String

Collection name for organizing keys.

#### value
[Section titled “value”](#value)
**Type**: [Expression](#expression)

Value to store.

#### ttl
[Section titled “ttl”](#ttl)
**Type**: [Expression](#expression)

Time-to-live in seconds (optional).

---

## MemoryGetBlockInputConfig
[Section titled “MemoryGetBlockInputConfig”](#memorygetblockinputconfig)
Input configuration for memory get blocks.

### Syntax
[Section titled “Syntax”](#syntax-20)

**

```
key: Expressioncollection: String
```

### Properties
[Section titled “Properties”](#properties-20)
#### key
[Section titled “key”](#key-1)
**Type**: [Expression](#expression)

Key to retrieve the value for.

#### collection
[Section titled “collection”](#collection-1)
**Type**: String

Collection name for organizing keys.

---

## MemoryListBlockInputConfig
[Section titled “MemoryListBlockInputConfig”](#memorylistblockinputconfig)
Input configuration for memory list blocks.

### Syntax
[Section titled “Syntax”](#syntax-21)

**

```
collection: Stringlimit: ExpressionstartingKey: Expression
```

### Properties
[Section titled “Properties”](#properties-21)
#### collection
[Section titled “collection”](#collection-2)
**Type**: String

Collection name to list keys from.

#### limit
[Section titled “limit”](#limit)
**Type**: [Expression](#expression)

Maximum number of keys to return. Maximum of 100.

#### startingKey
[Section titled “startingKey”](#startingkey)
**Type**: [Expression](#expression)

Key to start listing from (for pagination).

---

## MCPToolBlockInputConfig
[Section titled “MCPToolBlockInputConfig”](#mcptoolblockinputconfig)
Input configuration for MCP tool blocks (response configuration).

### Syntax
[Section titled “Syntax”](#syntax-22)

**

```
responseBody: Expression
```

### Properties
[Section titled “Properties”](#properties-22)
#### responseBody
[Section titled “responseBody”](#responsebody)
**Type**: [Expression](#expression)

Expression for the MCP tool response body.

---

## CustomizableBlockOutput
[Section titled “CustomizableBlockOutput”](#customizableblockoutput)
Output configuration for blocks that support output customization.

**Type**: Map of String to [CoreBlockOutput](#coreblockoutput)

---

## CoreBlockOutput
[Section titled “CoreBlockOutput”](#coreblockoutput)
Configuration for a single block output.

### Syntax
[Section titled “Syntax”](#syntax-23)

**

```
outputCustomization: Expression
```

### Properties
[Section titled “Properties”](#properties-23)
#### outputCustomization
[Section titled “outputCustomization”](#outputcustomization-1)
**Type**: [Expression](#expression)

Expression to transform the output value.

---

## BlockIOLink
[Section titled “BlockIOLink”](#blockiolink)
A connection from another block’s output.

### Syntax
[Section titled “Syntax”](#syntax-24)

**

```
block: Stringoutput: String
```

### Properties
[Section titled “Properties”](#properties-24)
#### block
[Section titled “block”](#block-2)
**Type**: String

Name of the source block.

#### output
[Section titled “output”](#output)
**Type**: String

Name of the output on the source block.

---

## BlockLookupStrategy
[Section titled “BlockLookupStrategy”](#blocklookupstrategy)
Strategy for looking up an existing block (useful when renaming).

### Syntax
[Section titled “Syntax”](#syntax-25)

**

```
id: Stringname: String
```

### Properties
[Section titled “Properties”](#properties-25)
#### id
[Section titled “id”](#id-1)
**Type**: String (UUID)

Block ID to look up directly.

#### name
[Section titled “name”](#name-2)
**Type**: String

Previous block name to look up by.

---

## NoteLookupStrategy
[Section titled “NoteLookupStrategy”](#notelookupstrategy)
Strategy for looking up an existing note.

### Syntax
[Section titled “Syntax”](#syntax-26)

**

```
id: String
```

### Properties
[Section titled “Properties”](#properties-26)
#### id
[Section titled “id”](#id-2)
**Type**: String (UUID)

Note ID to look up directly.

---

## Position
[Section titled “Position”](#position-2)
Canvas position as [x, y] coordinates.

### Syntax
[Section titled “Syntax”](#syntax-27)

**

```
x: Numbery: Number
```

### Properties
[Section titled “Properties”](#properties-27)
#### x
[Section titled “x”](#x)
**Type**: Number

Horizontal coordinate of the position.

#### y
[Section titled “y”](#y)
**Type**: Number

Vertical coordinate of the position.

---

## ScheduleDefinition
[Section titled “ScheduleDefinition”](#scheduledefinition)
Schedule definition. Either cron-based or frequency-based.

### Syntax
[Section titled “Syntax”](#syntax-28)

**

```
type: Stringcron: ScheduleDefinitionCronfrequency: ScheduleDefinitionFrequency
```

### Properties
[Section titled “Properties”](#properties-28)
#### type
[Section titled “type”](#type-1)
**Type**: String (`cron`, `frequency`)

#### cron
[Section titled “cron”](#cron)
**Type**: [ScheduleDefinitionCron](#scheduledefinitioncron)

Cron schedule definition.

#### frequency
[Section titled “frequency”](#frequency)
**Type**: [ScheduleDefinitionFrequency](#scheduledefinitionfrequency)

Frequency schedule definition.

---

## ScheduleDefinitionCron
[Section titled “ScheduleDefinitionCron”](#scheduledefinitioncron)
Cron-based schedule configuration.

### Syntax
[Section titled “Syntax”](#syntax-29)

**

```
expression: Stringlocation: String
```

### Properties
[Section titled “Properties”](#properties-29)
#### expression
[Section titled “expression”](#expression-1)
**Type**: String

Cron expression defining the schedule.

#### location
[Section titled “location”](#location)
**Type**: String

IANA time zone name defining the schedule’s time zone, e.g., ‘America/Los_Angeles’. Defaults to ‘UTC’.

---

## ScheduleDefinitionFrequency
[Section titled “ScheduleDefinitionFrequency”](#scheduledefinitionfrequency)
Frequency-based schedule configuration.

### Syntax
[Section titled “Syntax”](#syntax-30)

**

```
interval: Integerunit: String
```

### Properties
[Section titled “Properties”](#properties-30)
#### interval
[Section titled “interval”](#interval)
**Type**: Number

Interval between scheduled runs, in the given unit.

#### unit
[Section titled “unit”](#unit)
**Type**: String (`seconds`, `minutes`, `hours`)

Unit of time for the interval; defaults to ‘seconds’.

---

## NoteStyleMetadata
[Section titled “NoteStyleMetadata”](#notestylemetadata)
Visual style settings for notes.

### Syntax
[Section titled “Syntax”](#syntax-31)

**

```
width: Integerheight: Integercolor: String
```

### Properties
[Section titled “Properties”](#properties-31)
#### width
[Section titled “width”](#width)
**Type**: Number

Width of the note.

#### height
[Section titled “height”](#height)
**Type**: Number

Height of the note.

#### color
[Section titled “color”](#color)
**Type**: String

Color of the note, in hex format (e.g. #18181b).

---

## MCPToolInputSchema
[Section titled “MCPToolInputSchema”](#mcptoolinputschema)
Input schema for MCP tools. Maps parameter names to their definitions.

**Type**: Map of String to [MCPToolInputProperty](#mcptoolinputproperty)

---

## MCPToolInputProperty
[Section titled “MCPToolInputProperty”](#mcptoolinputproperty)
Definition of a single MCP tool input parameter.

### Syntax
[Section titled “Syntax”](#syntax-32)

**

```
required: Booleantype: Object
```

### Properties
[Section titled “Properties”](#properties-32)
#### required
[Section titled “required”](#required)
**Type**: Boolean

Whether this input is required.

#### type
[Section titled “type”](#type-2)
**Type**: Object (JSON Schema)

The JSON schema document defining this input.

---