Zenith API‎ > ‎1. Hotels‎ > ‎

4. Reservation notification

When a new booking is entered into Zenith, the system will notify you to a URL that is set up during the implementation process, in the following format (note that the same SOAP wrapper is used):

<OTA_HotelResNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" EchoToken="12345678" ResStatus="Commit|Modify|Cancel" TimeStamp="2015-11-11T12:12:12+00:00">
  <POS>
    <Source>
      <RequestorID Type="22" ID="BA1"/>
      <BookingChannel Primary="true" Type="1">
        <CompanyName Code="VE">Vandalay Enterprises Inc</CompanyName>
      </BookingChannel>
    </Source>
  </POS>
  <HotelReservations>
    <HotelReservation LastModifyDateTime="2015-11-11T12:10:12+00:00">
      <UniqueID Type="14" ID="3741"/>
      <RoomStays>
        <RoomStay PromotionCode="funions">
          <RoomTypes>
            <RoomType RoomTypeCode="ROOM2">
              <RoomDescription Name="Standard Room">Standard Room with double bed and single bed</RoomDescription>
            </RoomType>
          </RoomTypes>
          <RatePlans>
            <RatePlan RatePlanCode="RATE2">
              <RatePlanDescription>Breakfast rate</RatePlanDescription>
            </RatePlan>
          </RatePlans>
          <RoomRates>
            <RoomRate RoomTypeCode="ROOM1" RatePlanCode="RATE1" NumberOfUnits="1">
              <Rates>
                <Rate UnitMultiplier="1" RateTimeUnit="Day" EffectiveDate="2016-02-12" ExpireDate="2016-02-12">
                  <Base AmountBeforeTax="558.00" AmountAfterTax="620.00" CurrencyCode="EUR">
                    <Taxes>
                      <Tax Amount="62.00" CurrencyCode="EUR"/>
                    </Taxes>
                  </Base>
                  <Total AmountBeforeTax="558.00" AmountAfterTax="620.00" CurrencyCode="EUR">
                    <Taxes>
                      <Tax Amount="62.00" CurrencyCode="EUR"/>
                    </Taxes>
                  </Total>
                </Rate>
              </Rates>
            </RoomRate>
          </RoomRates>
          <GuestCounts IsPerRoom="1">
            <GuestCount AgeQualifyingCode="10" Count="2"/>
            <GuestCount AgeQualifyingCode="8" Count="1"/>
            <GuestCount AgeQualifyingCode="7" Count="1"/>
          </GuestCounts>
          <TimeSpan Start="2016-02-12" End="2016-02-14"/>
          <Total AmountBeforeTax="558.00" AmountAfterTax="620.00" CurrencyCode="EUR">
            <Taxes>
              <Tax Amount="62.00" CurrencyCode="EUR"/>
            </Taxes>
          </Total>
          <BasicPropertyInfo HotelCode="HTL1" HotelName="The Beach Side Hotel"/>
          <ResGuestRPHs>
            <ResGuestRPH RPH="1"/>
          </ResGuestRPHs>
          <Comments>
            <Comment>
              <Text>Will be Travelling with my friend so connected rooms please.</Text>
            </Comment>
          </Comments>
          <SpecialRequests>
            <SpecialRequest Name="extra bed">
              <Text>Yes</Text>
            </SpecialRequest>
            <SpecialRequest Name="bedding configuration">
              <Text>2 x Double</Text>
            </SpecialRequest>
          </SpecialRequests>
        </RoomStay>
      </RoomStays>
      <ResGuests>
        <ResGuest ResGuestRPH="1" ArrivalTime="14:00:00" PrimaryIndicator="1">
          <Profiles>
            <ProfileInfo>
              <Profile ProfileType="1">
                <Customer>
                  <PersonName>
                    <NamePrefix>Mr</NamePrefix>
                    <GivenName>John</GivenName>
                    <Surname>Smith</Surname>
                  </PersonName>
                  <Telephone PhoneNumber="112233445566"/>
                  <Email>test@example.com</Email>
                  <Address>
                    <AddressLine>Main St</AddressLine>
                    <AddressLine>123</AddressLine>
                    <CityName>SomeCity</CityName>
                   <PostalCode>1234</PostalCode>
                    <StateProv>NA</StateProv>
                    <CountryName Code="DE">Germany</CountryName>
                  </Address>
                </Customer>
              </Profile>
            </ProfileInfo>
          </Profiles>
        </ResGuest>
      </ResGuests>
      <ResGlobalInfo>
        <Total CurrencyCode="AUD" AmountBeforeTax="558.00" AmountAfterTax="620.00">
          <Taxes>
            <Tax Amount="62.00" CurrencyCode="EUR"/>
          </Taxes>
        </Total>
        <Guarantee>
          <GuaranteesAccepted>
            <GuaranteeAccepted>
              <PaymentCard CardNumber="12345612345612" CardType="1" ExpireDate="0617" SeriesCode="123" CardCode="VI">
                <CardHolderName>John Smith</CardHolderName>
              </PaymentCard>
            </GuaranteeAccepted>
          </GuaranteesAccepted>
        </Guarantee>
        <Profiles>
          <ProfileInfo>
            <Profile>
              <Customer>
                <PersonName>
                  <NamePrefix>Mr</NamePrefix>
                  <GivenName>John</GivenName>
                  <Surname>Smith</Surname>
                </PersonName>
                <Telephone PhoneNumber="112233445566"/>
                <Email>test@example.com</Email>
                <Address>
                  <AddressLine>Main St</AddressLine>
                  <AddressLine>123</AddressLine>
                  <CityName>SomeCity</CityName>
                  <PostalCode>1234</PostalCode>
                  <StateProv>NA</StateProv>
                  <CountryName Code="DE">Germany</CountryName>
                </Address>
              </Customer>
            </Profile>
          </ProfileInfo>
        </Profiles>
      </ResGlobalInfo>
    </HotelReservation>
  </HotelReservations>
