# Bookings and stays

Services, bookings, waiting lists, properties, stays, housekeeping and channels.

Scopes for this area: `bookings:read`, `bookings:write` and `bookings:admin`.

206 operations.

## settings

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/bookings/settings` | The booking settings and their revision. | read | `rivier bookings settings get` |
| PUT | `/bookings/settings` | Replace the booking settings; a stale revision is refused. | admin | `rivier bookings settings set` |

## location

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/bookings/locations` | Locations. | read | `rivier bookings location list` |
| POST | `/bookings/locations` | Add a location with its time zone. | admin | `rivier bookings location create` |
| PATCH | `/bookings/locations/{id}` | Change or archive a location. | admin | `rivier bookings location update` |

## resource

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/bookings/resources` | Staff, rooms and equipment that carry bookable time. | read | `rivier bookings resource list` |
| POST | `/bookings/resources` | Add a resource. | admin | `rivier bookings resource create` |
| PATCH | `/bookings/resources/{id}` | Change or archive a resource. | admin | `rivier bookings resource update` |

## service

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/bookings/services` | The services a business offers for booking, with duration, price, deposit and confirmation mode. | read | `rivier bookings service list` |
| GET | `/bookings/services/{id}` | One service. | read | `rivier bookings service get` |
| POST | `/bookings/services` | Add a bookable service. | admin | `rivier bookings service create` |
| PATCH | `/bookings/services/{id}` | Change a service. | admin | `rivier bookings service update` |

## rule

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/bookings/rules` | Opening hours and closures. | read | `rivier bookings rule list` |
| POST | `/bookings/rules` | Add an opening-hours or closure rule. | admin | `rivier bookings rule create` |
| DELETE | `/bookings/rules/{id}` | Remove a rule. | admin | `rivier bookings rule delete` |

## policy

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/bookings/policies` | Cancellation policies. | read | `rivier bookings policy list` |
| POST | `/bookings/policies` | Add a cancellation policy. | admin | `rivier bookings policy create` |
| PATCH | `/bookings/policies/{id}` | Change a cancellation policy (bookings already made keep the terms they were made under). | admin | `rivier bookings policy update` |

## session

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| POST | `/bookings/sessions` | Schedule a session of a group service with its seats. | admin | `rivier bookings session create` |

## block

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/bookings/blocks` | Time off and maintenance. | read | `rivier bookings block list` |
| POST | `/bookings/blocks` | Block a resource's time (time off, maintenance). Refused, listing the bookings in the way, when the time is booked. | write | `rivier bookings block create` |
| DELETE | `/bookings/blocks/{id}` | Remove a block. | write | `rivier bookings block delete` |

## slot

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/bookings/availability` | Free times for a service between two instants, computed from the opening hours and what is already promised. | read | `rivier bookings slot list` |

## quote

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| POST | `/bookings/quotes` | A signed quote: the price, deposit and cancellation terms for one time, valid for fifteen minutes. Nothing is held. | read | `rivier bookings quote create` |

## hold

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| POST | `/bookings/holds` | Hold a time for a few minutes. The hold releases itself. | write | `rivier bookings hold create` |
| DELETE | `/bookings/holds/{id}` | Release a hold. | write | `rivier bookings hold release` |

## event

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/bookings/events` | The booking timeline in order, from a cursor. | read | `rivier bookings event list` |

## booking

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/bookings` | Bookings, filtered by state, service and time. | read | `rivier bookings booking list` |
| POST | `/bookings` | Book: from a hold, a quote or a time. Idempotent on the key. A dry run returns the booking it would make. | write | `rivier bookings booking create` |
| GET | `/bookings/{id}` | One booking with the money state and the terms it was made under. | read | `rivier bookings booking get` |
| POST | `/bookings/{id}/confirm` | Accept a booking request (manual confirmation). A person's decision. | write | `rivier bookings booking confirm` |
| POST | `/bookings/{id}/decline` | Decline a booking request. A person's decision. | write | `rivier bookings booking decline` |
| POST | `/bookings/{id}/cancel` | Cancel a booking. Shows what the policy makes of it; a dry run changes nothing. Refunds and fees are separate, approved steps. | write | `rivier bookings booking cancel` |
| POST | `/bookings/{id}/reschedule` | Move a booking to another time, keeping its price and terms; all or nothing. | write | `rivier bookings booking reschedule` |
| POST | `/bookings/{id}/check-in` | Mark a guest arrived. | write | `rivier bookings booking check in` |
| POST | `/bookings/{id}/complete` | Mark a booking done. | write | `rivier bookings booking complete` |
| POST | `/bookings/{id}/no-show` | Mark a no-show after the grace period; records what it costs, charges nothing. | write | `rivier bookings booking no show` |

