Skip to content

Switch the shop on

POST
/storefront/enable
curl --request POST \
--url https://example.com/storefront/enable \
--cookie bottle.session_token=<bottle.session_token>

Creates the shop as a draft nobody outside can see, with its Bottle address, {slug}.shop.getbottle.app. Safe to send again. After a switch off, it comes back as a draft with everything it had.

The shop as it now stands

Media typeapplication/json
object
status
required
string
Allowed values: off draft live
draft
required
object
template

Yard: classic, photography first. flame: bold type and colour blocks. ledger: quiet, product grid first. Only yard is built today.

string
default: yard
Allowed values: yard flame ledger
theme
object
primary
string
default: #1F3A5F /^#[0-9a-fA-F]{6}$/
accent
string
default: #E4572E /^#[0-9a-fA-F]{6}$/
background
string
default: #FAF7F2 /^#[0-9a-fA-F]{6}$/
fontPair

Classic: Fraunces and Inter. modern: Bricolage Grotesque and Inter. friendly: Nunito throughout. editorial: Playfair Display and Source Sans 3.

string
default: classic
Allowed values: classic modern friendly editorial
radius
integer
default: 12 <= 28
logoKey
string | null
<= 300 characters
iconKey
string | null
<= 300 characters
content
object
headline
string
"" <= 160 characters
strapline
string
"" <= 160 characters
banners
Array<object>
default: <= 6 items
object
id
required
string
<= 40 characters
imageKey
required
string | null
<= 300 characters
heading
required
string
<= 160 characters
body
string
<= 2000 characters
buttonLabel
string
<= 160 characters
buttonTarget
One of:
object
kind
required
string
Allowed values: category
slug
required
string
<= 80 characters
from
string | null format: date
until
string | null format: date
sections
Array<object>
default: [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object] <= 8 items
object
section
required
string
Allowed values: hero categories featured delivery reviews about faq contact
visible
required
boolean
featuredProductIds
Array<string>
default: <= 12 items
about
string
"" <= 2000 characters
deliveryPromise
string
"" <= 160 characters
faq
Array<object>
default: <= 20 items
object
question
required
string
<= 160 characters
answer
required
string
<= 2000 characters
phone
string
"" <= 40 characters
email
Any of:
string format: email
address
string
"" <= 400 characters
openingHours
string
"" <= 400 characters
socials
object
facebook
string format: uri
<= 500 characters
instagram
string format: uri
<= 500 characters
x
string format: uri
<= 500 characters
linkedin
string format: uri
<= 500 characters
googlePlaceId
string
<= 200 characters
commerce
object
askForEmpties
boolean
default: true
collection
object
enabled
boolean
address
string
"" <= 400 characters
notes
string
"" <= 160 characters
tradeEnquiries
boolean
offerPhoneOrders
boolean
default: true
ageCheck
boolean
whenLow
string
default: sell
Allowed values: sell sell_and_say
whenOut
string
default: stop
Allowed values: stop continue
termsUrl
string | null format: uri
<= 500 characters
seo
object
title
string
"" <= 160 characters
description
string
"" <= 300 characters
imageKey
string | null
<= 300 characters
live
required
object
template

Yard: classic, photography first. flame: bold type and colour blocks. ledger: quiet, product grid first. Only yard is built today.

string
default: yard
Allowed values: yard flame ledger
theme
object
primary
string
default: #1F3A5F /^#[0-9a-fA-F]{6}$/
accent
string
default: #E4572E /^#[0-9a-fA-F]{6}$/
background
string
default: #FAF7F2 /^#[0-9a-fA-F]{6}$/
fontPair

Classic: Fraunces and Inter. modern: Bricolage Grotesque and Inter. friendly: Nunito throughout. editorial: Playfair Display and Source Sans 3.

string
default: classic
Allowed values: classic modern friendly editorial
radius
integer
default: 12 <= 28
logoKey
string | null
<= 300 characters
iconKey
string | null
<= 300 characters
content
object
headline
string
"" <= 160 characters
strapline
string
"" <= 160 characters
banners
Array<object>
default: <= 6 items
object
id
required
string
<= 40 characters
imageKey
required
string | null
<= 300 characters
heading
required
string
<= 160 characters
body
string
<= 2000 characters
buttonLabel
string
<= 160 characters
buttonTarget
One of:
object
kind
required
string
Allowed values: category
slug
required
string
<= 80 characters
from
string | null format: date
until
string | null format: date
sections
Array<object>
default: [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object] <= 8 items
object
section
required
string
Allowed values: hero categories featured delivery reviews about faq contact
visible
required
boolean
featuredProductIds
Array<string>
default: <= 12 items
about
string
"" <= 2000 characters
deliveryPromise
string
"" <= 160 characters
faq
Array<object>
default: <= 20 items
object
question
required
string
<= 160 characters
answer
required
string
<= 2000 characters
phone
string
"" <= 40 characters
email
Any of:
string format: email
address
string
"" <= 400 characters
openingHours
string
"" <= 400 characters
socials
object
facebook
string format: uri
<= 500 characters
instagram
string format: uri
<= 500 characters
x
string format: uri
<= 500 characters
linkedin
string format: uri
<= 500 characters
googlePlaceId
string
<= 200 characters
commerce
object
askForEmpties
boolean
default: true
collection
object
enabled
boolean
address
string
"" <= 400 characters
notes
string
"" <= 160 characters
tradeEnquiries
boolean
offerPhoneOrders
boolean
default: true
ageCheck
boolean
whenLow
string
default: sell
Allowed values: sell sell_and_say
whenOut
string
default: stop
Allowed values: stop continue
termsUrl
string | null format: uri
<= 500 characters
seo
object
title
string
"" <= 160 characters
description
string
"" <= 300 characters
imageKey
string | null
<= 300 characters
publishedAt
required
string | null format: date-time
unpublishedChanges
required
boolean
domains
required
Array<object>
object
id
required

