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

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

Email

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.
If the partner cannot use country and area code then entire number is passed in the PhoneNumber field and FormattedInd it should be set to YES if the number needs to be parsed as there is a separation of the different parts or set to 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

Email

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:

  • The master reservation number in case of multi-room bookings

  • The OTA and OTA confirmation numbers assigned to this booking

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:

  • None

  • CC/DC/Voucher

1

@GuaranteeCode

This is the guarantee code. Can be either

  • Credit Card

  • NOT GUARANTEED

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.

  • Per stay

  • Per person

  • Per night

  • Per person per night

  • Per use

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

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