Models

Your schema is defined by the models you create, and fields you add. Inside the schema editor, you can add fields, create relationships between models, and much more.

All changes to your schema are immediately available via GraphQL.

Create a modelAnchor

All models have the following settings:

Property Example Description
Display name Post The name displayed inside GraphCMS, and content editors.
API ID Post The name for fetching a single entry
Plural API ID Posts The name for fetching multiple entries
Description Blog posts Optional hint for content editors when interacting with fields.

GraphCMS will automatically scaffold default values for API ID, and Plural API ID based on the Display name. These values will be available via the API as camel case.


For example, let’s imagine we have the model Post. The following queries, and mutations would be generated by the API automatically, as well as custom input types:

  • post
  • posts
  • postVersion
  • postsConnection
  • createPost
  • updatePost
  • deletePost
  • upsertPost
  • publishPost
  • unpublishPost
  • updateManyPostsConnection
  • deleteManyPostsConnection
  • publishManyPostsConnection
  • unpublishManyPostsConnection

Learn more about queries, and mutations.

Edit a modelAnchor

You can at any time update the settings, and Preview URLs for your content models from within the schema editor.

Delete a modelAnchor

For each of the content models you have created, you can choose to update, or delete from the schema editor.

Deleting a model will also delete all of the content entries.

Adding fieldsAnchor

You can add fields to all custom models, and the system Asset model by selecting the field type from the fields list when viewing a model.

System fieldsAnchor

All models have system fields. You don't need to add an ID, created, or updated timestamp. These are managed by GraphCMS automatically.

Learn more about system fields.

Preview URLsAnchor

It's most common to create a preview URL for models that represent a page, and have a field such as a slug.

The fields on your model are available to use within the URL template. For example, a Post model may have the following preview URLs:

Preview name URL template
Production https://graphcms.com/blog/{slug}
Staging https://staging.graphcms.com/blog/{slug}
Next.js Preview https://graphcms.com/api/preview?secret=abc&slug={slug}

Did you find this page useful?

Your feedback helps us improve our docs, and product.