############################################## Suggested workflows and examples for AI agents ############################################## ********************** Reservation management ********************** Check for available rooms ========================= Method **getReservationOffers** will return available room-types with rates, cancellation-policies, prices and any other information needed to present information about room availablity for potential hotel guest. Mandatory parameters are checkin/checkout date and guest-count. The pricing and any other information are for single room. Each presented offer has unique identification which you can use later to create reservation for that offer. You can customize the offer with "available_service_offers", which will be charged extra. Valid services with price are part of the offer response. The pricing, room-type availablity numbers and whole configuration that determines what rooms and rates are presented is configured using HORES ChannelManager module - channel named "HORES API". Hotel must have ChannelManager module licenced, active and properly configured to use this functionality. Note that "Auto" assignment of room-type and price-type in ChannelManager configuration is not supported, when mapping is configured with "Auto" values, those mapping lines will be ignored by getReservationOffers() method. :: query findReservationOffers { findReservationOffers( free_from: "2026-07-01" free_to: "2026-07-10" guest_count: 2 ) { date_from date_to room_type { code description } available_room_count available_rooms { id code } available_rates { rate_id name long_description cancellation_policy total_price currency prices { date price } included_services { id service_name description } available_service_offers { id valid_to valid_from service { service_name } charge_model charge_currency charge_amount_per_unit total_price } } } } Create new reservation ====================== Reservation is created usng **createReservationFromOffer** from the offers using offer_id. That way it's guaranteed that only valid combinations of room-types and rates are used for given stay. Offer (offer_id) is invalidated 15 minutes after creation, you need to generate new offers after they expire. To reserve multiple rooms in single reservation you can use multiple offers or same offer multiple times, up to number of available rooms for given room-type. Use "services" to include services which are charged extra. If the extra service is already paid, you can include "payment" block, which will result as advance payment being registered against the reservation and receipt will be send to the reservation email. Reservation confirmation is send automatically to reservation email when reservation is created. Example request: :: mutation createReservation { createReservationFromOffer( reservation_header: { main_guest_name: "Novák" email: "test@mailserver.local" note: "pozn XY" } reservation_offers: [ { offer_id: "MTc4NDQ4OTYyNjo3Mzk4Mjk6NzM5ODM4OjI6MjA6Mg" main_guest: { profile: { last_name: "Last name" } } services: [ { service_id: 2, payment: { amount: "100", currency: "CZK" } } ] } ] ) { ok errors reservation_number } } If something went wrong or rooms are no longer available, you will get message in errors field of the response like this: :: { "data": { "createReservationFromOffer": { "ok": false, "errors": "Offer is expired!", "reservation_number": null, "reservation": null } } } Find (validate) reservation =========================== You can validate if reservation number belongs to valid reservation or find out reservation number for email, reference number or order_number using **findReservationNumber()** method. The method returns reservation number if reservation is valid or NULL if reservation was not found. If multiple search criteria are used, reservation must match all of them. :: query findres { findReservationNumber( email: "test@local" ) } Reservation confirmation ======================== You can send reservation confirmation to reservation number using **sendReservationConfirmation()** mutation. Leave email address empty to use email saved to the reservation. :: mutation sc { sendReservationConfirmation(reservation_number: "9847") { ok } } Additional services =================== If guest want's to order additional services after reservation is created, the list of available services can be retrieved using **listReservationServicesOffer** for reservations or **listCurrentRoomServices** for checked-in rooms. :: query lrs { listReservationServicesOffer(reservation_number: 9852) { id service { service_name description long_description } valid_from valid_to charge_model charge_currency charge_amount_per_unit total_price } } List of services already included in reservation/checked in rooms are returned by **listReservationServices** for reservations and **listCurrentRoomServices** for checked-in room. :: query lrs { listReservationServices( reservation_number: 9849 ) { id service_name description long_description } } You can directly write the ordered/paid service to reservation or checked-in room using methods **addReservationServices** and **addCurrentRoomServices". Currently there is no option to modify the services, since that's more complicated task, possibly needing payment adjusting and more complex reservation edits. For simplicity services are always ordered for the whole reservation, targeting mainly single-room reservations. There could be option later specify service for room/guest within multi-room reservation if needed. :: mutation addCRServ { addCurrentRoomServices( current_room_id: 7156 receipt_email: "test@local" receipt_language: "en" current_room_cs_input: { service_id: 2 payment: { amount: "300", currency: "CZK" } } ) { ok errors } } GuestGuide integration ====================== GuestGuide is HORES web application to engage with hotel guests before and during the stay. It can send automated emails, offer upsell, precheckin, payments etc. You can use HORES API functions to trigger certain events to help the guest with their requests: PIN resend ---------- Sends/Re-sends email or sms with PIN and instructions how to access the GuestGuide application :: mutation gg { sendGuestGuidePIN(reservation_number: 9867) { ok message } } Services order -------------- Sends email with link to order additional services for the reservation/stay. :: mutation gg { sendServicesOrderInstructions(reservation_number: 9867) { ok message } } Precheckin invite ----------------- Sends email with information for precheckin. Guest can fill in personal information in advance for quicker checkin. :: mutation gg { sendPrecheckinInvite(reservation_number: 9867) { ok message } } Advance payment --------------- Sends email with instructions for advance payment for the reservation. :: mutation gg { sendPaymentInstructions(reservation_number: 9867) { ok message } } Account payment --------------- Sends instructions for hotel account online payment (only for checked-in guests). Guest can pay the bill online.