## public

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/public/bookings/services` | Published services, as the widget shows them. | read | `rivier bookings public services` |
| GET | `/public/bookings/availability` | Free times of a published service. | read | `rivier bookings public slots` |
| POST | `/public/bookings/quotes` | A signed quote for a published service. | read | `rivier bookings public quote` |
| POST | `/public/bookings/holds` | Hold a time for the visitor; limited per visitor. | read | `rivier bookings public hold` |
| DELETE | `/public/bookings/holds/{id}` | Release the visitor's own hold. | read | `rivier bookings public release` |
| POST | `/public/bookings/book` | Book from a hold or a quote; answers with the booking, its terms and a link to manage it. | read | `rivier bookings public book` |
| GET | `/public/bookings/link` | A booking by its signed link. | read | `rivier bookings public link` |
| POST | `/public/bookings/link/cancel` | Cancel by the signed link; the policy decides the money. | read | `rivier bookings public cancel` |
| POST | `/public/bookings/link/reschedule` | Move by the signed link while the policy still makes that free. | read | `rivier bookings public reschedule` |
| GET | `/public/lodging/sitemap` | The lodging pages of a site as sitemap entries, each with its address in every language the property speaks and an x-default. | read | `rivier bookings public sitemap` |
| GET | `/public/lodging/open-graph` | Open Graph and card fields for the property page in one language, with the other languages as alternates. | read | `rivier bookings public open graph` |

## lodging settings

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/settings` | The lodging settings. | read | `rivier bookings lodging settings get` |
| PUT | `/lodging/settings` | Replace the lodging settings. | admin | `rivier bookings lodging settings set` |

## property

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/properties` | Properties. | read | `rivier bookings property list` |
| GET | `/lodging/properties/{id}` | One property with its tax profile and check-in times. | read | `rivier bookings property get` |
| POST | `/lodging/properties` | Add a property (it is also a location with its time zone). | admin | `rivier bookings property create` |
| PATCH | `/lodging/properties/{id}` | Change a property's details, times or tax profile. | admin | `rivier bookings property update` |
| POST | `/lodging/properties/{id}/geocode` | Look up the coordinates of the property's address through the map provider; the person confirms the pin. | admin | `rivier bookings property geocode` |
| GET | `/lodging/properties/{id}/map` | The map of a property: a drawn static map, and the interactive map's script and token once a map service is connected. | read | `rivier bookings property map` |

## room type

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/room-types` | Room types of a property. | read | `rivier bookings room type list` |
| POST | `/lodging/room-types` | Add a room type (a sellable product with occupancy and beds). | admin | `rivier bookings room type create` |
| PATCH | `/lodging/room-types/{id}` | Change a room type. | admin | `rivier bookings room type update` |
| GET | `/lodging/room-types/{id}` | One room type with its sleeping arrangements, views, languages and the amenities it has after inheritance. | read | `rivier bookings room type get` |

## unit

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/units` | Rooms and units with their housekeeping state. | read | `rivier bookings unit list` |
| POST | `/lodging/units` | Add a room. | admin | `rivier bookings unit create` |
| PUT | `/lodging/unit-state/{id}` | Set a room clean, dirty, inspected or out of order. Out of order and inspected are a person's call. | write | `rivier bookings unit set state` |
| PATCH | `/lodging/units/{id}` | Rename a room, move it to a floor or area, change its notes and what it changes about its room type, or archive it. | admin | `rivier bookings unit update` |

## area

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/areas` | Buildings, wings, floors and areas of a property. | read | `rivier bookings area list` |
| POST | `/lodging/areas` | Add a building, wing, floor or area, optionally inside another. | admin | `rivier bookings area create` |
| PATCH | `/lodging/areas/{id}` | Change, move or archive an area. | admin | `rivier bookings area update` |

