Documentation Index
Fetch the complete documentation index at: https://docs-terra.withunify.org/llms.txt
Use this file to discover all available pages before exploring further.
Field Types
Terra supports 18+ field types, from simple text inputs to complex Plaid integrations.
| Type | Description | Key Properties |
|---|
text | Single/multi-line text | inputType, multiline, placeholder |
number | Numeric input | prefix, suffix, numberType |
date | Date picker | minDate, maxDate, minAge, maxAge |
choice | Radio/checkbox/dropdown | options, multiple, renderAs |
Composite Fields
| Type | Description | Key Properties |
|---|
address | Street, city, state, zip | includeUnit |
bank | Routing + account numbers | enableBankLookup, showCheckExample |
files | File upload | accept, maxFiles, maxSizeBytes |
signature | E-signature capture | requireTypedName, legalText |
Display Fields
| Type | Description | Key Properties |
|---|
info | Markdown content block | content, variant |
section | Section header | description |
divider | Visual separator | — |
image | Display image | src, alt, caption |
link | Clickable link | url, linkText, openInNewTab |
statement | Plain text | text |
Structural Fields
| Type | Description | Key Properties |
|---|
group | Nested container | elements, collapsible |
repeated | Repeatable group | min, max, buttonLabel, itemTitle |
Integration Fields
| Type | Description | Key Properties |
|---|
plaid_id_verification | Document + selfie verification | plaidTemplateId |
plaid_bank_verification | Secure bank connection | disclaimer |
language_preference | Language selector | showNativeNames, showFlags |
Detailed Reference
Text Field
{
type: "text",
id: "full-name",
label: { en: "Full Legal Name" },
placeholder: { en: "Enter your name as it appears on your ID" },
inputType: "text", // "text" | "email" | "tel" | "url"
multiline: false,
validation: {
required: true,
minLength: 2,
maxLength: 100
}
}
Choice Field
{
type: "choice",
id: "employment-status",
label: { en: "Employment Status" },
options: [
{ value: "employed", label: { en: "Employed" } },
{ value: "self-employed", label: { en: "Self-Employed" } },
{ value: "unemployed", label: { en: "Unemployed" } },
{ value: "retired", label: { en: "Retired" } }
],
multiple: false, // Radio buttons
renderAs: "radio", // "radio" | "checkbox" | "dropdown"
optionLayout: "vertical"
}
Repeated Field (Household Members)
{
type: "repeated",
id: "household-members",
label: { en: "Household Members" },
buttonLabel: { en: "Add Member" },
itemTitle: { en: "Household Member" },
min: 0,
max: 10,
summaryFields: ["name", "relationship"],
elements: [
{ type: "text", id: "name", label: { en: "Name" } },
{ type: "date", id: "dob", label: { en: "Date of Birth" } },
{ type: "choice", id: "relationship", label: { en: "Relationship" }, ... }
]
}
Adding Custom Fields
Learn how to create new field types