Skip to main content

Inputs Reference

Complete reference for all 13 input types available in Flows.


Overview

Inputs define the parameters users provide when executing a flow. Each input has a type, validation rules, and optional constraints.

inputs:
- id: my_input # Unique identifier (required)
type: STRING # One of 13 types (required)
description: "..." # Human-readable description
display_name: "..." # UI-friendly label
required: true # Whether input must be provided (default: true)
defaults: "..." # Default value if not provided
prefill: "..." # Suggested value shown in UI
depends_on: # Conditional visibility
inputs:
- other_input
condition: "{{ inputs.other_input == 'advanced' }}"

Input Types

STRING

Plain text input with optional length and pattern constraints.

- id: project_name
type: STRING
required: true
description: Name of the project
min_length: 3
max_length: 64
pattern: "^[a-zA-Z][a-zA-Z0-9_-]*$"
ConstraintTypeDescription
min_lengthintegerMinimum string length
max_lengthintegerMaximum string length
patternstringRegex pattern the value must match

INT

Integer number input with optional range constraints.

- id: batch_size
type: INT
defaults: 32
min: 1
max: 1024
description: Number of items per batch
ConstraintTypeDescription
minintegerMinimum allowed value
maxintegerMaximum allowed value

FLOAT

Floating-point number input with optional range constraints.

- id: learning_rate
type: FLOAT
defaults: 0.001
min: 0.0001
max: 1.0
description: Model learning rate
ConstraintTypeDescription
minfloatMinimum allowed value
maxfloatMaximum allowed value

BOOLEAN

True/false toggle.

- id: dry_run
type: BOOLEAN
defaults: false
description: Run without making changes

Accepted values: true, false


DATE

ISO 8601 date (YYYY-MM-DD).

- id: start_date
type: DATE
defaults: "2024-01-01"
description: Start date for data range

Format: YYYY-MM-DD (e.g., 2024-03-15)


DATETIME

ISO 8601 datetime.

- id: scheduled_at
type: DATETIME
description: When to schedule the execution

Format: YYYY-MM-DDTHH:MM:SS (e.g., 2024-03-15T14:30:00)


DURATION

Time duration string.

- id: timeout
type: DURATION
defaults: "300s"
description: Maximum execution time

Format: <number><unit> where unit is s (seconds), m (minutes), h (hours)


FILE

File upload input with size and extension constraints.

- id: config_file
type: FILE
required: true
description: Configuration file to upload
max_size: "10MB"
allowed_extensions:
- yaml
- yml
- json
ConstraintTypeDescription
max_sizestringMaximum file size (e.g., "10MB", "1GB")
allowed_extensionsList[string]Permitted file extensions

JSON

Structured JSON data input with optional schema validation.

- id: config
type: JSON
defaults: '{"mode": "standard", "workers": 4}'
description: JSON configuration object
schema:
type: object
properties:
mode:
type: string
enum: [standard, fast, precise]
workers:
type: integer
minimum: 1
required:
- mode
ConstraintTypeDescription
schemaobjectJSON Schema for validation

SECRET

Sensitive value that is masked in logs and UI.

- id: api_key
type: SECRET
required: true
description: API authentication key

Secrets are:

  • Masked in execution logs (displayed as ****)
  • Not displayed in the UI after entry
  • Stored securely and passed as environment variables

URI

URL/URI input with format validation.

- id: webhook_url
type: URI
required: true
description: Webhook endpoint URL

Validates that the value is a properly formatted URI.


ENUM

Single-select from a list of allowed values.

- id: environment
type: ENUM
values:
- development
- staging
- production
defaults: development
description: Target deployment environment
ConstraintTypeDescription
valuesList[string]Required. Allowed values to choose from

MULTISELECT

Multiple selections from a list of allowed values.

- id: features
type: MULTISELECT
values:
- logging
- metrics
- tracing
- alerting
defaults:
- logging
- metrics
description: Features to enable
ConstraintTypeDescription
valuesList[string]Required. Available values to choose from

Common Properties

