App developer documentation
HTTP contract for the customer app, picker app, and driver app.
- Public API — customer app (
http://localhost:5000, prefix/v1) - Picker API — Admin API (
http://localhost:5001,/v1/fulfillment/picker/*) - Driver API — Admin API (
/v1/fulfillment/driver/*)
Admin catalog CRUD is out of scope. Live OpenAPI UIs (try requests with Bearer):
- Public: http://localhost:5000/docs
- Admin: http://localhost:5001/docs
Which API to call
| App | Base URL (dev) | Auth |
|---|---|---|
| Customer | http://localhost:5000 | Authorization: Bearer <accessToken> |
| Picker | http://localhost:5001 | Staff Bearer JWT + orders:read / orders:update |
| Driver | http://localhost:5001 | Same staff JWT; route the UI when roleKey is driver |
Do not send picker or driver traffic to the Public API. Fulfillment routes are not mounted there.
Read in this order
- Getting started
- Conventions
- Customer auth or Picker / Driver staff login
- Domain pages: catalog, cart, orders, account, notifications, support, assistant
Honest constraints
- Persist
accessToken+refreshToken(SecureStore). Send Bearer on every authenticated call. On 401, refresh once, then send the user to login. - Place-order payment methods:
cod|walletonly. - OTP SMS is stubbed in development.
- No fulfillment WebSockets — poll HTTP.