Skip to content
Quarters Developers
esc
  • Type an endpoint, an object or a word from a guide.

Recipes

Sync reservations

Load every booking once, then only what changed, for contracts, accounting or a guest portal.

A contract system, an accounting package or a guest portal wants every booking once and then only what changed. List reservations does both, and a webhook says when to ask.

The initial load

Page through everything, sorted by updatedAt, a hundred at a time. The order is stable (the sort key, then id) and total counts the same filters, so you know when you are done without probing past the end.

Request

curl "https://go.quarters.live/api/v1/reservations?sort=updatedAt&limit=100" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

Keep the updatedAt of the last row you stored. That is your cursor.

Incremental sync

From then on ask for bookings changed at or after the cursor. Because the bound is inclusive you will see the last row again; that is deliberate, and harmless if your write is an upsert on id.

Request

curl "https://go.quarters.live/api/v1/reservations?updatedSince=2026-09-13T06:00:00.000Z&sort=updatedAt&limit=100" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

Run it on a schedule, and run it when a reservation.created, reservation.updated or reservation.deleted webhook arrives. The webhook carries the id, so for a single change retrieving that one booking is enough; the scheduled sync is the safety net for a delivery that did not land.

What the statuses mean

  • inquiry: a request. Blocks nothing; may become a booking or be dropped.
  • reserved: held. The days are blocked; the contract is usually not signed yet.
  • confirmed: firm. When the booking requiresContract, this is the moment the agreement was completed.
  • cancelled: released. The days are free again from the moment of cancellation.

The lifecycle stamps (inquiredAt, reservedAt, confirmedAt, cancelledAt) record when each status was entered and are never cleared, so a cancelled booking still says when it was confirmed.

What the record carries

  • pricing is the money as agreed when the booking was made. A later rate change on the listing never rewrites it. monthlyCents is rent, utilities and furniture added, when all three are set.
  • property is the flat’s identity as it stands today: name, address and owner, what a tenancy agreement must state. Marketing content stays behind the publish boundary and comes from listings.
  • agreement is the current contract, or null. Its status and document say whether it is signed and archived.
  • dashboardUrl opens the same booking in the dashboard. Put it in the alert email or the back-office record so a person can get there in one click.