External Developer Guide

MVC Enhancement

Developer Integration Information

The complete guide to building your connection to Bookeasy

Important Information before starting

  • An API Login - This will be provided by Bookeasy Support
  • A Test Operator - This will be provided By Bookeasy
  • Gadget documentation (found on this website)
  • Ensure a channel partner agreement has been signed
  • Ensure a help guide will be provided upon completion of the build so Bookeasy can add it to our help found here
  • Provide a logo for your organisation to be added to the Bookeasy website
To obtain this information please contact Bookeasy via email support@bookeasy.com

Security Policy

There are a number of security measures in place to ensure that all data sent to and from the Bookeasy web services remains safe from interception. All web services must be called using the secure http protocol (https) – which use the Bookeasy SSL certificate to encrypt all data. As well as SSL, additional encryption is required when transmitting credit card details.

Web Service Client Generation

This Webservice is a SOAP webservice, so in your code you will need to use a client which can consume SOAP. For testing you can use the SoapUI application to try messages. Also, a great help if you aren't familiar with them is to generate your Web Service Client using the WSDL definition. Eg, for the Accommodation.asmx service, put ?wsdl on the end of the url and it will return the Web Service Definition Language which you can import into SoapUI or your client import tool within your IDE. eg, http://www.bookeasy.com.au/ws/api/2.1.0.0/Accommodation.asmx?wsdl.

Update Period 365 or 720 Days?

Bookeasy is a 2 year based website, we would recommend that you send us 720 days worth of rates and availability. If you do not want to send this data, you must advise your operators they will manually need to update Bookeasy outside of your update period.

Booking Notifications

You must provide Bookeasy with the endpoint in which we will send the XML booking notifications. Through the integration and testing we can use a development endpoint if you prefer then make the switch to a live endpoint once you have passed certification.

It is also imperative when connecting to an operator through your channel manager you set the sendbookingnotifications parameter to true for the operator.

Set Options

It is important that you use the set options call when first connecting, you MUST set the following to < SendBookingNotifications>true< /SendBookingNotifications>. This is the most important step or you will not be notified when a booking has been made.

Understanding Bookeasy

What is Bookeasy?

Bookeasy is the leading destination management system for the Tourism Industry. The system is currently being used by over 200 destinations encompassing Visitor Information Centres, National Parks, Property Managers, and Specialised Tourism Providers across Australia, New Zealand, and Asia. We also have over 45,000 active tourism operator consoles currently being used, making it one of Australia's largest content providers for the tourism industry.

In order for destinations to be able to book local and national operators the operator has a "Bookeasy Member Console" where they load rates/availability and content. This is displayed internally to the destination via their "Bookeasy Staff Console" and via the destination website, where you will be tasked with integrating the technology.

Bookeasy allows a destination to access the system from an Operator’s perspective, and is broken up into six major objects:

Below should allow for you to get a high level understanding of the hierarchy of data in Bookeasy

Booking Centre
The booking centre is the source of all the data. Each centre has a unique identifier that is used in various places. The identifier is usually displayed in the source code as ControlID EG < ControlID >125< /ControlID >
The Booking Centre also creates all of the configuration for operators, including: categories, business types, locations, facilities.

Operators
Operator consoles are created by the Booking Centre and the operator is assigned various configurations such as: operator category, business types, locations etc; this then allows a web developer to display them on the website effectively.

Operators are also responsible for loading their bookable product into Bookeasy to display via the beGadgets. The operator console is also where they load images/descriptions. Each operator in Bookeasy contains a unique property ID which is important throughout the integration.

Bookeasy also have 4 main bookable operator types. Accommodation, Tours, Car Hire, and Tickets (aka Events)

Auth

All XMLParameters must contain Auth for the operator (username/password) and must be contained in a wrapper which includes your Channel Partner Auth Details.

If you do not have these details please contact support@bookeasy.com

Whilst building your integration to Bookeasy you will not be able to AUTH any operator except the test operator provided by Bookeasy. Once certification is passed you will then have access to all live operators.

