The systemContent
schema provider built into Sitecore GraphQL does indeed provide mutations to createItem
, updateItem
, and deleteItem
. The Sitecore-provided /sitecore/api/graph/items/master
endpoint exposes these, and details can be found in the Schema Docs in the GraphQL IDE accessible at /sitecore/api/graph/items/master/ui
.
Note that for these to work successfully, the context user executing them must have appropriate authorizations. If you are using the systemService
security configuration on the endpoint (the default for the example), you may need additional configuration for it to authenticate using cookies. If using publicService
or otherwise authenticating with an API Key, the Impersonation User configured on the API Key will need appropriate rights.
Note as well that when setting item field values, the mutations accept a value of type FieldValueInput
, which expects a JSON value for the field value. The docs on this graph type provide examples of accepted values:
Field type |
Value |
Checkbox |
"true" , "false" |
Integer |
"5" |
Number |
"5.5" |
Single-Line Text |
"'Home'" |
Multi-Line Text, Rich Text |
"'line1\r\nline2'" |
Date and Datetime |
"'2019-08-04T13:33:03.969Z'" |
Checklist |
["0DD426E8-F61B-447E-8484-A1FF33115963","B3576ED6-05C9-49E7-B12B-918D5B2CF430"] |
General Link |
"{'text':'some test', 'anchor': 'anchor', 'linktype':'internal','queryString':'sc_lang=en','className': 'linkClass', 'targetItem':'110D559F-DEA5-42EA-9C1C-8A5DF7E70EF9', 'target':'target', 'url': 'some url'}" |
Note the nested double/single quotes on text values in particular, to make them valid JSON.
Example Queries
Create Item
mutation CreateItem {
createItem(
name: "ExampleItem"
template: "{76036F5E-CBCE-46D1-AF0A-4143F9B557AA}"
parent: "{0DE95AE4-41AB-4D01-9EB0-67441B7C2450}"
language: "en"
fields: [
{ name: "title", value: "'Example Item'" }
{ name: "text", value: "'This is an example item created with GraphQL'" }
]
) {
path
}
}
Update Item
mutation UpdateItem {
updateItem(
path: "/sitecore/content/ExampleItem"
language: "en"
version: 1
fields: [{ name: "title", value: "'Example Item with changed title'" }]
) {
... on SampleItem {
title {
value
}
}
}
}
Delete Item
mutation DeleteItem {
deleteItem(
path: "/sitecore/content/ExampleItem"
)
}