Flowcharts
Owner Booking Management Flow
How a business owner reviews, confirms, declines, and closes out bookings from the owner dashboard.
This diagram covers the owner's side of every booking — from a new submission appearing in the queue to the appointment being marked complete or a customer being marked as no-show.
Full Flow
┌─────────────────────────────────────────────────┐
│ Customer submits booking │
│ Booking status: pending │
└──────────────────┬──────────────────────────────┘
│
↓
┌─────────────────────────────────────────────────┐
│ Owner opens booking queue │
│ GET /admin/bookings/date/:date/period/:period │
│ GET /admin/bookings/calendar (monthly view) │
└──────────────────┬──────────────────────────────┘
│
↓
┌─────────────────────────────────────────────────┐
│ Review booking details │
│ Package · Date · Time · Customer info │
└──────────────────┬──────────────────────────────┘
│
┌─────────┴──────────┐
│ │
Confirm Decline
│ │
↓ ↓
PUT /:id/confirm PUT /:id/decline
(status: confirmed) body: { declineReason }
│ │
↓ ↓
Customer notified Customer notified
via email via email
(with confirmation) (decline reason included)
│
↓
┌─────────────────────────────────────────────────┐
│ Payment │
└──────────────────┬──────────────────────────────┘
│
┌─────────┴──────────┐
│ │
Maya Cash
│ │
↓ ↓
Customer creates Customer pays on
checkout session arrival; owner marks
POST /maya/bookings/ paid manually
:id/checkout-session
│ │
↓ │
Payment verified │
POST /maya/bookings/ │
:id/verify-session │
│ │
└─────────┬──────────┘
│
↓
┌─────────────────────────────────────────────────┐
│ Appointment Day │
└──────────────────┬──────────────────────────────┘
│
┌─────────┴──────────┐
│ │
Customer shows up Customer no-show
│ │
↓ ↓
PUT /:id/complete PUT /:id/no-show
(status: completed) (status: no-show)
Reschedule Request Sub-Flow
Customers can request a reschedule after booking. This creates a parallel review step:
Customer requests reschedule
PUT /api/v1/bookings/:id/reschedule
(status: pending-reschedule)
│
↓
Owner reviews pending reschedule list
GET /admin/bookings/reschedule
│
├── Approve → PUT /:id/confirm
│ (status: confirmed with new date/time)
│
└── Decline → PUT /:id/decline
(original booking date restored)
Booking Status Lifecycle
┌─────────┐
│ pending │
└────┬────┘
┌─────────┴─────────┐
↓ ↓
┌───────────┐ ┌──────────┐
│ confirmed │ │ declined │
└─────┬─────┘ └──────────┘
│
┌─────┴────────────────────┐
↓ ↓
┌─────────┐ ┌──────────────────┐
│ ongoing │ │pending-reschedule│
└────┬────┘ └────────┬─────────┘
│ │
┌────┴────────┐ (back to confirmed
↓ ↓ or declined)
┌──────────┐ ┌─────────┐
│completed │ │ no-show │
└──────────┘ └─────────┘
Booking Status Reference
| Status | Description |
|---|---|
pending | Submitted by customer — awaiting owner action |
confirmed | Owner accepted — customer can proceed to payment |
declined | Owner declined — customer notified with reason |
pending-reschedule | Customer requested a new date/time — owner must review |
ongoing | Appointment day has arrived |
completed | Owner marked appointment as done |
no-show | Customer did not arrive |
cancelled | Customer cancelled before appointment |
Key Endpoints
| Action | Method | Path |
|---|---|---|
| View bookings by date | GET | /api/v1/admin/bookings/date/:date/period/:period |
| View calendar (monthly) | GET | /api/v1/admin/bookings/calendar |
| View reschedule requests | GET | /api/v1/admin/bookings/reschedule |
| Confirm booking | PUT | /api/v1/admin/bookings/:id/confirm |
| Decline booking | PUT | /api/v1/admin/bookings/:id/decline |
| Mark no-show | PUT | /api/v1/admin/bookings/:id/no-show |
