Search docs ⌘K
esc
Type to search across all documentation pages
Booking

Bookings

Create, manage, and transition bookings through their lifecycle. Bookings link a customer to a resource for a specific time slot and support status transitions, updates, and event history.

Create a booking

POST
/modules/booking/bookings
booking:write

Create a new booking.

curl
curl -X POST https://api.saasignal.saastemly.com/modules/booking/bookings \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"resource_id":"...","start_time":{}}'
json — 201 Created
{ "status": "ok" }
Body field
Type
Description
resource_id required
string
customer_id
string
start_time required
string (ISO 8601)
pattern ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
end_time
string (ISO 8601)
pattern ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
duration_minutes
integer
range ≥1 .. ≤1440
title
string
max 256 chars
notes
string
max 2000 chars
metadata
object
Error responses
401 Unauthorized
402 Insufficient tokens
422 Unprocessable entity
429 Rate limited

List bookings

GET
/modules/booking/bookings
booking:read

List bookings.

curl
curl https://api.saasignal.saastemly.com/modules/booking/bookings \
  -H "Authorization: Bearer sk_live_..."
json — 200 OK
{ "status": "ok" }
Query param
Type
Description
status
string
resource_id
string
customer_id
string
from
string (ISO 8601)
pattern ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
to
string (ISO 8601)
pattern ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
limit
integer
range ≥1 .. ≤100default 25
cursor
string
Error responses
401 Unauthorized
402 Insufficient tokens
429 Rate limited

Get a booking

GET
/modules/booking/bookings/{booking_id}
booking:read

Retrieve a single booking with recent events.

curl
curl https://api.saasignal.saastemly.com/modules/booking/bookings/{booking_id} \
  -H "Authorization: Bearer sk_live_..."
json — 200 OK
{ "status": "ok" }
Path param
Type
Description
booking_id required
string
Error responses
401 Unauthorized
402 Insufficient tokens
404 Not found
429 Rate limited

Update a booking

PATCH
/modules/booking/bookings/{booking_id}
booking:write

Update a pending/confirmed booking.

curl
curl -X PATCH https://api.saasignal.saastemly.com/modules/booking/bookings/{booking_id} \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{}'
json — 200 OK
{ "status": "ok" }
Path param
Type
Description
booking_id required
string
Body field
Type
Description
title
mixed
notes
mixed
metadata
object
Error responses
401 Unauthorized
402 Insufficient tokens
404 Not found
422 Unprocessable entity
429 Rate limited

Delete a booking

DELETE
/modules/booking/bookings/{booking_id}
booking:admin

Delete a pending/cancelled booking.

curl
curl -X DELETE https://api.saasignal.saastemly.com/modules/booking/bookings/{booking_id} \
  -H "Authorization: Bearer sk_live_..."
json — 200 OK
{ "status": "ok" }
Path param
Type
Description
booking_id required
string
Error responses
401 Unauthorized
402 Insufficient tokens
404 Not found
429 Rate limited

Transition booking status

POST
/modules/booking/bookings/{booking_id}/transition
booking:write

Transition booking to a new status. Valid transitions: pending→[confirmed,cancelled], confirmed→[checked_in,cancelled,no_show], checked_in→[completed].

curl
curl -X POST https://api.saasignal.saastemly.com/modules/booking/bookings/{booking_id}/transition \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"status":"completed"}'
json — 200 OK
{ "status": "ok" }
Path param
Type
Description
booking_id required
string
Body field
Type
Description
status required
string
values: confirmed, checked_in, completed, cancelled, no_show
cancel_reason
string
max 1000 chars
actor
string
max 256 chars
Error responses
401 Unauthorized
402 Insufficient tokens
404 Not found
422 Unprocessable entity
429 Rate limited

Get booking events

GET
/modules/booking/bookings/{booking_id}/events
booking:read

List audit events for a booking.

curl
curl https://api.saasignal.saastemly.com/modules/booking/bookings/{booking_id}/events \
  -H "Authorization: Bearer sk_live_..."
json — 200 OK
{ "status": "ok" }
Path param
Type
Description
booking_id required
string
Error responses
401 Unauthorized
402 Insufficient tokens
404 Not found
429 Rate limited