Contentful domain model
At its core, a domain model creates a web of interconnected objects. Each object, or entity, within this model is representational and incorporates both behavior and data. Contentful has four main entity types: user, organization, space, and Environment. This guide will walk you through each of these entities, as well as their relation to each other.
A user is anyone with a Contentful account. Users can either be invited to an existing organization, or sign up individually. If a user has signed up individually, a new organization is automatically created. In any case, an existing user can always create additional organizations or be invited to other existing organizations.
Users have management authentication information attached to them, such as OAuth applications, OAuth tokens, and personal access tokens.
An organization serves, first and foremost, as a way to group users. The organization also links these users to a billing entity, so subscriptions and invoices are always tied to the organization, not your user.
Contentful uses a role-based access model, meaning that you can invite users to join your organization and those users will have different levels of access based on their organization role.
A space is a child of the organization—it acts as a container for your content and any settings related to that content. Spaces allow you to separate your data according to the structure of your projects or services. You can purchase as many spaces as you need to best structure your data.
The following settings apply to the space:
- Users: Members of the parent organization who belong to the space and their respective access roles
- Roles and permissions: User access levels within the space
- API keys: To retrieve content through one of Contentful’s APIs, a key has to be provided for authentication
- Webhooks: Send requests triggered by changes to your content model, content, or media
- Content preview: A link within the entry editor to your pre-production environment that uses the Contentful Preview API to access unpublished content
Space environments are entities within a space that allow you to create and maintain multiple versions of the space-specific data and configuration, and make changes to them in isolation. By default, each space has one environment, called master. Additionally, multiple sandbox environments can be created. These sandbox environments allow you to modify the data in your space without affecting the data in your master environment.
Environments are made up of:
- Content model: A collection of content types, which define the structure of your content
- Content: A collection of entries
- Media: A collection of assets
The following settings apply to environments:
- Locales: Manage and deliver your content in multiple languages
- UI extensions: Build customized editing experiences for the Contentful web app
Something to note is that as long as no additional environments have been set up, environments are not visible and the entities and settings listed above appear to be direct children of the space.