The Experience Edge schema
Learn more about entry points, endpoints, and template definitions.
Sitecore Experience Edge has a read-only GraphQL schema designed to accommodate common front-end use cases for headless Sitecore development. It exposes limited information about Sitecore items. For example, there are no Standard Fields available.
The following queries are available as entry points:
item
- allows querying an item by path or ID.layout
- allows querying an item by site and route path, typically for the purpose of accessing its Layout Service JSON (rendered
).search
- allows constructing a Boolean field search query for finding items by field value or common properties.
For more information, see the example queries and use the Docs tab in the GraphQL testing UI of the Preview endpoint IDE.
Template projection
The types available in the Experience Edge schema reflect the template definitions of the Sitecore instance that published to it. You can enable strongly-typed template fields by using inline fragments that select fields from specific types.
In Sitecore, multiple templates can have the same name and templates with field names that conflict with core fields on the item graph type. In GraphQL, the names of types and fields must be unique. When a naming collision occurs, the item or field item with the newest creation date has _{guid}
appended to the name. The creation date is used because the ordering must be stable, and a graph type name must never change after it has been referenced.
Note
GraphQL types are only created for templates that follow the Helix content structure. This means that GraphQL types are generated only for templates under the following paths:
<foundation>/sitecore/templates/Foundation</foundation>
<feature>/sitecore/templates/Feature</feature>
<project>/sitecore/templates/Project</project>
<userdefined>/sitecore/templates/User Defined</userdefined>
Pagination
Paginated queries and fields in the Experience Edge schema, such as the search query, utilize a cursor-based system to request result pages.
For paginated queries:
Query arguments include
first
(number of results to return) andafter
(the beginning cursor).first
has a default value of10
.Query results include
pageInfo
withhasNext
(whether there are more results) andendCursor
(used in the after argument to obtain the next page).Query results also include
total
(provides the total number of available results).Note
The first argument has a special meaning to query the complexity calculation used by the underlying GraphQL library of the
Preview
schema. In particular, using the nestedchildren
field on the Item graph type, can cause errors, such as Query is too complex to execute. The following section includes recommendations for handling query complexity.
Query complexity
The Experience Edge query complexity is limited to 250. We recommend you test your query before using it in a runtime environment, to make sure it meets the complexity requirements. If your query is too complex, try the following:
Break it into multiple smaller queries. For example, use one query to retrieve a data set, and apply subsequent queries to that dataset. Large queries of multiple objects increase query complexity substantially.
Remove unnecessary fields from the query.
Available fields for content search
Experience Edge includes standard fields for the GraphQL search
query. You can also use all fields of included templates (by their original template field name) for content search queries.
The following table describes the standard fields available for the search query on the Edge schema:
Field | Description |
---|---|
_templates | All template GUIDs, including base (multi-valued). |
_path | All parents by GUID (multi-valued). |
_parent | The ID of the item’s immediate parent. |
_name | The item name. |
_language | The item language. |
_hasLayout | Reflects whether the item has presentation details/layout data. |