Skip to main content
This is the complete schema reference for the manifest file Amnify reads alongside your .tf files. Every field documented here is parsed and used by Amnify; nothing here is aspirational. The schema is enforced server-side at sync time. If a manifest is malformed, the sync rejects the template and reports the error.

Top-Level Fields

Minimal valid example


Variable Definition

Every entry in the variables array describes one input that will be rendered as a form field in the Amnify UI and written to terraform.tfvars.json at deploy time.

name

Must match a variable block in your .tf files exactly. This is how user-supplied values are routed to Terraform.

type

Determines how the field is rendered and what shape Terraform expects. Supported values:
  • string — single-line text input.
  • number — numeric input, parsed as JSON number.
  • bool — toggle.
  • object — group of nested fields described by a schema array.
  • list(object) — repeating group of nested fields, with add/remove controls.

required

If true, the deployment wizard blocks progress until the field is populated. If false, the field can be left empty and the variable’s default (if set) or Terraform’s own default kicks in.

default

Pre-fills the field with this value. Should match the variable’s type. For list(object) and object, the default is rarely used — set sub-field defaults inside the nested schema instead.

options

Renders a string field as a dropdown with these choices. Useful for region selectors, sizing tiers, enum-like inputs.

sensitive

When true:
  • The form field is rendered as a masked password input.
  • The value is encrypted (AES-256-GCM, scoped per organization) before being persisted.
  • The plaintext is only decrypted in memory inside the deploy worker, just before being merged into terraform.tfvars.json.
See Variable Types & Secrets for the full encryption flow.

resource_type

Tells Amnify to render a cloud resource picker instead of a free-text input. Amnify queries the user’s connected cloud account for resources of the given Terraform type and displays them in a dropdown. Common values:
  • azurerm_resource_group
  • azurerm_virtual_network
  • aws_vpc
  • aws_subnet

parent_field

Used together with resource_type to scope a resource picker to a parent. Example: a subnet picker that only shows subnets inside the VPC the user selected earlier.

condition — Conditional Visibility

Hides a field unless a sibling variable has a specific value. Useful for “advanced” toggles that reveal further fields.

min_items

For list(object), the minimum number of entries the user must add. Use it for fields where “zero items” is meaningless (e.g. a VPC must have at least one subnet).

schema — Nested Variables

For object and list(object) types, schema is an array of variable definitions describing the nested fields. The same fields documented above apply recursively — you can nest objects inside lists inside objects to any depth.
The matching .tf declaration uses optional(...) for non-required fields:

Categories

The category field controls which group the template appears in inside the library:

Field Limits and Conventions

  • id should be stable across versions. Renaming it creates a new template; users will not see the rename automatically.
  • description is rendered as plain text (no Markdown).
  • Variable name should be snake_case to match Terraform conventions.
  • options are case-sensitive; the user’s selection is passed verbatim to Terraform.

Next Steps