Push API - Reservation Notification Service
Overview
External channel will send reservations to Windsurfer CRS using the reservation notification request messages. Each reservation notification request will hold a single reservation record. Windsurfer CRS will send either success response with Windsurfer CRS confirmation code or error response with reasons for failure.
New, modified and cancelled reservations are all pushed by sending OTA_HotelResNotifRQ messages and receiving an OTA_HotelResNotifRS message in response.
The exchange of information between Windsurfer and external channel happens through the exchange of SOAP messages. Each message is contained within a SOAP envelope. All messages must contain an HTNG specified Soap Header that complies with WS Security (authentication only) and WS- Addressing standards.
Endpoints
The endpoints to send reservations are the following:
UAT: https://uat.windsurfercrs.com/idsv2/Reservation.aspx
Production: https://ids.windsurfercrs.com/idsv2/reservation.aspx
Sample New Reservation Message
<?xml version="1.0" encoding="utf-8"?>
<OTA_HotelResNotifRQ xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" EchoToken="a3dc39e2-e960-4033-8cbc-32d05e6bb594" TimeStamp="2019-12-04T21:57:30.694161-06:00" Target="Production" TargetName="Production" Version="1.003" ResStatus="Commit" xmlns="http://www.opentravel.org/OTA/2003/05">
<POS>
<Source>
<RequestorID Type="13" ID="473" />
<BookingChannel Type="7" Primary="true">
<CompanyName Code=""/>
</BookingChannel>
</Source>
</POS>
<HotelReservations>
<HotelReservation CreateDateTime="2020-12-05T00:00:00" CreatorID="RateGain" ResStatus="Commit">
<UniqueID Type="14" ID="1998888729" />
<BasicPropertyInfo HotelCode="16392" />
<RoomStays>
<RoomStay RoomStayStatus="Book">
<RatePlans>
<RatePlan RatePlanCode="BARRO" />
</RatePlans>
<RoomRates>
<RoomRate RoomTypeCode="DBL" NumberOfUnits="1" RatePlanCode="BARRO">
<Rates>
<Rate EffectiveDate="2023-04-04" ExpireDate="2023-04-04" RateTimeUnit="Day" UnitMultiplier="1">
<Base AmountAfterTax="274.50" CurrencyCode="EUR" />
</Rate>
</Rates>
</RoomRate>
</RoomRates>
<GuestCounts>
<GuestCount AgeQualifyingCode="10" Count="1" />
</GuestCounts>
<TimeSpan Start="2023-04-04" Duration="P1D" End="2023-04-04" />
<CancelPenalties />
<Total AmountAfterTax="274.50" CurrencyCode="EUR" />
<ResGuestRPHs>1</ResGuestRPHs>
<Comments>
<Comment>
<Text>||meal_plan:Room[4662009]-Enjoy a convenient breakfast at the property for Rp 181,500 per person, per night. || RateID[9586126] Mobile secret DEAL Total Surcharge is:66272.636364</Text>
</Comment>
<Comment>
<Text>Flag Details: no_cc_reservation,booker_is_genius</Text>
</Comment>
<Comment>
<Text>Guest and Service Details: GF_3,Welcome drink||GF_5,Give Genius guests 2 extra hours to check out||GF_7,Free parking – Genius guests will get free parking at the property.||GF_8,Free WiFi – Genius guests will get free WiFi at the property.</Text>
</Comment>
</Comments>
<SpecialRequests>
<SpecialRequest RequestCode="NonSmoking" CodeContext="http://cgbridge.rategain.com" />
<SpecialRequest RequestCode="text" CodeContext="http://cgbridge.rategain.com">
<Text>LargeBed || NonSmoke || LateCheckIn || HighFloor</Text>
</SpecialRequest>
<SpecialRequest RequestCode="text">
<Text>1.13-1 double bed</Text>
</SpecialRequest>
<SpecialRequest RequestCode="text">
<Text>2.1-Non-Smoking</Text>
</SpecialRequest>
<SpecialRequest RequestCode="text">
<Text>
5-Expedia Virtual Card will be activated from the day of Check-in.
</Text>
</SpecialRequest>
</SpecialRequests>
</RoomStay>
</RoomStays>
<Services>
<Service>
<ServiceDetails>
<GuestCounts>
<GuestCount AgeQualifyingCode="10" Count="1" />
</GuestCounts>
<TimeSpan Start="2023-04-04" Duration="P1D" End="2023-04-04" />
<Total AmountAfterTax="274.50" CurrencyCode="EUR" />
</ServiceDetails>
</Service>
</Services>
<ResGuests>
<ResGuest ResGuestRPH="1" PrimaryIndicator="true">
<Profiles>
<ProfileInfo>
<Profile ProfileType="1">
<Customer>
<PersonName>
<GivenName>Test</GivenName>
<MiddleName />
<Surname>Test</Surname>
</PersonName>
<Telephone PhoneTechType="1" PhoneNumber="+1 713 333 9944" FormattedInd="false" DefaultInd="true" />
<Email DefaultInd="true" EmailType="1">integ@shr.global</Email>
<Address>
<AddressLine>Test</AddressLine>
<CityName>Test</CityName>
<PostalCode>3474</PostalCode>
<StateProv StateCode="" />
<CountryName Code="sa">Saudi Arabia</CountryName>
</Address>
</Customer>
</Profile>
</ProfileInfo>
</Profiles>
</ResGuest>
<ResGuest>
<Profiles>
<ProfileInfo>
<Profile ProfileType="18">
<Customer>
<PersonName>
<GivenName>Test</GivenName>
<MiddleName />
<Surname>Shen</Surname>
</PersonName>
<Telephone PhoneTechType="1" PhoneNumber="+1 713 333 9944" FormattedInd="false" DefaultInd="true" />
<Email DefaultInd="true" EmailType="1">integ@shr.global</Email>
<Address>
<AddressLine>Castletroy</AddressLine>
<CityName>Limerick</CityName>
<PostalCode>3474</PostalCode>
<StateProv StateCode="" />
<CountryName Code="sa">Saudi Arabia</CountryName>
</Address>
</Customer>
</Profile>
</ProfileInfo>
</Profiles>
</ResGuest>
</ResGuests>
<ResGlobalInfo>
<TimeSpan Start="2023-04-04" Duration="P1D" End="2023-04-04" />
<Comments>
<Comment>
<Text>BoardTypename=Enjoy a convenient breakfast at the property for Rp 181,500 per person, per night.</Text>
</Comment>
</Comments>
<Guarantee GuaranteeCode="NOT GUARANTEED" GuaranteeType="None" />
<CancelPenalties>
<CancelPenalty>
<PenaltyDescription Name="RoomID[4662009] Please note, if cancelled, no fee will be charged." />
</CancelPenalty>
</CancelPenalties>
<Total AmountAfterTax="274.50" CurrencyCode="EUR" />
<HotelReservationIDs>
<HotelReservationID ResID_Type="13" ResID_Value="96897383" />
</HotelReservationIDs>
</ResGlobalInfo>
</HotelReservation>
</HotelReservations>
</OTA_HotelResNotifRQ>
Sample Cancel Reservation Message
OTA_HotelResNotifRQ EchoToken="f7082733-75d9-4239-afc8-168351c95adc" TimeStamp="2014-11-04T14:31:38.8328335+05:30" Target="Production" TargetName="Production" Version="1.003" ResStatus="Cancel" xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<POS>
<Source>
<RequestorID Type="13" ID="473"/>
<CompanyName Code="BKNG"/>
</BookingChannel>
</Source>
</POS>
<HotelReservations>
<HotelReservation CreateDateTime="2015-02-04T00:00:00" CreatorID="Windsurfer"
ResStatus="Cancel">
<UniqueID Type="14" ID="657635191" />
<BasicPropertyInfo HotelCode="WSTestHotel" />
<RoomStays>
<RoomStay RoomStayStatus="Book">
<RatePlans>
<RatePlan RatePlanCode="954294" />
</RatePlans>
<RoomRates>
<RoomRate RoomTypeCode="DBL" NumberOfUnits="1" RatePlanCode="NFR">
<Rates>
<Rate EffectiveDate="2015-04-19" ExpireDate="2015-04-20"
<Base AmountBeforeTax="68" CurrencyCode="EUR" />
</Rate>
<Rate EffectiveDate="2015-04-20" ExpireDate="2015-04-21" RateTimeUnit="Day" UnitMultiplier="1">
<Base AmountBeforeTax="68" CurrencyCode="EUR" />
</Rate>
<Rate EffectiveDate="2015-04-21" ExpireDate="2015-04-22" RateTimeUnit="Day" UnitMultiplier="1">
<Base AmountBeforeTax="68" CurrencyCode="EUR" />
</Rate>
<Rate EffectiveDate="2015-04-22" ExpireDate="2015-04-23" RateTimeUnit="Day" UnitMultiplier="1">
<Base AmountBeforeTax="68" CurrencyCode="EUR" />
</Rate>
</Rates>
</RoomRate>
</RoomRates>
<GuestCounts>
<GuestCount AgeQualifyingCode="10" Count="2" />
</GuestCounts>
<TimeSpan Start="2015-04-19" Duration="P4D" End="2015-04-23" />
<Total AmountBeforeTax="272" CurrencyCode="EUR">
<Taxes />
</Total>
<ResGuestRPHs>1</ResGuestRPHs>
<Comments>
<Comment>
<Text>Request: We are two teachers coming from fhjg to visit your primary school. If thre is a room with sea view available, we would enjoy that view... :) Response: The accommodation has told us that it is possible to arrange this. However, test Hotel is unable to guarantee it, and would like to specify that the request is subject to availability at the time of check in.</Text>
</Comment>
</Comments>
<SpecialRequests>
<SpecialRequest RequestCode="NonSmoking" CodeContext="http://www.windsurfer.com" />
</SpecialRequests>
</RoomStay>
</RoomStays>
<Services>
<Service>
<ServiceDetails>
<GuestCounts>
<GuestCount AgeQualifyingCode="10" Count="2" /> </GuestCounts>
<TimeSpan Start="2015-04-19" Duration="P4D" End="2015-04-23" /> <Total AmountBeforeTax="272" CurrencyCode="EUR" />
</ServiceDetails>
</Service>
</Services>
<ResGuests>
<ResGuest ResGuestRPH="1" PrimaryIndicator="true"> <Profiles>
<ProfileInfo>
<Profile ProfileType="1">
<Customer>
<PersonName>
<GivenName>Guest 1</GivenName>
<Surname>Test</Surname>
</PersonName>
<Telephone PhoneTechType="1" PhoneNumber="+358407384776" FormattedInd="false" DefaultInd="true" />
<Email DefaultInd="true" EmailType="1">Test.Guest1@xyz.com</Email>
<Address>
<AddressLine>gdfh</AddressLine>
<CityName>hfdh</CityName>
<PostalCode>43100</PostalCode>
<CountryName Code="IN">India</CountryName>
</Address>
<EmployerInfo />
</Customer>
</Profile>
</ProfileInfo>
</Profiles>
</ResGuest>
<ResGuest>
<Profiles>
<ProfileInfo>
<Profile ProfileType="18">
<Customer>
<PersonName>
<GivenName>Guest 1</GivenName>
<Surname>Test</Surname>
</PersonName>
<Telephone PhoneTechType="1" PhoneNumber="+358407384776" FormattedInd="false" DefaultInd="true" />
<Email DefaultInd="true" EmailType="1">Test.Guest1@xyz.com</Email>
<Address>
<AddressLine>fdth</AddressLine>
<CityName>rfh</CityName>
<PostalCode>43100</PostalCode>
<CountryName Code="IN">India</CountryName> </Address>
<EmployerInfo />
</Customer>
</Profile>
</ProfileInfo>
</Profiles>
</ResGuest>
</ResGuests>
<ResGlobalInfo>
<TimeSpan Start="2015-04-19" Duration="P4D" End="2015-04-23" />
<Guarantee GuaranteeCode="CreditCard" GuaranteeType="CC/DC/Voucher"> <GuaranteesAccepted>
<GuaranteeAccepted>
<PaymentCard CardType="1" CardCode="VI"
CardNumber="1111111111111111" ExpireDate="1120">
<CardHolderName>Test Test</CardHolderName> </PaymentCard>
</GuaranteeAccepted>
</GuaranteesAccepted>
</Guarantee>
<Total AmountBeforeTax="272" CurrencyCode="EUR" /> <HotelReservationIDs>
<HotelReservationID ResID_Type="16" ResID_Value="657635191" />
<HotelReservationID ResID_Type="13" ResID_Value="657635191" />
<HotelReservationID ResID_Type="14" ResID_Value="RES8514215R336" />
</HotelReservationIDs>
</ResGlobalInfo>
</HotelReservation>
</HotelReservations>
</OTA_HotelResNotifRQ>
Element/@Attribute | Description | Occurrences |
---|---|---|
@ResStatus | To specify the type of action requested. Will be one of the following: “Commit” > New Reservation “Modify” > Modification “Cancel” > Cancellation | 1 |
POS | Indicating the channel from which booking is received. A simple source record would look like this: <POS>
<Source>
<BookingChannel>
<CompanyName Code=”LTA1”> Famous OTA </CompanyName>
</BookingChannel>
</Source> This indicates that the reservation was received from the OTA “Famous OTA” whose Windsurfer code is LTA1 | 1 |
Source | Provides information on the source of a request. | 1 |
BookingChannel | Specifies the booking channel type and whether it is the primary means of connectivity of the source. | 1 |
CompanyName | Contains the name of the channel. | 1 |
@Code | Contains code for the channel from which Windsurfer receives the booking. A list of OTA channels will be agreed between CRS and OTA. | 1 |
HotelReservations | Contains 1 or more instance of hotel reservations. OTA should only send one reservation in one message. | 1 |
HotelReservation | Reservation record | 0..1 |
@CreateDateTime | Time of booking in UTC format | 1 |
@LastModifiedDateTime | Last updated time of booking in UTC format | 0..1 |
@ResStatus | Reservation status. Since only one reservation record is sent in a message, the ResStatus at the message level and at the reservation level will both be the same. | 1 |
@CreatorID | The CreatorID is the identifier of the user or, in its absence, the office that originated the reservation. | 0..1 |
BasicPropertyInfo | Property information for the reservation. An abbreviated short summary of hotel descriptive information. | 1 |
@HotelCode | Hotel code for this reservation. Will be OTA/CRS partner hotel code. | 1 |
UniqueID | An identifier used to uniquely identify a booking confirmation number. | 1 |
@Type | UniqueID type. Always set to 14 | 1 |
@ID | Unique booking created in the source OTA channel | 1 |
RoomStays | Contains 1 or more RoomStay elements. Allowed only 1 RoomStay element if the partneris working on split mode reservation delivery. | 1 |
RoomStay | Details of a room stay. | 1..n |
RatePlans | Contains RatePlan element associated with this room stay. | 1 |
RatePlan | Details of a particular RatePlan | 1 |
@RatePlanCode | Used to pass OTA/Channel specific RatePlanCode booked in this RoomStay and not the RatePlanCode configured in CRS/OTA system. You may ignore it if not required | 1 |
RoomRates | Contains RoomRate elements associated with this room stay. | 1 |
RoomRate | A room rate element | 1 |
@RoomTypeCode | Room type code of this room stay in CRS/OTA system | 1 |
@NumberOfUnits | This is the number of rooms booked for the room type listed in the RoomTypeCode attribute. | 1 |
@RatePlanCode | Rate type code of this room stay | 1 |
Rates | Rate details for each of the stay dates | 1..n |
@EffectiveDate | The EffectiveDate attribute indicates the start of the date range for which this specific rate is applied. A RoomStay could have different rates applied for different stay dates. EffectiveDate and ExpireDate of each rate element together define for which dates of the stay that rate is applicable | 1 |
@ExpireDate | The ExpireDate attribute indicates teh end of the date range for which this specific rate is applied. | 1 |
@RateTimeUnit | Indicates the unit of time. Should always be “Day” | 1 |
@UnitMultiplier | UnitMultiplier indicates how many days the rate is applicable for. Always set to “1” | 1 |
Base | The base amount charged for the accommodation or service per unit of time | 1 |
@CurrencyCode | Indicates the currency of the rate. | 1 |
@AmountBeforeTax | Base amount before tax. Either AmountBeforeTax or AmountAfterTax must be present. | 0..1 |
@AmountAfterTax | Amount including tax. Either AmountBeforeTax or AmountAfterTax must be present. | 0..1 |
GuestCounts | Contains the guest counts of the room stay | 1 |
GuestCount | Contains the type and number of guests included in the room stay. Will be repeated for each guest type: Adult and Child | 1..2 |
@AgeQualifyingCode | Windsurfer supports the following values: 10 = Adult 8 = Child | 1 |
@Count | Guest Count | 1 |
TimeSpan | The time span which covers the Room Stay. Used to specify a time window range by specifying an earliest and latest date for the start date and end date. | 1 |
@Start | Check-in date for this room stay. | 1 |
@End | Check-out date for this room stay. | 1 |
Total | The total amount charged for the room stay. | 1 |
@CurrencyCode | Indicates the currency of the total | 1 |
@AmountBeforeTax | Total amount excluding tax. Either AmountBeforeTax or AmountAfterTax must be present. | 0..1 |
@AmountAfterTax | Total amount including tax. Either AmountBeforeTax or AmountAfterTax must be present. | 0..1 |
Taxes | Contains taxes and surcharges, if any. | 0..1 |
@Type | Indicates whether the tax is inclusive, exclusive, or cumulative. | 1 |
@Code | Used to indicate the specific tax or fee that is being transferred. 16 = surcharge 17 = total tax | 1 |
@CurrencyCode | Currency of the total amount of taxes | 1 |
@Amount | Amount of the specific tax/fee transferred | 1 |
Memberships | A collection of membership objects. Memberships provide a list of reward programs which may be credited with points accrued from the guest’s activity. | 0..1 |
Membership | The SelectedMembership object identifies the frequent customer reward program and (optionally) indicates points awarded for stay activity. | 0..1 |
@AccountID | The account identification number for this particular member in this particular program. | 0..1 |
@PointsEarned | The total number of points earned through the selected membership. | 0..1 |
@ProgramCode | The code or name of the membership program ('Hertz', ‘AAdvantage’, etc.) | 0..1 |
@TravelSector | Identifies the travel sector. Refer to OpenTravel Code List Travel Sector (TVS) | 0..1 |
Comments | A collection of comments. | 0..1 |
Comment | A comment which applies to the room stay. A comment can either be guest viewable or not. | 1 |
@GuestViewable | This indicates that the comment can actually be seen by the guest and is necessary when two different types of comments are passed: one which is guest viewable and one that isn’t. | 1 |
Text | Comment text | 1 |
ResGuestRPHs | An integer serving as reference placeholders, and used as an index identifying which guests occupy this room. | 1 |
ServiceRPHs | A collection of unsigned integers that reference the RPH (Reference Placeholder) attribute in the Service object. The ServiceRPH attribute in the service object is an indexing attribute that identifies the services attached to this room stay. | 0..1 |
ResGuests | Contains guest information elements. Will always contain at least one element with the primary guest information. | 1 |
ResGuest | At least one guest-information will be sent. May optionally contain additional guest information. Used to pass different guest profile info i.e. can be guest, TravelAgent, Company profile details | 1..n |
@AgeQualifyingCode | Windsurfer supports the following values: 10 = Adult 8 = Child | 1 |
@PrimaryIndicator | Will be true for primary guest. Only one ResGuest element in the ResGuests container will have the value of primary indicator set to true. | 1 |
@ArrivalTime | This represents the date and time of the guest’s arrival at the hotel. For example, this could be used to indicate a late arrival. | 0..1 |
@DepartureTime | This represents the date and time of the guest’s arrival at the hotel. For example, this could be used to indicate a late arrival. | 0..1 |
@ResGuestRPH | This is a reference placeholder, used as an index for this guest in this reservation. It is used by the RoomStay and Service objects to indicate which guests are associated with that room stay or service. | 1 |
Profiles | Mandatory for the primary guest and optional for the other guests. | 1 |
ProfileInfo | Only one ProfileInfo element is allowed for each guest. | 1 |
UniqueID | This is used to pass a Unique ID linked to the profile that is being transferred. For a guest profile, it could be the customer loyalty number, for a company it could be the corporate ID. For a travel Agency it could be the IATA number. | 0..n |
@Type | The Type attribute refers to OpenTravel Alliance code type UIT and the choices recommended by HTNG should be: 1 = Customer 4 = Company 5 = Travel Agency | 1 |
@ID | The actual ID | 1 |
@IDContext | Used to identify the source of the identifier (e.g. IATA, ABTA, Guest Loyalty ID, Corporate ID) | 0..n |
Profile | Profile information. Used to pass the profile info for the guest, the company, or the travel agency. For the individual guest, the code used in the ProfileType is the OTA PRT code 1 (Customer), for company it is PRT code 3 (Corporation). For a travel agency it is PRT code 4. | 1 |
@ProfileType | Code to specify a profile as Customer, Booker, Tour Operator, Corporation, etc. Supported types in Windsurfer: 1: Customer 3: Corporate/Company profile 4: Travel Agency | 1 |
Customer | Profile details of a guest. Used to transmit the profile details of a guest. Optional for travel agent/company profile | 0..1 |
PersonName | Name of guest | 1 |
NamePrefix | This field would be used to pass the guest’s name prefix | 0..1 |
GivenName | Part of guest’s name. This field would be used to pass the guest’s first name. | 1 |
Surname | Surname part of guest’s name. | 1 |
Telephone | Guest phone number | 0..1 |
@PhoneNumber | The phone number | 1 |
@PhoneLocationType | The PhoneLocationType attribute refers to the OTA PLT code list and indicates where the phone number is based: 6: Home 7: Office 8: Other (e.g. cell phone) | 0..1 |
@PhoneTechType | The PhoneTechType attribute refers to the OTA PTT code list and indicates which type of number is transmitted (phone vs fax). 1: Voice 3: Fax | 1 |
@CountryAccessCode | Code assigned by telecommunications authorities for international country access identifier | 0..1 |
@AreaCityCode | Code assigned for telephones in a specific region, city, or area. | 0..1 |
@FormattedInd | FormattedInd is mandatory. If the partner can use Country and Area codes, then it should be set to no. If country code and area code are passed, then they should not appear again in the PhoneNumber field. If the partner cannot use country and area code, then the entire number is passed in the PhoneNumberfield and FormattedInd should be set to yes if the number needs to be parsed as there is a separation of the different parts or no to indicate that the PhoneNumber field contains the entire phone number without a specific format. | 1 |
@DefaultInd | DefaultInd is optional and would indicate whether the phone number is the primary phone number for the profile. | 0..1 |
Guest email | 0..1 | |
@EmailType | The Email Type attribute uses the OTA code list EAT and indicates the type of email address provided. 1: Personal 2: Business Must be passed if more than one email address is passed. If only one email is passed, this is optional. | 0..1 |
@DefaultInd | DefaultInd is optional and would indicate whether the email is the primary email for the profile. | 0..1 |
Address | Address of the guest | 0..1 |
@Type | The Type attribute uses the OTA code list CLT and indicates the type of address provided 1: Home 2: Business 3: Other | 0..1 |
AddressLine | Will contain 1 to 2 address lines. Will contain at least one line. | 1 |
CityName | City name | 0..1 |
StateProv | State name | 0..1 |
@StateCode | State code | 0..1 |
PostalCode | Postal code | 0..1 |
CountryName | Country name | 0..1 |
@Code | ISO country code | 0..1 |
CompanyInfo | Company information related to the profile. Detailed information about a company or travel agent. | 0..1 |
CompanyName | Detailed name information for the company. Identifies a company by name. | 0..1 |
TelephoneInfo | Company phone number | 0..1 |
@PhoneNumber | The actual phone number | 0..1 |
@PhoneLocationType | The PhoneLocationType attribute refers to the OTA PLT code list and indicates where the phone number is based. 6: Home 7: Office 8: Other (e.g. cell phone) | 0..1 |
@PhoneTechType | The PhoneTechType attribute refers to the OTA PTT code list and indicates which type of number is transmitted (phone vs. fax) 1: Voice 2: Fax | 0..1 |
@CountryAccessCode | Code assigned by telecommunications authorities for international country access identifier | 0..1 |
@AreaCityCode | Code assigned for telephones in a specific region, city, or area. | 0..1 |
@FormattedInd | FormattedInd is MANDATORY. If thepartner can use Country and Area codes then it should be set to NO. If country code and area code are passed then they should not appear again in the PhoneNumber field. | 1 |
@DefaultInd | DefaultInd is optional and would indicate whether the phone number is the primary phone number for the profile. | 0..1 |
This element is used to pass the Company or Travel Agency’s email | 0..1 | |
AddressInfo | Address of the guest | 0..1 |
AddressLine | Will contain 1 to 2 address lines. | 1 |
CityName | City name | 0..1 |
StateProv | State name | 0..1 |
@StateCode | State code | 0..1 |
PostalCode | Postal code | 0..1 |
CountryName | Country name | 0..1 |
@Code | ISO country code | 0..1 |
ResGlobalInfo | ResGlobalInfo is a container for various information elements that affect the reservation as a whole. These include global comments, counts, reservation IDs, loyalty programs, and payment methods. | 1 |
HotelReservationIDs | Contains reservation ID elements. For new reservations, this will only contain OTA confirmaiton number. For modifications and cancellations original OTA confirmation numbers will be included. | 1 |
HotelReservationID | This element can be repeated multiple times to transfer:
| 2..3 |
@ResID_Type | ResID_Type is assigned values from the UIT code list. 16: “Master” reservation number (when multiple split reservations need to be grouped together in case of multiroom bookings) 14: for CRS confirmation number 13: for IDS confirmation number If the partner is working on split mode, type=16 represent per leg of the room reservation booked. | 1 |
@ResID_Value | ResID_Value would be the confirmation number of the reservation identified by the ResID_Type | 1 |
Guarantee | The guarantee information associated to the room stay. If there are no CC details, it may be optional or have blank CC details included. | 0..1 |
@GuaranteeType | This is the attribute that indicates what guarantee is provided with the reservation. The enumerated values can be:
| 1 |
@GuaranteeCode | This is the guarantee code. Can be either
| 1 |
GuaranteesAccepted | A collection of guarantee elements | 0..1 |
GuaranteeAccepted | Guarantee detail | 1 |
PaymentCard | Identification about a specific card. Mandatory if @GuaranteeCode=CreditCard | 1 |
@CardType | This is the code of the card used as a guarantee for the booking. CardType uses an OTA list. the only item of the CDT list to be used is 1 (Credit) to indicate we are passing a credit card. Mandatory if @GuaranteeCode=CreditCard | 1 |
@CardCode | The card code is the 2 letter code indicative of the card (VI, MC, AX, etc.) Mandatory if @GuaranteeCode=CreditCard | 1 |
@CardNumber | Mandatory if credit card guarantee info is passed. This is the actual number of the credit card used as guarantee. Mandatory if @GuaranteeCode=CreditCard | 1 |
@ExpiryDate | Mandatory if credit card guarantee info is passed. This is the expiry date of the credit card used as a guarantee. Format MMYY Mandatory if @GuaranteeCode=CreditCard | 1 |
@SeriesCode | Optional. This is the CVV or CSN of the credit card used. | 0..1 |
CardHolderName | Mandatory if @GuaranteeCode=CreditCard. This is the name of the cardholder. If the system transmitting the info does not hold the cardholder name, this will be set by default to NOT AVAILABLE. | 1 |
GuaranteeDescription | Optional. This can be used to pass the details of the guarantee if the guarantee used is not credit card or deposit. | 0..1 |
@Name | Used in conjunction with Text element below. Name could be used to indicate voucher and the Text could be used to indicate the voucher number for instance. | 0..1 |
Text | The text of the guarantee description. | 0..1 |
TimeSpan | The time span which covers the room stay. Used to specify a time window range by either specifying an earliest and latest date for the start date and end date or by giving a date with a time period that can be applied before/after the start date. | 1 |
@Start | Check-in date for this room stay | 1 |
@End | Check-out date for this room stay | 1 |
Total | The total amount charged for the whole stay. | 1 |
@CurrencyCode | Indicates the currency of the total | 1 |
@AmountBeforeTax | Total amount excluding tax. Either AmountBeforeTax or AmountAfterTax must be present. | 0..1 |
@AmountAfterTax | Total amount including tax. Either AmountBeforeTax or AmountAfterTax must be present. | 0..1 |
Services | A collection of Service objects. This is the collection of all services associated with any part of this reservation (the reservation in its entirety, one or more guests, one or more room stays). Which services are attributable to which part is determined by each object’s ServiceRPHs collection. | 0..1 |
Service | This is a reference placeholder, used as an index for this service in this reservation. It is used by the RoomStay objects to indicate which services are associated with that room stay. | 0..1 |
@Inclusive | Whether the price for this service is included in the room rate: true/false | 0..1 |
Quantity | The number of tickets, rounds of golf, etc. Also serves as the number of persons when pricing class is per person or per person per night. | 0..1 |
@RatePlanCode | The representation of the rate plan under which this service was booked. | 0..1 |
@ServiceInventoryCode | The representation of the specific service being reserved. | 0..1 |
@ServicePricingType | An enumerated type that defines how a service is priced.
| 0..1 |
Price | The selling price of this service | 0..1 |
ServiceDetails | Details on the service including guest counts, time span of this service, pointers to res guests. | 0..1 |
GuestCounts | Guest type-wise count of guests for this service. Similar to GuestCounts under RoomStay. (See above) | 0..1 |
ResGuestRPHs | A collection of ResGuestRPH objects. A collection of unsigned integers serving as reference placeholders, and use as an index identifying which guests avail this service. Similar to ResGuestRPHs under RoomStay. (see above) | 0..1 |
TimeSpan | Similar to TimeSpan under RoomStay. (see above) | 0..1 |
Total | Similar to Total under RoomStay. (see above) | 0..1 |
OTA_HotelResNotifRS
Windsurfer CRS will respond to the OTA_HotelResNotifRQ message by returning an OTA_HotelResNotifRS message. The only exception to this is when a SOAP level fault occurs while OTA processes the request. A SOAP fault should be generated and returned if the message does not meet the web service specifications. Windsurfer CRS will be able to receive and process SOAP faults. Since the synchronous communication mode is used, Windsurfer CRS should be able to process the message and return a confirmation number or an error. Response messages indicating failures should contain at least one error element. It is possible that more than one error element is returned
Sample Success Message
Element/@Attribute | Description | Occurrences |
---|---|---|
@TimeStamp | Response time stamp | 1 |
@Version | Mandatory | 1 |
HotelReservations | Must be present in case of Success response | 1 |
HotelReservation | One for each reservation notification received in the request | 1 |
ResGlobalInfo | A container for various that affects the Reservation as a whole | 1 |
HotelReservationIDs | A collection of HotelReservationID objects for a given reservation | 1 |
HotelReservationID | The HotelReservationID object contains various unique (ReservationID and non-unique (ConfirmationID, CancellationID) identifiers that the trading partners associate with a given reservation. Windsurfer BookingID will be returned. | 2..3 |
@ResID_Type | Defines the type of Reservation ID (e.g. reservation number, cancellation number). Refer to OpenTravel Code List Unique ID Type (UIT) 3: for OTA confirm ID 14: Windsurfer ID | 1 |
@ResID_Value | Actual value associated with ResID_Type as generated by the system that is the source of the ResID_Type | 1 |
Errors | Included in response only if there are errors in processing. | 0..1 |
Error | Response will include as many Errors as required. At least one Error element must be present if the response contains Errors. | 1 |
@Code | Error code. Should be one of the codes listed in Error Codes below. | 1 |
@ShortText | Free text | 1 |
@Status | Should be set to String “NotProcessed” | 1 |
Success | Presence of this element indicates a success response. The Error element should not be present. | 0..1 |
Warnings | Response may include warnings along with a Success response. Warnings are not allowed with a response that contains Errors. | 0..1 |
Warning | Response may include as many Warnings as required. At least one Warning element must be present in a response that contains Warnings. | 1 |
@Code | All Warnings will have the code set as a “3000” | 1 |
@ShortText | Free text | 1 |
@Status | Should be set to String “Processed” | 0..1 |