## poi

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/pois` | Nearby places and transport links of a property with distance and travel mode. | read | `rivier bookings poi list` |
| POST | `/lodging/pois` | Add a nearby place or transport link; the distance is worked out from the coordinates when left out. | admin | `rivier bookings poi create` |
| PATCH | `/lodging/pois/{id}` | Change or archive a nearby place. | admin | `rivier bookings poi update` |

## season

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/seasons` | Named date ranges (high season, holidays) that prices can be set for at once. | read | `rivier bookings season list` |
| POST | `/lodging/seasons` | Add a season: a name and its date ranges. | admin | `rivier bookings season create` |
| PATCH | `/lodging/seasons/{id}` | Change or archive a season. | admin | `rivier bookings season update` |

## extra

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/extras` | Extras and fees of a property (breakfast, parking, transfers, cleaning fee) with price, what it is per, VAT category and room types. | read | `rivier bookings extra list` |
| POST | `/lodging/extras` | Add an extra or a fee; a mandatory fee is added to every stay. | admin | `rivier bookings extra create` |
| PATCH | `/lodging/extras/{id}` | Change or archive an extra or fee. | admin | `rivier bookings extra update` |

## promotion

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/promotions` | Promotions of a property: percent or amount off, booking and stay windows, minimum nights, with or without a code. | read | `rivier bookings promotion list` |
| POST | `/lodging/promotions` | Add a promotion. The best one that applies is taken off the nights; promotions do not stack. | admin | `rivier bookings promotion create` |
| PATCH | `/lodging/promotions/{id}` | Change or archive a promotion. | admin | `rivier bookings promotion update` |

## rate price

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/rate-prices` | Prices set for a rate plan, optionally for one room type. | read | `rivier bookings rate price list` |
| DELETE | `/lodging/rate-prices/{id}` | Remove a price row. | admin | `rivier bookings rate price delete` |
| POST | `/lodging/rate-prices` | Set nightly prices for a rate plan and room type over a date range. | admin | `rivier bookings rate price create` |

## group

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/groups` | Groups of a property with their rooms and what the party owes. | read | `rivier bookings group list` |
| POST | `/lodging/groups` | Start a group: a party with one lead guest, to which rooms are then booked. | write | `rivier bookings group create` |
| GET | `/lodging/groups/{id}` | One group with its reservations and totals: rooms, guests, what is estimated, deposited, paid and still owed. | read | `rivier bookings group get` |
| POST | `/lodging/groups/{id}/rooms` | Book all the rooms of a group for the same nights, all or none; each room is checked before the first is made. | write | `rivier bookings group book` |
| POST | `/lodging/groups/{id}/members` | Put existing reservations of the property into a group. | write | `rivier bookings group add members` |
| DELETE | `/lodging/groups/{id}/members/{bookingId}` | Take a reservation out of a group. | write | `rivier bookings group remove member` |

## guest

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/guests` | Returning guests the property keeps a profile of, found by name, email or phone, with their stays. | read | `rivier bookings guest list` |
| GET | `/lodging/guests/{id}` | One guest: preferences, notes and past stays. | read | `rivier bookings guest get` |
| PUT | `/lodging/guests` | Save what the property knows about a guest (found by email or phone): bed, floor, quiet, diet, accessibility, arrival time, notes. No identity documents are kept. | write | `rivier bookings guest save` |
| DELETE | `/lodging/guests/{id}` | Erase a guest's profile on their request (a person with approval rights); their stays keep their own retention. | write | `rivier bookings guest erase` |

## text

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/text/{kind}/{id}` | The text of a property, room type, room, area, rate plan, extra or place in one language: what is live, the working draft and the history of versions. | read | `rivier bookings text get` |
| PUT | `/lodging/text/{kind}/{id}` | Write a draft of the text (short fields and the description as blocks). An agent's draft says which model wrote it; a person reviews and publishes. | write | `rivier bookings text save draft` |
| POST | `/lodging/text/{kind}/{id}` | Move a version of the text on: send it for review, ask for changes, approve, publish now, schedule for a time, or restore an earlier version as a new draft. Approving and publishing are a person's. | write | `rivier bookings text act` |
| POST | `/lodging/text/{kind}/{id}/suggest` | Write a first draft of the words and list the amenities the photos of a property, room type or room show. The draft says an AI wrote it and waits for a person; nothing is published or ticked. | write | `rivier bookings text suggest` |

