Find Any Meeting Room
A Bookable Type groups rooms together so a single availability call returns open slots across all of them. The full flow is: create a type, assign rooms to the type, then query availability across the type.
1. Create the Type
POST /bookable_type
{
"name": "Meeting Room",
"description": "Any meeting room in the building.",
"owner_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}Capture data.id as type_id.
2. Assign Rooms to the Type
Either create a new bookable with type_id set, or update an existing one. See Create a Meeting Room for the create flow.
PUT /bookable/{bookable_id}
{
"type_id": "66666666-7777-8888-9999-aaaaaaaaaaaa"
}Repeat for every meeting room that should be part of the pool.
3. Query Availability Across the Type
GET /bookable_type/{type_id}/available?start_date=2026-05-15T07:00:00Z&end_date=2026-05-15T17:00:00Z
Returns the open surface for every bookable in the type inside the window. Filter the result for any bookable whose surface contains the needed slot and pick one.
4. Book the Picked Room
Once the user picks a room, post a normal booking against it. See Book Resource. The booking carries the specific bookable_id; type level availability does not change that contract.
Related
- Bookable Type for the model.
- Calendar and Availability for how the type level
availableis composed across rooms.