Show examples in:
Field

DatoCMS offers a number of different fields that you can combine together to create a Model. Using the database metaphore, fields are like table columns, and when creating them you need to specify their type (string, float, etc.) and any required validation.

Different field types require different settings

When looking at a field resource, you have to pay attention to two particular properties, validators and appearance.

The validators property expresses the set of validations to be performed server-side on a specific field value for it to be considered valid, while the appearance property lets you specify how the field itself will be presented inside the form to the final editor.

For both properties, the value to specify depends on the type of field itself. For example, you can add a "Limit character count" validation to a Single-line string field, or set its appearence to "Show it as heading", but they won't be accepted for a ie. Color field, as it supports different validations and appearance settings.

Specifying validations

The validators property requires an object whose keys are the validations that you want to be enforced, and the values are objects representing any settings that the validation itself requires. If the validation doesn't have additional settings, you just pass down an empty object.

This is a valid example for a Single-line string field:

{
"validators": {
// "required" validator has no settings
"required": {},
// "length" validator requires "min" and/or "max" properties
"length": { "min": 80 }
}
}

Below you'll find a summary of all the validators available for each field type with their settings.

Some validators are required for a specific type of field. For example, the Modular Content field needs to have a rich_text_blocks validator, specifying which types of blocks it can contain.

Specifying the appearance

The appearance property requires an object with three specific properties: editor, parameters and addons.

The editor represents the type of editor that the users will see inside the form to change the value of this specific field. Depending on the type of field, DatoCMS offers a number of different editors for you to choose from. The parameters property is an object representing any additional settings that the editor itself might require.

This is a valid example for a Single-line string field:

{
"appearance": {
// single_line is a DatoCMS built-in editor that you can use with single-line string fields
"editor": "single_line",
// each built-in editor has specific settings
"parameters": { "heading": true, "placeholder": "My blog post title" },
"addons": []
},
}

Following you'll find a summary of all the editors available for each field type with their settings.

Setting the appearance to a field editor provided by a plugin

If the project contains a plugin that exposes manual field editors, you can also configure the field to be presented with it instead of using one of the built-in editors.

In this case:

  • the editor property is the plugin's project-specific autogenerated UUID. You can get it from the last part of the plugin's URL within your project's Configuration screen (e.g. https://your-project.admin.datocms.com/configuration/plugins/PLUGIN_UUID/), or via API with a List all plugins call.
  • the field_extension property must be the ID of the specific manual field editor that the plugin exposes. This is set in the plugin's own source code, within a manualFieldExtension() call in its entry point (usually something like index.tsx).
  • the parameters property must provide a configuration object compatible with the config screen of the manual field extension, or an empty object if it doesn't require any configuration.
{
"appearance": {
// "2132" is a the ID of a plugin exposing a manual field editor
"editor": "2134",
// "starRating" is a manual field editor exposed by the plugin
"field_extension": "starRating",
// this is a valid configuration for the "starRating" field editor
"parameters": { "maxRating": 5, "starsColor": "#ff0000" },
"addons": []
},
}

Configuring manual field addons

If the project contains plugins that expose manual field addons, you can also add them to the field via the addons property.

{
"appearance": {
"editor": "single_line",
"parameters": { "heading": true, "placeholder": "My blog post title" },
"addons": [
{
// "2138" is a the ID of a plugin exposing a manual addon editor
"id": "2138",
// "loremIpsumGenerator" is a manual field addon exposed by the plugin
"field_extension": "loremIpsumGenerator",
// this is a valid configuration for the "loremIpsumGenerator" field addon
"parameters": { "sentences": 2 },
}
]
},
}

Available field types

