Reservations
List reservations
GET /api/v1/reservations
Offset pagination on a stable order: the sort key, then id. total counts the same filters, so you can page to the end without probing.
Query parameters
| Parameter | In | Type | Description |
|---|---|---|---|
| status | query | string | Comma-separated: inquiry, reserved, confirmed, cancelled. Default all. |
| propertyId | query | string | One property. |
| checkInFrom | query | date | Inclusive lower bound on check-in. YYYY-MM-DD |
| checkInTo | query | date | Inclusive upper bound on check-in. YYYY-MM-DD |
| checkOutFrom | query | date | Inclusive lower bound on check-out. YYYY-MM-DD |
| checkOutTo | query | date | Inclusive upper bound on check-out. YYYY-MM-DD |
| updatedSince | query | timestamp | Only bookings changed at or after this instant. The incremental-sync filter: keep the updatedAt of the last row you saw and ask from there. ISO 8601 |
| sort | query | enum | Default checkIn. "checkIn""checkOut""updatedAt""createdAt" |
| order | query | enum | Default asc. "asc""desc" |
| limit | query | integer | 1–100, default 25. 1–100 |
| skip | query | integer | Rows to skip, default 0. min 0 |
Response
200 { reservations: Reservation[], total: integer, limit: integer, skip: integer }
Reservation fields
| Field | Type | Description |
|---|---|---|
| id | string | Opaque. |
| status | ReservationStatus | |
| propertyId | string | |
| property | PropertyIdentity | |
| guest | Guest | |
| checkIn | date | YYYY-MM-DD |
| checkOut | date | Exclusive: the handover is at noon that day. YYYY-MM-DD |
| nights | integer | Check-out minus check-in. |
| adults | integer | null | |
| children | integer | null | |
| infants | integer | null | |
| pets | boolean | |
| pricing | object | Snapshotted when the booking was made. A later rate change on the listing never rewrites an agreed booking. |
| currency | "EUR" | |
| rentCents | integer | null | Monthly rent as agreed. Integer euro-cents. |
| utilitiesCents | integer | null | Monthly utilities as agreed. Integer euro-cents. |
| furnitureCents | integer | null | Monthly furniture fee as agreed. Integer euro-cents. |
| monthlyCents | integer | null | Rent + utilities + furniture, when all three are set. Integer euro-cents. |
| depositCents | integer | null | Security deposit as agreed. Integer euro-cents. |
| minStayMonths | integer | null | What the agreement states as the minimum term. |
| requiresContract | boolean | Whether this booking needs a signed agreement before it counts as confirmed. Resolved once, at booking time. |
| invoicePaid | boolean | |
| agreement | Agreement | null | |
| dashboardUrl | url | Opens the same record in the dashboard, for an alert email or a back-office link. |
| inquiredAt | timestamp | null | When the status was entered. Never cleared. ISO 8601 |
| reservedAt | timestamp | null | When the status was entered. Never cleared. ISO 8601 |
| confirmedAt | timestamp | null | When the status was entered. Never cleared. ISO 8601 |
| cancelledAt | timestamp | null | When the status was entered. Never cleared. ISO 8601 |
| createdAt | timestamp | ISO 8601 |
| updatedAt | timestamp | The incremental-sync key: see updatedSince on the list. ISO 8601 |
Errors
Every failure is { error, message }; see Errors. A missing or expired bearer is a 401 on every endpoint
but the token exchange.
| Status | error | When |
|---|---|---|
| 400 | invalid_request | An unknown status, a malformed date or timestamp, a sort key that does not exist. |