OTA_ReadRQ - request sent by PMS to pull undelivered reservations, modifications and cancellations.
OTA_ResRetrieveRS - response sent by pmsXchange with a list of reservations, modifications and cancellations.
OTA_NotifReportRQ - request sent by PMS to confirm after processing the reservations.
OTA_NotifReportRS - response sent by pmsXchange to acknowledge receipt.
OTA_HotelAvailNotifRQ - request sent by PMS with the real-time Availability changes for the reserved room types and stay dates.
OTA_HotelAvailNotifRS - response from pmsXchange to confirm whether the OTA_HotelAvailNotifRQ message has been processed successfully.
OTA_ReadRQ
The PMS should pull reservations every 2 to 5 minutes. This means that reservations, modifications, and cancellations should not be requested more frequently than every 2 minutes (e.g., not every 1 minute) and should not be requested less frequently than every 5 minutes (e.g., not every 10 minutes).
This message will return all undelivered reservations, modifications and cancellations for the hotel with HotelCode ABC
This message will return all undelivered reservations, modifications and cancellations for all hotels for the PMS with code PMS1.
This message is only available for centrally located PMS (uses centralised credentials to access all properties via pmsXchange).
Defines the XML namespace for the request. Will be set to http://www.opentravel.org/OTA/2003/05
@EchoToken
String
1
Unique identifier for the request, used to match requests and responses.
@TimeStamp
DateTime
1
Time when the request was generated.
@Version
Decimal
1
Specifies the API version. Must be set to 1.0.
POS / Source / RequestorID
Element
1
PMS Code assigned by SiteMinder and remains the same throughout the messages
@Type
Integer
1
Fixed at 22 (ESRP)
@ID
String
1
ReadRequests
Element
1
ReadRequests / HotelReadRequest
Element
1
@HotelCode
String
0..1
Hotel code as recognised by pmsXchange. If omitted, all reservations for the PMS will be returned.
Note: This attribute is only optional for central property management systems. It is mandatory for on-site systems.
SelectionCriteria
Element
1
@SelectionType
String
1
Must be "Undelivered"
@ResStatus
Enumeration
0..1
Specifies the booking status:
Commit
Modify
Cancel
OTA_ResRetrieveRS
The message consists of a list of HotelReservation elements. The content may vary since pmsXchange delivers reservations from multiple upstream sources (Booking Channels), many of which have significantly different reservation formats and data structures.
In general, the following applies to HotelReservations:
A HotelReservation represents a single reservation made with an upstream system.
A HotelReservation can include one or more RoomStays, one for each booked room type.
A RoomStay signifies a stay in a specific room type over a continuous timespan; non-continuous stays (split stays) will result in multiple RoomStays.
A HotelReservation may have zero, one, or multiple ResGuests associated with either the RoomStay they occupy or the reservation itself.
Full list of HotelReservation attributes are accessible here: OTA_ResRetrieveRS.
The <Success/> element indicates a successful response. In this example, two new reservations are returned. The pmsXchange reservation identifiers are WTF-12345 and HTL-67890, with the corresponding message IDs being isuokfr1pyc2ntest7 and pbp6s5j08test9n0zi.
The presence of the <Success/> element indicates successful processing; however, the absence of the ReservationsList element signifies that no undelivered reservations were available.
The presence of the <Errors/> element indicates an error in business logic occurred.
<OTA_ResRetrieveRSxmlns="http://www.opentravel.org/OTA/2003/05"Version="1.0"TimeStamp="2025-08-01T09:31:00+08:00"EchoToken="echo-abc123"> <Errors> <ErrorType="3"Code="392">Invalid Hotel Code</Error> </Errors></OTA_ResRetreiveRS>
OTA_NotifReportRQ
The PMS sends a confirmation message to pmsXchange for the delivery of reservations, modifications, or cancellations. If not confirmed, the information will be resent in response to the OTA_ReadRQ message. Confirmation of delivery does not guarantee that the reservation was successfully created in the PMS. The OTA_NotifReportRQ message can be used to confirm any erroneous deliveries.
The structure of the OTA_NotifReportRQ does not permit a mix of successfully processed and erroneous reservations in the same message. Successfully processed reservations must be confirmed in separate OTA_NotifReportRQ messages from those that could not be processed.
pmsXchange will automatically mark a reservation as 'Error' (fail) under the following conditions:
20 Delivery Attempts: The reservation has been requested (OTA_ReadRQ) at least 20 times without receiving a valid OTA_NotifReportRQ.
14-Day Timeout: No delivery attempts have been made for 14 days.
1-Hour Timeout: At least one delivery attempt has been made, and it has been 1 hour since the first attempt.
Important: This mechanism is a fail-safe feature; we expect to receive either a 'Success' or 'Error' OTA_NotifReportRQ. It should not be relied upon for handling reservations that cannot be processed.
The presence of the <Success/> element indicates that the reservation was created in the PMS
The UniqueID Type 16 element informs pmsXchange which reservation message is being confirmed
The HotelReservationID holds the ID of the newly created reservation in the PMS
The presence of the <Success/> element indicates that the reservations were created in the PMS
The UniqueID Type 16 element informs pmsXchange which reservation messages are being confirmed
The HotelReservationID holds the ID of the newly created reservations in the PMS
It is not necessary for all reservations retrieved in a single ReadRQ to be confirmed in one OTA_NotifReportRQ message. If it’s more convenient for the PMS to send one OTA_NotifReportRQ for each reservation, that approach is perfectly acceptable.
<OTA_NotifReportRSxmlns="http://www.opentravel.org/OTA/2003/05"Version="1.0"TimeStamp="2025-08-20T09:30:47+02:00"EchoToken="echo-abc123"> <Errors> <ErrorType="3"Code="385">Could not find Notifications to confirm with notification id='3123456'</Error> </Errors></OTA_NotifReportRS>