</OTA_HotelResNotifRQ>

Element
Type
Type

OTA_HotelResNotifRQ @EchoTokenStringGlobally unique identifier for the request, the value will be returned in the response EchoToken.
OTA_HotelResNotifRQ @ResStatusStringAllowed values are Commit, Modify and Cancel
OTA_HotelResNotifRQ @TimeStampDateTimeTime of the transaction
OTA_HotelResNotifRQ/POS/Source/RequestorID @TypeStringAlways 22 (ESRP)
OTA_HotelResNotifRQ/POS/Source/RequestorID @IDStringThe Zenith System ID
OTA_HotelResNotifRQ/POS/Source/BookingChannel This element is used to pass the booking source for the reservation. 
To send secondary booking channel information an additional Source element needs to be sent.
OTA_HotelResNotifRQ/POS/Source/BookingChannel @PrimarybooleanPrimary attribute would be set to “true” if only one booking channel is transferred. Only one source should be marked “true” if multiple sources are sent.
BookingChannel / CompanyName The name of the booking channel.
@CodeStringThe code of the booking channel.

Element
Type
Description

OTA_HotelResNotifRQ/HotelReservations/HotelReservation Contain the reservation details
@CreateDateTimeDateTimeThis is the date when the reservation was first made. Mandatory if ResStatus is Commit. Format like yyyy-MM-dd'T'HH:mm:ssZZ i.e '2016-03-09T20:05:52+08:00'
@LastModifyDateTimeDateTimeThis indicates the last date and time when the reservation was last modified. Mandatory if ResStatus is Modify or Cancel. Format like yyyy-MM-dd'T'HH:mm:ssZZ i.e '2016-03-09T20:05:52+08:00'
HotelReservation/UniqueID The unique identifier of the reservation in the system which sent the message.
HotelReservation/UniqueID @TypeIntegerAlways 14 - Reservation.
HotelReservation/UniqueID @IDStringID is the actual confirmation number.

Element
Type
Description

HotelReservation / RoomStays / RoomStay One instance of RoomStay per Room type booked.

@PromotionCode

String

If configured, this is the promotion code indicating, for instance, a specific marketing campaign – not the rate code.

RoomStay / RoomTypes / RoomType Can be sent to give more information on the room type for this room stay
@RoomTypeCodeStringThe code of the room booked
RoomType / RoomDescriptionStringDescription of the room
@NameStringRoom name

Element
Type
Description

RoomStay / RatePlans Can be sent to give more information on the rate plan for this room stay
RatePlans / RatePlan  
@RatePlanCodeStringThe code of the rate booked
RatePlan / RatePlanDescriptionStringDescription of the rate plan
RatePlan / Commission Commission amount associated with the rate plan
Commission / CommissionPayableAmount The amount of commission to be paid
@AmountDecimal 
@CurrencyCodeStringISO currency code

RatePlan / MealsIncluded

 

Used to identify the types of meals included with a rate plan
@MealPlanCodes StringMeal plan codes outline meal inclusions within rate plan e.g. fullBoard

RoomStay / RoomRates / RoomRate

 

One RoomRate per RoomStay. Multiple rates are listed under the RoomRate.

@RoomTypeCode

String

The code of the room booked

@NumberOfUnits

Integer

