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.