HomeDev GuideRecipesAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubNuGetDev CommunityAcademySubmit 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 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.

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 and returned in query results, but excluded from all filter, sort, facet, and full-text search operations. Intended for display-only fields.
  • 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.

When setting indexingType through the Content Types REST API, use the lowercase string values "disabled", "queryable", or "searchable". Omitting indexingType from the request applies Default behavior. There is no "default" API value.

Note: The following property types are indexed in Optimizely Graph regardless of the indexingType setting: XHTML String, Content Reference, Content Area, Link, URL, and inline block properties. For these types, Default, Queryable, and Searchable all result in the property being indexed; only Disabled excludes the property from the Graph schema entirely.

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

Did this page help you?