HomeDev GuideAPI Reference
Dev GuideAPI ReferenceUser GuideLegal TermsGitHubNuGetDev CommunityOptimizely AcademySubmit a ticketLog In
Dev Guide

Content modeling

Describes how modeling of content types in CMS (SaaS) affects the Optimizely Graph schema and indexing.

Content types defined in Optimizely Content Management System (CMS) (SaaS) are registered in a corresponding graph schema in Optimizely Graph. Content instances are indexed as queryable items in Optimizely Graph. The following describes how settings defined on the content types or content instances 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.

Content properties

Content types defined as components or elements are used as properties of other content types. In Optimizely Graph, each content type of type component or element is registered as a content type and as a property type. The property type will get 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 will have an additional property _metadata that contains metadata about the content instance, 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 indexed in Optimizely Graph, but it is impossible to filter or sort on. Neither is it part of 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 instances and the content that is indexed in Optimizely Graph. If there are content instances that you would want to exclude from Optimizely Graph indexing, then remove Read access for the role SearchIndexer for those content instances.

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