Single-line string (string)
PropertyValue
Codestring
Built-in editors for the fieldsingle_line, string_radio_group, string_select
Available validatorsrequired, unique, length, format, enum
Multi-line text (text)
PropertyValue
Codetext
Built-in editors for the fieldmarkdown, wysiwyg, textarea
Available validatorsrequired, length, format
Boolean (boolean)
PropertyValue
Codeboolean
Built-in editors for the fieldboolean, boolean_radio_group
Available validatorsno validators available
Integer (integer)
PropertyValue
Codeinteger
Built-in editors for the fieldinteger
Available validatorsrequired, number_range
Float (float)
PropertyValue
Codefloat
Built-in editors for the fieldfloat
Available validatorsrequired, number_range
Date (date)
PropertyValue
Codedate
Built-in editors for the fielddate_picker
Available validatorsrequired, date_range
Date time (date_time)
PropertyValue
Codedate_time
Built-in editors for the fielddate_time_picker
Available validatorsrequired, date_time_range
Color (color)
PropertyValue
Codecolor
Built-in editors for the fieldcolor_picker
Available validatorsrequired
JSON (json)
PropertyValue
Codejson
Built-in editors for the fieldjson, string_multi_select, string_checkbox_group
Available validatorsrequired
Location (lat_lon)
PropertyValue
Codelat_lon
Built-in editors for the fieldmap
Available validatorsrequired
SEO and Social (seo)
PropertyValue
Codeseo
Built-in editors for the fieldseo
Available validatorsrequired_seo_fields, file_size, image_dimensions, image_aspect_ratio, title_length, description_length
Slug (slug)
PropertyValue
Codeslug
Built-in editors for the fieldslug
Available validatorsrequired, length, slug_format, slug_title_field
External video (video)
PropertyValue
Codevideo
Built-in editors for the fieldvideo
Available validatorsrequired
Single-asset (file)
PropertyValue
Codefile
Built-in editors for the fieldfile
Available validatorsrequired, file_size, image_dimensions, image_aspect_ratio, extension, required_alt_title
Asset gallery (gallery)
PropertyValue
Codegallery
Built-in editors for the fieldgallery
Available validatorssize, file_size, image_dimensions, image_aspect_ratio, extension, required_alt_title
Single link (link)
PropertyValue
Codelink
Built-in editors for the fieldlink_select, link_embed
Default editorlink_select
Required validatorsitem_item_type
Other validators availablerequired, unique
Multiple links (links)
PropertyValue
Codelinks
Built-in editors for the fieldlinks_select, links_embed
Default editorlinks_select
Required validatorsitems_item_type
Other validators availablesize
Modular content (rich_text)
PropertyValue
Coderich_text
Built-in editors for the fieldrich_text
Required validatorsrich_text_blocks
Other validators availablesize
Single Block (single_block)
PropertyValue
Codesingle_block
Built-in editors for the fieldframed_single_block, frameless_single_block
Required validatorssingle_block_blocks
Other validators availablerequired
Structured text (structured_text)
PropertyValue
Codestructured_text
Built-in editors for the fieldstructured_text
Required validatorsstructured_text_blocks, structured_text_links
Other validators availablelength

Validators

date_range

Accept dates only inside a specified date range.

ParameterTypeRequiredDescription
minISO 8601 dateMinimum date
maxISO 8601 dateMaximum date

At least one of the parameters must be specified.

date_time_range

Accept date times only inside a specified date range.

ParameterTypeRequiredDescription
minISO 8601 datetimeMinimum datetime
maxISO 8601 datetimeMaximum datetime

At least one of the parameters must be specified.

enum

Only accept a specific set of values

ParameterTypeRequiredDescription
valuesArray<String>Set of allowed values
extension

Only accept assets with specific file extensions.

ParameterTypeRequiredDescription
extensionsArray<String>Set of allowed file extensions
predefined_listone of "image", "transformable_image", "video", "document"Allowed file type

Only one of the parameters must be specified.

file_size

Accept assets only inside a specified date range.

ParameterTypeRequiredDescription
min_valueIntegerNumeric value for minimum filesize
min_unitone of "B", "KB", "MB"Unit for minimum filesize
max_valueIntegerNumeric value for maximum filesize
max_unitone of "B", "KB", "MB"Unit for maximum filesize

At least one couple of value/unit must be specified.

format

Accepts only strings that match a specified format.

ParameterTypeRequiredDescription
custom_patternRegexpOptionalCustom regular expression for validation
predefined_pattern"email" or "url"OptionalSpecifies a pre-defined format (email or URL)

Note: Only one of custom_pattern or predefined_pattern should be specified.

If custom_pattern is used, an additional description parameter can be provided to serve as a hint for the user. This hint offers a simple explanation of the expected pattern, such as "The field must end with an 's'", instead of the default message like "Field must match the pattern: /s$/".

slug_format

Only accept slugs having a specific format.

ParameterTypeRequiredDescription
custom_patternRegexpRegular expression to be validated
predefined_pattern"webpage_slug"Allowed format

Only one of the parameters must be specified.

image_dimensions