## owner terms

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/owner-terms` | Who owns a managed property and the commission the manager keeps. | read | `rivier bookings owner terms get` |
| PUT | `/lodging/owner-terms` | Set the owner and commission of a managed property. | admin | `rivier bookings owner terms set` |

## owner statement

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/owner-statements` | The owner statements of a property, newest period first. | read | `rivier bookings owner statement list` |
| POST | `/lodging/owner-statements` | Make the owner statement of a period from the stays that left in it: earnings, commission, deductions and what is owed to the owner. A draft until a person issues it. | admin | `rivier bookings owner statement generate` |
| GET | `/lodging/owner-statements/{id}` | One owner statement with its lines. | read | `rivier bookings owner statement get` |
| POST | `/lodging/owner-statements/{id}/issue` | Issue a draft owner statement; from then on it never changes. A person does this. | admin | `rivier bookings owner statement issue` |

## fx rate

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/fx-rates` | The display currencies of a property with their rates, the day each is from and where it comes from. | read | `rivier bookings fx rate list` |
| PUT | `/lodging/fx-rates` | Enter the rate of a display currency (units of it per unit of the property's currency), the day and the source. Guests are shown an approximate price and are still charged in the property's currency. | admin | `rivier bookings fx rate set` |
| POST | `/lodging/fx-rates/remove` | Stop showing a display currency. | admin | `rivier bookings fx rate remove` |

## public stay

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/public/lodging/currencies` | The property's own currency and the display currencies with their rates, dates and sources, for showing an approximate price. | read | `rivier bookings public stay currencies` |
| GET | `/public/lodging/properties` | Properties, as the widget shows them. | read | `rivier bookings public stay properties` |
| GET | `/public/lodging/room-types` | Published room types of a property. | read | `rivier bookings public stay room types` |
| GET | `/public/lodging/amenities` | Facilities of the property and amenities of each published room type, labelled in the asked language. | read | `rivier bookings public stay amenities` |
| GET | `/public/lodging/rate-plans` | The direct rate plans a visitor can choose, with kind, meal plan, stay limits, included extras and cancellation terms in words. | read | `rivier bookings public stay rate plans` |
| GET | `/public/lodging/extras` | Extras and fees a guest can add to a stay. | read | `rivier bookings public stay extras` |
| GET | `/public/lodging/schema-org` | schema.org markup for a property and its published room types (type from the kind of property, address, coordinates, star rating, check-in times, languages, amenities with hours, rooms with beds and size), ready to place on a page. | read | `rivier bookings public stay schema org` |
| GET | `/public/lodging/feed` | A listing feed of a property: one listing per room type, or per room for a villa, rental or apartment hotel, with capacity, beds, amenities, pictures, coordinates, check-in times, rules and the lowest price. | read | `rivier bookings public stay feed` |
| GET | `/public/lodging/pois` | Nearby places and transport links of a property. | read | `rivier bookings public stay pois` |
| GET | `/public/lodging/areas` | Buildings, floors and areas of a property. | read | `rivier bookings public stay areas` |
| GET | `/public/lodging/availability` | What can be sold for a stay, on the direct rate plans. | read | `rivier bookings public stay availability` |
| POST | `/public/lodging/quotes` | A signed quote for a stay. | read | `rivier bookings public stay quote` |
| POST | `/public/lodging/holds` | Hold the nights for the visitor; limited per visitor. | read | `rivier bookings public stay hold` |
| DELETE | `/public/lodging/holds/{id}` | Release the visitor's own hold. | read | `rivier bookings public stay release` |
| POST | `/public/lodging/reserve` | Reserve from a hold or a quote; answers with the reservation, its terms, a payment step when a deposit is due, and a link to manage it. | read | `rivier bookings public stay reserve` |
| GET | `/public/lodging/link` | A reservation by its signed link. | read | `rivier bookings public stay link` |
| POST | `/public/lodging/link/check-in` | Digital check-in from the reservation's own link: who is coming, when they arrive, that they read the house rules. It is kept for the desk; no identity document is asked for. | read | `rivier bookings public stay check in` |
| POST | `/public/lodging/link/cancel` | Cancel by the signed link; the policy decides the money. | read | `rivier bookings public stay cancel` |

## reviews

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/review-summary` | How many published guest reviews a property has and their average (the reviews themselves are kept under Customers). | read | `rivier bookings reviews summary` |

## payment

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/payments-due` | Instalments of the stays of a property that fall due in a window, with what of each is still unpaid. | read | `rivier bookings payment due` |
| POST | `/lodging/reservations/{id}/instalment-link` | A payment link for the next unpaid instalment of a confirmed stay, to send to the guest. | write | `rivier bookings payment request instalment` |

