Skip to content

Flow Definition Reference

This page documents the YAML schema for Flow definitions used with the Flows TF Provider.

The root object for a flow definition.

appInstallations:
Key: AppInstallation
dataTables:
Key: DataTable
agentPools:
Key: AgentPool
blocks:
- Block
notes:
- Note

Type: Map of String to AppInstallation

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

Type: Map of String to DataTable

Data tables used by blocks in this flow. Keys are references used by Data Table blocks.

Type: Map of String to AgentPool

Agent pools used by HTTP Request blocks. Keys are local references used by block configs. Each entry identifies a pool by its name or agent pool ID.

Type: Array of Block

List of blocks in the flow.

Type: Array of Note

Sticky notes on the canvas.


A block in the flow.

name: String
description: String
alternativeLookupStrategy: BlockLookupStrategy
type: BlockType
position: Position
config: BlockConfig
inputs: BlockInputs
outputs: BlockOutputs
errorHandler: String
dynamicOutputKeys:
- String
group: String

Type: String

The name of the block. Unique within the flow.

Type: String

Optional description of what this block does.

Type: BlockLookupStrategy

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

Type: BlockType

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

Type: Position

Canvas position as [x, y] coordinates.

Type: One of: HTTPEndpointBlockConfig (for httpEndpoint), ScheduleBlockConfig (for schedule), MCPToolBlockConfig (for mcpTool), AppBlockConfig (for app blocks), SpaceliftBlockConfig (for spacelift), DataTableCreateRowConfig (for dataTableCreateRow), DataTableGetRowConfig (for dataTableGetRow), DataTableUpdateRowConfig (for dataTableUpdateRow), DataTableQueryRowsConfig (for dataTableQueryRows), DataTableDeleteRowConfig (for dataTableDeleteRow), DataTableSetRowAssignedUsersConfig (for dataTableShareRow)

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

Type: One of: CoreBlockInputs (for core blocks), AppBlockInputs (for app blocks), SpaceliftBlockInputs (for spacelift), ConcurrencyGroupBlockInputs (for concurrencyGroup), GroupBlockIOConfig (for group blocks)

Input connections and configuration.

Type: One of: CustomizableBlockOutput (for most blocks), GroupBlockIOConfig (for group blocks)

Output configuration and customization.

Type: String

Name of the block to receive error events.

Type: Array of String

Output keys to pre-create for blocks with dynamically managed outputs.

Type: String

Name of the group this block belongs to.


A sticky note on the canvas.

body: String
position: Position
style: NoteStyleMetadata
alternativeLookupStrategy: NoteLookupStrategy

Type: String

Markdown content of the note.

Type: Position

Canvas position as [x, y] coordinates.

Type: NoteStyleMetadata

Visual style settings for the note.

Type: NoteLookupStrategy

Alternative strategy for looking up an existing note.


Describes an app installation referenced by blocks.

appName: String
appVersion: String
id: String

Type: String

The name of the app.

Type: String

Version of the app.

Type: String (UUID)

Installation ID (UUID format).


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 > 10
delay: !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

Describes a data table referenced by blocks.

id: String
name: String
schema: DataTableSchema

Type: String (UUID)

Data table ID (UUID format).

Type: String

The name of the data table.

Type: DataTableSchema

Schema of the data table.


The columns a data table holds.

columns:
- DataTableSchemaColumn

Type: Array of DataTableSchemaColumn

List of columns in the data table.


A single data table column.

name: String
type: String
dataTableRef: String

Type: String

The name of the column.

Type: String (string, integer, float, boolean, datetime, json, row_ref)

The type of the column. One of string, integer, boolean, datetime, json, float, object, row_ref.

Type: String

The slug of the data table this column references.


Identifies an agent pool by name or ID, for blocks that run through a private agent pool.

name: String
id: String

Type: String

The name of the agent pool.

Type: String (UUID)

Agent pool ID (UUID format). If both id and name are provided, id takes precedence.


Specifies whether the block is a core block or an app block. Exactly one must be set.

appBlock: AppBlockType
coreBlock: String
kind: String

Type: AppBlockType

App block type specification.

Type: String (condition, sleep, transform, httpRequest, explode, collect, memorySet, memoryGet, memoryList, schedule, httpEndpoint, mcpTool, handleError, group, dataTableCreateRow, dataTableUpdateRow, dataTableGetRow, dataTableQueryRows, dataTableDeleteRow, dataTableShareRow, formOpened, showForm, concurrencyGroup, spacelift)

Core block type name.

Type: String

Sub-block of a core block family (required for coreBlock: spacelift, e.g. triggerRun).


Specification for an app block.

block: String
appInstallation: String
schema: AppBlockSchema

Type: String

The block type name within the app.

Type: String

Reference to an app installation key defined in appInstallations.

Type: Object (app block schema)

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


