CMS Page — Detail
Equivalent to GET /api/admin/cms/pages/{id}.
TIP
For what CMS Pages are and how multi-locale / multi-channel works, 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.
Field-selectable connections
channels and translations are Relay connections, not opaque JSON. Select them with the edges { node { … } } syntax and pick exactly the sub-fields you need. (Over REST these come back as plain JSON arrays.)
Errors
| Code | Cause |
|---|---|
| Not found | Page not found. |

