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.