Appearance
Domain Model
How AvailEngine thinks about the world.
Developer
└── Business (tenant)
├── Resources (what gets booked — stylist, room, table)
├── Services (optional — haircut, consultation, dinner)
├── Customers (the end client making the booking)
├── Bookings (appointment — customer books resource at time)
├── Deposits (Stripe payment held for a booking)
├── Operating Hours (when the business is open)
└── Waitlist (customers waiting for a slot)Concepts
| Concept | What it is | Key fields |
|---|---|---|
| Developer | You — the API user. Owns businesses, gets billed monthly. | user_id, Stripe customer, subscription |
| Business | A tenant. All data is scoped to one business. | business_id, slug, name, timezone |
| Resource | A bookable unit. Staff member, room, table, camera. | resource_id, name, resource_type, capacity |
| Service | Optional. What's being performed. | service_id, name, duration_minutes, price_cents |
| Customer | The end client making the booking. | customer_id, first_name, last_name, phone, email |
| Booking | The core unit. Customer books resource at time. | booking_id, status, booking_date, start_time, end_time |
| Deposit | Stripe payment linked to a booking. | deposit_id, amount_cents, status, stripe_payment_intent_id |
| Waitlist | Customer waiting for a slot to open. | waitlist_id, preferred_date, service_id |
Booking Statuses
pending → confirmed → checked_in → completed
↓ ↓
cancelled cancelled
↓
no_show(All states except completed and cancelled can transition to cancelled. confirmed can also transition to no_show.)
| Status | Meaning |
|---|---|
pending | Created but needs deposit payment before confirmation |
confirmed | Slot is locked. Customer is expected |
checked_in | Customer arrived |
completed | Service done |
cancelled | Booking cancelled by customer or staff |
no_show | Customer didn't show up |
Deposits auto-capture on no_show. They release on cancelled (if within policy).
Resource Types
| Type | Example |
|---|---|
staff | Hairdresser, doctor, photographer |
room | Treatment room, photo studio, private dining room |
table | Restaurant table |
equipment | Camera, medical device, rental item |
Each resource has capacity_min and capacity_max. A staff member who can handle 1-3 customers sets capacity_min: 1, capacity_max: 3.