Get Rooms

There are some key get requests which will allow you to get certain information regarding the operators.

The first get option, should be GetRooms

An example Soap UI Call would look something like:

POST /ws/api/2.1.0.0/Accommodation.asmx HTTP/1.1
Host: www.bookeasy.com.au
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

< ?xml version="1.0" encoding="utf-8"?>
< soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
< soap12:Body>
< GetRooms xmlns="http://www.bookeasy.com/ws/api/2.1.0.0/">
< XmlParameters>
< BookEasy>
< Operator>
< Credentials>
< Username>roomoperator< /Username>
< Password>roomoperator< /Password>
< /Credentials>< /Operator>
< /BookEasy>< /XmlParameters>
< /GetRooms>
< /soap12:Body>
< /soap12:Envelope>

With the credentials matching that of the operator you are wanting the information from.

The important information contained in this call will be:

Operator ID - To ensure you have the operator ID
Room ID - The Room ID
Name - The physical Room Name
Room Configuration- This is a setting controlled by the motherhsip of the operator. This is an information field only
NumberOfAccommodationUnits - This is the total number of Rooms of that room type the operator has. If you setavailability higher than this number, only this max number off rooms will display.
IsActive (legacy)- Is the Room Active. Will return a True/False Response. This is a legacy endpoint. Please see isArchived.
IsArchived - Is the room Archived. Will return a True/False Response. This is the preferred updated method, rather than IsActive, as rooms can now be archived and no longer used but still remain active.
Description - Room Description set by the operator.
Pictures/Availability - These are information contained from more front end calls and might not be relevant for Channel Partner Integrations

When logging into your Webservices account, you can test your messages by going to http://www.bookeasy.com.au/ws/api/2.1.0.0/Accommodation.asmx?op=GetRooms and entering the XMLParameters.

A successful response should provide you with something like the below.

We have also included links to the schemas both request and response available in your webservices account.

Schemas

Examples provided in Web Services Account

GetRates_Version_2

GetRates V2 contains all of the actual rate information for the room

It is very important to note that Bookeasy does not allow for a min night/rate/stopsell setup in a traditional method. Each minimum night is treated as a separate "rate", which needs to set or stop selled and set per XML message

For example on the screenshot below. The one night rate line is stop sold for the entire month meaning 1 night cannot be booked.

This means the Bookeasy system will use the next rate line available to deliver rates to customers. Using the below use case. There is a 3 night min stay until the 20th when a 2 night min becomes available. A customer will not be able to book 1 night as that rate line is stop sold, they will only be able to book 2+ nights from the 20th or 3+ nights from the 1st

Bookeasy then use rate line to deliver rates to the customer. So if selecting 3 or more nights it will use the 3 night rate line, if booking 2 nights it will attempt to use the 2 nigh min.

An example Soap UI Call would look something like:

POST /ws/api/2.1.0.0/Accommodation.asmx HTTP/1.1
Host: www.bookeasy.com.au
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length


< soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
< soap12:Body>
< GetRates_Version_2 xmlns="http://www.bookeasy.com/ws/api/2.1.0.0/">
< XmlParameters>
< BookEasy>
< Operator>
< Credentials>
< Username>roomoperator< /Username>
< Password>roomoperator< /Password>
< /Credentials>
< /Operator>
< /BookEasy>
< /XmlParameters>
< /GetRates_Version_2>
< /soap12:Body>
< /soap12:Envelope>

With the credentials matching that of the operator you are wanting the information from.

The information contained in this call will be:

Operator ID - To ensure you have the operator ID
Room ID - The Room ID
IsLastMinuteRateAvailable - This is a true/False setting which allows the room to be included in lastminute specials in the front end of Bookeasy
NumberOfGuestsIncluded- This is the number of people included in the rate sent
RackRate - This is the default rate that will be used in setup of the room. This setting is normally set as the default cost from the channel manager. This does not set the daily rate
CostPerExtraAdult- This is the extra cost Bookeasy will use to charge for adult
CostPerExtraChildn - This is the extra cost Bookeasy will use to charge for children

