3.1 KiB
3.1 KiB
Table of Contents
Schemas
Schemas define both the shape of your data and how the admin UI behaves.
There are 2 types of schemas:
- collection — Regular data records
- files — Images and file uploads
Collection Reference
| Field | Required | Description |
|---|---|---|
name |
yes | Unique ID. Use camelCase plural e.g. blogPosts |
label |
yes | Friendly display name |
type |
yes | Must be "collection" |
fields |
yes | Array of field definitions. See Fields |
visible |
no | Field IDs to show in the content browser list |
groups |
no | Group IDs to split fields into tabs |
isEntry |
no | Show in sidebar. Default: false |
sortBy |
no | Default sort in browser. Prefix with - for descending e.g. -_sys.updatedAt |
cardTitle |
no | Mustache template for the record preview title e.g. {{name}} - {{slug}} |
cardImage |
no | Field name to use as the preview image |
revisions |
no | Number of revisions to keep per record. Default: 0 (disabled) |
read |
no | Roles with read access. Empty means all roles can read |
write |
no | Roles with write access. Empty means all roles can write |
Files Reference
| Field | Required | Description |
|---|---|---|
name |
yes | Unique ID. Use camelCase plural e.g. heroImages |
label |
yes | Friendly display name |
type |
yes | Must be "files" |
fields |
yes | Array of field definitions. See Fields |
disk |
no | Laravel disk name. Default: "lucent" |
path |
no | Subdirectory for uploads. Default: schema name |
groups |
no | Group IDs to split fields into tabs |
isEntry |
no | Show in sidebar. Default: false |
sortBy |
no | Default sort in browser |
cardTitle |
no | Mustache template for the record preview title |
cardImage |
no | Field name to use as the preview image |
revisions |
no | Number of revisions to keep per record |
read |
no | Roles with read access |
write |
no | Roles with write access |
System Fields
Every record automatically has these read-only system fields available in queries:
| Field | Description |
|---|---|
_sys.createdAt |
ISO 8601 creation timestamp |
_sys.updatedAt |
ISO 8601 last update timestamp |
_sys.createdBy |
User ID who created the record |
_sys.updatedBy |
User ID who last updated the record |
_sys.version |
Revision version number |
status |
draft or published |
Example
{
"schemas": [
{
"label": "Blog Posts",
"name": "blogPosts",
"isEntry": true,
"type": "collection",
"visible": [
"title",
"slug",
"_sys.updatedAt",
"status"
],
"groups": [
"Content",
"SEO"
],
"sortBy": "-_sys.createdAt",
"cardTitle": "{{title}}",
"cardImage": "cover",
"revisions": 15,
"read": [
"admin",
"editors",
"reviewers"
],
"write": [
"admin",
"editors"
],
"fields": []
}
],
"roles": ["admin", "editors", "reviewers"]
}