Primitives
Deep dive on atomic primitive fields: text, number, boolean, date.
text
A UTF-8 string. The default editor is a single-line input.
{
"name": "Title",
"slug": "title",
"type": "text",
"config": {
"required": true,
"minLength": 1,
"maxLength": 200
}
}
For multi-line content, set multiline: true:
{
"type": "text",
"config": { "multiline": true, "rows": 4 }
}
For HTML / Markdown content, use richtext instead. For code, use code.
number
A JavaScript number (double-precision float). Use integer: true for integer fields.
{
"name": "Hit points",
"slug": "hp",
"type": "number",
"config": {
"integer": true,
"min": 1,
"max": 9999,
"step": 1,
"required": true
}
}
boolean
A boolean stored as true or false. The default editor is a switch.
{
"name": "Published",
"slug": "published",
"type": "boolean",
"config": { "default": false }
}
date
An ISO 8601 timestamp string with millisecond precision. The editor is a date picker with optional time input.
{
"name": "Published at",
"slug": "published_at",
"type": "date",
"config": {
"withTime": true,
"required": false
}
}
Stored as "2026-05-13T12:34:56.789Z".
Common config across primitives
All primitive types support:
required— booleandefault— default value if not providedhelpText— string, shown under the field in the editor
Type-specific config layers on top of these.
