Booking requests waiting for the merchant (or all)
- Credentials
- OAuth access token
- Scopes
orders:read
Access: OAuth scope orders:read; not write-gated.
Paged: { items, nextCursor }, limit (default 50, at most 200) and an opaque cursor.
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.
status?string"pending""all"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 50, at most 200 (more is 200; a missing or unusable value is 50).
1 <= value <= 20050OK
application/json- response
data*curl -X GET 'https://api.shopeazy.co/v1/merchant/stores/<storeId>/booking-requests' \ -H 'Authorization: Bearer <access_token>'{ "data": { "items": [ { "id": "kyKVipffoAEVwR9KcEJT", "title": "Website enquiry", "requestedAt": 1793183597086, "durationMins": null, "customer": { "name": "Thandi Mokoena", "phone": "+27 82 000 0001", "email": "thandi.mokoena@example.com" }, "notes": "Two big fiddle-leaf figs that are dropping leaves.", "status": "pending" } ], "nextCursor": null }}Check a booking and price it, without making it POST
Validates the booking as `bookAppointment` would and says what it costs, so waiving the price can be put to the merchant first. Creates nothing. Access: OAuth scope `bookings:write`; not write-gated.
One booking request GET
Access: OAuth scope `bookings:write`; not write-gated.