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

StatusDescription
pendingSubmitted by customer — awaiting owner action
confirmedOwner accepted — customer can proceed to payment
declinedOwner declined — customer notified with reason
pending-rescheduleCustomer requested a new date/time — owner must review
ongoingAppointment day has arrived
completedOwner marked appointment as done
no-showCustomer did not arrive
cancelledCustomer cancelled before appointment

Key Endpoints

ActionMethodPath
View bookings by dateGET/api/v1/admin/bookings/date/:date/period/:period
View calendar (monthly)GET/api/v1/admin/bookings/calendar
View reschedule requestsGET/api/v1/admin/bookings/reschedule
Confirm bookingPUT/api/v1/admin/bookings/:id/confirm
Decline bookingPUT/api/v1/admin/bookings/:id/decline
Mark no-showPUT/api/v1/admin/bookings/:id/no-show