"Collect from you": on or off, and what to tell shoppers
- Credentials
- OAuth access token
- Scopes
settings:write- Role
- Owners and admins only. Staff get
403 forbidden. - Subscription
- Needs an active plan. Otherwise
403 subscription_locked. - Idempotency
- Send an
Idempotency-Keyheader. A retry with the same key does the work once.
Only these two fields are written, so the rest of the delivery settings are never touched (saveDelivery owns those). At least one way to get an order must stay on: turning collection off while delivery is off is 422 validation_error ("Turn on delivery or collection..."). The answer is the saved values. A pickupNote that is not sent keeps the note as it is; an empty string clears it. Saving the same values again changes nothing.
Access: OAuth scope settings:write; owner/admin only; write-gated by the subscription.
merchantOAuth settings:writeAuthorizationBearer <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: settings:write
storeId*stringA store the person can reach. Any other id answers 404, never 403.
Idempotency-Key*stringRequired on every write. Minted on the device when the person taps, reused on every retry. A write without one, or with one that does not match the pattern, is refused with 422 validation_error. Scoped to the token's subject, remembered 24 hours. A replay returns the first 2xx response with Idempotent-Replay: true; a request still running answers 409 in_flight; the same key with a different method, path or body answers 409 idempotency_key_reused; non-2xx results are not remembered. If the key store cannot be read nothing is processed and the answer is 503 idempotency_unavailable: retry with the same key.
^[A-Za-z0-9_-]{8,128}$application/json- body
allowPickup*booleanShoppers may collect from you.
pickupNote?stringWhat to tell them (where, when). Trimmed and cut to 200 characters. If it is not sent, the current note is kept; an empty string clears it.
length <= 200OK
application/json- response
data*curl -X PUT 'https://api.shopeazy.co/v1/merchant/stores/<storeId>/delivery/collection' \ -H 'Authorization: Bearer <access_token>' \ -H 'Idempotency-Key: <unique_key>' \ -H 'Content-Type: application/json' \ -d '{ "allowPickup": false}'{ "data": { "allowPickup": true, "pickupNote": "string" }}Save delivery settings PUT
Access: OAuth scope `settings:write`; owner/admin only; write-gated by the subscription.
One courier's own settings GET
Services, hand-over (driver collects or the merchant drops off), the drop-off point and the courier's own markup. `getDelivery` lists the couriers and whether each is connected; this is what `saveCourierConfig` changes. A courier that was never connected answers the defaults (`collection: driver`). Access: OAuth scope `store:read`; owner/admin only; not write-gated.