---
gitea: none
include_toc: true
---

# Schemas

Schemas define both the shape of your data and how the UI on the admin will behave.

There are 3 types of schemas

- Collections: Normal data
- Files: Images and files 
- Block: Used in the block editor


## Collection Reference

- **name**: The ID of the collection. Camelcase and plural is the recommended format ex. blogPosts
- **label**: The friendly name of the schema
- **type**: The type of the collection. Should be "collection" 
- **visible**: An array of field id to show on the content browser _optional_
- **groups**: A list if group ids to separate your field in different tabs _optional_
- **fields**: The list of your fields. Look the field reference for more
- **isEntry**: If this schema is important, it will show be visible on the main the sidebar. Default: false _optional_
- **sortBy**: The default sorting in the content browser _optional_
- **cardTitle**: Mustache code to customize the preview field _optional_
- **cardImage**: Field name of image you want to use as a preview image _optional_
- **revisions**: How many revisions are going to be kept for each record _optional_
- **read**: Array of user groups that have read permissions _optional_
- **write**: Array of user groups that have write permissions _optional_


## Files Reference

- **name**: The ID of the collection. Camelcase and plural is the recommended format ex. blogPosts
- **label**: The friendly name of the schema
- **type**: The type of the collection. Should be "files"
- **path**: The relative directory that these files will be stored.
- **groups**: A list if group ids to separate your field in different tabs _optional_
- **fields**: The list of your fields. Look the field reference for more
- **isEntry**: If this schema is important, it will show be visible on the main the sidebar _optional_
- **sortBy**: The default sorting in the content browser _optional_
- **cardTitle**: Mustache code to customize the preview field _optional_
- **revisions**: How many revisions are going to be kept for each record _optional_
- **read**: Array of user groups that have read permissions _optional_
- **write**: Array of user groups that have write permissions _optional_


A full Collection example without the fields: 

```json
{
  "label": "Departments",
  "name": "departments",
  "isEntry": true,
  "type": "collection",
  "visible": [
    "slug",
    "cover",
    "_sys.updatedAt",
    "status"
  ],
  "groups": [
    "Extra Info",
    "Metadata",
    "SEO"
  ],
  "sortBy": "-_sys.createdAt",
  "schemaTitle": "{{name}} {{slug}}",
  "schemaImage": "cover",
  "revisions": 15,
  "read": [
    "admin",
    "editors",
    "reviewers"
  ],
  "write": [
    "admin",
    "editors"
  ],
  "fields": []
}
```