CMS Page — Detail
Equivalent to GET /api/admin/cms/pages/{id}.
For what CMS Pages are and how multi-locale and multi-channel work, see the CMS Pages overview.
Operation
| Operation | Type |
|---|---|
adminCmsPage(id: ID!) | Query |
The id argument is the IRI (/api/admin/cms/pages/{id}) — the same value returned as node.id on the listing. A bare numeric ID is not accepted.
Fields
| Field | Type | Notes |
|---|---|---|
id | ID | IRI. |
_id | Int | Numeric page ID. |
urlKey | String | URL slug for the active locale. |
pageTitle | String | Title for the active locale. |
htmlContent | String | The full page HTML body for the active locale. |
metaTitle / metaKeywords / metaDescription | String | SEO fields. |
layout | String | Page layout identifier. |
previewUrl | String | Live storefront URL for the page (the "View" action). |
locale / channel | String | Resolved locale / channel. |
channels | Connection | Every assigned channel — query via channels { edges { node { … } } }. |
translations | Connection | Per-locale content — query via translations { edges { node { … } } }. |
channels — connection
A field-selectable Relay connection. Each node exposes:
| Field | Type | Notes |
|---|---|---|
id | ID | Channel IRI (e.g. /api/admin_cms_page_channels/1). |
code | String | Channel code. |
name | String | Channel display name. |
translations — connection
A field-selectable Relay connection — one entry per authored locale. Each node exposes:
| Field | Type | Notes |
|---|---|---|
locale | String | Locale code for this translation. |
pageTitle | String | Title in this locale. |
urlKey | String | URL slug in this locale. |
htmlContent | String | The full page body for this locale. |
metaTitle / metaKeywords / metaDescription | String | SEO fields in this locale. |
translations returns one entry per authored locale; the htmlContent inside a translation is the full body for that locale.
Connections, Not Opaque JSON
channels and translations are Relay connections — select them with edges { node { … } } and take only the sub-fields you need. Over REST the same data arrives as plain JSON arrays, so the two transports are not shape-compatible.
Both nested node types carry a routeless id — /api/admin_cms_page_translations/<id> and /api/admin_cms_page_channels/<id>. Neither is a queryable path; read _id instead.
Errors
| Code | Cause |
|---|---|
| Not found | Page not found. |

