Every page block and the designs it can take
- Credentials
- OAuth access token
- Scopes
store:read
Each block type with its designs, first the default. A design's id is what the block's layout takes in savePage and setHomeSections (the default is never stored). niche (bakery, fashion, salon, tours, events, services, handmade, shop) puts the designs that suit that kind of shop first; absent, the store's own from its category. allowed is false for a block the store's plan can't add. A block with no designs has one look.
Access: OAuth scope store:read; not write-gated.
Paged: { items, nextCursor }, limit (default 100, at most 100) and an opaque cursor.
merchantOAuth store:readAuthorizationBearer <token>OAuth 2.1 (authorization code + PKCE S256, public clients, dynamic registration) for connected AI apps. Effective power is scopes granted AND the person's role today AND the plan. orders:refund, billing:write and team:write are opt-in on the consent screen. Write implies read for marketing:read and messages:read, so a grant holding marketing:write passes a marketing:read check, and messages:send passes messages:read.
Scope: store:read
storeId*stringA store the person can reach. Any other id answers 404, never 403.
cursor?stringThe nextCursor of the previous page, unchanged. A cursor that is not one we gave you is 400 bad_request.
limit?integerPage size: default 100, at most 100 (more is 100; a missing or unusable value is 100).
1 <= value <= 100100niche?stringPut designs for this kind of shop first. Absent, the store's own.
"bakery""fashion""salon""tours""events""services""handmade""shop"OK
application/json- response
data*curl -X GET 'https://api.shopeazy.co/v1/merchant/stores/<storeId>/storefront/block-designs' \ -H 'Authorization: Bearer <access_token>'{ "data": { "niche": "string", "items": [ { "type": "string", "showpiece": true, "allowed": true, "designs": [ { "id": "string", "name": "string", "default": true, "goodFor": [ "string" ] } ] } ], "nextCursor": "string" }}The templates a design can start from GET
Each template (a starter) is a whole starting design for a kind of business: a look, hero words and home sections around the shop's own listings. Send an `id` as `template` to applyStorefrontTemplate. `categories` are the store categories that start on it; a store can use any. Best fit for this store first: the starter its category starts on, then the rest of its kind of shop (`niche`), then starters built around the kinds of listing it sells (`kinds`); `suggested` marks those. `niches` are the kinds of shop, the store's own first. `filledWith` counts the store's listings per kind, the ones a starter shows. `previewUrl` is a private link to the store's home page as that starter would make it, from the store's own draft, photos and listings (null when no link can be signed). Access: OAuth scope `store:read`; not write-gated. Paged: `{ items, nextCursor }`, `limit` (default 50, at most 100) and an opaque `cursor`.
Start the design from a template POST
Its look, hero words and home sections around the shop's own listings. Lands in the draft; nothing changes for shoppers until `publishStorefront`. Access: OAuth scope `design:write`; owner/admin only; write-gated by the subscription.