Connects to Maestro through its Genomi+ interface with a per-property API token. Availability and rates today; the reservation messages are built but wait on Maestro's certification and the MezzoPay payment page. Maestro PMS official site ↗
Supported features
Every call goes to the property's own Maestro server with the token Maestro issued for it. Availability is asked for a check-in and check-out date with the number of adults; children, number of rooms, and a room type or rate code narrow the answer. Fees are charged on the first night unless they apply per room per night, and the total per room is the one Maestro quotes.
| Feature | Supported | Notes |
|---|---|---|
| Hotel availability | ✓ | Every available room type and rate plan for a stay, with the total per room, each night's price, currency, fees, and cancellation terms |
| Room types | ✓ | Read from the availability answer; there is no separate room catalogue message |
| Room rates | ✓ | Rate plans with descriptions and categories come back with each availability option |
| Fees | ✓ | Listed per fee with its stay total, marked inclusive (already in the price) or exclusive (added on top) |
| List / get reservations | — | Genomi+ has no reservation lookup message; only the status of a message Maison sent can be checked |
| Reservation status | — | Implemented and sandbox-validated; not yet certified by Maestro, so it cannot be enabled |
| Cancel reservation | — | Implemented (booking reference + last name); not yet certified by Maestro |
| Create reservation | — | Message implemented and sandbox-validated, but Maestro requires a payment guarantee and card details never enter chat — enabled once the MezzoPay payment page exists |
| Reservation services | — | Implemented for operators; not yet certified by Maestro |
| Payment link | — | MezzoPay token message implemented for the property's hosted payment form; not yet certified, and no guest pay link |
Setup steps
Get the three values from Maestro
The property asks its Maestro account manager to register Maison. Maestro returns the Genomi+ API token, the endpoint URL, and the Hotel ID. A block code is only needed when Maestro has set up a group rate for Maison under GDS Visibility.
The endpoint URL is the full Genomi+ shop address, in the formhttps://<maestro host>/shop/<account id>. Maestro's sandbox useshttps://genomi.maestroapi.net/shop/<test vendor account id>; a live property gives its own host. Maison adds no path to it and sends the token only inside the request body to that address.Create the integration in the business console
Open the business console, select the client, go to Settings → Integrations, choose Add integration, type Property Management System, provider Maestro PMS. Paste the three values (and the block code if you have one) and click Save. Availability is on by default; the other tools stay off until Maestro certifies them.
Test it
Ask the concierge for a room on a near-future date. A list of room types with prices confirms the connection. Compare one multi-night quote with the PMS: tax and fee treatment is set per hotel in Maestro, and the concierge says "plus taxes" until the property confirms its rates are tax-inclusive.
Available tools
1 tool is available for Maestro PMS. The concierge calls them on a guest's behalf during a conversation; which are enabled is set per property, so you only turn on what you want it to be able to do.
Enabled by default (1)
Every certified tool is on as soon as the integration is connected.
| Tool | What it does |
|---|---|
maestro_get_availability | Check live room availability and prices for a stay: every available room type and rate plan for the dates, with the vendor's total per room for the whole stay, each night's price, currency, cancellation terms, and fees. Use it for 'do you have rooms for…', 'how much is a room…', 'what's your cheapest rate…'. ArrivalDate = check-in and DepartureDate = check-out, both YYYY-MM-DD. The hotel is pre-configured — never guess or invent a hotel id. Quote totalPricePerRoom as the stay price; never add up the nightly prices yourself. Prices may be before or after tax depending on the hotel's setup — say 'plus taxes' unless the property has confirmed rates are tax-inclusive. feeSummary lists each fee once with its stay total: Inclusive fees are already in the price, Exclusive fees are added on top (totalWithExclusiveFees), so name the fee (e.g. resort fee) and say whether it is included. Read cancellationDescription when the guest asks about cancellation. An empty options list means NO availability — not an error; do not retry. Booking is not available through chat — when something is available, guide the guest to the property's booking engine with the room type and rate you quoted. |
Not yet certified (6)
Built and working against the Maestro PMS API, but Maison is not yet certified with Maestro PMS to use them in production, so they cannot be enabled today. Listed so you can see what is coming rather than discover the gap when you ask for it.
| Tool | What it does |
|---|---|
maestro_add_reservation_services | OPERATOR-GRADE: never use in guest conversations unless explicitly asked by an operator. Set the extra services on an existing reservation (breakfast, parking, packages) by its booking reference (CRSNumber). The list REPLACES every service already on the booking — send the complete list each time; an empty list removes them all. Service codes, unit prices and currency are the property's Maestro values. Asynchronous: confirm with maestro_get_reservation_status using the returned correlationId. |
maestro_cancel_reservation | Cancel an EXISTING reservation. This cannot be undone — BEFORE calling, the guest MUST explicitly confirm they want to cancel THIS specific stay (state the dates and booking reference back to them and get a clear yes). Needs the CRSNumber (the booking reference given when the reservation was made) and the last name on the booking; Maestro refuses a mismatched name. Maestro accepts the cancellation asynchronously: call maestro_get_reservation_status with the returned correlationId and only tell the guest it is cancelled when the phase is 'done'. 'No existing reservation' means the reference or name is wrong — ask again, never guess; 'already cancelled' means there is nothing left to do. |
maestro_create_reservation | Create a NEW reservation at this property. Before calling: (1) quote the stay with maestro_get_availability and pass the SAME RoomTypeCode, RateTypeCode, TotalPricePerRoom and CurrencyCode from that answer — Maestro flags a rate that does not match its quote; (2) collect the guest's first name, last name, email and phone; (3) the booking must be guaranteed by a HostedPaymentAccountID that the guest obtains on the property's secure payment page — NEVER ask for a card number, expiry or security code in chat, and never invent that id. Maestro accepts the request asynchronously: the answer carries crsNumber (the booking reference to give the guest) and correlationId — call maestro_get_reservation_status with it and only say the booking is confirmed when the phase is 'done', quoting the reservationNumber. Dates are YYYY-MM-DD. |
maestro_get_mezzopay_token | OPERATOR-GRADE: never use in guest conversations unless explicitly asked by an operator. Request a MezzoPay AuthenticationKey for guaranteeing a reservation. The key seeds the property's Fullsteam hosted payment form, which returns the HostedPaymentAccountID that maestro_create_reservation needs within 90 seconds. Never show the key to a guest or place it in a message. |
maestro_get_reservation_status | Check the outcome of a reservation message (create, change, cancel or services) by the correlationId that message returned. phase 'processing' (status Initiating or Pending): wait a few seconds and call again, at most 3 times in a row. phase 'done' (Success or Warning): reservationNumber is the Maestro confirmation number — give it to the guest, and read warnings, which may say the rate booked differs from the quote. phase 'failed' (Error): the message did not go through — tell the guest plainly and hand off to the property's booking engine. |
maestro_modify_reservation | OPERATOR-GRADE: never use in guest conversations unless explicitly asked by an operator. Change an EXISTING reservation (dates, party, room type, rate or guest details). Maestro replaces the whole stay with what is sent, so pass EVERY field, not just the changed ones: the booking reference (CRSNumber), the Maestro reservation number (ReservationId), the full stay as quoted by maestro_get_availability, the guest profile, and a fresh HostedPaymentAccountID from the property's payment page — never card details. Asynchronous: confirm with maestro_get_reservation_status before telling anyone the change is made. |