Managing documents using REST

The REST service allows you to manipulate the data of documents on Kentico websites. Send requests using the POST, PUT or DELETE HTTP method to the appropriate URL — append the resource paths described below to the base URL of your REST service.

The base URL of the Kentico REST service is <site domain name>/rest. For example, if your site is running at http://localhost/Kentico, use http://localhost/Kentico/rest as the base URL of the service.

Creating documents

HTTP method: POST

Resource format:

  • /content/currentsite/<culture>/document/<alias path> - creates a new document in the given culture for the site running on the domain in the base URL.
  • /content/site/<site name>/<culture>/document/<alias path> - creates a new document in the given culture on the specified site.

Use the alias path to identify the parent document under which you want to create the new document.

Set the name and other fields of the new document in the data of the POST request. Both XML and JSON formats are supported for the data.

Important:

  • When creating new documents, always set the NodeClassID field. To find the NodeClassID value for a document type, get a document of the given type using the REST service and check the data or view the ClassID column in the CMS_Class database table.
  • The request data must contain values for all fields that are set as required for the given document type.
  • The service automatically sets the system fields of the new document (such as the ID and timestamp fields).
  • Creating multiple documents in a single request is not supported. You need to send a separate POST request for each document.

Creating language versions of documents

You can use POST requests to create new language versions of existing documents:

  • Use the culture code in the resource path to set the desired language.
  • Identify the document using the alias path.
  • Specify the NodeID of the existing document in the request data. Do NOT manually set a DocumentID for the new language version.
  • Set any other required data for the document language version.

Examples

Creates a New service document (CMS.MenuItem type) under the Services document

XMLJSON

URL: ~/rest/content/currentsite/en-us/document/Services

Data:

<CMS_MenuItem>
  <NodeClassID>4114</NodeClassID>
  <DocumentName>New service</DocumentName>
  <DocumentPageTemplateID>23438</DocumentPageTemplateID>
</CMS_MenuItem>

URL: ~/rest/content/currentsite/en-us/document/Services?format=json

Data:

{
"NodeClassID":4114,
"DocumentName":"New service",
"DocumentPageTemplateID":23438
}


Creates a News article document (CMS.News type) under the News document

XMLJSON

URL: ~/rest/content/currentsite/en-us/document/News

Data:

<CMS_News>
  <NodeClassID>4112</NodeClassID>
  <NewsTitle>News article</NewsTitle>
  <NewsReleaseDate>2014-06-05T00:00:00+02:00</NewsReleaseDate>
  <NewsSummary>Summary</NewsSummary>
  <NewsText>Text</NewsText>
</CMS_News>

URL: ~/rest/content/currentsite/en-us/document/News?format=json

Data:

{
"NodeClassID":4112,
"NewsTitle":"News article",
"NewsReleaseDate":"2014-06-05T00:00:00Z",
"NewsSummary":"Summary",
"NewsText":"Text"
}


Creates a French version of the existing Services document on the sample Corporate site

XMLJSON

URL: ~/rest/content/site/CorporateSite/fr-fr/document/Services

Data:

<CMS_MenuItem>
  <NodeID>5</NodeID>
  <DocumentName>French Services</DocumentName>
</CMS_MenuItem>

URL: ~/rest/content/site/CorporateSite/fr-fr/document/Services?format=json

Data:

{
"NodeID":5,
"DocumentName":"French Services"
}


Updating existing documents

HTTP method: PUT

Updating document data

Resource format:

  • /content/currentsite/<culture>/document/<alias path> - updates the data of an existing document on the site running on the domain in the base URL.
  • /content/site/<site name>/<culture>/document/<alias path> - updates the data of an existing document on the specified site.

Use the alias path to identify the document that you want to update. Updating multiple documents in a single request is not supported. You need to send a separate PUT request for each document.

Update the values of the document's fields using the data of the PUT request. Both XML and JSON formats are supported for the data.

Updating document names

Many document types have a unique field that serves as the source for the document name (instead of the default DocumentName field). When updating the names of such document types, always set the new value for both the DocumentName field and the dedicated document type name field to ensure consistency.

Examples:

Updates the name of the Services document on the sample Corporate site

XMLJSON

URL: ~/rest/content/site/CorporateSite/en-us/document/Services

Data:

<CMS_MenuItem>
  <DocumentName>Services MODIFIED</DocumentName>
  <MenuItemName>Services MODIFIED</MenuItemName>
</CMS_MenuItem>

URL: ~/rest/content/site/CorporateSite/en-us/document/Services?format=json

Data:

{
"DocumentName":"Services MODIFIED",
"MenuItemName":"Services MODIFIED"
}


Updates the title, release date and summary of a news article on the sample Corporate site

XMLJSON

URL: ~/rest/content/site/CorporateSite/en-us/document/News/New-Consulting-Services

Data:

<CMS_News>
  <DocumentName>Consulting available</DocumentName>
  <NewsTitle>Consulting available</NewsTitle>
  <NewsReleaseDate>2014-07-04T00:00:00+02:00</NewsReleaseDate>
  <NewsSummary>Updated summary</NewsSummary>
</CMS_News>

URL: ~/rest/content/site/CorporateSite/en-us/document/News/New-Consulting-Services?format=json

Data:

{
"DocumentName":"Consulting available",
"NewsTitle":"Consulting available",
"NewsReleaseDate":"2014-07-04T00:00:00Z",
"NewsSummary":"Updated summary"
}


Workflow actions

You can also use PUT requests to move documents through the workflow life cycle, or check documents in and out when using content locking.

Resource format:

  • /content/currentsite/<culture>/<workflow action>/<alias path> - performs the given workflow action for the specified document on the site running on the domain in the base URL.
  • /content/site/<site name>/<culture>/<workflow action>/<alias path> - performs the given workflow action for the given document on the specified site.
Workflow actionDescription
publishPublishes the document.
checkoutPerforms check-out for the document. The document is checked out under the user account specified by the REST request's authentication information.
checkinPerforms check-in for the document.
archiveArchives the document.
movetonextstepMoves the document to the next workflow step.
movetopreviousstepMoves the document to the previous workflow step.

Use the alias path to identify the document for which you want to perform the workflow action. Do not submit any data when sending workflow action requests.

URL example: ~/rest/content/currentsite/en-us/checkout/Home

Deleting documents

HTTP method: DELETE

Resource format:

  • /content/currentsite/<culture>/document/<alias path> - deletes the given language version of the document for the site running on the domain in the base URL.
  • /content/site/<site name>/<culture>/document/<alias path> - deletes the given language version of the document on the specified site.

Use the alias path to identify the document that you want to delete. Deleting multiple documents in a single request is not supported. You need to send a separate DELETE request for each document.

Document deletion parameters

When deleting documents via REST, you can append the following query string parameters to the request URL:

ParameterValue (default bold)Description
deleteallculturestrue/false

Indicates if the request also deletes all language versions of the specified document.

To delete all language versions of a document, append ?deleteallcultures=true to the request URL.

destroyhistorytrue/false

Indicates if the request also deletes the document's version history.

To delete the version history together with the document, append ?destroyhistory=true to the request URL.

deleteproducttrue/false

Indicates if the request also deletes the e-commerce product associated with the specified product document.

To delete e-commerce products along with documents, append ?deleteproduct=true to the request URL.