Then the actual rate/min nights and dates are shown

NumberOfNights - This is the rate line shown on the screenshot above
Default Rate - This should be a copy of the rack rate
IsLastMinuteRateAvailable - This is a true/False setting which allows the room to be included in lastminute specials in the front end of Bookeasy
Last Minute Discount- This is percentage discount number, this can be used to give last minute discounts in Bookeasy

StartDate - The starting Date of the Rate
EndDate - The end Date of the Rate
Amount - The daily cost for the room
IsStopSell - A True/False response which means if the rate line is stop sold or not

When logging into your Webservices account, you can test your messages by going to http://www.bookeasy.com.au/ws/api/2.1.0.0/Accommodation.asmx?op=GetRates_Version_2 and entering the XMLParameters.

A successful response should provide you with something like the below.

We have also included links to the schemas both request and response available in your webservices account.

Schemas

Examples provided in Web Services Account

Set Options

Set Options is what needs to be done when first connecting to an operator. The most critical option you can set is < SendBookingNotifications>true< /SendBookingNotifications>.

This ensures that when a booking is made, it is sent to your endpoint

http://www.bookeasy.com.au/ws/api/2.1.0.0/Operators.asmx?op=SetOptions

An example Soap UI Call would look something like:

POST /ws/api/2.1.0.0/Operators.asmx HTTP/1.1
Host: www.bookeasy.com.au
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

< ?xml version="1.0" encoding="utf-8"?> < soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> < soap12:Body> < SetOptions xmlns="http://www.bookeasy.com/ws/api/2.1.0.0/"> < XmlParameters>
< BookEasy>
< Operator>
< Credentials>
< Username>roomoperator< /Username>
< Password>roomoperator< /Password>
< /Credentials>
< SendAvailabilityNotifications>false
< SendBookingNotifications>true
< SendOperatorNotifications>false
< SendRateNotifications>false
< SendRoomNotifications>false
< SendTourNotifications>false
< /Operator>
< /BookEasy>
< /XmlParameters> < /SetOptions> < /soap:Body> < /soap:Envelope> A successful response should provide you with something like the below.

We have also included links to the schemas both request and response available in your webservices account.

Schemas

Examples provided in Web Services Account

Set Availability

With every request sent it is important that you include the class of each operator and the ID of the product you are updated, Each web method is broken up into a request and response with a hierarchical representation of information we have included a detailed description of each element within the document below

This web method returns an interpretation of the current availability for a specific operator. Important Information: To ensure as small a sized request document as possible, the availability elements are grouped by all elements other than the StartDate and EndDate, so if the response document

BookEasy - A top-level container element required for any request/response
Operator - A container element that holds a single set of operator related elements
Credentials - A container element that holds a single set of credential information
Username - The username that grants the operator access the member console
Password - The password that grants the operator access the member console
Rooms - A container element that holds multiple Room elements
(optional) Room - ∞ A container element that holds a single set of room related elements
RoomID - A unique ID associated with the room to be returned in the response document

There is also an option to set availability to the exact amount. If this is not set to true, the avialablity will be reduced the number supplied. EG: The example code below will set the availability of the room to 1

< Rooms>
< Room>
< RoomID>XXXX< /RoomID>
< Availabilities>
< Availability>
< StartDate>2030-11-23< /StartDate>
< EndDate>2030-11-23< /EndDate>
< NumberAvailable>1< /NumberAvailable>
< Options>
< IsAbsolute>true< /IsAbsolute>
< /Options>
< /Availability>
< /Availabilities>
< /Room>
< /Rooms>

However the below code would Reduce the room availability by 2, as the is absolute parameter is not set.

< Rooms>
< Room>
< RoomID>XXXX< /RoomID>
< Availabilities>
< Availability>
< StartDate>2030-11-23< /StartDate>
< EndDate>2030-11-23< /EndDate>
< NumberAvailable>1< /NumberAvailable>
< /Availability>
< /Availabilities>
< /Room>
< /Rooms>