## report

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/reports/performance` | How a property did over up to 92 days: rooms sold and available, occupancy, average daily rate and revenue per available room, by day, room type and where the booking came from. | read | `rivier bookings report performance` |
| GET | `/lodging/reports/price-suggestions` | Nights in the coming weeks where the price could move, from how full each room type is, each with the reason. Advice only: a person sets the price. | read | `rivier bookings report price suggestions` |

## ical feed

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/ical-feeds` | Calendars shared with other systems: the ones others read (with their address) and the ones read from elsewhere, with when each last synced. | read | `rivier bookings ical feed list` |
| POST | `/lodging/ical-feeds` | Publish a calendar of a room type or one room for other systems to read, or add the address of a calendar to read. | admin | `rivier bookings ical feed create` |
| DELETE | `/lodging/ical-feeds/{id}` | Stop sharing or reading a calendar; the days it blocked are given back. | admin | `rivier bookings ical feed delete` |
| POST | `/lodging/ical-feeds/{id}/sync` | Read a calendar now and block its busy days; says which nights are already sold beyond what is left. | admin | `rivier bookings ical feed sync` |

## calendar

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/calendar` | The calendar of a property for up to 62 days: per room type and night what is sold, sellable and left, the rules that close it and the lowest price; per room which nights are taken or out of order. | read | `rivier bookings calendar get` |

## amenity taxonomy

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/amenity-taxonomy` | The controlled amenity taxonomy: categories, ids, icons, labels in seven languages and the OpenTravel and extended partner codes each id maps to. | read | `rivier bookings amenity taxonomy get` |

## custom amenity

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/custom-amenities` | Amenities the property added to the taxonomy. | read | `rivier bookings custom amenity list` |
| POST | `/lodging/custom-amenities` | Add an amenity the taxonomy does not have. | admin | `rivier bookings custom amenity create` |
| PATCH | `/lodging/custom-amenities/{id}` | Change or archive a custom amenity. | admin | `rivier bookings custom amenity update` |

## amenities

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/amenities/{scopeKind}/{scopeId}` | The amenities a property, area, room type or unit sets itself, and the set it has after inheritance with the level each comes from. | read | `rivier bookings amenities get` |
| PUT | `/lodging/amenities/{scopeKind}/{scopeId}` | Replace the amenities a property, area, room type or unit sets itself: include or remove an inherited one, with free or paid access, fee, hours, location and a note. | admin | `rivier bookings amenities set` |

## rate plan

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/rate-plans` | Rate plans of a property. | read | `rivier bookings rate plan list` |
| POST | `/lodging/rate-plans` | Add a rate plan, optionally derived from another. | admin | `rivier bookings rate plan create` |

## restriction

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/restrictions` | Restrictions (stop sell, closed to arrival or departure, minimum and maximum stay, advance). | read | `rivier bookings restriction list` |
| POST | `/lodging/restrictions` | Add a restriction. The same rows close the direct sale. | write | `rivier bookings restriction create` |
| DELETE | `/lodging/restrictions/{id}` | Remove a restriction. | write | `rivier bookings restriction delete` |

## tax

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/taxes` | Tourist and city tax rules, with their source and the date they were checked. | read | `rivier bookings tax list` |
| POST | `/lodging/taxes` | Add a tourist or city tax rule with its source. | admin | `rivier bookings tax create` |

## night

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| PUT | `/lodging/nights` | Sell fewer rooms of a type on a night, or reopen it. | admin | `rivier bookings night override` |

## stay

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/availability` | Room types and rate plans for a stay with price, deposit, rooms left, cancellation terms and, where it cannot be sold, the written reasons. | read | `rivier bookings stay availability` |
| POST | `/lodging/quotes` | A signed quote for a stay: nightly prices, VAT, city tax, deposit and cancellation terms, check-in and check-out in local time. Valid fifteen minutes; nothing is held. | read | `rivier bookings stay quote` |
| POST | `/lodging/holds` | Hold the nights of a stay for a few minutes. The hold is a reservation in the held state and releases itself. | write | `rivier bookings stay hold` |
| DELETE | `/lodging/holds/{id}` | Release a hold. | write | `rivier bookings stay release` |
| GET | `/lodging/arrivals` | Arrivals for a date. | read | `rivier bookings stay arrivals` |
| GET | `/lodging/departures` | Departures for a date. | read | `rivier bookings stay departures` |
| GET | `/lodging/in-house` | Guests in the house on a date. | read | `rivier bookings stay in house` |