These properties are available on all input types:

PropertyTypeDefaultDescription
idstring-Required. Unique identifier. Pattern: ^[a-zA-Z0-9][.a-zA-Z0-9_-]*$
typeInputType-Required. One of the 13 types above.
descriptionstringnullHuman-readable description shown in the UI.
display_namestringnullUI-friendly label. If omitted, id is used.
requiredbooleantrueWhether the input must be provided.
defaultsAnynullDefault value used when input is not provided.
prefillAnynullSuggested value shown in the UI form.
depends_onDependsOnnullConditional visibility rules.

Conditional Inputs (depends_on)

Inputs can be shown or hidden based on other input values:

inputs:
- id: deploy_target
type: ENUM
values: [local, cloud, hybrid]
defaults: local

- id: cloud_region
type: ENUM
values: [us-east-1, eu-west-1, ap-south-1]
depends_on:
inputs:
- deploy_target
condition: "{{ inputs.deploy_target == 'cloud' or inputs.deploy_target == 'hybrid' }}"

- id: local_path
type: STRING
depends_on:
inputs:
- deploy_target
condition: "{{ inputs.deploy_target == 'local' }}"

Template Expression Usage

Inputs are referenced in tasks using template expressions:

inputs:
- id: user_name
type: STRING

tasks:
- id: greet
type: dev.bringup.plugin.core.shell.Shell
commands:
- echo "Hello {{ inputs.user_name }}"
# Transpiled to: echo "Hello ${USER_NAME}"

The transpiler converts {{ inputs.<id> }} to ${<UPPER_SNAKE_CASE_ID>}.


Validation API

Get Input Schema

Returns a JSON Schema for the flow's inputs:

GET /flows/{namespace}/{flow_id}/schema

Response:

{
"type": "object",
"properties": {
"dataset_name": {
"type": "string",
"minLength": 3,
"maxLength": 64,
"pattern": "^[a-zA-Z][a-zA-Z0-9_-]*$"
},
"batch_size": {
"type": "integer",
"default": 32,
"minimum": 1,
"maximum": 1024
}
},
"required": ["dataset_name"]
}

Validate Inputs

POST /flows/{namespace}/{flow_id}/validate-inputs
Content-Type: application/json

{
"inputs": {
"dataset_name": "sensor-data",
"batch_size": 64
}
}

Success Response:

{
"valid": true,
"errors": []
}

Error Response:

{
"valid": false,
"errors": [
{
"input_id": "dataset_name",
"message": "Value does not match pattern: ^[a-zA-Z][a-zA-Z0-9_-]*$",
"provided_value": "123-invalid"
}
]
}

Complete Example: All Input Types

id: all-input-types
namespace: examples
description: Demonstrates all 13 input types

inputs:
- id: name
type: STRING
defaults: "test-user"
min_length: 1
max_length: 100

- id: count
type: INT
defaults: 10
min: 1
max: 1000

- id: threshold
type: FLOAT
defaults: 0.95
min: 0.0
max: 1.0

- id: enabled
type: BOOLEAN
defaults: true

- id: start_date
type: DATE
defaults: "2024-01-01"

- id: scheduled
type: DATETIME

- id: max_duration
type: DURATION
defaults: "60s"

- id: upload
type: FILE
required: false
max_size: "5MB"
allowed_extensions: [csv, json]

- id: extra_config
type: JSON
defaults: '{}'

- id: api_key
type: SECRET
required: false

- id: callback_url
type: URI
required: false

- id: priority
type: ENUM
values: [low, medium, high, critical]
defaults: medium

- id: tags
type: MULTISELECT
values: [urgent, reviewed, tested, approved]

tasks:
- id: show-inputs
type: dev.bringup.plugin.core.shell.Shell
commands:
- echo "Name: {{ inputs.name }}"
- echo "Count: {{ inputs.count }}"
- echo "Threshold: {{ inputs.threshold }}"
- echo "Enabled: {{ inputs.enabled }}"
- echo "Priority: {{ inputs.priority }}"