Book Resource
A booking carries a Schedule describing when the reservation occurs. The schedule supports single and recurring reservations. available: false marks the window as consumed.
Single Occurrence
POST /booking
json
{
"name": "Project Sync",
"description": "Weekly project sync meeting",
"bookable_id": "aef3e951-ca5f-4cc7-b50d-28cdc9f4d7e0",
"schedule": {
"start_date": "2026-07-15T08:00:00Z",
"end_date": "2026-07-15T09:00:00Z"
}
}Response:
json
{
"data": {
"id": "f9955a9a-bb9e-450b-8e91-09a43f0e6cd6",
"name": "Project Sync",
"description": "Weekly project sync meeting",
"bookable_id": "aef3e951-ca5f-4cc7-b50d-28cdc9f4d7e0",
"schedule": {
"id": "12e2a0a7-9400-43fc-9cd9-fcdddf5133df",
"start_date": "2026-07-15T08:00:00Z",
"end_date": "2026-07-15T09:00:00Z",
"pattern": {
"type": "none",
"interval": 1,
"times": ["08:00/PT1H"]
},
"time_zone": null,
"available": false
},
"checkin_id": null,
"created_by": "e992bfc1-0336-42c5-bd0a-4f4804a9fd24",
"owner_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "confirmed",
"created_at": "2026-05-11T22:45:45.228331Z",
"updated_at": "2026-05-11T22:45:45.315892Z"
},
"request_id": "837c770e-4436-4a65-b98d-3f3117cab17a",
"count": 1
}Recurring Booking
A schedule with a recurrence pattern produces multiple occurrences from one booking row.
json
{
"name": "Weekly Team Standup",
"bookable_id": "aef3e951-ca5f-4cc7-b50d-28cdc9f4d7e0",
"schedule": {
"start_date": "2026-08-03T09:00:00Z",
"end_date": "2026-12-31T00:00:00Z",
"time_zone": "Europe/Oslo",
"available": false,
"pattern": {
"type": "weekly",
"interval": 1,
"days_of_week": [1],
"times": ["09:00/PT30M"]
}
}
}Deletion
DELETE /booking/{id} removes the row, fires the booking_deleted trigger, writes an audit row, and frees the time window. To mark a booking as cancelled without removing it, use PUT /booking/{id} with a status update. See Delete a Booking.
Listing
See List Bookings for reading bookings back at the user, room and location levels.
See the Bookable API for full request and response shapes.