This repository has been archived on 2026-08-11. You can view files and clone it, but cannot push or open issues or pull requests.
Gishen-Mob/docs/BACKEND_SPEC.md
kirukib 7310a349c5 Add Gishen mobile app with complete demo shopping and care flows.
Ship Expo Router screens, seeded stores, and polished UX so auth, shop, checkout, prescriptions, loyalty, family, and account processes work end-to-end offline.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 01:21:32 +03:00

5.8 KiB

Gishen-Mob Backend Spec

Base URL (TBD): https://api.gishen.example/v1
Auth: Bearer JWT after phone OTP
Headers: Authorization, Accept-Language (en | am), Content-Type: application/json

Shared with Gishen-Ecom / Gishen-B2B where noted.
Patch this file whenever a feature is added or finalized.

Auth

Method Path Status Notes
POST /auth/otp/request Required { phone }
POST /auth/otp/verify Required { phone, code } → session + user
POST /auth/biometric/bind Required Device biometric public key
GET /users/me Required Profile, locale, points, tier
PATCH /users/me Required name, email, locale, biometric flag

Locale

Method Path Status Notes
PATCH /users/me Required { locale: "en" | "am" }
— Accept-Language Required All requests

Catalog

Method Path Status Notes
GET /catalog/products Required q, category, badge, max — parity with Ecom
GET /catalog/products/:idOrSlug Required
GET /catalog/categories Required

Branches / Stock

Method Path Status Notes
GET /branches Required
GET /branches/nearby Required lat, lng
GET /stock/product/:productId Required Nearby availability

Orders

Method Path Status Notes
POST /orders Required items, fulfillment, branchId?, location, paymentMethod, prescriptionFileKeys?, notes, credit?
GET /orders/me Required
GET /orders/:id Required
GET /orders/:id/tracking Required Rider trail when assigned
POST /orders/:id/cancel Required

Payments

Method Path Status Notes
POST /payments/initiate Required chapa | telebirr | mpesa only for delivery
POST /payments/webhook/* Required Gateway callbacks
— pay_at_branch Required Allowed only when fulfillment=pickup

Prescriptions

Method Path Status Notes
POST /uploads/signed-url Required Rx images
POST /prescriptions Required Multi-page keys, medicines[], patient, memberId?
POST /prescriptions/check Required Match catalog → ready/review/unavailable
GET /prescriptions/me Required
POST /prescriptions/:id/reorder Required

Reminders

Method Path Status Notes
POST /health/reminders Required Dose/refill schedules
POST /health/reminders/:id/confirm Required dose.confirmed
GET /health/reminders/me Required

Emergency contacts

Method Path Status Notes
GET /users/me/emergency-contacts Required
POST /users/me/emergency-contacts Required name, phone, relationship
DELETE /users/me/emergency-contacts/:id Required
— Job dose.missed_escalation Required After grace (default 30m) SMS/push to contact if no confirm

Family

Method Path Status Notes
GET /family/members Required
POST /family/invites Required phone or link code
POST /family/invites/accept Required
DELETE /family/members/:id Required

Subscriptions

Method Path Status Notes
GET /subscriptions/me Required
POST /subscriptions Required
POST /subscriptions/:id/pause Required
POST /subscriptions/:id/resume Required
POST /subscriptions/:id/cancel Required

B2B / Corporate (shared with Gishen-B2B)

Method Path Status Notes
GET /users/me/contexts Required personal + org memberships
POST /orgs/join Required { code }
GET /company/me Required Member view: plan, allowance
POST /checkout/credit/quote Required Basket split covered vs selfPay

Loyalty

Method Path Status Notes
GET /loyalty/me Required
GET /loyalty/me/ledger Required
POST /loyalty/redeem Required
GET /referrals/me Required

Push / Tracking

Method Path Status Notes
POST /devices Required push token
— Events Required order., dispatch., dose., refill., escalation.*
GET /orders/:id/tracking Required

Contact / Support

Method Path Status Notes
POST /contact Required
— Chatwoot Deeplink https://chat.yaltopia.com

Changelog

  • 2026-08-06: Scaffold — skeleton created with all domains.
  • 2026-08-06: Auth/Locale — OTP mock, biometric bind flag, language picker en/am, Accept-Language noted.
  • 2026-08-06: Catalog — products/categories from Ecom data port; shop/search/favorites.
  • 2026-08-06: Branches/Stock — GPS nearest sort; pickup selection (stock map stub).
  • 2026-08-06: Orders/Payments/B2B — checkout with Chapa/Telebirr/M-Pesa; pay_at_branch pickup-only; WhatsApp handoff; credit quote split stub.
  • 2026-08-06: Prescriptions/Reminders/Emergency — camera multi-page scan, check statuses, calendar dose push, escalation job contract.
  • 2026-08-06: Family/Subscriptions — invite/manage; refill subscription CRUD.
  • 2026-08-06: B2B/Account — contexts, join codes, profile switcher.
  • 2026-08-06: Loyalty/Push/Tracking — wallet redeem/referral; order tracking map mock; device push channels.
  • 2026-08-06: Contact/Support — contact form + Chatwoot/WhatsApp/call deeplinks.