Attribute Reference
Every request and response attribute across the REST and GraphQL surfaces, grouped by where it appears — including the shape of each floor/row and its nested media, overlays, and banner items.
Sent on every REST request.
| Attribute | Type | Purpose / utilization |
|---|
X-Tenant-Key* | string | Identifies which tenant/workspace to read content from. Also accepted as the tenantKey query param. |
X-Api-Key* | string | Authorizes the request and determines the environment (dev_ / preprod_ / production prefix). Also accepted as the apiKey query param. |
X-Geo-Zone | string | Coarse geo zone used for zone-level content targeting on the page endpoint. Defaults to GLOBAL. |
Get a page by slug — request params
| Attribute | Type | Purpose / utilization |
|---|
platform | string | Which platform variant of the page to resolve (desktop / mweb / app). Defaults to desktop. |
limit | integer | Max number of floors (content blocks) to return, for floor-level pagination. Max 50. |
offset | integer | Floor index to start from when limit is set. |
country | string | ISO country code used for geo-targeted content variants. |
region | string | Sub-country region code, refines country-level targeting. |
cohort | string | Audience cohort id used to serve cohort-targeted floor variants. |
tags | string (csv) | Comma-separated tag filter — only floors matching one of these tags are included. |
previewAt | ISO-8601 datetime | Time-travel preview — resolves the page as it will look at a given past or future instant, honoring scheduled publishes. |
Get a page by slug — response (top level)
| Attribute | Type | Purpose / utilization |
|---|
slug | string | The page's unique slug within the tenant/environment/platform. |
title | string | Human-readable page title, as set in the CMS. |
status | string | Lifecycle status of the resolved page, e.g. PUBLISHED. |
updatedAt | datetime | Last time this page (or any of its floors) was modified. |
content | array | The resolved floors (rows) for this page, in display order. See "Floor / row" below for the shape of each entry. |
pagination.total | integer | Total number of floors on the page, regardless of the requested limit. |
pagination.limit | integer | The effective limit applied to this response. |
pagination.offset | integer | The effective offset applied to this response. |
pagination.hasMore | boolean | Whether more floors exist beyond this page's offset+limit window. |
Floor / row — content[]
One entry per floor/row on the page.
| Attribute | Type | Purpose / utilization |
|---|
id | string | Unique id of the resolved floor entry (the specific banner/widget instance active right now for this slot). |
type | string | Floor/component type — one of hero, announcement, slider, alternating-slider, paragraph, image-links, grid, scroller, timer. See "Floor type reference" below for what each one renders and which properties fields it uses. |
status | string | Status of the active entry occupying this floor, e.g. Active. |
order | integer | Visual sort order of this floor on the page — lower renders first. |
width | string | Layout width for this floor: full or contained. |
padding | string | Vertical padding preset for this floor: sm, md, lg, or xl. |
widgetId | string | Present only when the floor is backed by a reusable Widget catalog item (kind: widget) rather than an inline row — id of that widget. See "Widget-catalog properties" below for that alternate shape. |
properties | object | The floor's content payload, taken directly from what was authored in the page editor for this row. See "Floor properties" below. |
Floor type reference — every type value
The row editor's actual type picker — this is the exhaustive list, including the HTML/rich-text type (paragraph).
| Attribute | Type | Purpose / utilization |
|---|
hero | Hero Banner | Single large banner with a CTA. Uses: title, subtitle, cta, mediaUrl, mediaType, styling (alignment, bgGradient, padding, height, bgPosition, backgroundEffect). |
announcement | Announcement Bar | Slim top-of-page message strip. Uses: title (or subtitle as fallback) as the message text, styling.announcementBg, styling.textColor. |
slider | Slider | Auto-rotating carousel of banners. Uses: banners[] (each item's headline/description/ctaLabel/url/image), styling (showArrows, showDots, autoplay, delayMs, animationEffect, backgroundEffect, height, bgPosition). |
alternating-slider | Alternating Slider | Split-column slider alternating up/down per item. Uses: banners[], styling (columns, showDots, showArrows, autoplay, delayMs, height, bgPosition). |
paragraph | Paragraph (Editor) | Free-form rich-text/HTML block. Uses: title, which holds the sanitized HTML markup (also mirrored onto htmlContent). No media/banners. |
image-links | Image w/ Multiple Links | Image(s) with clickable hotspot regions. Uses: banners[] the same as grid, but the point of this type is each banner's own imageMap (see "Banner item" below). |
grid | Grid Banner | Fixed-column grid of cards. Uses: banners[] (title/image per card, via name or headline fallback), styling (height, bgPosition). |
scroller | Row Scroller | Horizontally scrollable row of cards. Uses: title (row heading), banners[]. |
timer | Countdown Timer | Countdown to a target date. Uses: title, targetDate, mediaUrl (backdrop image), styling.height. |
Floor properties — content[].properties
This is the CMS row editor's saved config, copied through verbatim — field names match the page builder 1:1. Which fields are populated depends on the floor's type; unused fields are simply absent.
| Attribute | Type | Purpose / utilization |
|---|
title | string | Row heading text. On hero/timer/scroller this is a plain heading; on paragraph floors this instead holds the row's full sanitized HTML content. |
subtitle | string | Row subheading/supporting text, shown under title (hero, announcement fallback). |
cta | string | Call-to-action button label — hero floors only. |
mediaUrl | string | Background/primary media URL — hero and timer (backdrop) floors. |
mediaType | string | Media kind for mediaUrl: Image, Video, or GIF — hero floors. |
htmlContent | string | Mirror of title's HTML markup on paragraph floors (both are set to the same value by the editor). |
targetDate | string | Countdown target timestamp — timer floors only. |
banners | array | Present on multi-item floor types (slider, alternating-slider, image-links, grid, scroller). One entry per card/slide — see "Banner item" below. Sliced to limitBanners. |
limitBanners | integer | Max number of items returned in banners[] for this floor (configured per-floor in the CMS, default 10). |
styling | object | Visual/behavior config for this floor — alignment, colors, autoplay, etc. Which fields apply depends on type — see "Styling object" below. |
items | array | Reserved/legacy field carried through from the editor; not actively populated by the current page builder. |
Styling object — properties.styling
Per-floor visual/behavior config. Which fields apply depends on floor type — e.g. animationEffect only affects sliding-banner, columns only affects grid-banner/alternating-slider.
| Attribute | Type | Purpose / utilization |
|---|
alignment | string | Text alignment for title/subtitle/cta: left, center, or right. |
bgGradient | string | CSS background gradient/color behind the floor. |
padding | string | Vertical padding preset: sm, md, lg, or xl (mirrors the floor-level padding field). |
height | string | Fixed CSS height for the floor (e.g. "480px"). |
bgPosition | string | CSS background-position for the floor's media. |
backgroundEffect | string | Animated backdrop effect: none, particles, or waves. |
announcementBg | string | Background color — only relevant to announcement-bar floors. |
textColor | string | Text color — only relevant to announcement-bar floors. |
columns | integer | Number of columns — only relevant to grid-banner / alternating-slider floors. |
animationEffect | string | Slide transition style for sliding-banner floors: slide, fade, zoom, flip, etc. |
autoplay | boolean | Whether the slider/row auto-advances. |
delayMs | integer | Autoplay delay between slides, in milliseconds. |
showArrows | boolean | Whether prev/next arrow controls are shown. |
showDots | boolean | Whether dot pagination indicators are shown. |
Banner item — properties.banners[]
One entry per card/slide on multi-item floor types (grid-banner, row-scrollable, alternating-slider, media-grid). List is sliced to limitBanners. Each banner carries its own imageMap — hotspots are per-item, not floor-wide.
| Attribute | Type | Purpose / utilization |
|---|
id | string | Unique id of this banner/card item within the floor. |
name | string | Internal name set in the CMS; used as a display fallback for grid/scrollable card titles when headline is empty. |
headline | string | Primary heading text for this item. |
description | string | Supporting body text for this item. |
ctaLabel | string | Call-to-action button label for this item. |
ctaStyle | string | Visual style preset for the CTA button, e.g. "Solid Primary". |
url | string | Destination URL the item links to. |
image | string | Image URL for this item. |
size | string | Display-only file size label for the source asset (e.g. "240 KB"), set when the image was picked from the media library. |
altText | string | Accessibility alt text for the item image. |
status | string | Item status, e.g. draft or Active. |
visibility | string | Visibility mode: One-time, Recurring, or Rules. |
startDate | string | When this item becomes visible, if visibility is Rules. |
endDate | string | When this item stops being visible, if visibility is Rules. |
recurrence | object | Recurring visibility schedule ({ days[], startTime, endTime }), present when visibility is Recurring. |
imageMap | object | Clickable hotspot regions over this item's own image — { enabled, hotspots[] }. See "Image map hotspot" below. Configured per-banner via the "Design Hotspots" tool. |
Image map hotspot — banners[].imageMap.hotspots[]
Clickable regions overlaid on a single banner item's image, configured via the "Design Hotspots" tool in the page editor. Only present when that banner's imageMap.enabled is true.
| Attribute | Type | Purpose / utilization |
|---|
id | string | Unique id of this hotspot. |
altText | string | Accessibility label for the hotspot region. |
shape | string | Hotspot shape: rect, oval, or polygon. |
coords.x | number | Left offset of the hotspot's bounding box, as a percentage (0–100) of the image width. |
coords.y | number | Top offset of the hotspot's bounding box, as a percentage (0–100) of the image height. |
coords.width | number | Hotspot bounding-box width as a percentage (0–100) of the image width. |
coords.height | number | Hotspot bounding-box height as a percentage (0–100) of the image height. |
points | array | Polygon vertex points ({x, y} percentages), only present when shape is polygon. |
action.type | string | What tapping the hotspot does: link (open a URL) or deeplink (open an in-app route). |
action.url | string | Target URL when action.type is link. |
action.deeplink | string | Target deeplink when action.type is deeplink. |
Only relevant when a floor's widgetId is set (kind: widget) — the floor references a reusable Widget catalog entry instead of an inline row, and properties takes this shape instead of the inline one above.
| Attribute | Type | Purpose / utilization |
|---|
media | object | Primary media object: { type, url, posterUrl, altText, videoOptions }. |
media.type | string | Media kind: image, video, or gif. |
media.url | string | Direct URL to the media asset. |
media.posterUrl | string | Poster/thumbnail image shown before video playback starts. |
media.altText | string | Accessibility alt text for the media. |
media.videoOptions.* | boolean | autoplay / loop / muted / controls / playsinline — only present when media.type is video. |
textOverlays | array | Text/CTA layers positioned over the media — { id, text, type, position: {x,y}, style }. Omitted if none are configured. |
imageMap | array | Hotspot list directly on the widget's media (same shape as "Image map hotspot" above). Omitted if disabled. |
List pages
Request params
| Attribute | Type | Purpose / utilization |
|---|
platform | string | Filter the list down to a single platform variant. Omit to return all platforms. |
page | integer | Zero-based page index. Defaults to 0. |
size | integer | Page size. Defaults to 20, max 100. |
Response fields
| Attribute | Type | Purpose / utilization |
|---|
data | array | Page summaries matching the list query. |
data[].slug | string | Slug of the listed page — pass to the page-by-slug endpoint to fetch full content. |
data[].title | string | Page title. |
data[].platform | string | Platform variant this list entry belongs to. |
data[].updatedAt | datetime | Last modification time of this page. |
totalCount | integer | Total number of pages matching the filter, across all result pages. |
page | integer | The page index this response represents. |
size | integer | The page size used for this response. |
GraphQL — /graphql
Arguments and top-level result fields for the page/pages queries. contentJson decodes to the same floor shape documented above.
page — arguments
| Attribute | Type | Purpose / utilization |
|---|
slug* | String! | Slug of the page to resolve. |
tenantKey* | String! | Tenant/workspace identifier — GraphQL passes this as a query argument, not a header. |
apiKey* | String! | API key authorizing the request; its prefix also selects the environment. |
platform | String | Platform variant to resolve. Defaults to desktop. |
geoZone | String | Geo zone for zone-level targeting. Defaults to GLOBAL. |
limit | Int | Max number of floors to return (floor-level pagination). |
offset | Int | Floor index to start from when limit is set. |
page — result fields
| Attribute | Type | Purpose / utilization |
|---|
slug | String | Resolved page's slug. |
title | String | Page title. |
status | String | Lifecycle status, e.g. PUBLISHED. |
updatedAt | String | Last-modified timestamp. |
contentJson | String | Resolved floor content, JSON-encoded as a string since floor shape varies per block type — decode client-side. |
total | Int | Total floor count on the page. |
limit | Int | Effective limit applied. |
offset | Int | Effective offset applied. |
hasMore | Boolean | Whether more floors exist beyond this window. |
pages — arguments
| Attribute | Type | Purpose / utilization |
|---|
tenantKey* | String! | Tenant/workspace identifier. |
apiKey* | String! | API key authorizing the request and selecting the environment. |
platform | String | Filter to a single platform variant. Omit for all platforms. |
page | Int | Zero-based page index. Defaults to 0. |
size | Int | Page size. Defaults to 20, max 100. |
pages — result fields
| Attribute | Type | Purpose / utilization |
|---|
data | [PublicPageListItem] | Page summaries matching the query. |
data[].slug | String | Slug of the listed page. |
data[].title | String | Page title. |
data[].platform | String | Platform variant. |
data[].updatedAt | String | Last-modified timestamp. |
totalCount | Int | Total number of matching pages across all result pages. |
page | Int | The page index this response represents. |
size | Int | The page size used for this response. |