.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 thevariables 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 aschemaarray.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.
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_groupazurerm_virtual_networkaws_vpcaws_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.
.tf declaration uses optional(...) for non-required fields:
Categories
Thecategory field controls which group the template appears in inside the library:
Field Limits and Conventions
idshould be stable across versions. Renaming it creates a new template; users will not see the rename automatically.descriptionis rendered as plain text (no Markdown).- Variable
nameshould besnake_caseto match Terraform conventions. optionsare case-sensitive; the user’s selection is passed verbatim to Terraform.
Next Steps
- Variable Types & Secrets — deeper dive on each type with
.tf↔ JSON examples. - Example — AWS VPC — a manifest that exercises every advanced field on this page.