REST
Real columns, real enums, real responses.
Every endpoint mirrors the production schema. No translation layer, no opaque IDs — appointments hang off resources, clients are keyed by client_uuid, and money is integer cents. The same shapes your dashboard reads.
- All endpoints under /v1 — versioned, never breaking
- Cursor-based pagination on every list endpoint
- Bearer-token auth, scoped per workspace
{
"data": [
{
"id": "apt_4f7c2a",
"starts_at": "2026-06-04T10:30:00+10:00",
"ends_at": "2026-06-04T11:15:00+10:00",
"status": "confirmed",
"client_uuid": "c_8a1d…",
"resource_id": "res_nurse_eliza",
"service_id": 142,
"title": "Anti-wrinkle review — upper face"
},
{
"id": "apt_4f7c2b",
"starts_at": "2026-06-04T11:30:00+10:00",
"ends_at": "2026-06-04T12:00:00+10:00",
"status": "completed",
"client_uuid": "c_91b2…",
"resource_id": "res_room_2",
"service_id": 207,
"title": "Skin consult"
}
],
"next_cursor": "eyJpZCI6ImFwdF80ZjdjMmIifQ"
}{
"id": "sale_2e9a",
"sale_number": "S-10428",
"client_uuid": "c_8a1d…",
"subtotal_cents": 47818,
"gst_cents": 4782,
"total_cents": 52600,
"status": "COMPLETED",
"payment_method":"EFT_POS",
"paid_at": "2026-06-02T14:08:11+10:00"
}