## reservation

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/reservations` | Reservations by state, dates and guest. | read | `rivier bookings reservation list` |
| POST | `/lodging/reservations` | Reserve a stay from a hold, a quote or the live price. Idempotent on the key; a dry run returns the reservation it would make. | write | `rivier bookings reservation create` |
| GET | `/lodging/reservations/{id}` | One reservation with the terms it was sold under. | read | `rivier bookings reservation get` |
| POST | `/lodging/reservations/{id}/room` | Give a stay a room (the first free of its type, or a named one) or move it; the room's diary refuses a clash. | write | `rivier bookings reservation assign room` |
| POST | `/lodging/reservations/{id}/check-in` | Check a guest in: room assigned and ready, guarantee in place; a person may override a gate with a reason. | write | `rivier bookings reservation check in` |
| POST | `/lodging/reservations/{id}/check-out` | Check a guest out: the folio must balance unless a person accepts it, closes into an invoice, and the room is marked dirty. | write | `rivier bookings reservation check out` |
| POST | `/lodging/reservations/{id}/cancel` | Cancel a reservation. States what the cancellation policy makes of it without moving money; a dry run changes nothing. | write | `rivier bookings reservation cancel` |
| POST | `/lodging/reservations/{id}/no-show` | Mark a no-show after the arrival date; records what it costs, charges nothing. | write | `rivier bookings reservation no show` |

## folio

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/reservations/{id}/folio` | The folio of a stay: charges, payments and balance. | read | `rivier bookings folio get` |
| POST | `/lodging/reservations/{id}/post-nights` | Post the room charge of each night up to a date (the night audit does this once it exists). | write | `rivier bookings folio post nights` |
| POST | `/lodging/reservations/{id}/charges` | Add a service, fee or discount to the folio. Above the property's cap a person with approval rights is needed. | write | `rivier bookings folio post charge` |
| POST | `/lodging/reservations/{id}/payments` | Record money taken at the desk or returned against the folio. A person with approval rights. | write | `rivier bookings folio record payment` |

## desk

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/desk/board` | Today's arrivals, departures and house with what needs attention beside each (no room, room not ready, balance due, not checked out), room counts by state, open tasks and issues. | read | `rivier bookings desk board` |
| POST | `/lodging/desk/night-audit` | Close the day: post the room nights, list possible no-shows, overdue departures, balances and arrivals with no room, make tomorrow's housekeeping tasks and keep the report. One audit per day; nothing is decided for a person. | admin | `rivier bookings desk night audit` |
| GET | `/lodging/desk/night-audits` | The kept night audit reports, newest first. | read | `rivier bookings desk audit list` |

## housekeeping

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/desk/tasks` | Housekeeping tasks for a property, by day, state or room. | read | `rivier bookings housekeeping list` |
| POST | `/lodging/desk/tasks` | Add a housekeeping task for a room. | write | `rivier bookings housekeeping create` |
| POST | `/lodging/desk/tasks/refresh` | Make the clean task for every room left dirty. | write | `rivier bookings housekeeping refresh` |
| POST | `/lodging/desk/tasks/{id}/assign` | Give a task to someone. | write | `rivier bookings housekeeping assign` |
| POST | `/lodging/desk/tasks/{id}/start` | Start a task. | write | `rivier bookings housekeeping start` |
| POST | `/lodging/desk/tasks/{id}/complete` | Finish (or skip) a task. A cleaning sets the room clean; an inspection sets it inspected, which is a person's call. | write | `rivier bookings housekeeping complete` |

