A description is a product’s, or a category’s, name, text, slug and layout areas in one language. It keeps its content in revisions, like a page, and is published on its own: a product with an unpublished description has no page. Descriptions are created with their product or category, and changed here.
Descriptions
Product and category descriptions: the content and the URL of a product or category in one language.
About descriptions
Show a product description by its URL#
/cdna-api/products/product-description/{path}
Finds a description by its path, as the site does: a custom URL first, then the slug.
- Access
- Admin users and integrations, with an OAuth access token or an API key.
- Model
- ProductDescription, in the Reference
Parameters
pathpathrequired- string
- The custom URL without its leading slash, or the slug.
propertiesquery- selector
- The fields and relations to return, such as
{id,name,slug,fullPath,published,product{id,code}}.
Example
GET /cdna-api/products/product-description/api-sandbox-mug?properties={id,name,slug,fullPath,published,product{id,code}} HTTP/1.1
Host: hub.coredna.com
Authorization: Bearer YOUR_ACCESS_TOKEN
Accept: application/json{
"result": "success",
"data": {
"id": 1,
"name": "API sandbox mug",
"slug": "api-sandbox-mug",
"fullPath": "/products/api-sandbox/api-sandbox-mug",
"published": "2026-10-18T01:26:41+00:00",
"product": {
"id": 1,
"code": "API-SANDBOX-MUG"
}
}
}Edit a product description#
/cdna-api/products/product-description/{id}
Changes a product description. Fields left out keep their values.
- Access
- Admin users and integrations, with an OAuth access token or an API key.
- Returns
- The saved description under
data.productDescription, and amessage.
Parameters
idpathrequired- integer
- The description id.
name, slugbody- string
- The name and the path segment.
publishedbody- datetime
truepublishes now, a future datetime schedules,nullunpublishes. Needs the publish permission.revisions, patchRevisionbody- object
- Its layout areas, as on a page: see Collection operations.
A revisions object makes a new revision that is not live unless the request also sends "activeRevision": true, and it holds only the areas sent. To change some areas and keep the rest, use patchRevision with originRevision.
Example
PUT /cdna-api/products/product-description/9 HTTP/1.1
Host: hub.coredna.com
Authorization: Bearer YOUR_ACCESS_TOKEN
Accept: application/json
Content-Type: application/json
{
"name": "API sandbox mug, stoneware"
}Check that a product slug is free#
/cdna-api/products/product-descriptions/check-slug
Answers {"result":"success"} when no product description uses the slug. A slug in use answers HTTP 200 too, with "result": "error" and a message.
- Access
- Admin users and integrations, with an OAuth access token or an API key.
Parameters
slugbodyrequired- string
- The slug to check.
idbody- integer
- A description to leave out of the check, when renaming it.
parentbody- integer
- The parent to check under, when slugs are unique per parent.
sitebody- integer
- The site to check in.
Example
POST /cdna-api/products/product-descriptions/check-slug HTTP/1.1
Host: hub.coredna.com
Authorization: Bearer YOUR_ACCESS_TOKEN
Accept: application/json
Content-Type: application/json
{
"slug": "api-sandbox-teapot"
}{
"result": "success"
}{
"result": "error",
"message": "A record with this slug already exists"
}Edit a category description#
/cdna-api/products/category-description/{id}
Changes a category description. Fields left out keep their values.
- Access
- Admin users and integrations, with an OAuth access token or an API key.
- Returns
- The saved description under
data.categoryDescription, and amessage.
Parameters
idpathrequired- integer
- The description id.
name, slugbody- string
- The name and the path segment.
revisions, patchRevisionbody- object
- Its layout areas, as on a page.
A revisions object makes a new revision that is not live unless the request also sends "activeRevision": true, and it holds only the areas sent. To change some areas and keep the rest, use patchRevision with originRevision.
Example
PUT /cdna-api/products/category-description/9 HTTP/1.1
Host: hub.coredna.com
Authorization: Bearer YOUR_ACCESS_TOKEN
Accept: application/json
Content-Type: application/json
{
"name": "API sandbox mugs"
}Check that a category slug is free#
/cdna-api/products/category-descriptions/check-slug
As for a product slug: {"result":"success"} when it is free, and HTTP 200 with "result": "error" when it is not.
- Access
- Admin users and integrations, with an OAuth access token or an API key.
Parameters
slugbodyrequired- string
- The slug to check.
idbody- integer
- A description to leave out of the check, when renaming it.
parentbody- integer
- The parent to check under, when slugs are unique per parent.
sitebody- integer
- The site to check in.
Example
POST /cdna-api/products/category-descriptions/check-slug HTTP/1.1
Host: hub.coredna.com
Authorization: Bearer YOUR_ACCESS_TOKEN
Accept: application/json
Content-Type: application/json
{
"slug": "api-sandbox"
}