The calendar for a window
- Credentials
- OAuth access token
- Scopes
orders:read
Every appointment, tour departure and event that touches the window (a multi-day trip already under way included), with a shared service slot as one entry and everyone on it; the booking requests still waiting; and each date's opening hours (minutes after midnight, SA time) from the bookable services' weekly hours less their blackout dates. A date with no hours is closed. from and to are YYYY-MM-DD (SA), to exclusive; default today and a week on; at most 62 days.
Access: OAuth scope orders:read; not write-gated.
merchantOAuth orders: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: orders:read
storeId*stringA store the person can reach. Any other id answers 404, never 403.
from?stringFirst date (YYYY-MM-DD, SA). Default today.
dateto?stringThe day after the last date (YYYY-MM-DD, SA). Default a week after from.
dateOK
application/json- response
data*curl -X GET 'https://api.shopeazy.co/v1/merchant/stores/<storeId>/calendar' \ -H 'Authorization: Bearer <access_token>'{ "data": { "from": "string", "to": "string", "entries": [ { "id": "string", "kind": "service", "title": "string", "at": 0, "endsAt": 0, "durationDays": 0, "lastDate": "string", "count": 0, "capacity": 0, "minimum": 0, "status": "confirmed", "itemId": "string", "orderId": "string", "people": [ { "name": "string", "orderId": "string", "orderNumber": "string", "seats": 0, "mode": "string" } ] } ], "pending": [ { "id": "string", "title": "string", "at": 0, "minutes": 0, "customerName": "string", "notes": "string", "askedAt": 0 } ], "openHours": { "property1": [ { "from": 0, "to": 0 } ], "property2": [ { "from": 0, "to": 0 } ] } }}Book a delivery in POST
What arrived from the supplier goes into stock, each line through the stock ledger with the reason `receipt`. `received` maps line id to the quantity that arrived; leave it out for everything still due. A delivery can arrive short (the order stays open as part received) but never books more than was ordered. Access: OAuth scope `listings:write`; write-gated by the subscription.
Close or reopen whole dates PUT
Adds the dates to (or, with `blocked: false`, takes them off) every bookable service's blackout dates, so customers can't book them. Bookings already made stay. 1 to 60 dates. Access: OAuth scope `settings:write`; owner/admin only; write-gated by the subscription.