List Bookings
Bookings can be read scoped to yourself or scoped to a resource. All endpoints accept the same window parameters and return the same row shape.
Scoped to yourself
| Endpoint | Returns |
|---|---|
GET /me/booking | Bookings owned by the calling user. |
GET /user/{id}/booking | Bookings owned by a specific user. |
Scoped to a resource
| Endpoint | Returns |
|---|---|
GET /bookable/{id}/booking | Bookings on one specific bookable. |
GET /bookable_type/{id}/booking | Bookings across every bookable of a type. |
GET /location/{id}/booking | Bookings across every bookable at a location and its descendants. |
GET /organization/{id}/booking | Bookings across every bookable in an organization. |
Input
| Parameter | Required | Notes |
|---|---|---|
start_date | yes | RFC 3339 UTC. Filters to bookings whose schedule starts on or before this is the lower bound; rows with (schedule->>'start_date') <= end_date are kept. |
end_date | yes | RFC 3339 UTC. Filters to bookings whose schedule has not ended before this. |
Both bounds are required. Results are filtered to bookings whose schedule intersects the window.
My Own Bookings
GET /me/booking?start_date=2026-05-11T00:00:00Z&end_date=2026-05-18T00:00:00Z
/me/booking resolves the user from the request context and delegates to the user level handler. The response is a JSON array of bookings owned by the caller, intersecting the window.
Response (one row shown):
{
"data": [
{
"id": "f9955a9a-bb9e-450b-8e91-09a43f0e6cd6",
"name": "Project Sync",
"description": "Weekly project sync meeting",
"bookable_id": "c3d4e5f6-a7b8-9012-cdef-345678901234",
"schedule": {
"id": "12e2a0a7-9400-43fc-9cd9-fcdddf5133df",
"start_date": "2026-05-15T08:00:00Z",
"end_date": "2026-05-15T09:00:00Z",
"pattern": { "type": "none", "interval": 1, "times": ["08:00/PT1H"] },
"time_zone": null,
"available": false
},
"owner_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"created_by": "e992bfc1-0336-42c5-bd0a-4f4804a9fd24",
"status": "confirmed"
}
],
"count": 1
}Bookings on a Specific Room
GET /bookable/{bookable_id}/booking?start_date=2026-05-11T00:00:00Z&end_date=2026-05-18T00:00:00Z
Returns every booking on that bookable in the window, regardless of who owns the booking. Useful for rendering a room calendar.
Bookings Across a Site
GET /location/{location_id}/booking?start_date=2026-05-11T00:00:00Z&end_date=2026-05-18T00:00:00Z
Returns every booking on every bookable at the location, plus every bookable at any descendant location. Useful for office wide overviews.
Recurrence
A recurring booking is stored as a single row whose schedule.pattern describes the recurrence. The list endpoints return the row as is and do not expand occurrences. To see one entry per occurrence inside a window, call the calendar endpoint at the matching scope, for example GET /bookable/{id}/calendar?start_date=...&end_date=.... See Calendar and Availability.