Accept assets only within a specified height and width range.

ParameterTypeRequiredDescription
width_min_valueIntegerNumeric value for minimum width
width_max_valueIntegerNumeric value for maximum height
height_min_valueIntegerNumeric value for minimum width
height_max_valueIntegerNumeric value for maximum height

At least one pair of height/width parameters must be specified.

image_aspect_ratio

Accept assets only within a specified aspect ratio range.

ParameterTypeRequiredDescription
min_ar_numeratorIntegerNumerator part of the minimum aspect ratio
min_ar_denominatorIntegerDenominator part of the minimum aspect ratio
eq_ar_numeratorIntegerNumerator part for the required aspect ratio
eq_ar_denominatorIntegerDenominator part for the required aspect ratio
max_ar_numeratorIntegerNumerator part of the maximum aspect ratio
max_ar_denominatorIntegerDenominator part of the maximum aspect ratio

At least one pair of numerator/denominator must be specified.

item_item_type

Only accept references to records of the specified models.

ParameterTypeRequiredDescription
item_typesArray<Model ID>Set of allowed model IDs
on_publish_with_unpublished_references_strategy"fail", "publish_references" (default value: "fail")Strategy to apply when a publishing is requested and this field references some unpublished records
on_reference_unpublish_strategy"fail", "unpublish", "delete_references" (default value: "fail")Strategy to apply when unpublishing is requested for a record referenced by this field
on_reference_delete_strategy"fail", "delete_references" (default value: "delete_references")Strategy to apply when deletion is requested for a record referenced by this field

Possible values for on_publish_with_unpublished_references_strategy:

  • "fail": Fail the operation and notify the user
  • "publish_references": Publish also the referenced records

Possible values for on_reference_unpublish_strategy:

  • "fail": Fail the operation and notify the user
  • "unpublish": Unpublish also this record
  • "delete_references": Try to remove the reference to the unpublished record (if the field has a required validation it will fail)

Possible values for on_reference_delete_strategy:

  • "fail": Fail the operation and notify the user
  • "delete_references": Try to remove the reference to the deleted record (if the field has a required validation it will fail)
items_item_type

Only accept references to records of the specified models.

ParameterTypeRequiredDescription
item_typesArray<Model ID>Set of allowed model IDs
on_publish_with_unpublished_references_strategy"fail", "publish_references" (default value: "fail")Strategy to apply when a publishing is requested and this field references some unpublished records
on_reference_unpublish_strategy"fail", "unpublish", "delete_references" (default value: "fail")Strategy to apply when unpublishing is requested for a record referenced by this field
on_reference_delete_strategy"fail", "delete_references" (default value: "delete_references")Strategy to apply when deletion is requested for a record referenced by this field

Possible values for on_publish_with_unpublished_references_strategy:

  • "fail": Fail the operation and notify the user
  • "publish_references": Publish also the referenced records

Possible values for on_reference_unpublish_strategy:

  • "fail": Fail the operation and notify the user
  • "unpublish": Unpublish also this record
  • "delete_references": Try to remove the reference to the unpublished record (if the field has a required validation it will fail)

Possible values for on_reference_delete_strategy:

  • "fail": Fail the operation and notify the user
  • "delete_references": Try to remove the reference to the deleted record (if the field has a required validation it will fail)
length

Accept strings only with a specified number of characters.

ParameterTypeRequiredDescription
minIntegerMinimum length
eqIntegerExpected length
maxIntegerMaximum length

At least one parameter must be specified.

number_range

Accept numbers only inside a specified range.

ParameterTypeRequiredDescription
minFloatMinimum value
maxFloatMaximum value

At least one of the parameters must be specified.

required

Value must be specified or it won't be valid.

required_alt_title

Assets contained in the field are required to specify custom title or alternate text, or they won't be valid.

ParameterTypeRequiredDescription
titleBooleanWhether the title for the asset must be specified
altBooleanWhether the alternate text for the asset must be specified

At least one of the parameters must be specified.

required_seo_fields

SEO field has to specify one or more properties, or it won't be valid.

ParameterTypeRequiredDescription
titleBooleanWhether the meta title must be specified
descriptionBooleanWhether the meta description must be specified
imageBooleanWhether the social sharing image must be specified
twitter_cardBooleanWhether the type of Twitter card must be specified

At least one of the parameters must be specified.

title_length