## maintenance

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/desk/issues` | Maintenance issues by state or room. | read | `rivier bookings maintenance list` |
| POST | `/lodging/desk/issues` | Report something broken. Taking the room out of order while it is fixed is a person's decision. | write | `rivier bookings maintenance report` |
| POST | `/lodging/desk/issues/{id}/assign` | Give an issue to someone. | write | `rivier bookings maintenance assign` |
| POST | `/lodging/desk/issues/{id}/resolve` | Close an issue; the last blocking issue on a room puts it back as dirty. | write | `rivier bookings maintenance resolve` |

## guest message

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| POST | `/lodging/desk/messages` | Send a guest one service message about a reservation (pre-arrival, welcome, thanks, cancellation), once. The project's sender identity and test mode apply. | write | `rivier bookings guest message send` |
| POST | `/lodging/desk/messages/run` | Send the day's guest messages for a property: pre-arrival for tomorrow's confirmed arrivals, welcome for today's check-ins, thanks for today's check-outs. Each guest gets each message once. | write | `rivier bookings guest message run` |

## channel

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/channels` | The channel manager connections of a property. | read | `rivier bookings channel list` |
| POST | `/lodging/channels` | Connect a channel manager to a property. | admin | `rivier bookings channel connect` |
| PUT | `/lodging/channels/{id}/status` | Pause or resume a channel connection. | admin | `rivier bookings channel set status` |
| PUT | `/lodging/channels/{id}/maps` | Say which room type or rate plan a channel's code means. | admin | `rivier bookings channel map` |
| POST | `/lodging/channels/{id}/maps/remove` | Take a channel code out: it no longer matches a room type or rate plan, so nothing is sent for it. | admin | `rivier bookings channel unmap` |
| GET | `/lodging/channels/{id}/maps` | The codes a channel uses for rooms and rate plans, and which of ours each one means. | read | `rivier bookings channel maps` |
| GET | `/lodging/channel-providers` | The channel managers this project can link a property to, each with the connection it is made under. | read | `rivier bookings channel providers` |
| GET | `/lodging/channel-state` | Where a property stands with its channel manager: whether one is connected, each link with its account, when it last sent and received, and the last thing that went wrong. | read | `rivier bookings channel state` |
| GET | `/lodging/channel-properties` | The properties on the business's connected channel manager accounts, for choosing the one a link is for. | read | `rivier bookings channel properties` |
| GET | `/lodging/channels/{id}/catalog` | The channel manager's own room types and rate plans of a linked property, to match against the property's. | read | `rivier bookings channel catalog` |
| GET | `/lodging/channel-sync/{id}/events` | What went out to the channel and what came in, with what needs a person. | read | `rivier bookings channel events` |
| POST | `/lodging/channel-sync/{id}/push` | Tell the channel how many rooms are left per night and the nightly rates for the next days. | write | `rivier bookings channel push` |
| POST | `/lodging/channel-sync/{id}/pull` | Take in what the channel sold: new bookings once each, cancellations; an oversold or changed booking is kept for a person, nobody is cancelled for it. | write | `rivier bookings channel pull` |

## message template

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/message-templates` | Every kind of guest message with the built-in words, what the property wrote in each language, whether it is on, and from what time of day it may go; and the words that can go in braces. | read | `rivier bookings message template list` |
| PUT | `/lodging/message-templates` | Write a guest message in one language, replacing the built-in words; braces such as `{name}` and `{checkIn}` are filled from the stay. | admin | `rivier bookings message template save` |
| POST | `/lodging/message-templates/reset` | Go back to the built-in words of a guest message in one language. | admin | `rivier bookings message template reset` |
| PUT | `/lodging/message-settings` | Switch a kind of guest message on or off and hold it until a time of day in the property's own time zone. | admin | `rivier bookings message template settings` |

## scheduled message

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/lodging/scheduled-messages` | The messages scheduled for one stay, with what was sent. | read | `rivier bookings scheduled message list` |
| POST | `/lodging/scheduled-messages` | Schedule one message for one stay at a date and time; it can be changed or cancelled until it is sent. | write | `rivier bookings scheduled message create` |
| PATCH | `/lodging/scheduled-messages/{id}` | Change a scheduled message that has not been sent. | write | `rivier bookings scheduled message update` |
| POST | `/lodging/scheduled-messages/{id}/cancel` | Cancel a scheduled message that has not been sent. | write | `rivier bookings scheduled message cancel` |

## waitlist

| Method | Route | What it does | Level | Command |
| --- | --- | --- | --- | --- |
| GET | `/bookings/waitlist` | The line of people waiting for a slot, by service or state. | read | `rivier bookings waitlist list` |
| POST | `/bookings/waitlist` | Put a person in the line for a service in a window of time. When a slot frees they are offered it, once, with an offer that lapses; nothing is booked for them. | write | `rivier bookings waitlist join` |
| POST | `/bookings/waitlist/{id}/cancel` | Take someone out of the line. | write | `rivier bookings waitlist cancel` |
| POST | `/public/bookings/waitlist` | A visitor puts themselves in the line when nothing is free. | read | `rivier bookings waitlist public join` |