UUID v7

string format: uuid
host
required
string
kind
required
string
Allowed values: bottle custom
isPrimary
required
boolean
verifyToken
required
string
verifiedAt
required
string | null format: date-time
lastCheckedAt
required
string | null format: date-time
lastError
required
string | null
failingSince
required
string | null format: date-time
createdAt
required
string format: date-time
records
required
Array<object>
object
type
required
string
Allowed values: CNAME A TXT
name
required
string
value
required
string
url
required
string | null
assets
required
object
key
additional properties
object
alt
required
string | null
width
required
integer
height
required
integer
thumb
required
string
card
required
string
large
required
string
businessLogoKey
string | null
<= 300 characters
Example
{
"status": "off",
"draft": {
"template": "yard",
"theme": {
"primary": "#1F3A5F",
"accent": "#E4572E",
"background": "#FAF7F2",
"fontPair": "classic",
"radius": 12,
"logoKey": null,
"iconKey": null
},
"content": {
"headline": "",
"strapline": "",
"banners": [],
"sections": [
{
"section": "hero",
"visible": true
},
{
"section": "categories",
"visible": true
},
{
"section": "featured",
"visible": true
},
{
"section": "delivery",
"visible": true
},
{
"section": "reviews",
"visible": true
},
{
"section": "about",
"visible": true
},
{
"section": "faq",
"visible": true
},
{
"section": "contact",
"visible": true
}
],
"featuredProductIds": [],
"about": "",
"deliveryPromise": "",
"faq": [],
"phone": "",
"email": "",
"address": "",
"openingHours": "",
"socials": {}
},
"commerce": {
"askForEmpties": true,
"collection": {
"enabled": false,
"address": "",
"notes": ""
},
"tradeEnquiries": false,
"offerPhoneOrders": true,
"ageCheck": false,
"whenLow": "sell",
"whenOut": "stop",
"termsUrl": null
},
"seo": {
"title": "",
"description": "",
"imageKey": null
}
},
"live": {
"template": "yard",
"theme": {
"primary": "#1F3A5F",
"accent": "#E4572E",
"background": "#FAF7F2",
"fontPair": "classic",
"radius": 12,
"logoKey": null,
"iconKey": null
},
"content": {
"headline": "",
"strapline": "",
"banners": [],
"sections": [
{
"section": "hero",
"visible": true
},
{
"section": "categories",
"visible": true
},
{
"section": "featured",
"visible": true
},
{
"section": "delivery",
"visible": true
},
{
"section": "reviews",
"visible": true
},
{
"section": "about",
"visible": true
},
{
"section": "faq",
"visible": true
},
{
"section": "contact",
"visible": true
}
],
"featuredProductIds": [],
"about": "",
"deliveryPromise": "",
"faq": [],
"phone": "",
"email": "",
"address": "",
"openingHours": "",
"socials": {}
},
"commerce": {
"askForEmpties": true,
"collection": {
"enabled": false,
"address": "",
"notes": ""
},
"tradeEnquiries": false,
"offerPhoneOrders": true,
"ageCheck": false,
"whenLow": "sell",
"whenOut": "stop",
"termsUrl": null
},
"seo": {
"title": "",
"description": "",
"imageKey": null
}
},
"domains": [
{
"id": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"host": "shop.northgategas.co.uk",
"kind": "bottle",
"records": [
{
"type": "CNAME"
}
]
}
]
}

Not signed in

Media typeapplication/json
object
error
required
string
message
required
string
Example
{
"error": "not_found",
"message": "Customer not found"
}

The plan does not include a shop

Media typeapplication/json
object
error
required
string
message
required
string
Example
{
"error": "not_found",
"message": "Customer not found"
}

Not a member, or without the permission this needs

Media typeapplication/json
object
error
required
string
message
required
string
Example
{
"error": "not_found",
"message": "Customer not found"
}

The shop has not been switched on

Media typeapplication/json
object
error
required
string
message
required
string
Example
{
"error": "not_found",
"message": "Customer not found"
}

Validation failed

Media typeapplication/json
object
error
required
string
Allowed values: validation
message
required
string
issues
required
Array<object>
object
path
required
string
message
required
string
Example
{
"error": "validation",
"issues": [
{
"path": "email",
"message": "Invalid email"
}
]
}