What publishing would change
- Credentials
- OAuth access token
- Scopes
store:read
The design draft against what shoppers see now (Look, colours, fonts, corners, the top of the page, each home section new, removed or changed by id, the announcement bar and the pop-up), then the shop's pages with something to publish: one never live (kind: new) or a live one whose draft differs (changed). Each in a few merchant words: title and an optional detail ("Top of the page", "Full photo → Split"). area: design goes live with publishStorefront, area: page with that page's publishPage. Empty: nothing to publish.
Access: OAuth scope store:read; not write-gated.
Paged: { items, nextCursor }, limit (default 100, at most 200) 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 200 (more is 200; a missing or unusable value is 100).
1 <= value <= 200100OK
application/json- response
data*curl -X GET 'https://api.shopeazy.co/v1/merchant/stores/<storeId>/storefront/changes' \ -H 'Authorization: Bearer <access_token>'{ "data": { "items": [ { "id": "string", "area": "design", "kind": "new", "title": "string", "detail": "string", "pageId": "string" } ], "nextCursor": "string" }}Compose a design of its own, no AI POST
A design made by rules, never a model, so it costs nothing: the store's category template, a Look and font pairing that suit `feel`, colours built around `colour` that always pass contrast (text 4.5:1, buttons 3:1), a design for each home block that has one, and hero words from the shop's name, category and town. The same `seed` gives the same design; without one a new seed is picked and returned, so the design can be made again. The hero photo and the shop's own listing sections stay. Lands in the draft; nothing changes for shoppers until `publishStorefront`. Access: OAuth scope `design:write`; owner/admin only; write-gated by the subscription.
A private link to the draft design GET
Valid for 2 hours. Null when this deployment cannot sign one. Access: OAuth scope `store:read`; not write-gated.