Only "1" is allowed. If there are multiple RoomStays for the same RoomTypeCode and RatePlanCode multiple RoomStay elements should be sent.

@RatePlanCode

String

This is the rate booked for the room type code listed in the RoomTypeCode attribute.

RoomRate / Rates / Rate

 

Rate will contain a timespan for which a rate will apply for a room type. Multiple instances of Rate will be sent if rate changes apply for the room type over the span of the booking. Eg if Monday-Friday rate is 100, and Sat-Sun rate is 140. The dates covered in the Rates will cover all the dates in the RoomStay/TimeSpan element.

@RateTimeUnit

String

Only "Day" is allowed

@EffectiveDate

Date

The starting date of the rate in the form yyyy-MM-dd. This date is inclusive.

@ExpireDate

Date

ExpireDate is the first day after the applicable period (e.g. when expire date is 2012-04-03 the last date of the period is 2012-04-02). Format yyyy-MM-dd.

@UnitMultiplier

Integer

Only "1" is allowed.

Rate / Base

 

The base amount charged for the accommodation or service.

@CurrencyCode

String

CurrencyCode uses ISO 4217 codes to indicate the currency of the rate that is being booked.

@AmountAfterTax

Decimal

The total amount after tax

@AmountBeforeTax

Decimal

The total amount before tax. If there is no tax, it is better to omit an AmountBeforeTax.

Base / Taxes  
Taxes / Tax  
@Type The Type attribute is an enumeration to indicate whether the tax is “inclusive”, “exclusive”, or “cumulative”.
@Code The Code attribute refers to OpenTravel Alliance list FTT (fee tax type) and is used to indicate the specific tax or fee that is being transferred.
@Amount Amount of the specific tax/fee transferred.
@CurrencyCode Currency for the Amount of the specific tax/fee transferred.

Rate / Total

 

The total amount charged for this rate including additional occupant amounts and fees. If left empty and the Base amount is provided then assume the Base amount to be the Total Amount.

@CurrencyCode

String

CurrencyCode uses ISO 4217 codes to indicate the currency of the rate that is being booked.

@AmountAfterTax

Decimal

The total amount after tax.

@AmountBeforeTax

Decimal

The total amount before tax. If there is no tax, it is better to omit an AmountBeforeTax.

Total / Taxes  
Taxes / Tax  
@Type The Type attribute is an enumeration to indicate whether the tax is “inclusive”, “exclusive”, or “cumulative”.
@Code The Code attribute refers to OpenTravel Alliance list FTT (fee tax type) and is used to indicate the specific tax or fee that is being transferred.
@Amount Amount of the specific tax/fee transferred.
@CurrencyCode Currency for the Amount of the specific tax/fee transferred.

Element
Type
Description

@AgeQualifyingCode

Integer

Specifies the guest type for this GuestCount - uses OTA Spec for identifiers, will be one of three values 
10 - Adult 
8 - Child 
7 - Infant

@Count

Integer

The actual count for this type of guest

GuestCounts / GuestCount  

RoomStay / GuestCounts

 

How many guests will be staying in the room. The count is split over potentially three GuestCount elements under GuestCounts, one for each type of guest: adult, child or infant. Adult count will always be sent


Element
Type
Description

@Amount Amount of the specific tax/fee transferred.

@AmountAfterTax

Decimal

The total amount after tax

@AmountBeforeTax

Decimal

The total amount before tax. If there is no tax, it is better to omit an AmountBeforeTax.

@Code The Code attribute refers to OpenTravel Alliance list FTT (fee tax type) and is used to indicate the specific tax or fee that is being transferred.

@CurrencyCode

String

CurrencyCode uses ISO 4217 codes to indicate the currency of the rate that is being booked.

@CurrencyCode Currency for the Amount of the specific tax/fee transferred.

@End

Date

Check out date

@Start

Date

Check in date

@Type The Type attribute is an enumeration to indicate whether the tax is “inclusive”, “exclusive”, or “cumulative”.

RoomStay / TimeSpan

 

Contains the timespan which this RoomStay covers

RoomStay / Total

 

The total amount charged for the room including any extra fees and/or charges that applies to the room.

Taxes / Tax  
Total / Taxes Optional. Can be used for Total Pricing.

Element
Type
Description

RoomStay / BasicPropertyInfo

 

Holds information about the Hotelier which this reservation is for

@HotelCode

String

The code for the Hotel for which the booking was made.

@HotelNameStringThe name of the Hotel for which the booking was made

RoomStay / ResGuestRPHs / ResGuestRPH

 

Used to link guests from the ResGuests list to the RoomStay

@RPH

Integer

