CMS Pages — List
Equivalent to GET /api/admin/cms/pages. Cursor pagination via first / after.
TIP
For what CMS Pages are, how multi-locale / multi-channel works, and the previewUrl / htmlContent semantics, see the CMS Pages overview.
Operation
| Operation | Type |
|---|---|
adminCmsPages | Query (cursor) |
Arguments
| Arg | Type | Notes |
|---|---|---|
first, after | cursor pagination | Page size + cursor from a previous pageInfo.endCursor. |
id | Int | Filter by ID. |
page_title | String | Partial title match. |
url_key | String | Partial url_key match. |
channel | Int | Filter by channel ID. |
locale | String | Locale for translation resolution. |
sort | String | id, page_title, url_key, created_at. |
order | String | asc or desc. |
Node fields
| Field | Type | Notes |
|---|---|---|
id | ID | IRI (/api/admin/cms/pages/{id}). |
_id | Int | Numeric page ID. |
urlKey | String | Storefront URL slug. |
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 | String | Resolved locale code. |
channel | String | Resolved channel code. |
channels | Connection | Every assigned channel — query via channels { edges { node { … } } } (node: id, code, name). |
translations | Connection | Per-locale content — query via translations { edges { node { … } } } (node: locale, pageTitle, urlKey, htmlContent, metaTitle, metaKeywords, metaDescription). |
createdAt / updatedAt | String | ISO 8601. |
Field-selectable connections on the listing
translations and channels are Relay connections on the listing too — select them with edges { node { … } } and pick exactly the sub-fields you need. (Over REST they come back as plain JSON arrays.) Every scalar field above resolves over GraphQL — none come back null for transport reasons.