Working Live Code

We have included the below example of live working code for you to see < BookEasy>
< Operator>
< Credentials>
< Username>roomoperator< /Username>
< Password>roomoperator< /Password>
< /Credentials>
< Rooms>
< Room>
< RoomID>74595
< Availabilities>
< Availability>
< StartDate>2020-09-05< /StartDate>
< EndDate>2020-09-30< /EndDate>
< NumberAvailable>1< /NumberAvailable>
< /Availability>
< StartDate>2020-10-01< /StartDate>
< EndDate>2020-10-01< /EndDate>
< NumberAvailable>0< /NumberAvailable>
< /Availability>
< Availability>
< StartDate>2020-10-02< /StartDate>
< EndDate>2020-10-24< /EndDate>
< NumberAvailable>1< /NumberAvailable>
< /Availability>
< StartDate>2020-10-25< /StartDate>
< EndDate>2020-10-27< /EndDate>
< NumberAvailable>0< /NumberAvailable>
< /Availability>
< Availability>
< StartDate>2020-10-28< /StartDate> < EndDate>2020-11-22< /EndDate> < NumberAvailable>1< /NumberAvailable> < /Availability> < Availability> < StartDate>2020-11-23< /StartDate>
< EndDate>2020-11-25< /EndDate>
< NumberAvailable>0< /NumberAvailable>
< /Availability>
< Availability>
< StartDate>2020-11-26< /StartDate>
< EndDate>2018-05-31< /EndDate>
< NumberAvailable>1< /NumberAvailable>
< /Availability>
< Availability>
< StartDate>2018-06-01< /StartDate>
< EndDate>2018-08-31< /EndDate>
< NumberAvailable>1< /NumberAvailable>
< /Availability>
< Availability>
< StartDate>2021-09-01< /StartDate>
< EndDate>20121-09-04< /EndDate>
< NumberAvailable>1< /NumberAvailable>
< /Availability>
< Options>
< IsAbsolute>true
< /Options>
< /Availabilities>
< /Room>
< /Rooms>
< /Operator>
< /BookEasy>

Sample SOAP UI

We have included the sample SOAP Message example below. This can be found in your web services account at http://www.bookeasy.com.au/ws/api/2.1.0.0/Accommodation.asmx?op=SetAvailability POST /ws/api/2.1.0.0/Accommodation.asmx HTTP/1.1
Host: www.bookeasy.com.au
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

< ?xml version="1.0" encoding="utf-8"?>
< soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
< soap12:Body>
< SetAvailability xmlns="http://www.bookeasy.com/ws/api/2.1.0.0/">
< XmlParameters>< BookEasy>
< Operator>
< Credentials>
< Username>roomoperator< /Username>
< Password>roomoperator /Password>
< /Credentials>
< Rooms>
< Room>
< RoomID>100523< /RoomID>
< Availabilities>
< Availability>
< StartDate>2020-09-05< /StartDate>
< EndDate>2020-09-30< /EndDate>
< NumberAvailable>1< /NumberAvailable>
< /Availability>
< StartDate>2020-10-01< /StartDate>
< EndDate>2020-10-01< /EndDate>
< NumberAvailable>0< /NumberAvailable>
< /Availability>
< Availability>
< StartDate>2020-10-02< /StartDate>
< EndDate>2020-10-24< /EndDate>
< NumberAvailable>1< /NumberAvailable>
< /Availability>
< StartDate>2020-10-25< /StartDate>
< EndDate>2020-10-27< /EndDate>
< NumberAvailable>0< /NumberAvailable>
< /Availability>
< Availability>
< StartDate>2020-10-28< /StartDate>
< EndDate>2020-11-22< /EndDate>
< NumberAvailable>1< /NumberAvailable>
< /Availability>
< Availability>
< StartDate>2020-11-23< /StartDate>
< EndDate>2020-11-25< /EndDate>
< NumberAvailable>0< /NumberAvailable>
< /Availability>
< Availability>
< StartDate>2020-11-26< /StartDate>
< EndDate>2018-05-31< /EndDate>
< NumberAvailable>1< /NumberAvailable>
< /Availability>
< Availability>
< StartDate>2018-06-01< /StartDate>
< EndDate>2018-08-31< /EndDate>
< NumberAvailable>1< /NumberAvailable>
< /Availability>
< Availability>
< StartDate>2021-09-01< /StartDate>
< EndDate>20121-09-04< /EndDate>
< NumberAvailable>1< /NumberAvailable>
< /Availability>
< Options>
< IsAbsolute>true
< /Options>
< /Availabilities>
< /Room>
< /Rooms>
< /Operator>
< /BookEasy>
< /XmlParameters> < /SetAvailability> < /soap12:Body>

