Location
A location is a physical site. A building, a floor, a wing, a room, a parking lot. Like an organization, it's a logical grouping and can't be booked directly. For that you need a bookable. Locations group bookables by where they are.
Locations nest to model the real world. A building contains floors, a floor contains wings, a wing contains rooms, or whatever shape the user wants. Access rides the tree: a user with access to a building reaches every floor and room beneath it.
What sits at a location
| Resource | What it is |
|---|---|
| Bookables | Things placed at the site via location_id |
| Child locations | Sub sites under this one |
| Bookings | Reservations on bookables at the location |
| Checkins | Arrivals and departures on those bookings |
| Claims | Access grants on the location |
| Timeslots | Scheduling windows applied to the location |
| Actions | Server side code bound to the location |
| Assets | Files and images bound to the location |
| Audits | Activity history recorded at the location |
Reading at the location level
The location endpoints can return just that location's resources, or walk the tree and return everything inside it. Pass ?inherits=true on any endpoint that supports it to roll up children. Default is the single location.
GET /location/{id}/bookable lists bookables placed at the location, or across the whole subtree with inherits=true.
GET /location/{id}/booking lists bookings on those bookables over the same scope.
GET /location/{id}/calendar expands recurrence over the same scope.
GET /location/{id}/available returns the total free time over the same scope.
Same composition as anywhere else, see Calendar and Availability.
API
See the Location tag for CRUD, child locations, placed bookables, the three views above, search, and bound assets, timeslots and actions.