---
title: Content modeling
slug: cms-saas/docs/content-modeling-saas-graph
docTags: 
createdAt: 2026-07-30T20:18:09.000Z
---

[Content types](docId\:IIrc48HRxDZe6C7wiVBVT) defined in Optimizely Content Management System (CMS) (SaaS) are registered in a corresponding graph schema in [Optimizely Graph](docId\:aM0WpNsNXe_n26IhkX5sG). Content instances are indexed as queryable items in Optimizely Graph. The following describes how settings defined on the content types or content items are indexed in Optimizely Graph.

## Base types

When a content type is defined, the base type for that content type is also specified. Each base type has a corresponding Optimizely Graph schema defined that can be used to query content types of a certain base type. For example, all pages or all media types. See [Content base types](docId:9HkNAajEbNXyGOVfRfRUr).

## Content properties

Content types defined as components are used as properties of other content types. In Optimizely Graph, each content type of type component is registered as a content type and as a property type. The property type gets the suffix `Property`. For example, if a content type `Teaser` is defined with base type `component`, then two graph types are registered, `Teaser` and `TeaserProperty`.

The type `Teaser` is used when the component type is used as a standalone instance (shared block or component) or within a ContentArea. The property type `TeaserProperty` is used when the type `Teaser` is used as a property on another content type. The difference between the graph types `Teaser` and `TeaserProperty` is that `Teaser` has an additional property `_metadata` that contains metadata about the content item, such as `key` and `displayName`.

## Indexing type

When modeling a content type property in CMS (SaaS), the field `indexingType` is specified to control how the property should be indexed within Optimizely Graph. The different possible values are:

- `Default` – The property is stored in Optimizely Graph and can be used to filter, but can not be included in full-text searches.
- `Queryable` – The property is indexed in Optimizely Graph and can be used in filtering and sorting. The property is not included in full-text searches.
- `Searchable` – The property is included in Optimizely Graph and can be used in filtering and sorting. The property is also included in full-text searches.
- `Disabled` – The property is not included in Optimizely Graph indexing.

## Access rights

The Optimizely Graph indexing of content is performed by a principal that is part of the role `SearchIndexer`. By default, this role has read access to content items and the content that is indexed in Optimizely Graph. If there are content items you want to exclude from Optimizely Graph indexing, remove `Read` access for the role `SearchIndexer` for those content items.

## Reserved names

GraphQL does not have a namespace resolution for types, and types must be unique in naming. The following content type names are reserved to avoid conflicts with those built into CMS (SaaS) and Optimizely Graph:

- `String`
- `Int`
- `Float`
- `DateTime`
- `JSON`
- `Boolean`
- `RichText` or `SearchableRichText`
- `Link`
- `ContentReference`
- `ContentUrl`