Configuration for HTTP Endpoint blocks.

path: String
methods:
- String
audience: String

Type: String

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

Type: Array of String

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

Type: String (world, organization, project)

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


Configuration for Schedule blocks.

definition: ScheduleDefinition

Type: ScheduleDefinition

Schedule definition (cron or frequency-based).


Configuration for MCP Tool blocks.

inputSchema: MCPToolInputSchema

Type: MCPToolInputSchema

JSON Schema defining the tool’s input parameters.


Configuration for app blocks.

Type: Map of String to Expression


Configuration for Data Table Create Row blocks.

table: String

Type: String

Reference to a data table key defined in dataTables.


Configuration for Data Table Get Row blocks.

table: String

Type: String

Reference to a data table key defined in dataTables.


Configuration for Data Table Update Row blocks.

table: String

Type: String

Reference to a data table key defined in dataTables.


Configuration for Data Table Query Rows blocks.

table: String
limit: Integer

Type: String

Reference to a data table key defined in dataTables.

Type: Number

Maximum number of rows to return.


Configuration for Data Table Delete Row blocks.

table: String

Type: String

Reference to a data table key defined in dataTables.


Configuration for Data Table Share Row blocks.

table: String

Type: String

Reference to a data table key defined in dataTables.


Input configuration for core blocks.

default: CoreBlockInput

Type: CoreBlockInput

The default input.


A single input with links and configuration.

links:
- BlockIOLink
config: Object

Type: Array of BlockIOLink

Connections from other block outputs.

Type: One of: ConditionBlockInputConfig (for condition), SleepBlockInputConfig (for sleep), TransformBlockInputConfig (for transform), HTTPRequestBlockInputConfig (for httpRequest), HTTPEndpointBlockInputConfig (for httpEndpoint), ExplodeBlockInputConfig (for explode), CollectBlockInputConfig (for collect), MemorySetBlockInputConfig (for memorySet), MemoryGetBlockInputConfig (for memoryGet), MemoryListBlockInputConfig (for memoryList), MCPToolBlockInputConfig (for mcpTool), ConcurrencyGroupBlockInputConfig (for concurrencyGroup), DataTableCreateRowInputConfig (for dataTableCreateRow), DataTableGetRowInputConfig (for dataTableGetRow), DataTableUpdateRowInputConfig (for dataTableUpdateRow), DataTableQueryRowsInputConfig (for dataTableQueryRows), DataTableDeleteRowInputConfig (for dataTableDeleteRow), DataTableSetRowAssignedUsersInputConfig (for dataTableShareRow)

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


Input configuration for app blocks.

Type: Map of String to AppBlockInput


A single app block input with links and configuration.

links:
- BlockIOLink
config:
Key: Expression

Type: Array of BlockIOLink

Connections from other block outputs.

Type: Map of String to Expression

Input-specific configuration expressions.


Block-level configuration for Spacelift blocks, resolved once when saved rather than per event.

Type: Map of String to Expression


Input configuration for Spacelift blocks, keyed by socket name.

Type: Map of String to SpaceliftBlockInput


A single Spacelift input socket, with links and the configuration the block’s kind declares on it.

links:
- BlockIOLink
config:
Key: Expression

Type: Array of BlockIOLink

Connections from other block outputs.

Type: Map of String to Expression

Input-specific configuration expressions.


Input configuration for Concurrency Group blocks, which take events on two sockets.

acquire: CoreBlockInput
release: CoreBlockInput

Type: CoreBlockInput

Events to queue in the concurrency group.

Type: CoreBlockInput

Release input to mark the active item as processed.


Input/output configuration for Group blocks.

Type: Map of String to GroupBlockIOLinks


Configuration for a single group input/output socket.

name: String
links:
- BlockIOLink
outputCustomization: Expression
sensitivePaths:
- String

Type: String

Name of the socket.

Type: Array of BlockIOLink

Connections for this socket.

Type: Expression

Expression to transform the output value.

Type: Array of String

JSONPath expressions marking sensitive parts of the output.


Input configuration for Condition blocks.

condition: Expression

Type: Expression

JavaScript expression that evaluates to a boolean.


Input configuration for Sleep blocks.

sleep: Expression

Type: Expression

Duration to sleep in seconds.


Input configuration for Transform blocks.


Input configuration for HTTP Request blocks.

url: Expression
method: String
body: Expression
headers:
Key: Expression
agentPool: String

Type: Expression

The URL to send the request to.

Type: String

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

Type: Expression

Request body expression.

Type: Map of String to Expression

HTTP headers as key-value expressions.

Type: String

Reference to an agent pool key defined in agentPools.


Input configuration for HTTP Endpoint blocks (response configuration).

statusCode: Expression
body: Expression
headers:
Key: Expression

Type: Expression

HTTP response status code.

Type: Expression

