Skip to content

A brand page

GET
/api/v1/brands/{slug}/pages/{page}
curl --request GET \
--url http://localhost:3000/api/v1/brands/example/pages/example \
--header 'Authorization: Bearer <token>'

The page, the rules its sections show resolved for context, the keys whose rule has gone (missing), what a reader would trip on (warnings), the page as Markdown, and url, where a member reads it in the app. A slug it had before a rename finds it too.

Scope: read.

slug
required
string

Brand slug

page
required
string

The page’s slug, e.g. logo

context
string

Resolve its rules for this context, e.g. dark-background

The page

Media typeapplication/json
object
data
required
object
brand
required
string
context
required
string | null
page
required
object
slug
required
string
title
required
string
position
required
integer
>= -9007199254740991 <= 9007199254740991
hidden
required
boolean
parent
required

The page it sits under; null at the top

string | null
eyebrow
required
string | null
lede
required
string | null
cover
required
Any of:
string format: uuid
/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/
icon
required
string | null
audience
required

On portals: who may read it

string
Allowed values: everyone partners members
tabs
required

Its child pages show as tabs across its top

boolean
aliases
required

Slugs it had before a rename: they still find it

Array<string>
layout
required

Landing: a front with no nav column, on-this-page or pager; book: a chapter

string
Allowed values: book landing
updatedAt
required

The last change to what it says

string format: date-time
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$/
revision
required

What it says, as a hash: send it back in If-Match (edit_page and save_page: revision) to refuse a write over a change you haven’t seen

string
translations
Any of:
object
key
additional properties
object
title
string
eyebrow
string
lede
string
sections
required
Array<object>
object
id
required
string
template
required

GET /api/v1/brand/templates lists them

string
title
required
string
body
required

Markdown

string
width
required
string
Allowed values: text wide full
columns
required
integer
>= -9007199254740991 <= 9007199254740991
tone
required

Its ground: plain, tint, brand, panel, dark, color, image or pattern

string
hidden
required
boolean
keys
required

The rules it shows, by key, in order

Array<string>
props
required

Its template’s own settings

object
key
additional properties
eyebrow
string
lede
string
aside

Markdown

string
tab

Sections sharing a tab name show under one tab

string
background
object
color
string
to
string
angle
number
image
string format: uuid
/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/
scrim
number
items
Array<object>

A thing a template lists: a do or a don’t with its picture, a picture in a gallery

object
key

A rule it shows

string
asset
string format: uuid
/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/
title
string
text

Markdown

string
verdict
string
Allowed values: do dont
caption
string
link
string
label
string
icon
string
download

False: for reference, never offered as a download

boolean
audience
string
Allowed values: everyone partners members
contexts

A tab per context, its rules resolved for each

Array<string>
only

Shown only in this context

string
translations

Its words by language tag; readers get them already in their language

object
key
additional properties
object
title
string
<= 300 characters
eyebrow
string
<= 120 characters
lede
string
<= 1000 characters
body
string
<= 20000 characters
aside
string
<= 4000 characters
items
Array
<= 60 items
Any of:
object
title
string
<= 200 characters
text
string
<= 4000 characters
caption
string
<= 500 characters
rules
required

The rules its sections show, resolved for the context

Array<object>
object
id
required
string format: uuid
/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/
brand
required

The brand’s slug

string
key
required

Dotted, e.g. color.primary

string
label
required

The heading readers see; null: the key, in words

string | null
context
required

Null: the default

string | null
type
required
string
Allowed values: color text number list font
value
required
Any of:
string
spec
required
Any of:
object
key
additional properties
usage
required
string | null
assets
required

Assets it points at, in order: /a/{id}, or /a/{id}/{rendition} when it names one

Array<object>
object
id
required
string format: uuid
/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/
rendition
required
string | null
title
required
string | null
filename
required
string
mime
required
string
width
required
Any of:
integer
>= -9007199254740991 <= 9007199254740991
height
required
Any of:
integer
>= -9007199254740991 <= 9007199254740991
updatedAt
required
string format: date-time
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$/
missing
required

Keys a section shows whose rule has gone since

Array<string>
warnings
required

What a reader would trip on, though it saves: links that go nowhere, keys with no rule

Array<string>
markdown
required

The page as Markdown, its rules’ values filled in

string
url
required

Where a member reads it in the app

string format: uri
Example
{
"data": {
"page": {
"audience": "everyone",
"layout": "book",
"sections": [
{
"width": "text",
"items": [
{
"verdict": "do"
}
],
"audience": "everyone"
}
]
},
"rules": [
{
"type": "color"
}
]
}
}

An error

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
detail
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"detail": "example"
}
}