List active bookable services
- Credentials
- Store key
- Scopes
catalog:read
Same items as GET /v1/store/products?kind=service.
Paged: { items, nextCursor }, limit (default 100, at most 200) and an opaque cursor.
Old path, deprecated, sunset 1 Feb 2027: GET /v1/services.
storeKey catalog:readAuthorizationBearer <sez_pub_... (publishable) or sez_sk_... (secret)>A per-store key from the console. Publishable keys are browser-safe; secret keys are server-only.
Scope: catalog:read
cursor?stringThe nextCursor of the previous page, unchanged. A cursor that is not one we gave you is 400 invalid_parameter.
limit?integerPage size: default 100, at most 200 (more is 200; a missing or unusable value is 100).
1 <= value <= 200100The services.
application/json- response
data*curl -X GET 'https://api.shopeazy.co/v1/store/services' \ -H 'Authorization: Bearer sez_pub_...'{ "data": { "items": [ { "id": "PA1usmSPpgQYsDEF6Z5U", "kind": "service", "kitId": "COtS8ZNhRzJniQOjM8lh", "title": "Plant care visit", "slug": "plant-care-visit", "description": "We come to you, check every plant and leave a care plan.", "media": [], "price": { "amount": 45000, "currency": "ZAR" }, "compareAtPrice": null, "taxable": true, "status": "active", "tags": [], "productType": null, "vendor": null, "seo": null, "details": { "durationMins": 60, "modes": [ "callout" ], "requiresDeposit": false, "depositValue": null, "locationNote": "At your home or office in Johannesburg.", "availability": { "enabled": true, "weekly": { "1": [ { "start": "09:00", "end": "16:00" } ], "2": [ { "start": "09:00", "end": "16:00" } ], "3": [ { "start": "09:00", "end": "16:00" } ], "4": [ { "start": "09:00", "end": "16:00" } ], "5": [ { "start": "09:00", "end": "13:00" } ] }, "timezone": "Africa/Johannesburg", "slotIntervalMins": 60, "capacityPerSlot": 2, "leadTimeMins": 120, "maxAdvanceDays": 60 }, "includes": [ "A check of every plant", "A written care plan" ], "preparation": [ "Clear a path to the plants" ], "faqs": [ { "q": "Do you bring supplies?", "a": "Yes. Plant food and pots are extra." } ] } } ], "nextCursor": null, "services": [ { "id": "PA1usmSPpgQYsDEF6Z5U", "kind": "service", "kitId": "COtS8ZNhRzJniQOjM8lh", "title": "Plant care visit", "slug": "plant-care-visit", "description": "We come to you, check every plant and leave a care plan.", "media": [], "price": { "amount": 45000, "currency": "ZAR" }, "compareAtPrice": null, "taxable": true, "status": "active", "tags": [], "productType": null, "vendor": null, "seo": null, "details": { "durationMins": 60, "modes": [ "callout" ], "requiresDeposit": false, "depositValue": null, "locationNote": "At your home or office in Johannesburg.", "availability": { "enabled": true, "weekly": { "1": [ { "start": "09:00", "end": "16:00" } ], "2": [ { "start": "09:00", "end": "16:00" } ], "3": [ { "start": "09:00", "end": "16:00" } ], "4": [ { "start": "09:00", "end": "16:00" } ], "5": [ { "start": "09:00", "end": "13:00" } ] }, "timezone": "Africa/Johannesburg", "slotIntervalMins": 60, "capacityPerSlot": 2, "leadTimeMins": 120, "maxAdvanceDays": 60 }, "includes": [ "A check of every plant", "A written care plan" ], "preparation": [ "Clear a path to the plants" ], "faqs": [ { "q": "Do you bring supplies?", "a": "Yes. Plant food and pots are extra." } ] } } ], "count": 1 }}Open booking slots for a service GET
Open slots, already netted off what is reserved (capacity-aware), from now (plus the service's lead time) to its booking horizon (default 30 days, at most 120). Mirrors the hosted storefront's slot picker. Returns `{ enabled: false }` for an item that is not a service, or a service that takes no online bookings: show an enquiry form instead. `from` and `to` narrow the window (inclusive). They never widen it past the service's own: a `from` before now plus lead time, or a `to` past the horizon, is clamped. A non-numeric value, or `from` after `to`, is `400 invalid_parameter`. Old path, deprecated, sunset 1 Feb 2027: `GET /v1/products/{slug}/availability`.
List the store's active catalogues (kits) GET
Paged: `{ items, nextCursor }`, `limit` (default 100, at most 200) and an opaque `cursor`. Old path, deprecated, sunset 1 Feb 2027: `GET /v1/kits`.