diff --git a/docs.json b/docs.json
index d67a0f4..31f6fcf 100644
--- a/docs.json
+++ b/docs.json
@@ -143,6 +143,7 @@
"pages": [
"module-definitions/definition-schema/module",
"module-definitions/definition-schema/inputs",
+ "module-definitions/definition-schema/input-types",
"module-definitions/definition-schema/stack",
"module-definitions/definition-schema/build",
"module-definitions/definition-schema/deploy",
diff --git a/module-definitions/definition-schema/input-types.mdx b/module-definitions/definition-schema/input-types.mdx
new file mode 100644
index 0000000..7bca501
--- /dev/null
+++ b/module-definitions/definition-schema/input-types.mdx
@@ -0,0 +1,21 @@
+---
+title: "Module definition schema: Input types"
+sidebarTitle: "Input types"
+description: "Reference every module input type — string, number, boolean, object, array, map, compound, section, git repo, and ref — with its fields and options."
+boost: 0.5
+"og:image": "https://www.ravion.com/og/docs/module-definitions/definition-schema/input-types.png"
+"twitter:image": "https://www.ravion.com/og/docs/module-definitions/definition-schema/input-types.png"
+---
+
+{/* Generated by scripts/sync-schema-reference.mjs from ../flightcontrol/packages/schemas/schema_reference/docs/module.md. Do not edit by hand. */}
+
+import SchemaReferencePart from "/snippets/schema-reference/module/input-types.mdx";
+
+
+ > The full rendered schema reference is omitted from this Markdown view to save tokens.
+ > Fetch [https://api.ravion.com/module-definitions/schema.md](https://api.ravion.com/module-definitions/schema.md) for the complete module definition schema in a compact, machine-readable format.
+
+
+
+
+
diff --git a/module-definitions/definition-schema/inputs.mdx b/module-definitions/definition-schema/inputs.mdx
index 7139006..18418fe 100644
--- a/module-definitions/definition-schema/inputs.mdx
+++ b/module-definitions/definition-schema/inputs.mdx
@@ -1,7 +1,7 @@
---
title: "Module definition schema: Inputs"
sidebarTitle: "Inputs"
-description: "Reference module input fields, types, defaults, validation rules, visibility, and conditional behavior used to configure module instances safely."
+description: "Reference module input defaults, validation rules, visibility conditions, and dynamic value references used to configure module instances safely."
boost: 0.5
"og:image": "https://www.ravion.com/og/docs/module-definitions/definition-schema/inputs.png"
"twitter:image": "https://www.ravion.com/og/docs/module-definitions/definition-schema/inputs.png"
diff --git a/scripts/sync-schema-reference.mjs b/scripts/sync-schema-reference.mjs
index be64cdf..c7dc7b4 100644
--- a/scripts/sync-schema-reference.mjs
+++ b/scripts/sync-schema-reference.mjs
@@ -38,6 +38,10 @@ const splitDocs = [
},
{title: "ECS task definitions", match: /^Ecs/},
],
+ Inputs: [
+ {title: "Inputs"},
+ {title: "Input types", match: /InputProperty$/},
+ ],
},
standaloneSections: ["Template expressions"],
titleOverrides: {ui: "UI"},
@@ -70,7 +74,13 @@ const splitDocs = [
title: "Module definition schema: Inputs",
sidebarTitle: "Inputs",
description:
- "Reference module input fields, types, defaults, validation rules, visibility, and conditional behavior used to configure module instances safely.",
+ "Reference module input defaults, validation rules, visibility conditions, and dynamic value references used to configure module instances safely.",
+ },
+ "input-types": {
+ title: "Module definition schema: Input types",
+ sidebarTitle: "Input types",
+ description:
+ "Reference every module input type — string, number, boolean, object, array, map, compound, section, git repo, and ref — with its fields and options.",
},
module: {
title: "Module definition schema: Module",
diff --git a/snippets/schema-reference/module-index.mdx b/snippets/schema-reference/module-index.mdx
index 252ef50..2ee9450 100644
--- a/snippets/schema-reference/module-index.mdx
+++ b/snippets/schema-reference/module-index.mdx
@@ -2,6 +2,7 @@
- [Module](/module-definitions/definition-schema/module)
- [Inputs](/module-definitions/definition-schema/inputs)
+- [Input types](/module-definitions/definition-schema/input-types)
- [Stack](/module-definitions/definition-schema/stack)
- [Build](/module-definitions/definition-schema/build)
- [Deploy](/module-definitions/definition-schema/deploy)
diff --git a/snippets/schema-reference/module/build.mdx b/snippets/schema-reference/module/build.mdx
index 50b0e5f..7aa11ed 100644
--- a/snippets/schema-reference/module/build.mdx
+++ b/snippets/schema-reference/module/build.mdx
@@ -59,7 +59,7 @@ Image build configuration for a module.
Build-specific inputs shown when running a module build.
Same types as module inputs — reuses the InputProperty union.
- See: [InputProperty](/module-definitions/definition-schema/inputs#inputproperty)
+ See: [InputProperty](/module-definitions/definition-schema/input-types#inputproperty)
@@ -136,7 +136,7 @@ step.
Build-specific inputs shown when running a module build.
Same types as module inputs — reuses the InputProperty union.
- See: [InputProperty](/module-definitions/definition-schema/inputs#inputproperty)
+ See: [InputProperty](/module-definitions/definition-schema/input-types#inputproperty)
@@ -212,7 +212,7 @@ Static build configuration for a module.
Build-specific inputs shown when running a module build.
Same types as module inputs — reuses the InputProperty union.
- See: [InputProperty](/module-definitions/definition-schema/inputs#inputproperty)
+ See: [InputProperty](/module-definitions/definition-schema/input-types#inputproperty)
diff --git a/snippets/schema-reference/module/deploy.mdx b/snippets/schema-reference/module/deploy.mdx
index 9c11632..475bfd0 100644
--- a/snippets/schema-reference/module/deploy.mdx
+++ b/snippets/schema-reference/module/deploy.mdx
@@ -58,7 +58,7 @@ AWS static site deployment configuration
Deployment-specific inputs shown in the deploy modal.
Same types as module inputs — reuses the InputProperty union.
- See: [InputProperty](/module-definitions/definition-schema/inputs#inputproperty)
+ See: [InputProperty](/module-definitions/definition-schema/input-types#inputproperty)
@@ -127,7 +127,7 @@ only supported deployment strategy.
Deployment-specific inputs shown in the deploy modal.
Same types as module inputs — reuses the InputProperty union.
- See: [InputProperty](/module-definitions/definition-schema/inputs#inputproperty)
+ See: [InputProperty](/module-definitions/definition-schema/input-types#inputproperty)
@@ -171,7 +171,7 @@ routing alias shifts are deliberately out of scope for v1.
Deployment-specific inputs shown in the deploy modal.
Same types as module inputs — reuses the InputProperty union.
- See: [InputProperty](/module-definitions/definition-schema/inputs#inputproperty)
+ See: [InputProperty](/module-definitions/definition-schema/input-types#inputproperty)
diff --git a/snippets/schema-reference/module/ecs-deployments.mdx b/snippets/schema-reference/module/ecs-deployments.mdx
index b9f4be3..bb4aab7 100644
--- a/snippets/schema-reference/module/ecs-deployments.mdx
+++ b/snippets/schema-reference/module/ecs-deployments.mdx
@@ -59,7 +59,7 @@ AWS ECS deployment configuration
Deployment-specific inputs shown in the deploy modal
Same types as module inputs — reuses the InputProperty union
- See: [InputProperty](/module-definitions/definition-schema/inputs#inputproperty)
+ See: [InputProperty](/module-definitions/definition-schema/input-types#inputproperty)
diff --git a/snippets/schema-reference/module/input-types.mdx b/snippets/schema-reference/module/input-types.mdx
new file mode 100644
index 0000000..69fa8da
--- /dev/null
+++ b/snippets/schema-reference/module/input-types.mdx
@@ -0,0 +1,1241 @@
+{/* Generated by scripts/sync-schema-reference.mjs from ../flightcontrol/packages/schemas/schema_reference/docs/module.md. Do not edit by hand. */}
+
+## Legend
+
+| Notation | Meaning |
+| --------------- | ---------------------------------------------- |
+| `T[]` | Array of `T` |
+| `map` | Object keyed by strings with `T` values |
+| `enum[a,b]` | One of the listed values |
+| `A \| B` | One of several types |
+| ~template | Field accepts `<< ... >>` template expressions |
+
+### InputProperty
+
+Union of all input property types.
+Discriminated by the `type` field on each property model.
+Each variant has a literal `type` property for TypeScript narrowing.
+
+One of: [StringInputProperty](#stringinputproperty), [TextInputProperty](#textinputproperty), [ObjectInputProperty](#objectinputproperty), [ObjectMapInputProperty](#objectmapinputproperty), [ObjectArrayInputProperty](#objectarrayinputproperty), [ArrayInputProperty](#arrayinputproperty), [ArrayStringInputProperty](#arraystringinputproperty), [NumberInputProperty](#numberinputproperty), [BooleanInputProperty](#booleaninputproperty), [SectionInputProperty](#sectioninputproperty), [CompoundInputProperty](#compoundinputproperty), [RefInputProperty](#refinputproperty), [GitRepoInputProperty](#gitrepoinputproperty), [KeyValueInputProperty](#keyvalueinputproperty).
+
+### ArrayInputProperty
+
+Array editor input property.
+Allows users to enter an arbitrary JSON array with syntax highlighting and validation.
+Supports both YAML and JSON formats in the UI.
+
+
+ Unique identifier for this input.
+
+ _(minLen:1)_
+
+
+
+ Text shown above the form field
+
+ _(minLen:1)_
+
+
+
+ Help text shown below the label
+
+
+
+ Only show this field when another field has a specific value
+
+ See: [ShowWhen](/module-definitions/definition-schema/inputs#showwhen)
+
+
+
+ Lock this field after first deploy — prevents changes to destructive settings
+
+
+
+ Input IDs from earlier module versions whose values this input now holds.
+ Upgrading an existing instance to this version does not trip the immutable
+ input check for the listed inputs or for this one, so a module version can
+ rename or merge immutable inputs without forcing a destroy and recreate.
+
+
+
+ Render this field as collapsible (tag when collapsed, full field when expanded)
+
+ Supported for all value-producing input types.
+ Consecutive collapsible fields are automatically grouped together.
+ Divider inputs break collapsible groups.
+
+
+
+ Input type for array editor fields
+
+ Allowed values: `array`
+
+
+
+ Default array value for the field
+
+ _(templateable)_
+
+
+
+ Placeholder text when the field is empty
+
+
+
+ Whether the field must be filled in
+
+
+### ArrayStringInputProperty
+
+Array of strings input property.
+Allows users to add/remove multiple string values.
+
+
+ Unique identifier for this input.
+
+ _(minLen:1)_
+
+
+
+ Text shown above the form field
+
+ _(minLen:1)_
+
+
+
+ Help text shown below the label
+
+
+
+ Only show this field when another field has a specific value
+
+ See: [ShowWhen](/module-definitions/definition-schema/inputs#showwhen)
+
+
+
+ Lock this field after first deploy — prevents changes to destructive settings
+
+
+
+ Input IDs from earlier module versions whose values this input now holds.
+ Upgrading an existing instance to this version does not trip the immutable
+ input check for the listed inputs or for this one, so a module version can
+ rename or merge immutable inputs without forcing a destroy and recreate.
+
+
+
+ Render this field as collapsible (tag when collapsed, full field when expanded)
+
+ Supported for all value-producing input types.
+ Consecutive collapsible fields are automatically grouped together.
+ Divider inputs break collapsible groups.
+
+
+
+ Input type for dynamic string arrays
+
+ Allowed values: `string_array`
+
+
+
+ Default array of values
+
+ _(templateable)_
+
+
+
+ Placeholder text for each input field in the array
+
+
+
+ Label for the "Add" button below the list
+
+
+
+ Allowed values — static array of options or dynamic reference for a multi-select dropdown
+
+ See: [StringValues](/module-definitions/definition-schema/inputs#stringvalues)
+
+
+
+ Whether at least one item is required
+
+
+
+ Regex patterns to validate each array item against
+
+ See: [ValidationPattern](/module-definitions/definition-schema/inputs#validationpattern)
+
+
+
+ Maximum number of items in the list. Enforces an upper bound at
+ form-validation time and on submit. Used by cert-group domains
+ fields (capped at 10 to match ACM's default SAN limit).
+ Optional.
+
+ _(format:int32)_
+
+
+### BooleanInputProperty
+
+Boolean toggle/checkbox input property.
+Renders as a toggle switch or checkbox in the UI.
+
+
+ Unique identifier for this input.
+
+ _(minLen:1)_
+
+
+
+ Text shown above the form field
+
+ _(minLen:1)_
+
+
+
+ Help text shown below the label
+
+
+
+ Only show this field when another field has a specific value
+
+ See: [ShowWhen](/module-definitions/definition-schema/inputs#showwhen)
+
+
+
+ Lock this field after first deploy — prevents changes to destructive settings
+
+
+
+ Input IDs from earlier module versions whose values this input now holds.
+ Upgrading an existing instance to this version does not trip the immutable
+ input check for the listed inputs or for this one, so a module version can
+ rename or merge immutable inputs without forcing a destroy and recreate.
+
+
+
+ Render this field as collapsible (tag when collapsed, full field when expanded)
+
+ Supported for all value-producing input types.
+ Consecutive collapsible fields are automatically grouped together.
+ Divider inputs break collapsible groups.
+
+
+
+ Input type for boolean toggle fields
+
+ Allowed values: `boolean`
+
+
+
+ Default boolean value
+
+ _(templateable)_
+
+
+### CompoundInputProperty
+
+Compound select input property.
+Allows selecting from options where each option contains multiple fields.
+The `fields` array specifies which fields from the selected value to expose.
+
+Note: CEL validation ensures values is always provided for compound inputs.
+
+
+ Unique identifier for this input.
+
+ _(minLen:1)_
+
+
+
+ Text shown above the form field
+
+ _(minLen:1)_
+
+
+
+ Help text shown below the label
+
+
+
+ Only show this field when another field has a specific value
+
+ See: [ShowWhen](/module-definitions/definition-schema/inputs#showwhen)
+
+
+
+ Lock this field after first deploy — prevents changes to destructive settings
+
+
+
+ Input IDs from earlier module versions whose values this input now holds.
+ Upgrading an existing instance to this version does not trip the immutable
+ input check for the listed inputs or for this one, so a module version can
+ rename or merge immutable inputs without forcing a destroy and recreate.
+
+
+
+ Render this field as collapsible (tag when collapsed, full field when expanded)
+
+ Supported for all value-producing input types.
+ Consecutive collapsible fields are automatically grouped together.
+ Divider inputs break collapsible groups.
+
+
+
+ Input type for compound select dropdowns
+
+ Allowed values: `compound`
+
+
+
+ List of field names to expose from the selected compound value
+
+ _(minItems:1)_
+
+
+
+ Default value — a record with the field values
+
+ _(templateable)_
+
+
+
+ Whether the field must be filled in
+
+
+
+ Allowed values — static array of options or dynamic reference (required for compound)
+
+ See: [CompoundValues](/module-definitions/definition-schema/inputs#compoundvalues)
+
+
+
+ Message shown when the dropdown has no available options
+
+
+
+ Use the current deployed value as the minimum allowed value
+
+
+### GitRepoInputProperty
+
+Git repository input property.
+Renders a repository selector that stores the full repo URL.
+
+
+ Unique identifier for this input.
+
+ _(minLen:1)_
+
+
+
+ Text shown above the form field
+
+ _(minLen:1)_
+
+
+
+ Help text shown below the label
+
+
+
+ Only show this field when another field has a specific value
+
+ See: [ShowWhen](/module-definitions/definition-schema/inputs#showwhen)
+
+
+
+ Lock this field after first deploy — prevents changes to destructive settings
+
+
+
+ Input IDs from earlier module versions whose values this input now holds.
+ Upgrading an existing instance to this version does not trip the immutable
+ input check for the listed inputs or for this one, so a module version can
+ rename or merge immutable inputs without forcing a destroy and recreate.
+
+
+
+ Render this field as collapsible (tag when collapsed, full field when expanded)
+
+ Supported for all value-producing input types.
+ Consecutive collapsible fields are automatically grouped together.
+ Divider inputs break collapsible groups.
+
+
+
+ Input type for git repository selector
+
+ Allowed values: `gitrepo`
+
+
+
+ Default repository URL
+
+
+
+ Placeholder text when the field is empty
+
+
+
+ Whether the field must be filled in
+
+
+### KeyValueInputProperty
+
+Key-value pairs input property.
+Allows users to enter a flat map of string keys to string values.
+Renders a dynamic key-value editor with add/remove buttons.
+
+
+ Unique identifier for this input.
+
+ _(minLen:1)_
+
+
+
+ Text shown above the form field
+
+ _(minLen:1)_
+
+
+
+ Help text shown below the label
+
+
+
+ Only show this field when another field has a specific value
+
+ See: [ShowWhen](/module-definitions/definition-schema/inputs#showwhen)
+
+
+
+ Lock this field after first deploy — prevents changes to destructive settings
+
+
+
+ Input IDs from earlier module versions whose values this input now holds.
+ Upgrading an existing instance to this version does not trip the immutable
+ input check for the listed inputs or for this one, so a module version can
+ rename or merge immutable inputs without forcing a destroy and recreate.
+
+
+
+ Render this field as collapsible (tag when collapsed, full field when expanded)
+
+ Supported for all value-producing input types.
+ Consecutive collapsible fields are automatically grouped together.
+ Divider inputs break collapsible groups.
+
+
+
+ Input type for key-value editor fields
+
+ Allowed values: `keyvalue`
+
+
+
+ Default key-value pairs for the field
+
+ _(templateable)_
+
+
+
+ Whether the field must have at least one key-value pair
+
+
+### NumberInputProperty
+
+Numeric input property.
+Can be a free-form number field or a dropdown/select when values are provided.
+
+Note: CEL validation ensures min <= max when both are specified.
+
+
+ Unique identifier for this input.
+
+ _(minLen:1)_
+
+
+
+ Text shown above the form field
+
+ _(minLen:1)_
+
+
+
+ Help text shown below the label
+
+
+
+ Only show this field when another field has a specific value
+
+ See: [ShowWhen](/module-definitions/definition-schema/inputs#showwhen)
+
+
+
+ Lock this field after first deploy — prevents changes to destructive settings
+
+
+
+ Input IDs from earlier module versions whose values this input now holds.
+ Upgrading an existing instance to this version does not trip the immutable
+ input check for the listed inputs or for this one, so a module version can
+ rename or merge immutable inputs without forcing a destroy and recreate.
+
+
+
+ Render this field as collapsible (tag when collapsed, full field when expanded)
+
+ Supported for all value-producing input types.
+ Consecutive collapsible fields are automatically grouped together.
+ Divider inputs break collapsible groups.
+
+
+
+ Input type for numeric fields
+
+ Allowed values: `number`
+
+
+
+ Default numeric value
+
+ _(templateable)_
+
+
+
+ Placeholder text when the field is empty
+
+
+
+ Whether the field must be filled in
+
+
+
+ Allowed values — static array of options or dynamic reference for a dropdown
+
+ See: [NumberValues](/module-definitions/definition-schema/inputs#numbervalues)
+
+
+
+ Message shown when the dropdown has no available options
+
+
+
+ Minimum allowed value
+
+ _(format:int32)_
+
+
+
+ Maximum allowed value
+
+ _(format:int32)_
+
+
+
+ Use the current deployed value as the minimum allowed value
+
+
+### ObjectArrayInputProperty
+
+
+ Unique identifier for this input.
+
+ _(minLen:1)_
+
+
+
+ Text shown above the form field
+
+ _(minLen:1)_
+
+
+
+ Help text shown below the label
+
+
+
+ Only show this field when another field has a specific value
+
+ See: [ShowWhen](/module-definitions/definition-schema/inputs#showwhen)
+
+
+
+ Lock this field after first deploy — prevents changes to destructive settings
+
+
+
+ Input IDs from earlier module versions whose values this input now holds.
+ Upgrading an existing instance to this version does not trip the immutable
+ input check for the listed inputs or for this one, so a module version can
+ rename or merge immutable inputs without forcing a destroy and recreate.
+
+
+
+ Render this field as collapsible (tag when collapsed, full field when expanded)
+
+ Supported for all value-producing input types.
+ Consecutive collapsible fields are automatically grouped together.
+ Divider inputs break collapsible groups.
+
+
+
+ Input type for structured object arrays
+
+ Allowed values: `object_array`
+
+
+
+ Default array value for the field
+
+ See: [ObjectArrayDefaultItem](/module-definitions/definition-schema/inputs#objectarraydefaultitem)
+
+ _(templateable)_
+
+
+
+ Whether the field must contain at least one item
+
+
+
+ Label for each array item, used in add buttons and editor headers
+
+
+
+ User-facing title template for each array item.
+
+ See: [ObjectCollectionItemTitleConfig](/module-definitions/definition-schema/inputs#objectcollectionitemtitleconfig)
+
+
+
+ User-facing description template shown as a secondary line for each array item.
+ Supports placeholders like {field_id}.
+
+ _(templateable)_
+
+
+
+ Input definitions for each object value in the array.
+
+ See: [InputProperty](#inputproperty)
+
+ _(minItems:1)_
+
+
+### ObjectInputProperty
+
+Object editor input property.
+Allows users to enter arbitrary object data with syntax highlighting and validation.
+Supports both YAML and JSON formats in the UI.
+
+
+ Unique identifier for this input.
+
+ _(minLen:1)_
+
+
+
+ Text shown above the form field
+
+ _(minLen:1)_
+
+
+
+ Help text shown below the label
+
+
+
+ Only show this field when another field has a specific value
+
+ See: [ShowWhen](/module-definitions/definition-schema/inputs#showwhen)
+
+
+
+ Lock this field after first deploy — prevents changes to destructive settings
+
+
+
+ Input IDs from earlier module versions whose values this input now holds.
+ Upgrading an existing instance to this version does not trip the immutable
+ input check for the listed inputs or for this one, so a module version can
+ rename or merge immutable inputs without forcing a destroy and recreate.
+
+
+
+ Render this field as collapsible (tag when collapsed, full field when expanded)
+
+ Supported for all value-producing input types.
+ Consecutive collapsible fields are automatically grouped together.
+ Divider inputs break collapsible groups.
+
+
+
+ Input type for object editor fields
+
+ Allowed values: `object`
+
+
+
+ Default object value for the field
+
+ _(templateable)_
+
+
+
+ Placeholder text when the field is empty
+
+
+
+ Whether the field must be filled in
+
+
+### ObjectMapInputProperty
+
+
+ Unique identifier for this input.
+
+ _(minLen:1)_
+
+
+
+ Text shown above the form field
+
+ _(minLen:1)_
+
+
+
+ Help text shown below the label
+
+
+
+ Only show this field when another field has a specific value
+
+ See: [ShowWhen](/module-definitions/definition-schema/inputs#showwhen)
+
+
+
+ Lock this field after first deploy — prevents changes to destructive settings
+
+
+
+ Input IDs from earlier module versions whose values this input now holds.
+ Upgrading an existing instance to this version does not trip the immutable
+ input check for the listed inputs or for this one, so a module version can
+ rename or merge immutable inputs without forcing a destroy and recreate.
+
+
+
+ Render this field as collapsible (tag when collapsed, full field when expanded)
+
+ Supported for all value-producing input types.
+ Consecutive collapsible fields are automatically grouped together.
+ Divider inputs break collapsible groups.
+
+
+
+ Input type for structured object maps
+
+ Allowed values: `object_map`
+
+
+
+ Default map value for the field
+
+ _(templateable)_
+
+
+
+ Whether the field must contain at least one entry
+
+
+
+ Metadata for the map entry key field.
+
+ See: [MapKeyConfig](/module-definitions/definition-schema/inputs#mapkeyconfig)
+
+
+
+ User-facing title template for each map item.
+
+ See: [ObjectCollectionItemTitleConfig](/module-definitions/definition-schema/inputs#objectcollectionitemtitleconfig)
+
+
+
+ Label for each map item, used in add buttons and editor headers
+
+
+
+ Input definitions for each object value in the map.
+
+ See: [InputProperty](#inputproperty)
+
+ _(minItems:1)_
+
+
+### RefInputProperty
+
+Module reference input property.
+Allows selecting another module instance or manually entering fallback inputs.
+
+
+ Unique identifier for this input.
+
+ _(minLen:1)_
+
+
+
+ Text shown above the form field
+
+ _(minLen:1)_
+
+
+
+ Help text shown below the label
+
+
+
+ Only show this field when another field has a specific value
+
+ See: [ShowWhen](/module-definitions/definition-schema/inputs#showwhen)
+
+
+
+ Lock this field after first deploy — prevents changes to destructive settings
+
+
+
+ Input IDs from earlier module versions whose values this input now holds.
+ Upgrading an existing instance to this version does not trip the immutable
+ input check for the listed inputs or for this one, so a module version can
+ rename or merge immutable inputs without forcing a destroy and recreate.
+
+
+
+ Render this field as collapsible (tag when collapsed, full field when expanded)
+
+ Supported for all value-producing input types.
+ Consecutive collapsible fields are automatically grouped together.
+ Divider inputs break collapsible groups.
+
+
+
+ Reference to another module type — format is "$ref:<module-type>"
+
+
+
+ Input definitions that copy values from the selected referenced module into
+ this module's input values. Each mapped input is saved as a normal input on
+ the current module. When users do not select a module instance, these same
+ fields are shown for manual entry.
+ Nested module references are not allowed in mapped inputs.
+
+ See: [RefFallbackInputProperty](#reffallbackinputproperty)
+
+
+
+ Whether the module reference is required
+
+
+### SectionInputProperty
+
+Visual section separator property.
+Used to separate sections in the module form.
+Does not produce any input value - purely for visual organization.
+
+
+ Unique identifier for this input.
+
+ _(minLen:1)_
+
+
+
+ Text shown above the form field
+
+ _(minLen:1)_
+
+
+
+ Help text shown below the label
+
+
+
+ Only show this field when another field has a specific value
+
+ See: [ShowWhen](/module-definitions/definition-schema/inputs#showwhen)
+
+
+
+ Input type for visual section separators — produces no value
+
+ Allowed values: `section`
+
+
+### StringInputProperty
+
+Single-line text input property.
+Can be a free-form text field or a dropdown/select when values are provided.
+
+
+ Unique identifier for this input.
+
+ _(minLen:1)_
+
+
+
+ Text shown above the form field
+
+ _(minLen:1)_
+
+
+
+ Help text shown below the label
+
+
+
+ Only show this field when another field has a specific value
+
+ See: [ShowWhen](/module-definitions/definition-schema/inputs#showwhen)
+
+
+
+ Lock this field after first deploy — prevents changes to destructive settings
+
+
+
+ Input IDs from earlier module versions whose values this input now holds.
+ Upgrading an existing instance to this version does not trip the immutable
+ input check for the listed inputs or for this one, so a module version can
+ rename or merge immutable inputs without forcing a destroy and recreate.
+
+
+
+ Render this field as collapsible (tag when collapsed, full field when expanded)
+
+ Supported for all value-producing input types.
+ Consecutive collapsible fields are automatically grouped together.
+ Divider inputs break collapsible groups.
+
+
+
+ Input type for single-line text fields
+
+ Allowed values: `string`
+
+
+
+ Default value for the field
+
+ _(templateable)_
+
+
+
+ Placeholder text when the field is empty
+
+
+
+ Static, non-editable text shown as an adornment before the input (left
+ side). Use to frame the value, e.g. a wildcard prefix. May contain a
+ << ... >> template resolved against the form context.
+
+
+
+ Static, non-editable text shown as an adornment after the input (right
+ side). May contain a << ... >> template resolved against the form context
+ (e.g. the platform domain apex). An unresolved/empty template renders no
+ suffix.
+
+
+
+ Whether the field must be filled in
+
+
+
+ Allowed values — static array of options or dynamic reference for a dropdown
+
+ See: [StringValues](/module-definitions/definition-schema/inputs#stringvalues)
+
+
+
+ Message shown when the dropdown has no available options
+
+
+
+ Regex patterns to validate against
+
+ See: [ValidationPattern](/module-definitions/definition-schema/inputs#validationpattern)
+
+
+
+ Use the current deployed value as the minimum allowed value
+
+
+### TextInputProperty
+
+Multi-line text area input property.
+Used for longer text content like descriptions, commands, or configuration.
+
+
+ Unique identifier for this input.
+
+ _(minLen:1)_
+
+
+
+ Text shown above the form field
+
+ _(minLen:1)_
+
+
+
+ Help text shown below the label
+
+
+
+ Only show this field when another field has a specific value
+
+ See: [ShowWhen](/module-definitions/definition-schema/inputs#showwhen)
+
+
+
+ Lock this field after first deploy — prevents changes to destructive settings
+
+
+
+ Input IDs from earlier module versions whose values this input now holds.
+ Upgrading an existing instance to this version does not trip the immutable
+ input check for the listed inputs or for this one, so a module version can
+ rename or merge immutable inputs without forcing a destroy and recreate.
+
+
+
+ Render this field as collapsible (tag when collapsed, full field when expanded)
+
+ Supported for all value-producing input types.
+ Consecutive collapsible fields are automatically grouped together.
+ Divider inputs break collapsible groups.
+
+
+
+ Input type for multi-line text areas
+
+ Allowed values: `text`
+
+
+
+ Default value for the field
+
+ _(templateable)_
+
+
+
+ Placeholder text when the field is empty
+
+
+
+ Whether the field must be filled in
+
+
+
+ Regex patterns to validate against
+
+ See: [ValidationPattern](/module-definitions/definition-schema/inputs#validationpattern)
+
+
+### RefFallbackInputProperty
+
+Input properties allowed inside module reference fallback inputs.
+Nested module references are intentionally excluded to prevent references from
+recursively declaring more references through their mapped inputs.
+Keep this union in sync with InputProperty except for the ref member and the
+collection variants, which recursively use this fallback union.
+
+Discriminated union. The `type` field selects which schema applies.
+
+| `type` value | Schema |
+| -------------- | --------------------------------------------------------------------------- |
+| `array` | [ArrayInputProperty](#arrayinputproperty) |
+| `boolean` | [BooleanInputProperty](#booleaninputproperty) |
+| `compound` | [CompoundInputProperty](#compoundinputproperty) |
+| `gitrepo` | [GitRepoInputProperty](#gitrepoinputproperty) |
+| `keyvalue` | [KeyValueInputProperty](#keyvalueinputproperty) |
+| `number` | [NumberInputProperty](#numberinputproperty) |
+| `object` | [ObjectInputProperty](#objectinputproperty) |
+| `object_array` | [RefFallbackObjectArrayInputProperty](#reffallbackobjectarrayinputproperty) |
+| `object_map` | [RefFallbackObjectMapInputProperty](#reffallbackobjectmapinputproperty) |
+| `section` | [SectionInputProperty](#sectioninputproperty) |
+| `string` | [StringInputProperty](#stringinputproperty) |
+| `string_array` | [ArrayStringInputProperty](#arraystringinputproperty) |
+| `text` | [TextInputProperty](#textinputproperty) |
+
+### RefFallbackObjectArrayInputProperty
+
+
+ Unique identifier for this input.
+
+ _(minLen:1)_
+
+
+
+ Text shown above the form field
+
+ _(minLen:1)_
+
+
+
+ Help text shown below the label
+
+
+
+ Only show this field when another field has a specific value
+
+ See: [ShowWhen](/module-definitions/definition-schema/inputs#showwhen)
+
+
+
+ Lock this field after first deploy — prevents changes to destructive settings
+
+
+
+ Input IDs from earlier module versions whose values this input now holds.
+ Upgrading an existing instance to this version does not trip the immutable
+ input check for the listed inputs or for this one, so a module version can
+ rename or merge immutable inputs without forcing a destroy and recreate.
+
+
+
+ Render this field as collapsible (tag when collapsed, full field when expanded)
+
+ Supported for all value-producing input types.
+ Consecutive collapsible fields are automatically grouped together.
+ Divider inputs break collapsible groups.
+
+
+
+ Input type for structured object arrays
+
+ Allowed values: `object_array`
+
+
+
+ Default array value for the field
+
+ See: [ObjectArrayDefaultItem](/module-definitions/definition-schema/inputs#objectarraydefaultitem)
+
+ _(templateable)_
+
+
+
+ Whether the field must contain at least one item
+
+
+
+ Label for each array item, used in add buttons and editor headers
+
+
+
+ User-facing title template for each array item.
+
+ See: [ObjectCollectionItemTitleConfig](/module-definitions/definition-schema/inputs#objectcollectionitemtitleconfig)
+
+
+
+ User-facing description template shown as a secondary line for each array item.
+ Supports placeholders like {field_id}.
+
+ _(templateable)_
+
+
+
+ Input definitions allowed inside a module reference's mapped inputs.
+
+ See: [RefFallbackInputProperty](#reffallbackinputproperty)
+
+ _(minItems:1)_
+
+
+### RefFallbackObjectMapInputProperty
+
+
+ Unique identifier for this input.
+
+ _(minLen:1)_
+
+
+
+ Text shown above the form field
+
+ _(minLen:1)_
+
+
+
+ Help text shown below the label
+
+
+
+ Only show this field when another field has a specific value
+
+ See: [ShowWhen](/module-definitions/definition-schema/inputs#showwhen)
+
+
+
+ Lock this field after first deploy — prevents changes to destructive settings
+
+
+
+ Input IDs from earlier module versions whose values this input now holds.
+ Upgrading an existing instance to this version does not trip the immutable
+ input check for the listed inputs or for this one, so a module version can
+ rename or merge immutable inputs without forcing a destroy and recreate.
+
+
+
+ Render this field as collapsible (tag when collapsed, full field when expanded)
+
+ Supported for all value-producing input types.
+ Consecutive collapsible fields are automatically grouped together.
+ Divider inputs break collapsible groups.
+
+
+
+ Input type for structured object maps
+
+ Allowed values: `object_map`
+
+
+
+ Default map value for the field
+
+ _(templateable)_
+
+
+
+ Whether the field must contain at least one entry
+
+
+
+ Metadata for the map entry key field.
+
+ See: [MapKeyConfig](/module-definitions/definition-schema/inputs#mapkeyconfig)
+
+
+
+ User-facing title template for each map item.
+
+ See: [ObjectCollectionItemTitleConfig](/module-definitions/definition-schema/inputs#objectcollectionitemtitleconfig)
+
+
+
+ Label for each map item, used in add buttons and editor headers
+
+
+
+ Input definitions allowed inside a module reference's mapped inputs.
+
+ See: [RefFallbackInputProperty](#reffallbackinputproperty)
+
+ _(minItems:1)_
+
diff --git a/snippets/schema-reference/module/inputs.mdx b/snippets/schema-reference/module/inputs.mdx
index 1a58273..61dc40d 100644
--- a/snippets/schema-reference/module/inputs.mdx
+++ b/snippets/schema-reference/module/inputs.mdx
@@ -14,1019 +14,6 @@
Input configuration defining the module's form fields
-### InputProperty
-
-Union of all input property types.
-Discriminated by the `type` field on each property model.
-Each variant has a literal `type` property for TypeScript narrowing.
-
-One of: [StringInputProperty](#stringinputproperty), [TextInputProperty](#textinputproperty), [ObjectInputProperty](#objectinputproperty), [ObjectMapInputProperty](#objectmapinputproperty), [ObjectArrayInputProperty](#objectarrayinputproperty), [ArrayInputProperty](#arrayinputproperty), [ArrayStringInputProperty](#arraystringinputproperty), [NumberInputProperty](#numberinputproperty), [BooleanInputProperty](#booleaninputproperty), [SectionInputProperty](#sectioninputproperty), [CompoundInputProperty](#compoundinputproperty), [RefInputProperty](#refinputproperty), [GitRepoInputProperty](#gitrepoinputproperty), [KeyValueInputProperty](#keyvalueinputproperty).
-
-### ArrayInputProperty
-
-Array editor input property.
-Allows users to enter an arbitrary JSON array with syntax highlighting and validation.
-Supports both YAML and JSON formats in the UI.
-
-
- Unique identifier for this input.
-
- _(minLen:1)_
-
-
-
- Text shown above the form field
-
- _(minLen:1)_
-
-
-
- Help text shown below the label
-
-
-
- Only show this field when another field has a specific value
-
- See: [ShowWhen](#showwhen)
-
-
-
- Lock this field after first deploy — prevents changes to destructive settings
-
-
-
- Input IDs from earlier module versions whose values this input now holds.
- Upgrading an existing instance to this version does not trip the immutable
- input check for the listed inputs or for this one, so a module version can
- rename or merge immutable inputs without forcing a destroy and recreate.
-
-
-
- Render this field as collapsible (tag when collapsed, full field when expanded)
-
- Supported for all value-producing input types.
- Consecutive collapsible fields are automatically grouped together.
- Divider inputs break collapsible groups.
-
-
-
- Input type for array editor fields
-
- Allowed values: `array`
-
-
-
- Default array value for the field
-
- _(templateable)_
-
-
-
- Placeholder text when the field is empty
-
-
-
- Whether the field must be filled in
-
-
-### ArrayStringInputProperty
-
-Array of strings input property.
-Allows users to add/remove multiple string values.
-
-
- Unique identifier for this input.
-
- _(minLen:1)_
-
-
-
- Text shown above the form field
-
- _(minLen:1)_
-
-
-
- Help text shown below the label
-
-
-
- Only show this field when another field has a specific value
-
- See: [ShowWhen](#showwhen)
-
-
-
- Lock this field after first deploy — prevents changes to destructive settings
-
-
-
- Input IDs from earlier module versions whose values this input now holds.
- Upgrading an existing instance to this version does not trip the immutable
- input check for the listed inputs or for this one, so a module version can
- rename or merge immutable inputs without forcing a destroy and recreate.
-
-
-
- Render this field as collapsible (tag when collapsed, full field when expanded)
-
- Supported for all value-producing input types.
- Consecutive collapsible fields are automatically grouped together.
- Divider inputs break collapsible groups.
-
-
-
- Input type for dynamic string arrays
-
- Allowed values: `string_array`
-
-
-
- Default array of values
-
- _(templateable)_
-
-
-
- Placeholder text for each input field in the array
-
-
-
- Label for the "Add" button below the list
-
-
-
- Allowed values — static array of options or dynamic reference for a multi-select dropdown
-
- See: [StringValues](#stringvalues)
-
-
-
- Whether at least one item is required
-
-
-
- Regex patterns to validate each array item against
-
- See: [ValidationPattern](#validationpattern)
-
-
-### BooleanInputProperty
-
-Boolean toggle/checkbox input property.
-Renders as a toggle switch or checkbox in the UI.
-
-
- Unique identifier for this input.
-
- _(minLen:1)_
-
-
-
- Text shown above the form field
-
- _(minLen:1)_
-
-
-
- Help text shown below the label
-
-
-
- Only show this field when another field has a specific value
-
- See: [ShowWhen](#showwhen)
-
-
-
- Lock this field after first deploy — prevents changes to destructive settings
-
-
-
- Input IDs from earlier module versions whose values this input now holds.
- Upgrading an existing instance to this version does not trip the immutable
- input check for the listed inputs or for this one, so a module version can
- rename or merge immutable inputs without forcing a destroy and recreate.
-
-
-
- Render this field as collapsible (tag when collapsed, full field when expanded)
-
- Supported for all value-producing input types.
- Consecutive collapsible fields are automatically grouped together.
- Divider inputs break collapsible groups.
-
-
-
- Input type for boolean toggle fields
-
- Allowed values: `boolean`
-
-
-
- Default boolean value
-
- _(templateable)_
-
-
-### CompoundInputProperty
-
-Compound select input property.
-Allows selecting from options where each option contains multiple fields.
-The `fields` array specifies which fields from the selected value to expose.
-
-Note: CEL validation ensures values is always provided for compound inputs.
-
-
- Unique identifier for this input.
-
- _(minLen:1)_
-
-
-
- Text shown above the form field
-
- _(minLen:1)_
-
-
-
- Help text shown below the label
-
-
-
- Only show this field when another field has a specific value
-
- See: [ShowWhen](#showwhen)
-
-
-
- Lock this field after first deploy — prevents changes to destructive settings
-
-
-
- Input IDs from earlier module versions whose values this input now holds.
- Upgrading an existing instance to this version does not trip the immutable
- input check for the listed inputs or for this one, so a module version can
- rename or merge immutable inputs without forcing a destroy and recreate.
-
-
-
- Render this field as collapsible (tag when collapsed, full field when expanded)
-
- Supported for all value-producing input types.
- Consecutive collapsible fields are automatically grouped together.
- Divider inputs break collapsible groups.
-
-
-
- Input type for compound select dropdowns
-
- Allowed values: `compound`
-
-
-
- List of field names to expose from the selected compound value
-
- _(minItems:1)_
-
-
-
- Default value — a record with the field values
-
- _(templateable)_
-
-
-
- Whether the field must be filled in
-
-
-
- Allowed values — static array of options or dynamic reference (required for compound)
-
- See: [CompoundValues](#compoundvalues)
-
-
-
- Message shown when the dropdown has no available options
-
-
-
- Use the current deployed value as the minimum allowed value
-
-
-### GitRepoInputProperty
-
-Git repository input property.
-Renders a repository selector that stores the full repo URL.
-
-
- Unique identifier for this input.
-
- _(minLen:1)_
-
-
-
- Text shown above the form field
-
- _(minLen:1)_
-
-
-
- Help text shown below the label
-
-
-
- Only show this field when another field has a specific value
-
- See: [ShowWhen](#showwhen)
-
-
-
- Lock this field after first deploy — prevents changes to destructive settings
-
-
-
- Input IDs from earlier module versions whose values this input now holds.
- Upgrading an existing instance to this version does not trip the immutable
- input check for the listed inputs or for this one, so a module version can
- rename or merge immutable inputs without forcing a destroy and recreate.
-
-
-
- Render this field as collapsible (tag when collapsed, full field when expanded)
-
- Supported for all value-producing input types.
- Consecutive collapsible fields are automatically grouped together.
- Divider inputs break collapsible groups.
-
-
-
- Input type for git repository selector
-
- Allowed values: `gitrepo`
-
-
-
- Default repository URL
-
-
-
- Placeholder text when the field is empty
-
-
-
- Whether the field must be filled in
-
-
-### KeyValueInputProperty
-
-Key-value pairs input property.
-Allows users to enter a flat map of string keys to string values.
-Renders a dynamic key-value editor with add/remove buttons.
-
-
- Unique identifier for this input.
-
- _(minLen:1)_
-
-
-
- Text shown above the form field
-
- _(minLen:1)_
-
-
-
- Help text shown below the label
-
-
-
- Only show this field when another field has a specific value
-
- See: [ShowWhen](#showwhen)
-
-
-
- Lock this field after first deploy — prevents changes to destructive settings
-
-
-
- Input IDs from earlier module versions whose values this input now holds.
- Upgrading an existing instance to this version does not trip the immutable
- input check for the listed inputs or for this one, so a module version can
- rename or merge immutable inputs without forcing a destroy and recreate.
-
-
-
- Render this field as collapsible (tag when collapsed, full field when expanded)
-
- Supported for all value-producing input types.
- Consecutive collapsible fields are automatically grouped together.
- Divider inputs break collapsible groups.
-
-
-
- Input type for key-value editor fields
-
- Allowed values: `keyvalue`
-
-
-
- Default key-value pairs for the field
-
- _(templateable)_
-
-
-
- Whether the field must have at least one key-value pair
-
-
-### NumberInputProperty
-
-Numeric input property.
-Can be a free-form number field or a dropdown/select when values are provided.
-
-Note: CEL validation ensures min <= max when both are specified.
-
-
- Unique identifier for this input.
-
- _(minLen:1)_
-
-
-
- Text shown above the form field
-
- _(minLen:1)_
-
-
-
- Help text shown below the label
-
-
-
- Only show this field when another field has a specific value
-
- See: [ShowWhen](#showwhen)
-
-
-
- Lock this field after first deploy — prevents changes to destructive settings
-
-
-
- Input IDs from earlier module versions whose values this input now holds.
- Upgrading an existing instance to this version does not trip the immutable
- input check for the listed inputs or for this one, so a module version can
- rename or merge immutable inputs without forcing a destroy and recreate.
-
-
-
- Render this field as collapsible (tag when collapsed, full field when expanded)
-
- Supported for all value-producing input types.
- Consecutive collapsible fields are automatically grouped together.
- Divider inputs break collapsible groups.
-
-
-
- Input type for numeric fields
-
- Allowed values: `number`
-
-
-
- Default numeric value
-
- _(templateable)_
-
-
-
- Placeholder text when the field is empty
-
-
-
- Whether the field must be filled in
-
-
-
- Allowed values — static array of options or dynamic reference for a dropdown
-
- See: [NumberValues](#numbervalues)
-
-
-
- Message shown when the dropdown has no available options
-
-
-
- Minimum allowed value
-
- _(format:int32)_
-
-
-
- Maximum allowed value
-
- _(format:int32)_
-
-
-
- Use the current deployed value as the minimum allowed value
-
-
-### ObjectArrayInputProperty
-
-
- Unique identifier for this input.
-
- _(minLen:1)_
-
-
-
- Text shown above the form field
-
- _(minLen:1)_
-
-
-
- Help text shown below the label
-
-
-
- Only show this field when another field has a specific value
-
- See: [ShowWhen](#showwhen)
-
-
-
- Lock this field after first deploy — prevents changes to destructive settings
-
-
-
- Input IDs from earlier module versions whose values this input now holds.
- Upgrading an existing instance to this version does not trip the immutable
- input check for the listed inputs or for this one, so a module version can
- rename or merge immutable inputs without forcing a destroy and recreate.
-
-
-
- Render this field as collapsible (tag when collapsed, full field when expanded)
-
- Supported for all value-producing input types.
- Consecutive collapsible fields are automatically grouped together.
- Divider inputs break collapsible groups.
-
-
-
- Input type for structured object arrays
-
- Allowed values: `object_array`
-
-
-
- Default array value for the field
-
- See: [ObjectArrayDefaultItem](#objectarraydefaultitem)
-
- _(templateable)_
-
-
-
- Whether the field must contain at least one item
-
-
-
- Label for each array item, used in add buttons and editor headers
-
-
-
- User-facing title template for each array item.
-
- See: [ObjectCollectionItemTitleConfig](#objectcollectionitemtitleconfig)
-
-
-
- User-facing description template shown as a secondary line for each array item.
- Supports placeholders like {field_id}.
-
- _(templateable)_
-
-
-
- Input definitions for each object value in the array.
-
- See: [InputProperty](#inputproperty)
-
- _(minItems:1)_
-
-
-### ObjectInputProperty
-
-Object editor input property.
-Allows users to enter arbitrary object data with syntax highlighting and validation.
-Supports both YAML and JSON formats in the UI.
-
-
- Unique identifier for this input.
-
- _(minLen:1)_
-
-
-
- Text shown above the form field
-
- _(minLen:1)_
-
-
-
- Help text shown below the label
-
-
-
- Only show this field when another field has a specific value
-
- See: [ShowWhen](#showwhen)
-
-
-
- Lock this field after first deploy — prevents changes to destructive settings
-
-
-
- Input IDs from earlier module versions whose values this input now holds.
- Upgrading an existing instance to this version does not trip the immutable
- input check for the listed inputs or for this one, so a module version can
- rename or merge immutable inputs without forcing a destroy and recreate.
-
-
-
- Render this field as collapsible (tag when collapsed, full field when expanded)
-
- Supported for all value-producing input types.
- Consecutive collapsible fields are automatically grouped together.
- Divider inputs break collapsible groups.
-
-
-
- Input type for object editor fields
-
- Allowed values: `object`
-
-
-
- Default object value for the field
-
- _(templateable)_
-
-
-
- Placeholder text when the field is empty
-
-
-
- Whether the field must be filled in
-
-
-### ObjectMapInputProperty
-
-
- Unique identifier for this input.
-
- _(minLen:1)_
-
-
-
- Text shown above the form field
-
- _(minLen:1)_
-
-
-
- Help text shown below the label
-
-
-
- Only show this field when another field has a specific value
-
- See: [ShowWhen](#showwhen)
-
-
-
- Lock this field after first deploy — prevents changes to destructive settings
-
-
-
- Input IDs from earlier module versions whose values this input now holds.
- Upgrading an existing instance to this version does not trip the immutable
- input check for the listed inputs or for this one, so a module version can
- rename or merge immutable inputs without forcing a destroy and recreate.
-
-
-
- Render this field as collapsible (tag when collapsed, full field when expanded)
-
- Supported for all value-producing input types.
- Consecutive collapsible fields are automatically grouped together.
- Divider inputs break collapsible groups.
-
-
-
- Input type for structured object maps
-
- Allowed values: `object_map`
-
-
-
- Default map value for the field
-
- _(templateable)_
-
-
-
- Whether the field must contain at least one entry
-
-
-
- Metadata for the map entry key field.
-
- See: [MapKeyConfig](#mapkeyconfig)
-
-
-
- User-facing title template for each map item.
-
- See: [ObjectCollectionItemTitleConfig](#objectcollectionitemtitleconfig)
-
-
-
- Label for each map item, used in add buttons and editor headers
-
-
-
- Input definitions for each object value in the map.
-
- See: [InputProperty](#inputproperty)
-
- _(minItems:1)_
-
-
-### RefInputProperty
-
-Module reference input property.
-Allows selecting another module instance or manually entering fallback inputs.
-
-
- Unique identifier for this input.
-
- _(minLen:1)_
-
-
-
- Text shown above the form field
-
- _(minLen:1)_
-
-
-
- Help text shown below the label
-
-
-
- Only show this field when another field has a specific value
-
- See: [ShowWhen](#showwhen)
-
-
-
- Lock this field after first deploy — prevents changes to destructive settings
-
-
-
- Input IDs from earlier module versions whose values this input now holds.
- Upgrading an existing instance to this version does not trip the immutable
- input check for the listed inputs or for this one, so a module version can
- rename or merge immutable inputs without forcing a destroy and recreate.
-
-
-
- Render this field as collapsible (tag when collapsed, full field when expanded)
-
- Supported for all value-producing input types.
- Consecutive collapsible fields are automatically grouped together.
- Divider inputs break collapsible groups.
-
-
-
- Reference to another module type — format is "$ref:<module-type>"
-
-
-
- Input definitions that copy values from the selected referenced module into
- this module's input values. Each mapped input is saved as a normal input on
- the current module. When users do not select a module instance, these same
- fields are shown for manual entry.
- Nested module references are not allowed in mapped inputs.
-
- See: [RefFallbackInputProperty](#reffallbackinputproperty)
-
-
-
- Whether the module reference is required
-
-
-### SectionInputProperty
-
-Visual section separator property.
-Used to separate sections in the module form.
-Does not produce any input value - purely for visual organization.
-
-
- Unique identifier for this input.
-
- _(minLen:1)_
-
-
-
- Text shown above the form field
-
- _(minLen:1)_
-
-
-
- Help text shown below the label
-
-
-
- Only show this field when another field has a specific value
-
- See: [ShowWhen](#showwhen)
-
-
-
- Input type for visual section separators — produces no value
-
- Allowed values: `section`
-
-
-### StringInputProperty
-
-Single-line text input property.
-Can be a free-form text field or a dropdown/select when values are provided.
-
-
- Unique identifier for this input.
-
- _(minLen:1)_
-
-
-
- Text shown above the form field
-
- _(minLen:1)_
-
-
-
- Help text shown below the label
-
-
-
- Only show this field when another field has a specific value
-
- See: [ShowWhen](#showwhen)
-
-
-
- Lock this field after first deploy — prevents changes to destructive settings
-
-
-
- Input IDs from earlier module versions whose values this input now holds.
- Upgrading an existing instance to this version does not trip the immutable
- input check for the listed inputs or for this one, so a module version can
- rename or merge immutable inputs without forcing a destroy and recreate.
-
-
-
- Render this field as collapsible (tag when collapsed, full field when expanded)
-
- Supported for all value-producing input types.
- Consecutive collapsible fields are automatically grouped together.
- Divider inputs break collapsible groups.
-
-
-
- Input type for single-line text fields
-
- Allowed values: `string`
-
-
-
- Default value for the field
-
- _(templateable)_
-
-
-
- Placeholder text when the field is empty
-
-
-
- Whether the field must be filled in
-
-
-
- Allowed values — static array of options or dynamic reference for a dropdown
-
- See: [StringValues](#stringvalues)
-
-
-
- Message shown when the dropdown has no available options
-
-
-
- Regex patterns to validate against
-
- See: [ValidationPattern](#validationpattern)
-
-
-
- Use the current deployed value as the minimum allowed value
-
-
-### TextInputProperty
-
-Multi-line text area input property.
-Used for longer text content like descriptions, commands, or configuration.
-
-
- Unique identifier for this input.
-
- _(minLen:1)_
-
-
-
- Text shown above the form field
-
- _(minLen:1)_
-
-
-
- Help text shown below the label
-
-
-
- Only show this field when another field has a specific value
-
- See: [ShowWhen](#showwhen)
-
-
-
- Lock this field after first deploy — prevents changes to destructive settings
-
-
-
- Input IDs from earlier module versions whose values this input now holds.
- Upgrading an existing instance to this version does not trip the immutable
- input check for the listed inputs or for this one, so a module version can
- rename or merge immutable inputs without forcing a destroy and recreate.
-
-
-
- Render this field as collapsible (tag when collapsed, full field when expanded)
-
- Supported for all value-producing input types.
- Consecutive collapsible fields are automatically grouped together.
- Divider inputs break collapsible groups.
-
-
-
- Input type for multi-line text areas
-
- Allowed values: `text`
-
-
-
- Default value for the field
-
- _(templateable)_
-
-
-
- Placeholder text when the field is empty
-
-
-
- Whether the field must be filled in
-
-
-
- Regex patterns to validate against
-
- See: [ValidationPattern](#validationpattern)
-
-
### ShowWhen
Conditional visibility mapping; array source values support contains and contains-all matching.
@@ -1137,32 +124,6 @@ Configuration for the string key of an object_map entry.
String used to join computed key field values. Defaults to "-".
-### RefFallbackInputProperty
-
-Input properties allowed inside module reference fallback inputs.
-Nested module references are intentionally excluded to prevent references from
-recursively declaring more references through their mapped inputs.
-Keep this union in sync with InputProperty except for the ref member and the
-collection variants, which recursively use this fallback union.
-
-Discriminated union. The `type` field selects which schema applies.
-
-| `type` value | Schema |
-| -------------- | --------------------------------------------------------------------------- |
-| `array` | [ArrayInputProperty](#arrayinputproperty) |
-| `boolean` | [BooleanInputProperty](#booleaninputproperty) |
-| `compound` | [CompoundInputProperty](#compoundinputproperty) |
-| `gitrepo` | [GitRepoInputProperty](#gitrepoinputproperty) |
-| `keyvalue` | [KeyValueInputProperty](#keyvalueinputproperty) |
-| `number` | [NumberInputProperty](#numberinputproperty) |
-| `object` | [ObjectInputProperty](#objectinputproperty) |
-| `object_array` | [RefFallbackObjectArrayInputProperty](#reffallbackobjectarrayinputproperty) |
-| `object_map` | [RefFallbackObjectMapInputProperty](#reffallbackobjectmapinputproperty) |
-| `section` | [SectionInputProperty](#sectioninputproperty) |
-| `string` | [StringInputProperty](#stringinputproperty) |
-| `string_array` | [ArrayStringInputProperty](#arraystringinputproperty) |
-| `text` | [TextInputProperty](#textinputproperty) |
-
### RefTypeDiscriminator
Type discriminator for module references.
@@ -1262,175 +223,6 @@ Used in number input validation.values arrays.
See: [ShowWhen](#showwhen)
-### RefFallbackObjectArrayInputProperty
-
-
- Unique identifier for this input.
-
- _(minLen:1)_
-
-
-
- Text shown above the form field
-
- _(minLen:1)_
-
-
-
- Help text shown below the label
-
-
-
- Only show this field when another field has a specific value
-
- See: [ShowWhen](#showwhen)
-
-
-
- Lock this field after first deploy — prevents changes to destructive settings
-
-
-
- Input IDs from earlier module versions whose values this input now holds.
- Upgrading an existing instance to this version does not trip the immutable
- input check for the listed inputs or for this one, so a module version can
- rename or merge immutable inputs without forcing a destroy and recreate.
-
-
-
- Render this field as collapsible (tag when collapsed, full field when expanded)
-
- Supported for all value-producing input types.
- Consecutive collapsible fields are automatically grouped together.
- Divider inputs break collapsible groups.
-
-
-
- Input type for structured object arrays
-
- Allowed values: `object_array`
-
-
-
- Default array value for the field
-
- See: [ObjectArrayDefaultItem](#objectarraydefaultitem)
-
- _(templateable)_
-
-
-
- Whether the field must contain at least one item
-
-
-
- Label for each array item, used in add buttons and editor headers
-
-
-
- User-facing title template for each array item.
-
- See: [ObjectCollectionItemTitleConfig](#objectcollectionitemtitleconfig)
-
-
-
- User-facing description template shown as a secondary line for each array item.
- Supports placeholders like {field_id}.
-
- _(templateable)_
-
-
-
- Input definitions allowed inside a module reference's mapped inputs.
-
- See: [RefFallbackInputProperty](#reffallbackinputproperty)
-
- _(minItems:1)_
-
-
-### RefFallbackObjectMapInputProperty
-
-
- Unique identifier for this input.
-
- _(minLen:1)_
-
-
-
- Text shown above the form field
-
- _(minLen:1)_
-
-
-
- Help text shown below the label
-
-
-
- Only show this field when another field has a specific value
-
- See: [ShowWhen](#showwhen)
-
-
-
- Lock this field after first deploy — prevents changes to destructive settings
-
-
-
- Input IDs from earlier module versions whose values this input now holds.
- Upgrading an existing instance to this version does not trip the immutable
- input check for the listed inputs or for this one, so a module version can
- rename or merge immutable inputs without forcing a destroy and recreate.
-
-
-
- Render this field as collapsible (tag when collapsed, full field when expanded)
-
- Supported for all value-producing input types.
- Consecutive collapsible fields are automatically grouped together.
- Divider inputs break collapsible groups.
-
-
-
- Input type for structured object maps
-
- Allowed values: `object_map`
-
-
-
- Default map value for the field
-
- _(templateable)_
-
-
-
- Whether the field must contain at least one entry
-
-
-
- Metadata for the map entry key field.
-
- See: [MapKeyConfig](#mapkeyconfig)
-
-
-
- User-facing title template for each map item.
-
- See: [ObjectCollectionItemTitleConfig](#objectcollectionitemtitleconfig)
-
-
-
- Label for each map item, used in add buttons and editor headers
-
-
-
- Input definitions allowed inside a module reference's mapped inputs.
-
- See: [RefFallbackInputProperty](#reffallbackinputproperty)
-
- _(minItems:1)_
-
-
### ShowWhenComparableValue
Value or values to compare against in a show_when condition; arrays mean membership for scalar sources and contains-all for array sources.
diff --git a/snippets/schema-reference/module/module.mdx b/snippets/schema-reference/module/module.mdx
index f6d840d..12512a8 100644
--- a/snippets/schema-reference/module/module.mdx
+++ b/snippets/schema-reference/module/module.mdx
@@ -18,7 +18,7 @@ Defines the module input form configuration and related metadata.
Input configuration defining the module's form fields
- See: [InputProperty](/module-definitions/definition-schema/inputs#inputproperty)
+ See: [InputProperty](/module-definitions/definition-schema/input-types#inputproperty)
diff --git a/snippets/schema-reference/module/stack.mdx b/snippets/schema-reference/module/stack.mdx
index d1fb4ee..51f949b 100644
--- a/snippets/schema-reference/module/stack.mdx
+++ b/snippets/schema-reference/module/stack.mdx
@@ -335,16 +335,29 @@ Concurrency configuration for controlling parallel execution
Behavior when the concurrency limit is reached
+ "queue" waits for a slot; "cancel-in-progress" cancels older contenders;
+ "cancel-intermediate" preserves the oldest contender and newest
+ contenders while cancelling the oldest intermediates; "skip" denies the new contender and
+ ends the run as skipped.
+ This controls trigger/step/block admission only and never relaxes the
+ separate deployment-manager serialization used by deploy steps.
Default: "queue"
- Allowed values: `queue` | `cancel-in-progress` | `skip`
+ Allowed values: `queue` | `cancel-in-progress` | `cancel-intermediate` | `skip`
- Maximum queue size when behavior is "queue"
- Only applies when behavior is "queue"
- Unset means unlimited queue depth
- 0 disables queueing when behavior is "queue"
+ Maximum queue size for "queue"; for cancelling behaviors, widens the
+ survivor window. Unset means unlimited queue capacity; 0 means no queue
+ and immediate denial. With "queue", immediate denial is reported as
+ QUEUEING_DISABLED and the pipeline run ends as cancelled with "the trigger
+ concurrency queue was full"; "skip" also denies immediately but ends the
+ run as skipped. For "cancel-in-progress" and "cancel-intermediate", the
+ survivor window is value + queue_size (plus the oldest contender for
+ "cancel-intermediate"); contenders outside it are cancelled or evicted at
+ admission even when queue_size is unset, so unset does not mean unlimited
+ retention. For "cancel-intermediate", the survivors are the oldest
+ contender plus the newest value + queue_size - 1 contenders.
_(format:int32,min:0)_
@@ -447,6 +460,7 @@ Allowed values:
- `queue`
- `cancel-in-progress`
+- `cancel-intermediate`
- `skip`
### Pipeline.ConcurrencyScope
diff --git a/snippets/schema-reference/pipeline.mdx b/snippets/schema-reference/pipeline.mdx
index e248c17..13037f1 100644
--- a/snippets/schema-reference/pipeline.mdx
+++ b/snippets/schema-reference/pipeline.mdx
@@ -30,6 +30,8 @@ Pipeline configuration - the top-level schema
Deployment variants such as production, staging, or dev — each variant can lock specific input values
See: [VariantDefinition](#variantdefinition)
+
+ _(minItems:1)_
@@ -291,16 +293,29 @@ Concurrency configuration for controlling parallel execution
Behavior when the concurrency limit is reached
+ "queue" waits for a slot; "cancel-in-progress" cancels older contenders;
+ "cancel-intermediate" preserves the oldest contender and newest
+ contenders while cancelling the oldest intermediates; "skip" denies the new contender and
+ ends the run as skipped.
+ This controls trigger/step/block admission only and never relaxes the
+ separate deployment-manager serialization used by deploy steps.
Default: "queue"
- Allowed values: `queue` | `cancel-in-progress` | `skip`
+ Allowed values: `queue` | `cancel-in-progress` | `cancel-intermediate` | `skip`
- Maximum queue size when behavior is "queue"
- Only applies when behavior is "queue"
- Unset means unlimited queue depth
- 0 disables queueing when behavior is "queue"
+ Maximum queue size for "queue"; for cancelling behaviors, widens the
+ survivor window. Unset means unlimited queue capacity; 0 means no queue
+ and immediate denial. With "queue", immediate denial is reported as
+ QUEUEING_DISABLED and the pipeline run ends as cancelled with "the trigger
+ concurrency queue was full"; "skip" also denies immediately but ends the
+ run as skipped. For "cancel-in-progress" and "cancel-intermediate", the
+ survivor window is value + queue_size (plus the oldest contender for
+ "cancel-intermediate"); contenders outside it are cancelled or evicted at
+ admission even when queue_size is unset, so unset does not mean unlimited
+ retention. For "cancel-intermediate", the survivors are the oldest
+ contender plus the newest value + queue_size - 1 contenders.
_(format:int32,min:0)_
@@ -403,6 +418,7 @@ Allowed values:
- `queue`
- `cancel-in-progress`
+- `cancel-intermediate`
- `skip`
### ConcurrencyScope
@@ -922,9 +938,9 @@ Parallel step - executes children concurrently
See: [ConcurrencyConfig](#concurrencyconfig)
-
+
How to handle failures while branches in this parallel block are running
- Default: "cancel-all"
+ Default: "finish-all"
Allowed values: `cancel-all` | `finish-running` | `finish-all`
@@ -1281,7 +1297,22 @@ Custom command CI action step
### DeployStep
-General-purpose deploy action step — triggers a deployment based on the module's deployment config.
+General-purpose deploy action step — triggers a deployment based on the
+module's deployment config.
+
+Deploy steps also acquire a separate deployment-manager lock scoped to the
+organization and module instance, so deployments of the same module
+instance serialize across pipelines and other deployment entry points.
+The effective defaults are max_concurrent=1, queue_size=1, and
+queue_overflow=oldest; module-level `deployment.concurrency` may override
+queue_size and queue_overflow. An entirely zero-valued deployment
+concurrency object receives queue_size=1, while an explicit queue_size=0
+(with the module resolver's explicit overflow value) disables queuing.
+When the queue is full and overflow is `oldest`, the queued deployment is
+evicted and its workflow is denied with reason `queue_rejected`, resulting
+in a deployment failure rather than a pipeline concurrency cancellation.
+This serialization is independent of trigger/step/block concurrency:
+`cancel-intermediate` and other pipeline behaviors do not relax it.
Unique step identifier, used for referencing in logs and dependencies
diff --git a/snippets/schema-reference/project-config.mdx b/snippets/schema-reference/project-config.mdx
index 63b4087..0626dfc 100644
--- a/snippets/schema-reference/project-config.mdx
+++ b/snippets/schema-reference/project-config.mdx
@@ -36,6 +36,8 @@ Writable project metadata accepted by project config apply.
User-provided project identifier. When provided, it must match the project in the route.
+ When the route identifier does not resolve to an existing project, `givenId` is required and
+ must equal it, which confirms the config intends to create that project.