We have also included links to the schemas both request and response available in your webservices account.

Schemas

Examples provided in Web Services Account

SetRates_Version_2

As mentioned in the Get Rates Section, It is very important to note that Bookeasy does not allow for a min night/rate/stopsell setup in a traditional method. Each minimum night is treated as a separate "rate", which needs to set or stop sold and set per XML message

For example on the screenshot below. The one night rate line is stop sold for the entire month meaning 1 night cannot be booked.

This means the Bookeasy system will use the next rate line available to deliver rates to customers. Using the below use case. There is a 3 night min stay until the 20th when a 2 night min becomes available. A customer will not be able to book 1 night as that rate line is stop sold, they will only be able to book 2+ nights from the 20th or 3+ nights from the 1st

Bookeasy then use rate line to deliver rates to the customer. So if selecting 3 or more nights it will use the 3 night rate line, if booking 2 nights it will attempt to use the 2 nigh min.

Important Information:

To ensure as small a sized request document as possible, the rate elements are grouped by all elements other than the StartDate and EndDate.

To set rates for operators we have included an example below SOAP method below:

POST /ws/api/2.1.0.0/Accommodation.asmx HTTP/1.1
Host: www.bookeasy.com.au
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://www.bookeasy.com/ws/api/2.1.0.0/SetRates_Version_2"

< ?xml version="1.0" encoding="utf-8"?>
< soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
< soap:Body>
< SetRates_Version_2 xmlns="http://www.bookeasy.com/ws/api/2.1.0.0/">
< XmlParameters>
< XmlParameters>
< BookEasy>
< Operator>
< Credentials>
< Username>roomoperator< /Username>
< Password>roomoperator< /Password>
< /Credentials>
< Rooms>
< Room>
< RoomID>74595< /RoomID>
< IsLastMinuteRateAvailable>false< /IsLastMinuteRateAvailable>
< DailyRates>
< NumberOfGuestsIncluded>2< /NumberOfGuestsIncluded>
< RackRate>140< /RackRate>
< CostPerExtraAdult>30< /CostPerExtraAdult>
< CostPerExtraChild>30< /CostPerExtraChild>
< Rates>
< Rate>
< StartDate>2017-12-22< /StartDate>
< EndDate>2017-12-22< /EndDate>
< NumberOfNights>2< /NumberOfNights>
< Amount>200.00< /Amount>
< IsLastMinute>false< /IsLastMinute>
< IsStopSell>false< /IsStopSell>
< /Rate>
< Rate>
< StartDate>2017-12-22< /StartDate>
< EndDate>2017-12-22< /EndDate>
< NumberOfNights>3< /NumberOfNights>
< Amount>200.00< /Amount>
< IsLastMinute>false< /IsLastMinute>
< IsStopSell>true< /IsStopSell>
< /Rate>
< Rate>
< StartDate>2017-12-22< /StartDate>
< EndDate>2017-12-22< /EndDate>
< NumberOfNights>4< /NumberOfNights>
< Amount>200.00< /Amount>
< IsLastMinute>false< /IsLastMinute>
< IsStopSell>true< /IsStopSell>
< /Rate>
< Rate>
< StartDate>2017-12-23< /StartDate>
< EndDate>2017-12-23< /EndDate>
< NumberOfNights>2< /NumberOfNights>
< Amount>200.00< /Amount>
< IsLastMinute>false< /IsLastMinute>
< IsStopSell>false< /IsStopSell>
< /Rate>
< Rate>
< StartDate>2017-12-23< /StartDate>
< EndDate>2017-12-23< /EndDate>
< NumberOfNights>3< /NumberOfNights>
< Amount>200.00< /Amount>
< IsLastMinute>false< /IsLastMinute>
< IsStopSell>true< /IsStopSell>
< /Rate>
< /Rates>
< /DailyRates>
< /Room>
< /Rooms>
< /Operator>
< /BookEasy>
< /SetRates_Version_2>
< /soap:Body>
< /soap:Envelope>