Response body expression.

Type: Map of String to Expression

Response headers as key-value expressions.


Input configuration for Explode blocks.

items: Expression
emittedLimit: Integer

Type: Expression

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

Type: Number

Maximum number of items to emit. Maximum of 1024.


Input configuration for Collect blocks.

group: Expression
count: Expression
emit: Expression
item: Expression
delay: Integer

Type: Expression

Expression to group items by.

Type: Expression

Trigger based on number of items to collect before emitting.

Type: Expression

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

Type: Expression

Expression to extract the item value from each input event.

Type: Number

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


Input configuration for Memory Set blocks.

key: Expression
collection: String
value: Expression
ttl: Expression

Type: Expression

Key to store the value under.

Type: String

Collection name for organizing keys.

Type: Expression

Value to store.

Type: Expression

Time-to-live in seconds (optional).


Input configuration for Memory Get blocks.

key: Expression
collection: String

Type: Expression

Key to retrieve the value for.

Type: String

Collection name for organizing keys.


Input configuration for Memory List blocks.

collection: String
limit: Expression
startingKey: Expression

Type: String

Collection name to list keys from.

Type: Expression

Maximum number of keys to return. Maximum of 100.

Type: Expression

Key to start listing from (for pagination).


Input configuration for MCP Tool blocks (response configuration).

responseBody: Expression

Type: Expression

Expression for the MCP Tool response body.


Input configuration for a Concurrency Group block’s sockets.

groupKey: Expression
itemKey: Expression

Type: Expression

Expression to compute the group key. Null means all events share one group.

Type: Expression

Expression to compute the item key. Used to match releases to active items.


Input configuration for Data Table Create Row blocks.

row: Expression
ttl: Expression

Type: Expression

Row object to be added to the table.

Type: Expression

Time to live in seconds. The row will expire after this duration.


Input configuration for Data Table Get Row blocks.

rowID: Expression

Type: Expression

Expression for the row ID to retrieve.


Input configuration for Data Table Update Row blocks.

rowID: Expression
row: Expression
ttl: Expression

Type: Expression

Expression for the row ID to update.

Type: Expression

Row object with updated fields.

Type: Expression

Time to live in seconds. The row will expire after this duration.


Input configuration for Data Table Query Rows blocks.

filter: Expression
queryOrders: Expression
continuationToken: Expression

Type: Expression

Expression for the query filter.

Type: Expression

Expression for the query sort orders.

Type: Expression

Continuation token for paginated queries.


Input configuration for Data Table Delete Row blocks.

rowIDs: Expression

Type: Expression

Expression for the row IDs to delete.


Input configuration for Data Table Share Row blocks.

rowID: Expression
assignees: Expression

Type: Expression

Expression for the row ID to assign users to.

Type: Expression

Expression for user emails to assign. Can use ‘stored’ variable.


Output configuration for blocks that support output customization.

Type: Map of String to CoreBlockOutput


Configuration for a single block output.

outputCustomization: Expression
sensitivePaths:
- String

Type: Expression

Expression to transform the output value.

Type: Array of String

JSONPath expressions marking sensitive parts of the output.


A connection from another block’s output.

block: String
output: String

Type: String

Name of the source block.

Type: String

Name of the output on the source block.


Strategy for looking up an existing block (useful when renaming).

id: String
name: String

Type: String (UUID)

Block ID to look up directly.

Type: String

Previous block name to look up by.


Strategy for looking up an existing note.

id: String

Type: String (UUID)

Note ID to look up directly.


Canvas position as [x, y] coordinates.

x: Number
y: Number

Type: Number

Horizontal coordinate of the position.

Type: Number

Vertical coordinate of the position.


Schedule definition. Either cron-based or frequency-based.

type: String
cron: ScheduleDefinitionCron
frequency: ScheduleDefinitionFrequency

Type: String (cron, frequency)

Type of the schedule definition.

Type: ScheduleDefinitionCron

Cron schedule definition. Required when type is ‘cron’.

Type: ScheduleDefinitionFrequency

Frequency schedule definition. Required when type is ‘frequency’.


Cron-based schedule configuration.

expression: String
location: String

Type: String

Cron expression defining the schedule.

Type: String

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


Frequency-based schedule configuration.

interval: Integer
unit: String

Type: Number

Interval between scheduled runs, in the given unit.

Type: String (seconds, minutes, hours)

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


Visual style settings for notes.

width: Integer
height: Integer
color: String

Type: Number

Width of the note.

Type: Number

Height of the note.

Type: String

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


Input schema for MCP tools. Maps parameter names to their definitions.

Type: Map of String to MCPToolInputProperty


Definition of a single MCP tool input parameter.

required: Boolean
type: Object

Type: Boolean

Whether this input is required.

Type: Object (JSON Schema)

The JSON schema document defining this input.