Get a shop, by its address
const url = 'https://example.com/storefront/sites/northgate.shop.getbottle.app';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://example.com/storefront/sites/northgate.shop.getbottle.appDeliberately unauthenticated: what a business’s shop shows, for the address a shopper typed. The live settings, the business’s name and VAT details, its categories and the products it published, with prices as the shopper pays them (VAT in when the business charges it) and deposits on cylinders. Nothing a shopper should not see. A shop taken down for now, or no longer paid for, answers with closed true and no products. With preview, a token from POST /storefront/preview, the draft instead, for that business’s own addresses only, never cached. Anything that is not a shop is 404 with an empty body. Cached for a minute, with an ETag.
Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Example
northgate.shop.getbottle.appQuery Parameters
Section titled “Query Parameters”Responses
Section titled “Responses”The shop
object
object
object
Yard: classic, photography first. flame: bold type and colour blocks. ledger: quiet, product grid first. Only yard is built today.
object
Classic: Fraunces and Inter. modern: Bricolage Grotesque and Inter. friendly: Nunito throughout. editorial: Playfair Display and Source Sans 3.
object
object
object
object
object
object
object
object
object
object
object
object
object
UUID v7
object
UUID v7
object
object
object
object
object
object
object
UUID v7
object
object
Example
{ "settings": { "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 } }, "products": [ { "id": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f", "kind": "cylinder", "gasType": { "id": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f" }, "availability": "in_stock", "volume": { "counting": "stepped" }, "rent": { "period": "daily" }, "depositRefund": { "rule": "full", "countsFrom": "latest" } } ], "deliveryChoices": [ { "deliveryOptionId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f", "name": "Next day" } ], "deliveryCoverage": [ { "choices": [ "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f" ] } ], "priceDisplay": "inc", "defaultCylinderCharge": "deposit"}Not changed since the ETag sent
Not a shop. No body.
Too many requests from one address