name | string | Required | Property name used in stored records and APIs. See field names. |
type | 'array' | Required | Selects the Array field. |
fields | Field[] | Required | Fields included in every row. Each row also gets an id unless you define one. |
labels | { singular, plural } | Generated from name | Singular and plural row labels. Each accepts the same values as label, except false. |
minRows | number | — | Minimum number of rows when a value is present. |
maxRows | number | — | Maximum number of rows when a value is present. |
interfaceName | string | — | Name of a reusable top-level generated TypeScript interface for the rows. |
dbName | string | ({ tableName }) => string | Generated from the field path | Table name used by SQL adapters. |
label | string | Record<string, string> | (({ i18n, t }) => string) | false | Generated from name | Label shown in the admin panel. Use an object keyed by language code for translations, or false to hide the label. |
required | boolean | false | Rejects an empty value in the default validation. |
unique | boolean | false | MongoDB only: creates a unique index on the whole stored value. SQL adapters ignore it. |
index | boolean | false | MongoDB only: creates an index on the whole stored value. SQL adapters ignore it. |
localized | boolean | false | Stores one value per configured locale. Ignored without localization or inside a localized parent. Nested fields do not also need localized. |
defaultValue | object[] or ({ locale, req, user }) => value | — | Value used when the field has no value. See default values. |
validate | Validate | Built-in validator | Replaces the built-in validator. See validation. |
hooks | { beforeValidate, beforeChange, afterChange, afterRead, beforeDuplicate } | — | Arrays of FieldHook functions for each phase. See field hooks. |
access | { create, read, update } | Allowed | FieldAccess functions for each operation. See field access control. |
hidden | boolean | false | Removes the field from API responses and the admin panel while keeping stored data. |
saveToJWT | boolean | string | false | In an auth-enabled collection, copies the value into the user’s token. A string sets the token key. See token data. |
virtual | boolean | string | false | true skips database storage; a string reads a value through a relationship path. Virtual fields are read-only in the admin panel unless admin.readOnly is false. See virtual fields. |
disableDuplicate | boolean | false | Leaves the value out when a document is duplicated, so the copy uses defaultValue. |
admin | object | — | Admin-panel options. See Admin options. |
custom | Record<string, any> | — | Server-only metadata for your own code and plugins. Use admin.custom for data the browser also needs. |
jsonSchema | Array<({ jsonSchema }) => JSONSchema4> | — | Functions that modify the JSON Schema used by type generation. |