This links to the ResGuest/@ResGuestRPH to link the guest to the RoomStay

RoomStay / Comments / Comment

 

Per RoomStay, there may be one comment

Comment / Text The comment
RoomStay / SpecialRequests / SpecialRequest /  
@Name Special request type i.e:
bedding configuration
smoking
cot
extra bed
SpecialRequest / Text Special request text

Element
Type
Description

HotelReservation / ResGuests / ResGuest

 

One ResGuest element will be made for each of the Guests stored for the booking. This is dependent on the sometimes limited information retrieved from the Booking agents. As such ResGuests might not always be directly linkable to the RoomStays. 
ResGuest information is always sent by SiteMinder if received by Booking Agent even if they are not linked to RoomStays. Where possible, ResGuests are linked to RoomStays using the ResGuestRPH (see below

@ResGuestRPH

Integer

This value links the ResGuest to RoomStay(s) where possible. You can find the links in RoomStay/ResGuestRPHs.

@PrimaryIndicatorBoolean

This indicates the primary guest on a reservation.

@ArrivalTime

Time

The arrival time of the guest in the form HH:mm:ss

ResGuest / Profiles / ProfileInfo  

ProfileInfo / Profile

 

Contains the guest profile information.

@ProfileType

 

Always "1" - The OTA code for "Customer"

Profile / Customer 

 

Customer / NamePrefix The title of the customer

Customer / PersonName / GivenName

 

The name of the customer

Customer / PersonName / Surname

 

The last name of the customer

Customer / Telephone

 

Contact telephone number for the customer if available

@PhoneNumber

 

PhoneNumber contains the actual number as a string of max 32 characters and it is Mandatory.

Customer / Email

 

The email address of the customer if available

Customer / Address

 

Address information for the customer if available

Address / AddressLine

 

One or more address lines for the customer

Address / CityName

 

Customer city of residence if available

Address / PostalCode

 

Post code for customer if available

Address / StateProv

 

State or province name

Address / CountryName

 

Country name

Customer / CustLoyalty

 A list of loyalty/rewards programs for the customer
@ProgramID 

String

The defined membership program name or ID applicable to program. e.g. Qantas
@MembershipID StringThe account identification number for this particular member in this particular program
@ExpireDateDateThe expiry date for this particular membership record in this particular program. Format yyyy-MM-dd

ResGuest / ArrivalTransport / TransportInfo

 

A list of details regarding transport to destination
@Type

String

The type of transport the guest used for travelling to destination as provided by booking channel
@IDStringThe transport provider's ID for transportation mode the guest is using. e.g. Flight Number QF123
@Time 

DateTime

The transportation arrival time to destination. Format yyyy-MM-ddThh:mm:ss
ResGuest / DepartureTransport / TransportInfo A list of details regarding transport from destination 
@TypeStringThe type of transport the guest used for travelling from destination as provided by booking channel
@IDStringThe transport provider's ID for transportation mode the guest is using. e.g. Flight Number QF123
@Time 

DateTime

The transportation departure time from destination. Format yyyy-MM-ddThh:mm:ss

Element
Type
Description

HotelReservation / ResGlobalInfo

 

Contains general information about the Reservation

ResGlobalInfo / HotelReservationIDs / 
HotelReservationID

 

Reference number/string or PNR as supplied by the Booking agent will be supplied here

@ResID_Type

 

Always 14 – OTA code for Travel Agent PNR.

@ResID_Value

 

Reference number/string supplied by the Booking agent

ResGlobalInfo / Comments  
Comments / Comment  
Text Comment text

ResGlobalInfo / Total

 

The total amount for the Reservation. This is the total amount charged for all RoomStays and any additional fees and/or charges that applies.

@CurrencyCode

 

CurrencyCode uses ISO 4217 codes to indicate the currency of the rate that is being booked.

@AmountAfterTax

 

The total amount after tax

@AmountBeforeTax

 

The total amount before tax. If there is no tax, it is better to omit an AmountBeforeTax.

Total / Taxes Optional. Can be used for Total Pricing.
Taxes / Tax  
@Type The Type attribute is an enumeration to indicate whether the tax is “inclusive”, “exclusive”, or “cumulative”.
@Code The Code attribute refers to OpenTravel Alliance list FTT (fee tax type) and is used to indicate the specific tax or fee that is being transferred.
@Amount Amount of the specific tax/fee transferred.
@CurrencyCode Currency for the Amount of the specific tax/fee transferred.

Element
Type
Description

ResGlobalInfo / Guarantee /
GuaranteesAccepted / GuaranteeAccepted
PaymentCard
 Guarantee provided with the reservation. This element is used if there is no deposit payed for the reservation.
@CardType Always 1 to indicate credit card
@CardCode The Card code is the 2-letter code indicative of the card. 
@CardNumber This is actual number of the credit card used for deposit/prepayment.
@SeriesCode The SeriesCode attribute is used (Optionally) for the security number of the card.
@ExpireDate This is the expiry date of the credit card used for deposit/prepayment. Format MMyy.
PaymentCard / CardHolderName The name of the card holder.
ResGlobalInfo / DepositPayments / 
GuaranteePayment / 
AcceptedPayments / AcceptedPayment
 Deposit provided with the reservation.
AcceptedPayment / PaymentCard Mandatory if AcceptedPayment is sent. The card to which the deposit or prepayment is charged.
@CardType Always 1 to indicate credit card
@CardCode The Card code is the 2-letter code indicative of the card. See table below for valid values.
@CardNumber This is actual number of the credit card used for deposit/prepayment.
@SeriesCode The SeriesCode attribute is used (Optionally) for the security number of the card.
@ExpireDate This is the expiry date of the credit card used for deposit/prepayment. Format MMyy.
GuaranteePayment / AmountPercent Mandatory if something is passed in the DepositPayment element.
@Amount Amount charged as deposit
@CurrencyCode Currency of the deposit payment

Element
Type
Description

ResGlobalInfo / Profiles / ProfileInfo / Profile / Customer Reservation customer details. Makes it possible to supply customer details if the customer is not a staying guest.
Customer / NamePrefix The title of the customer

Customer / PersonName / GivenName

 

The name of the customer

Customer / PersonName / Surname

 

The last name of the customer

Customer / Telephone

 

Contact telephone number for the customer if available

@PhoneNumber

 

PhoneNumber contains the actual number as a string of max 32 characters and it is Mandatory.

Customer / Email

 

The email address of the customer if available

Customer / Address

 

Address information for the customer if available

Address / AddressLine

 

One or more address lines for the customer

Address / CityName

 

Customer city of residence if available

Address / PostalCode

 

Post code for customer if available

Address / StateProv

 

State or province name

Address / CountryName

 

Country name


Accepted Credit Card Codes

Card Name
Card Code
AMEXAX
BANK CARDBC
CARTE BLEUBL
CARTE BLANCHECB
DINERS CLUBDN
DISCOVER CARDDS
EUROCARDEC
JAPAN CREDIT BUREAU CREDIT CARDJC
MAESTROMA
MASTER CARDMC
SOLOSO
UNIVERSAL AIR TRAVEL CARDTP
VISA ELECTRONVE
VISAVI

Response


<OTA_HotelResNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2016-01-01T11:12:13+00:00" EchoToken="12345678">
  <Success/>
  <HotelReservations>
    <HotelReservation>
      <UniqueID Type="14" ID="3741"/>
      <ResGlobalInfo>
        <HotelReservationIDs>
          <HotelReservationID ResID_Type="14" ResID_Value="YourResConfirmationCode1234"/>
        </HotelReservationIDs>
      </ResGlobalInfo>
    </HotelReservation>
  </HotelReservations>
</OTA_HotelResNotifRS>

Element
Type
Description

OTA_HotelResNotifRS Root element

@EchoToken

StringReturn the EchoToken from the request message.
@VersionDecimalCurrent version is 1.0
@TimeStampDateTime

Time of the transaction.

@ResResponseTypeString

Shows if the original message was an addition, modification or cancellation. 
Value is one of Committed, Modified,or Cancelled.

OTA_HotelResNotifRS / Success Should only be present if the request processed successfully. The Errors node should not be present if the Success node is present.
OTA_HotelResNotifRS / Errors Contains a list of errors if the request failed to process.
Errors / Error Should be at least one node if there is an Errors Node.
@TypeString

Any type from the OTA code table for 'Error Warning Type (EWT)' can be used. In particular, the following types are recommended

1: Unknown
4: Authentication error (If username and password are not authenticated)
6: Authorization error (If authenticated username is not authorized to alter hotel data or if hotel is unknown)
12: Processing exception

@CodeString

Any code from the OTA code table for 'Error Codes (ERR)' can be used. In particular, the following codes are important as they will inform SiteConnect of a room or hotel mapping error

392: Invalid hotel code
448: System Error 


Error example
<OTA_HotelResNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0" TimeStamp="2016-01-01T11:12:13+00:00" EchoToken="12345678">
  <Errors>
    <Error Type="3" Code="402">Cannot find hotelier HOTEL1</Error>
  </Errors>
</OTA_HotelResNotifRS>

Comments