Skip to content

Sites

GET
/api/v1/sites
curl --request GET \
--url http://localhost:3000/api/v1/sites \
--header 'Authorization: Bearer <token>'

The project’s sites: brand portals Artbucket renders, and sites of static files deployed to them.

Scope: write.

Sites

Media typeapplication/json
object
data
required
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)$/
kind
required

Portal: managed by Artbucket; external: hosted elsewhere, what it uses recorded by artbucket site scan; the others are static files deployed to it

string
Allowed values: portal guidelines landing docs storybook external
slug
required
string
name
required
string
intro
required
string | null
externalUrl
required

An external site’s own address

string | null
access
required
string
Allowed values: public password members
password
required
boolean
expiresAt
required
Any of:
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)))$/
expired
required
boolean
presets
required
Array<string>
Allowed values: web social story print png original
theme
required
object
logo
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)$/
accent
required
Any of:
string
/^#[0-9a-fA-F]{6}$/
background
required
Any of:
string
/^#[0-9a-fA-F]{6}$/
collections
required
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)$/
name
required
string
brands
required

Brands whose guidelines it publishes, in tab order

Array<object>
object
slug
required
string
name
required
string
publishedAt
required
Any of:
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)))$/
site
required
object
footer
object
text

Markdown

string
<= 2000 characters
links
Array<object>
<= 8 items
object
label
required
string
>= 1 characters <= 60 characters
href
required
string
<= 2000 characters
credit
string
<= 120 characters
feedback

A URL or mailto:

string
<= 2000 characters
quick

Quick grab: pinned links in the header

Array<object>
<= 6 items
object
label
required
string
>= 1 characters <= 40 characters
brand

With page: a brand the portal carries; the first when left out

string
<= 60 characters
page
string
<= 60 characters /^[a-z0-9]+(-[a-z0-9]+)*$/
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)$/
href
string
<= 2000 characters
terms

Markdown readers accept once before their first download

string
<= 10000 characters
listed

Search engines may index it; public portals only

boolean
rebuild
required
Any of:
object
brand
required

The brand whose releases call it, by slug; null once that brand is gone

string | null
host
required

The hook’s host; the URL itself is never shown

string
lastAt
required
Any of:
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)))$/
lastStatus
required

What it answered: an HTTP status, or why there was none

string | null
domain
required
Any of:
object
host
required
string
verified
required
boolean
record
required

What proves it: add this record at your DNS host

object
type
required
string
Allowed value: TXT
name
required
string
value
required
string
cname
required
Any of:
object
type
required
string
Allowed value: CNAME
name
required
string
value
required
string
url
required

Where visitors go: its domain once verified, else {slug}.PORTAL_DOMAIN when the server has one (not for a members portal), else /p/{slug}

string format: uri
pending
required

Access requests waiting

integer
>= -9007199254740991 <= 9007199254740991
createdBy
required
string
createdAt
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)))$/
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)))$/
Example
{
"data": [
{
"kind": "portal",
"access": "public",
"presets": [
"web"
],
"theme": {
"logo": null,
"accent": null,
"background": null
},
"domain": {
"record": {
"type": "TXT"
},
"cname": {
"type": "CNAME"
}
}
}
]
}

An error

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