Limits the length of the title for a SEO field. Search engines usually truncate title tags to 60 character so it is a good practice to keep the title around this length.

ParameterTypeRequiredDescription
minIntegerMinimum value
maxIntegerMaximum value

At least one of the parameters must be specified.

description_length

Limits the length of the description for a SEO field. Search engines usually truncate description tags to 160 character so it is a good practice to keep the description around this length.

ParameterTypeRequiredDescription
minIntegerMinimum value
maxIntegerMaximum value

At least one of the parameters must be specified.

rich_text_blocks

Only accept references to block records of the specified block models.

ParameterTypeRequiredDescription
item_typesArray<Block Model ID>Set of allowed Block Model IDs
single_block_blocks

Only accept references to block records of the specified block models.

ParameterTypeRequiredDescription
item_typesArray<Block Model ID>Set of allowed Block Model IDs
sanitization

Checks for the presence of malicious cose in HTML fields: content is valid if no dangerous code is present.

ParameterTypeRequiredDescription
sanitize_before_validationBooleanContent is actively sanitized before applying the validation
structured_text_blocks

Only accept references to block records of the specified block models.

ParameterTypeRequiredDescription
item_typesArray<Block Model ID>Set of allowed Block Model IDs
structured_text_links

Only accept itemLink to inlineItem nodes for records of the specified models.

ParameterTypeRequiredDescription
item_typesArray<Model ID>Set of allowed model IDs
on_publish_with_unpublished_references_strategy"fail", "publish_references" (default value: "fail")Strategy to apply when a publishing is requested and this field references some unpublished records
on_reference_unpublish_strategy"fail", "unpublish", "delete_references" (default value: "delete_references")Strategy to apply when unpublishing is requested for a record referenced by this field
on_reference_delete_strategy"fail", "delete_references" (default value: "delete_references")Strategy to apply when deletion is requested for a record referenced by this field

Possible values for on_publish_with_unpublished_references_strategy:

  • "fail": Fail the operation and notify the user
  • "publish_references": Publish also the referenced records

Possible values for on_reference_unpublish_strategy:

  • "fail": Fail the operation and notify the user
  • "unpublish": Unpublish also this record
  • "delete_references": Try to remove the reference to the unpublished record (if the field has a required validation it will fail)

Possible values for on_reference_delete_strategy:

  • "fail": Fail the operation and notify the user
  • "delete_references": Try to remove the reference to the deleted record (if the field has a required validation it will fail)
size

Only accept a number of items within the specified range.

ParameterTypeRequiredDescription
minIntegerMinimum length
eqIntegerExpected length
maxIntegerMaximum length
multiple_ofIntegerThe number of items must be multiple of this value

At least one parameter must be specified.

slug_title_field

Specifies the ID of the Single-line string field that will be used to generate the slug

ParameterTypeRequiredDescription
title_field_idField IDThe field that will be used to generate the slug
unique

The value must be unique across the whole collection of records.

Configuration parameters for DatoCMS built-in field editors

If a field editor is not specified in this table, just pass an empty object {} as its configuration parameters.

boolean_radio_group

Radio group input for boolean fields.

ParameterTypeRequiredDescription
positive_radio{ label: string, hint?: string }Radio input for positive choice (true)
negative_radio{ label: string, hint?: string }Radio input for negative choice (false)
string_radio_group

Radio group input for string fields.

ParameterTypeRequiredDescription
radiosArray<{ label: string, value: string, hint?: string }>The different radio options
string_select

Select input for string fields.

ParameterTypeRequiredDescription
optionsArray<{ label: string, value: string, hint?: string }>The different select options
string_multi_select

Select input for JSON fields, to edit an array of strings.

ParameterTypeRequiredDescription
optionsArray<{ label: string, value: string, hint?: string }>The different select options
string_checkbox_group

Multiple chechboxes input for JSON fields, to edit an array of strings.

ParameterTypeRequiredDescription
optionsArray<{ label: string, value: string, hint?: string }>The different select options
single_line

Simple textual input for Single-line string fields.

ParameterTypeRequiredDescription
headingBooleanIndicates if the field should be shown bigger, as a field representing a heading
placeholderStringA placeholder that will be shown in the editor's input to provide editors with an example.
markdown

Markdown editor for Multiple-paragraph text fields.