*Credentials need to match that of the operator you are updating

We have also included links to the schemas both request and response available in your webservices account.

Schemas

Examples provided in Web Services Account

Booking Notifications

Notifying your Endpoint

Bookeasy need to firstly enable the endpoint on where we send booking notifications to when you are subscribed to receive them from operators. You will need to provide us with the following:

URL- The external URL of your endpoint that will receive the notifications
Method - The request method that should be used (GET or POST) Headers - Any HTTP Headers that should be passed with the request to your endpoint (eg. Content-Type: application/soap+xml; charset=utf-8)
Username - (Optional) The expected Username if your endpoint responds with a 401 Challenge response
Password - (Optional) The expected Password if your endpoint responds with a 401 Challenge response
Template - (Optional) The containing text that the notification should be wrapped up in when sending the request (eg. Soap-Envelope)
Validation - (Optional) A regular expression that is used to match the response from your endpoint to ensure that the message has been received successfully

Understanding Bookings from Bookeasy

Bookeasy have an itinerary number and a booking number. It is important you look for the booking number. As multiple bookings can be made on one itinerary number.

It is important that you use the booking number, Bookeasy will regenerate XML messages for bookings when changes are made, such as payments or when commissions are due to be paid to the operator. When using the unique booking ID this will allow you to pass on the email to the operator as a duplicate booking if you cannot decifer the changes in the XML request. Please DO NOT insert this as a new booking.

Amended bookings (eg date changes/Room Changes) will be generated in a new XML message with a cancellation message provided for the old booking ID. Bookeasy recommend that you process cancellations through your channel manager to ensure that availability and bookings are up to date.

Subscribe to Booking Notifications

When first connecting you must use the set options and ensure the < SendBookingNotifications>true< /SendBookingNotifications> is set to true.

Once this setting is set new bookings for that operator will be sent to your endpoint provided, We have included links to example .txt files for bookings.

Certification

A Bookeasy team member will be required to go through a complete certification before your API account is marked live. However you will be required to do a precertification with your test operator.

We ask that you please fill out the below form and submit once you have verified all areas of the integration are working correctly.

Certification Form

Featured Destinations

Margaret River Busselton

More

Parks Victoria

More

Tourism Whitsundays

More

Tourism Top End - Darwin

More

Ministry of Villas

More

Bay Of Islands

More

Sydney Visitor Centre

More

Barossa Visitor Centre

More

Visit Canberra

Read more...

Destination Launceston

More

Get in touch

To discuss further information regarding the use of beGadgets, please get in touch via the details below.

 

Call Bookeasy
Call
 
(07) 5668 2530
Email Bookeasy
Email
 
support@bookeasy.com
Visit Bookeasy
Visit
 
Suite 30303,
 
9 Lawson St,
Southport, QLD 4215

Our Technologies.

Gold Coast, AU

  • Meet us.
    Southport Central 
    Tower 3, Level 3, Suite 30304
    9 Lawson Street
    Southport, QLD 4215

    +61 7 5668 2530
  • Write us.
    support@bookeasy.comThis email address is being protected from spambots. You need JavaScript enabled to view it.
  • Follow us.
    Twitter logo white   FB-f-Logo  white 29    In-White-28px-R

Recent Tweets