Libraries
Read the hotels, activities, vehicles, and guides catalogs in your tenant.
Libraries are the reusable building blocks operators stitch into trips. Four catalogs share the single libraries:read scope.
| Method | Path | Scope |
|---|---|---|
| GET | /api/v1/libraries/hotels | libraries:read |
| GET | /api/v1/libraries/activities | libraries:read |
| GET | /api/v1/libraries/vehicles | libraries:read |
| GET | /api/v1/libraries/guides | libraries:read |
Libraries are read-only via the public API. Adds and edits go through the operator dashboard. Tenant isolation is enforced at the database level via Row-Level Security — you can only ever see your own libraries.
GET /api/v1/libraries/hotels
The Hotel object:
| Field | Type | Notes |
|---|---|---|
id | string | Opaque hotel id. |
name | string | |
cityId | string | Library city id. |
starRating | integer | null | 1–5. |
address | string | null | |
latitude | number | null | Decimal degrees. |
longitude | number | null | Decimal degrees. |
active | boolean | False means archived; usually filtered out. |
createdAt | ISO 8601 | |
updatedAt | ISO 8601 |
Query parameters
| Name | Type | Default | Notes |
|---|---|---|---|
limit | integer | 50 | Max 100. |
cursor | string | — | From a previous response. |
cityId | string | — | Filter to one city. |
active | enum | — | true or false. Omitted returns both. |
Response 200
{
"data": [ /* Hotel[] */ ],
"meta": { "cursor": "htl_…" | null, "hasMore": true | false }
}/api/v1/libraries/hotelsTry itRequests are proxied through this docs site so CORS doesn't block the call. Use a sandbox token if you don't want test calls hitting live data.
Query parameters
limitcursorcityIdactiveGET /api/v1/libraries/hotelsGET /api/v1/libraries/activities
The Activity object:
| Field | Type | Notes |
|---|---|---|
id | string | Opaque activity id. |
name | string | |
cityId | string | Library city id. |
category | string | null | Free-form category. |
durationMinutes | integer | null | |
minParticipants | integer | null | |
maxParticipants | integer | null | |
standardFeeCents | integer | Standard per-booking fee in minor units. 0 when unset. |
currency | string | ISO 4217, defaults to EUR. |
active | boolean |
Query parameters
| Name | Type | Default | Notes |
|---|---|---|---|
limit | integer | 50 | Max 100. |
cursor | string | — | From a previous response. |
cityId | string | — | Filter to one city. |
Response 200
{
"data": [ /* Activity[] */ ],
"meta": { "cursor": "act_…" | null, "hasMore": true | false }
}/api/v1/libraries/activitiesTry itRequests are proxied through this docs site so CORS doesn't block the call. Use a sandbox token if you don't want test calls hitting live data.
Query parameters
limitcursorcityIdGET /api/v1/libraries/activitiesGET /api/v1/libraries/vehicles
The Vehicle object:
| Field | Type | Notes |
|---|---|---|
id | string | Opaque vehicle id. |
name | string | |
vehicleType | string | E.g. coach, minibus, sedan. |
seatCapacity | integer | |
fuelType | string | E.g. diesel, petrol, electric. |
ownership | string | owned, leased, chartered. |
dailyInternalCostCents | integer | Daily internal cost (operator-facing). 0 when unset. |
currency | string | ISO 4217. |
active | boolean |
Query parameters
| Name | Type | Default | Notes |
|---|---|---|---|
limit | integer | 50 | Max 100. |
cursor | string | — | From a previous response. |
Response 200
{
"data": [ /* Vehicle[] */ ],
"meta": { "cursor": "veh_…" | null, "hasMore": true | false }
}/api/v1/libraries/vehiclesTry itRequests are proxied through this docs site so CORS doesn't block the call. Use a sandbox token if you don't want test calls hitting live data.
Query parameters
limitcursorGET /api/v1/libraries/vehiclesGET /api/v1/libraries/guides
The Guide object:
| Field | Type | Notes |
|---|---|---|
id | string | Opaque guide id. |
name | string | Display name. |
languages | string[] | BCP 47 codes. |
cityId | string | Library city id. |
halfDayRateCents | integer | Rate for a half-day booking. 0 when unset. |
fullDayRateCents | integer | Rate for a full-day booking. 0 when unset. |
currency | string | ISO 4217. |
active | boolean |
Query parameters
| Name | Type | Default | Notes |
|---|---|---|---|
limit | integer | 50 | Max 100. |
cursor | string | — | From a previous response. |
cityId | string | — | Filter to one city. |
Response 200
{
"data": [ /* Guide[] */ ],
"meta": { "cursor": "gid_…" | null, "hasMore": true | false }
}/api/v1/libraries/guidesTry itRequests are proxied through this docs site so CORS doesn't block the call. Use a sandbox token if you don't want test calls hitting live data.
Query parameters
limitcursorcityIdGET /api/v1/libraries/guides
