We refer to the search and book process as the booking journey. The basic booking journey consists of a search, prebook and book.
The search finds available components, the prebook finds up to date price data for the chosen component(s), and the book reserves the chosen components with the supplier and creates a record of the booking.
There is also an optional step between the prebook and the book, which is that of creating a booking reference.
The Create Booking Reference call can sometimes be useful to record customer address details even if the book stage fails, creating a reference to the booking and record of customer data at the prebook stage. However, it is not a necessary part of the basic booking journey.
The following requests and responses are required to book a component
1. Search request
The first step is to send a search request to iVectorConnect for the chosen component. The system searches own stock and any third parties for availability of components that match the search criteria. A search response is returned, listing available components.
Each component type has its own search request, for example to search for a property, a property search request must be sent and a property search response will be returned; to search for a transfer, a transfer search request must be sent and a transfer search response will be returned, and so on.
2. Search response
The search response returns available components that match the search criteria.
If a search response does not contain any results that the user would like to book, the user can leave the booking process at this point, or try another search. Please note that if a search response contains no results but states that the search was successful, this means that there was no problem with the search request or searching process, just that no available components were found that match the search criteria.
If the search response contains one or more components that the user would like to book, the user may then go on to the prebook.
3. Prebook request
The user should then send a Prebook request to iVectorConnect with details of the component to prebook. If the booking will be for a single component, then either the Component Prebook or the Basket Prebook can be used. If multiple components are to be booked, then an individual prebook for each component can be used, or to do all the prebooks in one call the basket prebook can be used. iVectorConnect then carries out the prebook, which is usually a check for up to date pricing information, but differs for different component types.
4. PreBook response
iVectorConnect then sends back a prebook response to the user. The prebook response contains a token that will be required in the book request.
Component Prebook vs Basket Prebook
The Component Prebook can contain the Prebook for just one component. The Basket Prebook can contain one or more component prebookings.
Hence it is possible to Prebook a component either using the Component Prebook or the Basket Prebook. If multiple components are to be prebooked in a single booking, then either a separate Component Prebook can be used for each component, or a single Basket Prebook can be used containing each of the Component Prebooks.
The XML for the Component and Basket Prebook Requests might be structured like this:
<PropertyPrebookRequest>
...
</PropertyPrebookRequest>
<BasketPrebookRequest>
...
<PropertyBookings>
<PropertyPrebookRequest>
...
</PropertyPrebookRequest>
<PropertyPrebookRequest>
...
</PropertyPrebookRequest>
</PropertyBookings>
<TransferBookings>
<TransferPrebookRequest>
...
</TransferPrebookRequest>
</TransferBookings>
</BasketPrebookRequest>
5. Book request
If the Prebook is successful, the user should then send a book request to iVectorConnect. All book requests are basket book requests. Unlike the search (which has different requests for each different component type) there are no separate component book requests. All component book requests must be contained in a basket book request.
On receiving this request, iVectorConnect will attempt to make reservations for the requested components in the system or with any third parties.
6. Book response
A book response is sent back to report whether booking was successful and provide details of the new booking.
Detailed information of what should be included in each request and response are included in subsequent sections in this guide, but an example of a complete booking process is given below for completeness.
A search is made for a holiday to Sharm Al Shiek for 7 nights for 2 adults, arriving 14 September 2013.
(Either lookups or static files are used to find that the resort ID for Sharm Al Sheik in this setup is 133).
Request
<PropertySearchRequest>
<LoginDetails>
<Login>TestLogin</Login>
<Password>TestPassword</Password>
</LoginDetails>
<Resorts>
<ResortID>133</ResortID>
</Resorts>
<ArrivalDate>2013-09-14</ArrivalDate>
<Duration>7</Duration>
<RoomRequests>
<RoomRequest>
<GuestConfiguration>
<Adults>2</Adults>
<Children>0</Children>
<Infants>0</Infants>
</GuestConfiguration>
</RoomRequest>
</RoomRequests>
</PropertySearchRequest>
Response
iVectorConnect finds a single property available, with a choice of different types of room - Twin Deluxe and Double Deluxe.
<PropertySearchResponse>
<ReturnStatus>
<Success>true</Success>
<Exceptions/>
</ReturnStatus>
<PropertyResults>
<PropertyResult>
<BookingToken>77XHIv7Wgmjcz5UZVg6hc5tJePeitsFIzstwLfcKR3U=</BookingToken>
<PropertyReferenceID>673</PropertyReferenceID>
<GeographyLevel1ID>19</GeographyLevel1ID>
<GeographyLevel2ID>26</GeographyLevel2ID>
<GeographyLevel3ID>133/<GeographyLevel3ID>
<RoomTypes>
<RoomType>
<Seq>1</Seq>
<RoomBookingToken>G879hu9y9H9y9GYJ54Tvf64=</RoomBookingToken>
<MealBasisID>3</MealBasisID>
<RoomTypeID>0</RoomTypeID>
<RoomType>Twin Deluxe</RoomType>
<RoomView>Garden View</RoomView>
<AvailableRooms>10</AvailableRooms>
<DiscountID>0</DiscountID>
<Discount>0.00</Discount>
<Saving>0.00</Saving>
<SubTotal>250.00</SubTotal>
<Total>250.00</Total>
<PayLocalTotal>0</PayLocalTotal>
<Errata />
<Adjustments />
<OptionalSupplements />
<DailyRates />
<SpecialOffer />
<NonRefundable>false</NonRefundable>
<OnRequest>0</OnRequest>
</RoomType>
<RoomType>
<Seq>2</Seq>
<RoomBookingToken>30ea0uji5350043759oot09re0t=</RoomBookingToken>
<MealBasisID>3</MealBasisID>
<RoomTypeID>0</RoomTypeID>
<RoomType>Double Deluxe</RoomType>
<RoomView />
<AvailableRooms>10</AvailableRooms>
<DiscountID>0</DiscountID>
<Discount>0.00</Discount>
<Saving>0.00</Saving>
<SubTotal>280.00</SubTotal>
<Total>280.00</Total>
<PayLocalTotal>0</PayLocalTotal>
<Errata />
<Adjustments />
<OptionalSupplements />
<DailyRates />
<SpecialOffer />
<NonRefundable>false</NonRefundable>
<OnRequest>0</OnRequest>
</RoomType>
</RoomTypes>
</PropertyResult>
</PropertyResults>
</PropertySearchResponse>
Request
The user decides to book the Double Deluxe room in the hotel and sends the following Prebook Request.
<PropertyPreBookRequest>
<LoginDetails>
<Login>TestLogin</Login>
<Password>TestPassword</Password>
</LoginDetails>
<BookingToken>77XHIv7Wgmh5VXW2Svh0698bMp8lK3O/0x1AJZI4a3A=</BookingToken>
<ArrivalDate>2013-09-24</ArrivalDate>
<Duration>7</Duration>
<RoomBookings>
<RoomBooking>
<RoomBookingToken>G879hu9y9H9y9GYJ54Tvf64=</RoomBookingToken>
<GuestConfiguration>
<Adults>2</Adults>
<Children>0</Children>
<Infants>0</Infants>
</GuestConfiguration>
</RoomBooking>
</RoomBookings>
</PropertyPreBookRequest>
Response
iVectorConnect returns detailed pricing and other important information on the Double Deluxe room.
<PropertyPreBookResponse>
<ReturnStatus>
<Success>true</Success>
<Exceptions />
</ReturnStatus>
<BookingToken>77XHIv7Wgmh5VXW2Svh06/5h3n4BK3QdBdzUR9+gmJ0=</BookingToken>
<TotalPrice>280</TotalPrice>
<TotalCommission>0</TotalCommission>
<VATOnCommission>0</VATOnCommission>
<Cancellations>
<Cancellation>
<StartDate>2013-08-06T00:00:00</StartDate>
<EndDate>2013-08-12T00:00:00</EndDate>
<Amount>55.35</Amount>
</Cancellation>
<Cancellation>
<StartDate>2013-08-13T00:00:00</StartDate>
<EndDate>2013-08-26T00:00:00</EndDate>
<Amount>129.15</Amount>
</Cancellation>
<Cancellation>
<StartDate>2013-08-27T00:00:00</StartDate>
<EndDate>2013-09-02T00:00:00</EndDate>
<Amount>147.6</Amount>
</Cancellation>
<Cancellation>
<StartDate>2013-09-03T00:00:00</StartDate>
<EndDate>2013-09-09T00:00:00</EndDate>
<Amount>184.5</Amount>
</Cancellation>
<Cancellation>
<StartDate>2013-09-10T00:00:00</StartDate>
<EndDate>2013-09-18T00:00:00</EndDate>
<Amount>280.00</Amount>
</Cancellation>
</Cancellations>
<PaymentsDue>
<PaymentDue>
<Amount>280.00</Amount>
<DateDue>2013-08-06T00:00:00</DateDue>
</PaymentDue>
</PaymentsDue>
<Errata />
<Comments />
</PropertyPreBookResponse>
Request
The user proceeds with booking the Double Deluxe room and sends the following Book Request.
<BasketBookRequest>
<LoginDetails>
<Login>TestLogin</Login>
<Password>TestPassword</Password>
</LoginDetails>
<LeadCustomer>
<CustomerAddress1>10 Oak Drive</CustomerAddress1>
<CustomerAddress2></CustomerAddress2>
<CustomerTownCity>Croydon</CustomerTownCity>
<CustomerCounty>Surrey</CustomerCounty>
<CustomerPostcode>CR0 6SY</CustomerPostcode>
<CustomerBookingCountryID>1</CustomerBookingCountryID>
<CustomerPhone>02086810000</CustomerPhone>
<CustomerFax />
<CustomerEmail>test@domain.co.uk</CustomerEmail>
<CustomerTitle>Ms</CustomerTitle>
<CustomerFirstName>Jane</CustomerFirstName>
<CustomerLastName>Smith</CustomerLastName>
</LeadCustomer>
<GuestDetails>
<GuestDetail>
<GuestID>1</GuestID>
<Type>Adult</Type>
<Title>Ms</Title>
<FirstName>Jane</FirstName>
<LastName>Smith</LastName>
<Age>25</Age>
<DateOfBirth>1988-06-17</DateOfBirth>
</GuestDetail>
<GuestDetail>
<GuestID>2</GuestID>
<Type>Adult</Type>
<Title>Mr</Title>
<FirstName>John</FirstName>
<LastName>Doe</LastName>
<Age>25</Age>
<DateOfBirth>1988-02-22</DateOfBirth>
</GuestDetail>
</GuestDetails>
<Payment>
<CCIssueNumber>012</CCIssueNumber>
<Amount>280.00</Amount>
<TotalAmount>280.00</TotalAmount>
<PaymentType>CreditCard</PaymentType>
<CCCardHoldersName>MS J SMITH</CCCardHoldersName>
<CCCardTypeID>1</CCCardTypeID>
<CCCardNumber>4444444444444448</CCCardNumber>
<CCStartMonth>03</CCStartMonth>
<CCStartYear>2011</CCStartYear>
<CCExpireMonth>03</CCExpireMonth>
<CCExpireYear>2014</CCExpireYear>
<CCSecurityCode>0123</CCSecurityCode>
</Payment>
<PropertyBookings>
<PropertyBookRequest>
<BookingToken>77XHIv7Wgmh5VXW2Svh06/5h3n4BK3QdBdzUR9+gmJ0=</BookingToken>
<ArrivalDate>2013-09-24</ArrivalDate>
<Duration>7</Duration>
<Request></Request>
<ExpectedTotal>280</ExpectedTotal>
<RoomBookings>
<RoomBooking>
<RoomBookingToken>...</RoomBookingToken>
<GuestIDs>
<GuestID>1</GuestID>
<GuestID>2</GuestID>
</GuestIDs>
</RoomBooking>
</RoomBookings>
</PropertyBookRequest>
</PropertyBookings>
</BasketBookRequest>
Response
iVectorConnect returns a booking reference, payment information and confirmation that the Double Deluxe room has been booked.
<BasketBookResponse>
<ReturnStatus>
<Success>true</Success>
<Exceptions />
</ReturnStatus>
<BookingReference>1000384</BookingReference>
<TotalPrice>280.0</TotalPrice>
<TotalCommission>0.0</TotalCommission>
<VATOnCommission>0.0</VATOnCommission>
<PropertyBookings>
<PropertyBookResponse>
<ReturnStatus>
<Success>true</Success>
<Exceptions />
</ReturnStatus>
<BookingReference />
<TotalPrice>280.00</TotalPrice>
<TotalCommission>0.0</TotalCommission>
<VATOnCommission>0.0</VATOnCommission>
<PayLocalTotal>0</PayLocalTotal>
<PaymentsDue />
<Cancellations>
<Cancellation>
<StartDate>2013-08-06T00:00:00</StartDate>
<EndDate>2013-08-12T00:00:00</EndDate>
<Amount>55.35</Amount>
</Cancellation>
<Cancellation>
<StartDate>2013-08-13T00:00:00</StartDate>
<EndDate>2013-08-26T00:00:00</EndDate>
<Amount>129.15</Amount>
</Cancellation>
<Cancellation>
<StartDate>2013-08-27T00:00:00</StartDate>
<EndDate>2013-09-02T00:00:00</EndDate>
<Amount>147.60</Amount>
</Cancellation>
<Cancellation>
<StartDate>2013-09-03T00:00:00</StartDate>
<EndDate>2013-09-09T00:00:00</EndDate>
<Amount>184.50</Amount>
</Cancellation>
<Cancellation>
<StartDate>2013-09-10T00:00:00</StartDate>
<EndDate>2013-09-18T00:00:00</EndDate>
<Amount>280.00</Amount>
</Cancellation>
</Cancellations>
</PropertyBookResponse>
</PropertyBookings>
<FlightBookings />
<TransferBookings />
<ExtraBookings />
<PaymentsDue>
<PaymentDue>
<Amount>280.0</Amount>
<DateDue>2013-08-06T00:00:00</DateDue>
</PaymentDue>
</PaymentsDue>
<QuoteID>0</QuoteID>
</BasketBookResponse>