ParameterTypeRequiredDescription
toolbarArray<String>Specify which buttons the toolbar should have. Valid values: "heading", "bold", "italic", "strikethrough", "code", "unordered_list", "ordered_list", "quote", "link", "image", "fullscreen"
wysiwyg

HTML editor for Multiple-paragraph text fields.

ParameterTypeRequiredDescription
toolbarArray<String>Specify which buttons the toolbar should have. Valid values: "format", "bold", "italic", "strikethrough", "code", "ordered_list", "unordered_list", "quote", "table", "link", "image", "show_source", "undo", "redo", "align_left", "align_center", "align_right", "align_justify", "outdent", "indent", "fullscreen"
textarea

Basic textarea editor for Multiple-paragraph text fields.

ParameterTypeRequiredDescription
placeholderStringA placeholder that will be shown in the editor's input to provide editors with an example.
color_picker

Built-in editor for Color fields.

ParameterTypeRequiredDescription
enable_alphaBooleanShould the color picker allow to specify the alpha value?
preset_colorsArray<Hex color string>List of preset colors to offer to the user
slug

Built-in editor for Slug fields.

ParameterTypeRequiredDescription
url_prefixStringA prefix that will be shown in the editor's form to give some context to your editors.
placeholderStringA placeholder that will be shown in the editor's input to provide editors with an example.
seo

Built-in editor for seo fields.

ParameterTypeRequiredDescription
fieldsArray<String>Specify which fields of the SEO input should be visible to editors. Valid values: "title", "description", "image", "no_index", "twitter_card"
previewsArray<String>Specify which previews should be visible to editors. Valid values: "google_search", "twitter", "slack", "whatsapp", "telegram", "facebook", "linkedin"
rich_text

Built-in editor for Modular content fields.

ParameterTypeRequiredDescription
start_collapsedBooleanWhether you want block records collapsed by default or not
framed_single_block

Built-in editor for Single block fields.

ParameterTypeRequiredDescription
start_collapsedBooleanWhether you want block record collapsed by default or not
structured_text

Built-in editor for Structured text fields.

ParameterTypeRequiredDescription
nodesArray<String>Specify which nodes the field should allow. Valid values: "blockquote", "code", "heading", "link", "list", "thematicBreak"
marksArray<String>Specify which marks the field should allow. Valid values: "strong", "emphasis", "underline", "strikethrough", "code", "highlight"
heading_levelsArray<Integer>If nodes includes "heading", specify which heading levels the field should allow. Valid values: numbers between 1 and 6
blocks_start_collapsedBooleanWhether you want block nodes collapsed by default or not
show_links_target_blankBooleanWhether you want to show the "Open this link in a new tab?" checkbox, that fills in the target: "_blank" meta attribute for links
show_links_meta_editorBooleanWhether you want to show the complete meta editor for links
link_select and links_select

Use a select input with auto-completion to pick the records to reference inside the field.

link_embed and links_embed

Use an expanded view with records' image preview to pick the records to reference inside the field.

integer

Built-in editor for Integer fields.

ParameterTypeRequiredDescription
placeholderStringA placeholder that will be shown in the editor's input to provide editors with an example.
float

Built-in editor for Float fields.

ParameterTypeRequiredDescription
placeholderStringA placeholder that will be shown in the editor's input to provide editors with an example.

Object payload

id  string
RFC 4122 UUID of field expressed in URL-safe base64 format
type  string
Must be exactly "field"
label  string  Example: "Title"

The label of the field

field_type  enum  Example: "string"

Type of input

api_key  string  Example: "title"

Field API key

localized  boolean  Example: true

Whether the field needs to be multilanguage or not

validators  object  Example: {"required":{}}

Optional field validations

position  integer  Example: 1

Ordering index

hint  string, null  Example: "This field will be used as post title"

Field hint

default_value  boolean, null, string, number, object  Example: {"en":"A default value","it":"Un valore di default"}

Default value for Field. When field is localized accepts an object of default values with site locales as keys

appearance  object  Example: {"editor":"single_line","parameters":{"heading":false},"addons":[{"id":"1234","field_extension":"lorem_ipsum","parameters":{}}]}

Field appearance details, plugin configuration and field add-ons

deep_filtering_enabled  boolean  Example: true

Whether deep filtering for block models is enabled in GraphQL or not

item_type{ type: "item_type", id: item_type.id }

Field item type

fieldsetnull, { type: "fieldset", id: fieldset.id }

Fieldset linkage

Available endpoints