In order to understand the JP WebService work flow, we've prepated a flow chart that outlines and simplies all of the steps that need to be taken through the booking process. We will refer to this flow chart as we advance further on our explanation.
As you may have observed, this booking process is divided in four differentiated steps. We will proceed to describe each of these steps in detail:
This is the step that embraces all of the ticket static data transactions. In the availability process there will be fields like the destination code that you will need to fulfill, all of this information is to be obtained through the use of these transactions.
It will be neccesary for you to retrieve the available destination codes through the ZoneList request (sending the TKT @ProductType) and, depending on the products of your Juniper supplier (as this is only available for the direct products), it may also be possible for you to retrieve other static data information through the following transactions:
It is the availability request. The mandatory information to search for availability is:
It will return all available services for the search criteria. This request returns basic information regarding each service product, such as the name and a small description. To obtain full info and other data you should use the transaction ServiceBookingRules
Once the search is made and before completing the booking you should validate the selected option. We may do it in two ways:
You may only book with the returned code ServiceBookingRules transaction, (BookingCode) therefore it is indispensable to go through this transaction.
If the booking has correctly been made you will obtain a code or booking code identifying the booking in a unique way. You may review and cancel the booking with this same code.
Moving on, once the booking has been created, successfully confirmed and you've been able to retrieve its @Locator, there are two additional actions that you may take in this regard:
Kindly refer to the ReadBooking section for more information.
Kindly refer to the CancelBooking section for more information.
Having detailed all of the Service integration process, here we supply you with a series of resources which, along the use of test environment XML credentials, will let you experience the Service integration process first hand.
On this section you will be able to find SoapUI test suites that may help you perform the development of your integration.
Juniper WebService Service PULL Welcome Pack. This test suite contains all of the transactions that will be neccesary in order to perform an integration against the Juniper system.
On this section we have a Postman example that embraces all of the Service integration process.
On this section we have a series of code samples that will let you understand how to implement and use one of the transactions from our API.
Object that shows the optional information about the selected hotel of a service. We refer to this object labeles as: {HotelService}
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
Code | Y | String | Code of the selected hotel, you may only select a directly contracted hotel, only numerical digits. If you specify this value, you can ignore the "Name" property as the system will set up automatically. |
Name | Y | String | Selected hotel name. |
Block | Y | String | Hotel address number. |
Room | Y | - | Information about the selected room of the hotel. |
./Room/Code | Y | String | Code of the room of the hotel: DPX, TRP, DL, ... |
./Room/Name | Y | String | Name of the room of the hotel: Double, Triple, Junior, Suite, ... |
./Room/Number | Y | String | Number of the room of the hotel: 255, 101, 45B, ... |
./HotelService/Board | Y | String | Board code of the hotel. |
./HotelService/CheckoutDate | Y | String | Checkout date of the hotel. |
Object that lists all of the additional elements that are already applied on the combination. We refer to this object as: {AdditionalElements}
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
ServiceOffers | Y | - | List of offers that are already applied on the combination. NOT IMPLEMENTED |
ServiceSupplements | Y | - | List of supplements that are already applied on the combination. |
Object that lists all of the optional elements that may be applied to the combination. We refer to this object as: {OptionalElements}
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
ServiceOffers | Y | - | List of offers that may be applied to the combination. NOT IMPLEMENTED |
ServiceSupplements | Y | - | List of supplements that may be applied to the combination. |
Comments | Y | - | List of comments. |
./Comments/Comment | N | String | Comment text. |
./Comment/@Type | Y | String | Comment type. Possible values: • TKT: Comments from the provider. Keep in mind that, through this node, the provider could supply you with vital information like the unavailability of a specific service or the need to pay an additional tax on arrival. |
Object that lists all of the available supplements of the combination. We refer to this object as: {ServiceSupplements}
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
ServiceSupplement | Y | - | Specific supplement. |
./ServiceSupplement/@Code | N | Integer | Code of the supplement. |
./ServiceSupplement/@RatePlanCode | Y | String | RatePlanCode of the supplement, used in order to apply it to the combination. |
./ServiceSupplement/Name | Y | String | Name of the supplement. |
./ServiceSupplement/RestrictedMeetingPoints | Y | - | Restricted meeting points applicable to the supplement. |
./RestrictedMeetingPoints/MeetingPoint | N | - | Meeting point container. |
./MeetingPoint/@Code | N | String | Meeting point code. |
./MeetingPoint/@Time | N | Time | Meeting point time. |
./MeetingPoint/Name | N | String | Meeting point name. |
./ServiceSupplement/{Origins} | Y | - | Origin information of the supplement. The structure matches with the Origins node from the transfers API. |
./ServiceSupplement/{Destinations} | Y | - | Destination information of the supplement. The structure matches with the Destinations node from the transfers API. |
./ServiceSupplement/RelatedServiceInfo | Y | - | Related services of the supplement. |
./ServiceSupplement/{Prices} | Y | - | Price of the combination with the supplement included. |
Object that lists all of the available offers of the combination. We refer to this object as: {ServiceOffers}
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
ServiceOffer | Y | - | Specific offer. |
./ServiceOffer/@Code | N | Integer | Code of the offer. |
./ServiceOffer/@NonRefundable | N | Boolean | If the offer is non-refundable. |
./ServiceOffer/@Type | N | String | Offer type. Possible values: - GRA - UGR - PMB |
./ServiceOffer/@Amount | Y | Double | Offer amount. |
./ServiceOffer/Name | Y | String | Name of the offer. |
./ServiceOffer/Description | Y | String | Description of the supplement. |
./ServiceOffer/Upgrade | Y | - | Offer upgrade. |
./Upgrade/@Name | Y | String | Upgrade name. |
./Upgrade/@RatePlanCode | Y | String | Upgrade RatePlanCode. |
Object that lists all of the available descriptions of an option. We refer to this object as: {AdditionalDescriptions}
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
Description | N | - | Specific description. |
./Description/@Type | N | String | Description type. Possible values: • LNG: Long description • SHT: Short description • ADR: Additional Remarks • OTH: Other/undefined |
./Description/@Title | Y | String | Description title/header. |
./Description/@Value | Y | String | Description text. |
Object that lists all of the InfoDates (additional dates) that will be available for the ticket. We refer to this object as: {InfoDates}
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
InfoDate | Y | - | Specific info date. There may me multiple nodes. |
./InfoDate/@Type | N | String | Info date type. Possivle values: • UsageDates • RedeemDates |
./InfoDate/Date | Y | - | Info date dates. There may me multiple nodes. |
./Date/@Start | N | DateTime | Info date start date. |
./Date/@End | Y | DateTime | Info date end date. Optional (for example if the info date establishes when the ticket may start being used, with no maximum end date). |
List of methods available for the retrieval of static data information from the system like, for example, destination codes and ticket information. Take into account that this information will be different between the test and production environments.
Important note:
The maximum frequency allowed for downloading the static data (if you use them) is two weeks. This is a mandatory condition aimed to keep the static data always updated.
Aside from the transactions detailed below, there are other transactions from the Common API that will be applicable to this integration:
With this message, you will be able to retrieve all of the available service static data
These values will allow you to filter the availability.
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | Web Service version. |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages. |
{Login} | N | - | Customer login to access the Web Service. |
<xmlns:soapenv xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<ServiceCatalogueData>
<ServiceCatalogueDataRQ Version="1.1" Language="en">
<Login Email = "user@mydomain.com" Password = "pass"/>
</ServiceCatalogueDataRQ>
</ServiceCatalogueData>
</soapenv:Body>
</xmlns:soapenv>
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Url | N | String | URL endpoint |
@TimeStamp | N | DateTime | Response date and time. Format: yyyy-MM-ddThh:mm:ss (UTC) |
@IntCode | N | String | Internal control code |
{Errors} | Y | - | Applicable errors. |
{Warnings} | Y | - | Applicable warnings. |
CatalogueDataRS | N | - | Results. |
./CatalogueDataRS/ServiceStaticData | N | - | Static information. |
./ServiceStaticData/ServiceCategoryList | Y | - | List of services categories. |
./ServiceCategoryList/ServiceCategory | N | String | Service category description. |
./ServiceCategory/@Code | N | String | Service category code. |
./ServiceCategory/@Name | N | String | Name of the service category. |
./ServiceStaticData/ServiceTypeList | Y | - | List of services types. |
./ServiceTypeList/ServiceType | N | - | Service type. |
./ServiceType/@Code | N | Integer | Service type code. |
./ServiceType/@ParentCode | Y | Integer | Parent code of the service type. |
./ServiceType/@Name | N | String | Name of the service type. |
<soap:Envelope
xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<ServiceCatalogueDataResponse xmlns = "http://www.juniper.es/webservice/2007/">
<CatalogueDataRS Url = "http://xml-uat.bookingengine.es/" TimeStamp="2019-12-24T12:10:32.8504712+02:00" IntCode = "6FiDHa8E7RMUONM/h8KJk96KjbOyuBr8KzUgWf5FbOQ=">
<ServiceStaticData>
<ServiceCategoryList>
<ServiceCategory Code = "3">
<Name>c12</Name>
</ServiceCategory>
<ServiceCategory Code = "4">
<Name>es1</Name>
</ServiceCategory>
<ServiceCategory Code = "5">
<Name>CLASS1</Name>
</ServiceCategory>
<ServiceCategory Code = "6">
<Name>CLASS2</Name>
</ServiceCategory>
<ServiceCategory Code = "7">
<Name>CLASS3</Name>
</ServiceCategory>
</ServiceCategoryList>
<ServiceTypeList>
<ServiceType Code = "3">
<Name>CULTURALES</Name>
</ServiceType>
<ServiceType Code = "6">
<Name>OCIO</Name>
</ServiceType>
<ServiceType Code = "7">
<Name>TICKETS</Name>
</ServiceType>
<ServiceType Code = "8" ParentCode = "25">
<Name>Sport Activities</Name>
</ServiceType>
<ServiceType Code = "10" ParentCode = "10">
<Name>Alquiler de Material</Name>
</ServiceType>
<ServiceType Code = "14">
<Name>Servicio Terapéutico</Name>
</ServiceType>
<ServiceType Code = "25" ParentCode = "25">
<Name>Prueba Servicios Borrados</Name>
</ServiceType>
<ServiceType Code = "26" ParentCode = "25">
<Name>Prueba Servicio Hijo Borrado</Name>
</ServiceType>
<ServiceType Code = "57">
<Name>EXCURSIONES</Name>
</ServiceType>
<ServiceType Code = "58" ParentCode = "57">
<Name>FIESTA</Name>
</ServiceType>
<ServiceType Code = "61" ParentCode = "7">
<Name>TEATRO</Name>
</ServiceType>
<ServiceType Code = "66">
<Name>p1</Name>
</ServiceType>
<ServiceType Code = "86" ParentCode = "3">
<Name>FORFAITS</Name>
</ServiceType>
<ServiceType Code = "87" ParentCode = "3">
<Name>LIFT</Name>
</ServiceType>
<ServiceType Code = "105">
<Name>RESTAURANTES</Name>
</ServiceType>
<ServiceType Code = "119">
<Name>EX</Name>
</ServiceType>
<ServiceType Code = "122" ParentCode = "105">
<Name>FAST</Name>
</ServiceType>
<ServiceType Code = "123" ParentCode = "105">
<Name>FIT</Name>
</ServiceType>
<ServiceType Code = "124" ParentCode = "7">
<Name>CINE</Name>
</ServiceType>
</ServiceTypeList>
</ServiceStaticData>
</CatalogueDataRS>
</ServiceCatalogueDataResponse>
</soap:Body>
</soap:Envelope>
With this message, you can retrieve a paginated list that amounts up to all of your own service portfolio.
It is important to keep in mind that you have to compare the Page attribute from the request with the TotalPage attribute from the response (increasing the page one by one until you reach the TotalPage) in order to retrieve the whole portfolio. In this process, the RecordPerPage attribute should not be modified.
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | Web Service version. |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages. |
@Page | Y | Integer | Page requested. |
@RecordsPerPage | Y | Integer | Records to be shown per page. |
{Login} | N | - | Customer login to access the Web Service. |
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<ServicePortfolio>
<ServicePortfolioRQ Version = "1.1" Language = "en" Page = "1" RecordsPerPage = "100">
<Login Password = "Password" Email = "username@mydomain.com"/>
</ServicePortfolioRQ>
</ServicePortfolio>
</soapenv:Body>
</soapenv:Envelope>
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Url | N | String | URL endpoint |
@TimeStamp | N | DateTime | Response date and time. Format: yyyy-MM-ddThh:mm:ss (UTC) |
@IntCode | N | String | Internal control code |
{Errors} | Y | - | Applicable errors. |
{Warnings} | Y | - | Applicable warnings. |
ServicePortfolio | N | - | - |
./ServicePortfolio/@Page | N | Integer | Page number returned in the response. |
./ServicePortfolio/@RecordsPerPage | N | Integer | Number of services shown in the response. |
./ServicePortfolio/@TotalPages | N | Integer | Total pages of the full service portfolio. |
./ServicePortfolio/@TotalRecords | N | String | Total number of services for the full service portfolio. |
./ServicePortfolio/Service | N | - | - |
./Service/@Code | N | String | Service code. |
./Service/@IntCode | Y | String | Service internal code. |
./Service/@ProductGroup | Y | Integer | Product group identificator. This is internal information that is only available through a specific permission. |
./Service/@ProductType | Y | String | Product group type. This is internal information that is only available through a specific permission. |
./Service/@ProductTypeBreakdown | Y | String | Product group type breakdown. This is internal information that is only available through a specific permission. |
./Service/@ServiceTypeCode | Y | Integer | Internal service type code. |
./Service/Name | N | String | Service name. |
./Service/Options | N | - | - |
./Options/ServiceOption | N | String | Service option. |
./ServiceOption/@Code | N | String | Service option identificator. |
./ServiceOption/@Order | N | String | Service option order. |
./ServiceOption/@NumberOfDays | N | String | Service option number of days. |
./ServiceOption/Name | N | String | Service option name. |
./Service/Zones | N | - | - |
./Zones/Zone | N | String | Zone. |
./Zone/@Code | N | String | Zone code. |
./Service/Origins | N | - | - |
./Origins/Origin | N | String | Origin. |
./Origin/@Code | N | String | Origin code. |
./Service/Destinations | N | - | - |
./Destinations/Destination | N | String | Destination. |
./Destination/@Code | N | String | Destination code. |
./Service/ServiceType | Y | - | Service type. This is an internal information that is only available through a specific permission. |
./ServiceType/@Code | N | String | Service type identificator. |
./Service/Contracts | Y | - | Contracts of the service. This is an internal information that is only available through a specific permission. |
./Contracts/Contract | N | String | Contract. |
./Contract/@Type | N | String | Contract type. Possible values: - C: Cost contract. - S: Sales contract. |
./Contract/@Code | N | String | Contract identificator. |
./Contract/@AllowZeroCost | N | Boolean | Indicates if the contract allow cost = 0. |
./Contract/Name | N | String | Contract name. |
./Contract/Supplier | Y | - | Contract supplier. |
./Supplier/@Code | N | String | Contract supplier identificator. |
<soap:Envelope
xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<ServicePortfolioResponse xmlns = "http://www.juniper.es/webservice/2007/">
<ServicePortfolioRS Url="http://xml-uat.bookingengine.es/" TimeStamp="2019-12-04T10:24:39.9465367+02:00" IntCode = "953vCRC6vo95Y9QGs+eMAYAj3QGSwnzStRcS84NhgNc=">
<ServicePortfolio Page = "1" RecordsPerPage = "128" TotalPages = "1" TotalRecords = "128">
<Service Code = "BGBzIIpLvgQjLt8y6AtYJw==" IntCode = "21">
<Name>Basic Ticket London Eye</Name>
<Options>
<ServiceOption Code = "718">
<Name>Option 1</Name>
</ServiceOption>
<ServiceOption Code = "719">
<Name>Option 2</Name>
</ServiceOption>
</Options>
</Service>
<Service Code = "ZXCZq2f/CjGvI8FFjXZ/wg==" IntCode = "22">
<Name>Premium Ticket London Eye</Name>
<Options>
<ServiceOption Code = "588">
<Name>Option 1</Name>
</ServiceOption>
<ServiceOption Code = "589">
<Name>Option 2</Name>
</ServiceOption>
</Options>
<Zones>
<Zone Code = "17852"/>
<Zone Code = "36161"/>
</Zones>
</Service>
</ServicePortfolio>
</ServicePortfolioRS>
</ServicePortfolioResponse>
</soap:Body>
</soap:Envelope>
With this message, you can retrieve detailed information of up to 25 services.
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | Web Service version. |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages. |
{Login} | N | - | Customer login to access the Web Service. |
ServiceContentList | N | - | List of services, you may send up to 25 on a single request. |
./ServiceContentList/Service | N | - | Service. |
./Service/@Code | N | String | Code that identifies the service that we will be requesting additional information for, this may be retrieved from either the ServiceAvail and ServicePortfolio* transactions. |
<soapenv:Header/>
<soapenv:Body>
<ServiceContent>
<ServiceContentRQ Version="1.1" Language="en">
<Login Password="Password" Email="username@mydomain.com"/>
<ServiceContentList>
<Service Code = "JcG+h+EZ0EznJonPYMNdrQ=="/>
<Service Code = "6IwSkuinzsgXcNiI6VDtSQ=="/>
</ServiceContentList>
</ServiceContentRQ>
</ServiceContent>
</soapenv:Body>
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Url | N | String | URL endpoint |
@TimeStamp | N | DateTime | Response date and time. Format: yyyy-MM-ddThh:mm:ss (UTC) |
@IntCode | N | String | Internal control code |
{Errors} | Y | - | Applicable errors. |
{Warnings} | Y | - | Applicable warnings. |
ServiceContent | N | - | Service content. |
./ServiceContent/@Code | N | String | Code that identifies the service. |
./ServiceContent/ServiceContentInfo | N | - | Service content info. |
./ServiceContentInfo/ServiceName | N | String | Service name. |
./ServiceContentInfo/Descriptions | Y | - | Service descriptions. |
./Descriptions/Description | N | - | Service description. |
./Description/Type | N | String | Service description type. Possible values: - SHT: Short description. - LNG: Long description. |
./ServiceContentInfo/Images | Y | - | Service images. |
./Images/Image | Y | - | Service image. |
./Image/@Type | Y | - | Service image type. Possible values: - PAN: Panoramic. |
./Image/FileName | N | String | Image name. |
./ServiceContent/ServiceTypeInfo | N | - | Service type information. |
./ServiceTypeInfo/@Code | N | String | Service type internal code. |
./ServiceTypeInfo/Name | N | String | Service type name. |
./ServiceContent/ServiceZones | Y | - | Service zones. |
./ServiceZones/Zone | N | - | Service zone. |
./Zone/@JPDCode | N | String | Shared zone identificator between all Juniper Clients. |
./Zone/@Code | N | String | Zone code. |
./Zone/Name | Y | String | Zone name. |
./ServiceContent/ServiceOptions | Y | - | Service options. |
./ServiceOptions/ServiceOption | N | - | Service option. |
./ServiceOption/@Order | N | String | Service option order. |
./ServiceOption/@NumberOfDays | N | Integer | Number of days of the service option. |
./ServiceOption/@StartTime | N | String | Service start time. Format: hh:mm. |
./ServiceOption/@MinimumPax | Y | Integer | Minimum number of passengers allowed within the service option. This is optional information that may be unavailable depending on the service type. |
./ServiceOption/@MaximumPax | Y | Integer | Maximum number of passengers allowed within the service option. This is optional information that may be unavailable depending on the service type. |
./ServiceOption/Name | N | String | Service option name. |
./ServiceOption/Descriptions | Y | - | Service option descriptions. |
./Descriptions/Description | N | - | Service option description. |
./Description/@Type | N | String | Service description type. Possible values: - SHT: Short description. - LNG: Long description. |
./ServiceOption/Zones | Y | - | Service option zones. |
./Zones/Zone | N | - | Service option zone. |
./Zone/@JPDCode | N | String | Shared zone identificator between all Juniper Clients. |
./Zone/@Code | N | String | Zone code. |
./Zone/Name | Y | String | Zone name. |
./ServiceOption/MeetingPointList | Y | - | Service option meeting point list. |
./MeetingPointList/MeetingPoint | N | - | Meeting point. |
./MeetingPointList/MeetingPoint/@Code | N | Integer | Meeting point code. |
./MeetingPoint/@Time | N | String | Meeting point time. |
./MeetingPoint/@DestinationCode | N | String | Meeting point destination code. |
./MeetingPoint/@Latitude | N | String | Meeting point latitude. |
./MeetingPoint/@Longitude | N | String | Meeting point longitude. |
./MeetingPoint/Name | Y | String | Meeting point name. |
<soap:Envelope
xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<ServiceContentResponse xmlns = "http://www.juniper.es/webservice/2007/">
<ContentRS Url="https://xml-uat.bookingengine.es" TimeStamp="2019-12-05T11:59:06.6911713+01:00" IntCode = "kZ+eX27u1YaEhqsSHpSEYtsRy9cIPaTN2BSim+i3uk42+eDbBas9X3FEmH/xcAOp">
<Contents>
<ServiceContent Code = "JcG+h+EZ0EznJonPYMNdrQ==">
<ServiceContentInfo>
<ServiceName>Alhambra Granada</ServiceName>
<Descriptions>
<Description Type = "SHT">Alhambra Granada</Description>
<Description Type = "LNG">
<![CDATA[<table width="594" border="0" cellpadding="0"
cellspacing="0"><colgroup><col style="userset;21723;446pt" width="594"> </colgroup><tbody><tr
style="userset;30.0pt" height="40"> <td class="xl64" style="30.0pt;446pt" height="40"
width="594">Magaluf Takeover vs BCM - Superclub entry with huge acts and free drinks all
night</td> </tr> <tr style="userset;30.0pt" height="40"> <td class="xl64"
style="30.0pt;446pt" height="40" width="594">- Magaluf Takeover Bar Crawl - free t-shirt and
our incredible reps taking people to the best bars on the strip ending in a club with free
drinks</td> </tr> <tr style="userset;30.0pt" height="40"> <td class="xl64"
style="30.0pt;446pt" height="40" width="594">- Magaluf Takeover Pool Party at Club B - one of
the biggest pool parties on the island at Club B Hotel</td> </tr> <tr style="userset;30.0pt"
height="40"> <td class="xl64" style="30.0pt;446pt" height="40" width="594">- Magaluf
Takeover Boat Party - 3 hours partying on the best boat in Mallorca with the best DJs on the
island, swim stops and incredible tunes guaranteed!</td> </tr> <tr style="userset;30.0pt"
height="40"> <td class="xl64" style="30.0pt;446pt" height="40" width="594">- Magaluf
Takeover Rep Team - to provide on the ground support for anyone with a Takeover band</td>
</tr> <tr style="userset;30.0pt" height="40"> <td class="xl64" style="30.0pt;446pt"
height="40" width="594">- Discounts across the island - discounts in bars and restuarants with
the Takeover band</td> </tr> </tbody></table> (Copy)]]>
</Description>
</Descriptions>
<Images/>
</ServiceContentInfo>
<ServiceZones>
<Zone JPDCode = "JPD079417" Code = "42712">
<Name>Granada center</Name>
</Zone>
<Zone JPDCode = "JPD035444" Code = "744">
<Name>Granada Province</Name>
</Zone>
<Zone JPDCode = "JPD084793" Code = "47411">
<Name>Alhama de Granada</Name>
</Zone>
<Zone JPDCode = "JPD084805" Code = "47423">
<Name>Beas de Granada</Name>
</Zone>
<Zone JPDCode = "JPD084838" Code = "47456">
<Name>Domingo Perez de Granada</Name>
</Zone>
</ServiceZones>
<ServiceOptions>
<ServiceOption Order = "1" NumberOfDays = "1">
<Name>Alhambra Granada I</Name>
<Descriptions>
<Description Type = "SHT">Descripcion test</Description>
</Descriptions>
</ServiceOption>
</ServiceOptions>
</ServiceContent>
<ServiceContent Code = "6IwSkuinzsgXcNiI6VDtSQ==">
<ServiceContentInfo>
<ServiceName>Excursión Coves del Drach</ServiceName>
<Descriptions>
<Description Type = "SHT">Excursion to Drach Caves, stunning natural scenery, carved by nature through the centuries </Description>
<Description Type = "LNG">
<![CDATA[<p>Located on Mallorca's east coast the
caves are without doubt one of the island's most outstanding tourist attractions, extending
for almost 2,400 metres and including internal heights of 25 metres above the cave floor.<br
/><br />Hidden within the caves is Lake Martel, considered to be one of the largest subterranean
lakes in the world, (177 metres long and 30 metres wide) on which there are daily performances
of classical music featuring pieces by Caballero, Chopin, Offenbach, ...<br /><br />After the
concert one can take a short boat trip on the lake. The unequalled beauty of the caves is
further enhanced by the lightning planned and set in place by the engineer Carlos Buigas.<br
/><br /></p>]]>
</Description>
</Descriptions>
<Images>
<Image>
<FileName>https://juniperuat.bookingengine.es/images/upload_p//Bus_anfibio.jpg</FileName>
</Image>
</Images>
</ServiceContentInfo>
<ServiceZones>
<Zone JPDCode = "JPD036705" Code = "1953">
<Name>Majorca</Name>
</Zone>
<Zone JPDCode = "JPD054557" Code = "15011">
<Name>Palma de Mallorca</Name>
</Zone>
</ServiceZones>
<ServiceOptions>
<ServiceOption Order = "1" NumberOfDays = "1">
<Name>Ticket with concert</Name>
<Descriptions>
<Description Type = "SHT">
<![CDATA[<div id="cuerpo_contenido">
<div><span class="negro">The</span> concert on Lake Martel has been a
feature since 1935 and is comprised of four pieces of classical music:</div>
<ul>
<li>Alborada gallega (Gallician sunrise) » Caballero</li>
<li>Plaisir D'amour » Martini</li>
<li>Tristesse Studio 3 Opus 10 » Chopín</li>
<li>Barcarola, from the "Tales of Hoffmann" » Offenbach</li>
</ul>
This concert is live, played by a quartet of two violins, cello and
harmonium, and lasts 10 minutes.</div>
<p>?</p>]]>
</Description>
</Descriptions>
<MeetingPointList>
<MeetingPoint Code = "149" Time = "00:00" DestinationCode = "15011" Latitude = "39,526624" Longitude = "2,7343799">
<Name>APARTAMENTOS ALLSUN PIL-LARI PLAYA</Name>
</MeetingPoint>
</MeetingPointList>
</ServiceOption>
<ServiceOption Order = "0" NumberOfDays = "1">
<Name>Entrance</Name>
<Descriptions>
<Description Type = "SHT">
<![CDATA[<div id="cuerpo_contenido">
<div><span class="negro">The</span> concert on Lake Martel has been a
feature since 1935 and is comprised of four pieces of classical music:</div>
<ul>
<li>Alborada gallega (Gallician sunrise) » Caballero</li>
<li>Plaisir D'amour » Martini</li>
<li>Tristesse Studio 3 Opus 10 » Chopín</li>
<li>Barcarola, from the "Tales of Hoffmann" » Offenbach</li>
</ul>
This concert is live, played by a quartet of two violins, cello and
harmonium, and lasts 10 minutes.</div>
<p>?</p>]]>
</Description>
<Description Type = "SHT">Service option description</Description>
</Descriptions>
<MeetingPointList>
<MeetingPoint Code = "149" Time = "01:15" DestinationCode = "15011" Latitude = "39,526624" Longitude = "2,7343799">
<Name>APARTAMENTOS ALLSUN PIL-LARI PLAYA</Name>
</MeetingPoint>
</MeetingPointList>
</ServiceOption>
</ServiceOptions>
</ServiceContent>
</Contents>
</ContentRS>
</ServiceContentResponse>
</soap:Body>
</soap:Envelope>
Request to search a service product for a specific destination. The following information is mandatory:
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | Web Service version. |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages. Note: Some suppliers only support one language. If your language is not supported, default language is returned. |
{Login} | N | - | Customer login to access the Web Service. |
{Paxes} | N | - | Indicates the passenger information. Array of passengers. Fields necessary for this transaction: - @IdPax (Required) - Age (Optional for adults) |
ServiceRequest | N | - | - |
./ServiceRequest/SearchSegmentsServices | N | - | Search properties. |
./SearchSegmentsServices/SearchSegmenServices | N | - | Basic search properties. |
./SearchSegmenServices/@Start | N | Date | Start date range. Format: yyyy-MM-dd |
./SearchSegmenServices/@End | N | Date | End date range. Format: yyyy-MM-dd |
./SearchSegmenServices/@DestinationZone | Y | Integer | Code that identifies the destination that we will be searching availability for, this may be retrieved from the ZoneList transaction. If not set, setting the @Code will be mandatory. |
./SearchSegmenServices/@Type | Y | Integer | Service type ID. Retrieved using the ServiceCatalogueData transaction. |
./SearchSegmenServices/@Class | Y | Integer | Service category ID. Retrieved using the ServiceCatalogueData transaction. |
./SearchSegmenServices/@Code | Y | String | Deprecated, use the ServiceCodes node instead. |
./SearchSegmenServices/@IdCliRef | Y | Integer | Referred agency id. For use of guide-type credentials, that wish to specify the agency that they're making the booking for. |
./SearchSegmenServices/Suppliers | Y | - | List of supplier codes that you may wish to filter availability for. Please contact Juniper for further information. |
./Suppliers/Supplier | N | String | Supplier code. |
./SearchSegmenServices/ServiceName | Y | String | If included, the results will be filtered so that only results that contain this service name will be included. NOT IMPLEMENTED |
./SearchSegmenServices/ServiceCodes | Y | - | List of service codes that you would like to search availability for, this may be retrieved from the ServiceAvail and ServicePortfolio transactions. If not included, setting the @DestinationZone will be mandatory. |
./ServiceCodes/ServiceCode | N | String | Specific service code. |
./SearchSegmenServices/{AdditionalRequiredFields} | Y | - | Additional required fields that might be required in order to be able to buy specific products. If a product has been identified as @HasAdditionalRequiredFields on true and a per-code availability request was previously performed (one on which you're only asking the ServiceResult@Code in question), you would then be expected to sent your answer for those specific additional required fields here. |
./SearchSegmentsServices/CountryOfResidence | Y | String | Nationality of the holder of the booking. Please note that the nationality of the holder will have to be consistent between all of the steps of the booking flow and that, consequently, you will have to set the nationality of the holder along the same value on the ServiceBooking request. This code follows the ISO-3166-1 standard. |
./ServiceRequest/RelPaxesDist | - | - | Passengers' distribution you wish to request. |
./RelPaxesDist/RelPaxDist | - | - | Distribution list. |
./RelPaxDist/RelPaxes | - | - | Passengers list of this distribution. |
./RelPaxes/RelPax | - | - | Passenger. |
./RelPax/@IdPax | - | Integer | Passenger identifier. It should match with a Pax@IdPax |
AdvancedOptions | - | - | Optional information. |
./AdvancedOptions/ShowBreakdownPrice | Y | Boolean | If the value is true, it will show the full price object with all the information about the prices. If not specified, false is assumed by default. |
./AdvancedOptions/ShowCancellationPolicies | Y | Boolean | If the value is true, it will show the combination cancellation policies, if available (it is important to note that not all tickets will have the cancellation policies available on this step and that, even if enabled, you will have to control the possibility on not receiving them in this step). Please, contact Juniper in order to know if this option is available on your supplier. NOT IMPLEMENTED |
./AdvancedOptions/ShowCompleteInfo | N | Boolean | If the value is true, it will show additional descriptions. If not specified, false is assumed by default. |
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<ServiceAvail>
<ServiceAvailRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<Paxes>
<Pax IdPax = "1">
<Age>30</Age>
</Pax>
</Paxes>
<ServiceRequest>
<SearchSegmentsServices>
<SearchSegmenServices Start = "2021-12-18" End = "2021-12-18" DestinationZone = "15011"/>
</SearchSegmentsServices>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
</ServiceRequest>
<AdvancedOptions>
<ShowBreakdownPrice>true</ShowBreakdownPrice>
<ShowCompleteInfo>false</ShowCompleteInfo>
</AdvancedOptions>
</ServiceAvailRQ>
</ServiceAvail>
</soapenv:Body>
</soapenv:Envelope>
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<ServiceAvail>
<ServiceAvailRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<Paxes>
<Pax IdPax = "1">
<Age>30</Age>
</Pax>
</Paxes>
<ServiceRequest>
<SearchSegmentsServices>
<SearchSegmenServices Start = "2022-12-18" End = "2022-12-18">
<ServiceCodes>
<ServiceCode>6IwSkuinzsgXcNiI6VDtSQ==</ServiceCode>
<ServiceCode>hBtuXBVFPv3WjWfbAtQevA==</ServiceCode>
<ServiceCode>cCj9aJz8Ww2FJW1hhp2Glg==</ServiceCode>
</ServiceCodes>
</SearchSegmenServices>
</SearchSegmentsServices>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
</ServiceRequest>
<AdvancedOptions>
<ShowBreakdownPrice>true</ShowBreakdownPrice>
<ShowCompleteInfo>false</ShowCompleteInfo>
</AdvancedOptions>
</ServiceAvailRQ>
</ServiceAvail>
</soapenv:Body>
</soapenv:Envelope>
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Url | N | String | URL endpoint |
@TimeStamp | N | DateTime | Response date and time. Format: yyyy-MM-ddThh:mm:ss (UTC) |
@IntCode | N | String | Internal control code |
{Errors} | Y | - | Applicable errors. |
{Warnings} | Y | - | Applicable warnings. |
Results | N | - | Internal control code. |
./Results/ServiceResult | N | - | Element containing the service information. |
./ServiceResult/@Start | N | Date | Start date range. Format: yyyy-MM-dd |
./ServiceResult/@End | Y | Date | End date range. Format: yyyy-MM-dd |
./ServiceResult/@DestinationZone | N | Integer | Juniper code of the destination zone. |
./ServiceResult/@Code | N | String | Service code. |
./ServiceResult/@Status | N | String | Availability. Possible values: OK: Available RQ: On request |
./ServiceResult/@HasAdditionalRequiredFields | Y | Boolean | When true, it will indicate that the service result in question will require for additional information to be provided during the availability in order to be able to continue with the booking process. You will be able to find those required fields detailed on the AdditionalRequiredFields node from the same service result. If unavailable, this will indicate that the product will require for an additional per-code ServiceAvail request (one on which you're only asking the ServiceResult@Code in question) as to retrieve all of the inforamtion that's available for the same. Having explained this, next we would like to provide you with a brief review of all of the steps that would be required in order to be able to buy these products: 1 - ServiceAvail per destination and/or multiple list of product codes (on which you would be able to identify that a product requires for additional requests due to the lack of a @RatePlanCode and due to the presence of the property @HasAdditionalRequiredFields on true). 2 - ServiceAvail per single product code (as to retrieve its AdditionalRequiredFields). 3 - ServiceAvail per single product code and while including all of the previously requested AdditionalRequiredFields (on which you would finally complete the process, and on which you would recieve the @RatePlanCode in order to continue with the usual booking flow process). |
./ServiceResult/ServiceInfo | - | - | Service basic information. |
./ServiceInfo/Name | N | String | Service name. |
./ServiceInfo/Description | Y | String | Service description. |
./ServiceInfo/{Images} | Y | String | Images URL. |
./ServiceInfo/CancellationPolicies | Y | - | List of cancellation policies. NOT IMPLEMENTED |
./CancellationPolicies/{CancellationPolicy} | N | - | Cancellation policies. Note that this information is only available on directly contracted tickets through the use of the ShowCancellationPolicies option. |
./ServiceInfo/{AdditionalDescriptions} | Y | - | Additional descriptions of the service. |
./ServiceInfo/Latitude | Y | String | Service latitude. |
./ServiceInfo/Longitude | Y | String | Service longitude. |
./ServiceResult/ServiceOptions | - | - | Service options container. |
./ServiceOptions/ServiceOption | N | - | Service option. Contains basic information like names of the zones, name of th option, prices, supplements, ... |
./ServiceOption/@Code | N | String | Service option identificator. |
./ServiceOption/Name | N | String | Service option name. |
./ServiceOption/Description | N | String | Service option description. |
./ServiceOption/{Images} | Y | String | Service option images. |
./ServiceOption/Dates | N | - | Service option dates container. |
./Dates/Date | N | - | Service option date. Contains the date and prices for that day of the option. |
./Date/@Start | N | DateTime | Start datetime. Note that if the service has a start time it will be returned under this date time. Format: yyyy-MM-ddTHH:mm:ss |
./Date/@End | N | DateTime | End datetime. Format: yyyy-MM-ddTHH:mm:ss |
./Date/@RatePlanCode | Y | String | Code that identifies the service option. If unavailable, it will indicate that the service will require for an additional per-code request to be performed (one on which you're only asking the ServiceResult@Code in question) in order to be able to continue with the booking flow. It's also advised to check the @HasAdditionalRequiredFields property, in case that it will not only require for the per-code request, but for AdditionalRequiredFields to be provided. |
./Date/@Status | Y | String | Availability status. It is recommended to focus on this one rather than the higher level (ServiceResult) one. Possible values: OK: Available RQ: On request |
./Date/{InfoDates} | Y | - | Additional dates. Optional node that will only be available on products that have such information. |
./Date/{Prices} | N | - | Prices. |
./ServiceOption/{AdditionalElements} | Y | - | Additional elements of the service. |
./ServiceOption/{AdditionalDescriptions} | Y | - | Additional descriptions of the service. |
./ServiceResult/{AdditionalRequiredFields} | Y | - | Additional required fields that might be required in order to be able to buy specific products. If a product has been identified as @HasAdditionalRequiredFields on true and a per-code availability request is performed (one on which you're only asking the ServiceResult@Code in question), the additional required fields will be provided here. |
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<ServiceAvailResponse xmlns = "http://www.juniper.es/webservice/2007/">
<AvailabilityRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2021-11-16T16:35:15.6188836+01:00" IntCode = "AGEOF3w7T2zDSe9ZUiYvlzyItd55XwEmgqo2dYhUJuU=">
<Results>
<ServiceResult Start = "2021-12-18" End = "2021-12-18" DestinationZone = "15011" Code = "6IwSkuinzsgXcNiI6VDtSQ==" Status = "OK">
<ServiceInfo>
<Name>Excursión Coves del Drach</Name>
<Description>Excursion to Drach Caves, stunning natural scenery, carved by nature through the centuries</Description>
<Images>
<Image Featured = "true">
<FileName>https://juniper-uat.bookingengine.es/images/upload_p/Bus_anfibio.jpg</FileName>
</Image>
</Images>
</ServiceInfo>
<ServiceOptions>
<ServiceOption Code = "3">
<Name>Ticket with concert</Name>
<OccupancyAllowed Children = "true"/>
<Description><![CDATA[Long description of the service option, may include parsed HTML]]></Description>
<Images>
<Image>https://juniper-uat.bookingengine.es/images/upload_p/1270127676_0.jpg</Image>
</Images>
<Dates>
<Date Start = "2021-12-18T10:15:00" End = "2021-12-18T10:15:00" Duration = "1" RatePlanCode = "fuYLMSQUyj9cDYlAfLTCo3vAVWRSwfYfu/yG1NHCivVkk3x3b6pUKUy2ljc+CYWFmjhj1hQCxdpk1aXrQgyjMl9ULxxxTx7wegonb...">
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Gross = "30" Nett = "30">
<Service Amount = "30"/>
</TotalFixAmounts>
<Breakdown>
<Concepts>
<Concept Type = "BAS" Name = "Base">
<Items>
<Item Amount = "12" Date = "2021-12-18" Quantity = "1" TtaCode = "0"/>
<Item Amount = "18" Date = "2021-12-18" Quantity = "1" PaxType = "ADU" TtaCode = "0"/>
</Items>
</Concept>
</Concepts>
</Breakdown>
</Price>
</Prices>
</Date>
</Dates>
</ServiceOption>
<ServiceOption Code = "4">
<Name>Entrance</Name>
<OccupancyAllowed Children = "true"/>
<Description>Service option description</Description>
<Images>
<Image>https://juniper-uat.bookingengine.es/images/upload_p/barca-big.jpg</Image>
</Images>
<Dates>
<Date Start = "2021-12-18T10:00:00" End = "2021-12-18T10:00:00" Duration = "1" RatePlanCode = "fuYLMSQUyj9cDYlAfLTCow5lzMdPHDuwf76K5pUL7IGKSq0tza1zUtcKlQcslTgFSfHinHjfLTspMS6WroKjtfQp9h9B5N3y5KKb...">
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Gross = "30" Nett = "30">
<Service Amount = "30"/>
</TotalFixAmounts>
<Breakdown>
<Concepts>
<Concept Type = "BAS" Name = "Base">
<Items>
<Item Amount = "12" Date = "2021-12-18" Quantity = "1" TtaCode = "0"/>
<Item Amount = "18" Date = "2021-12-18" Quantity = "1" PaxType = "ADU" TtaCode = "0"/>
</Items>
</Concept>
</Concepts>
</Breakdown>
</Price>
</Prices>
</Date>
</Dates>
</ServiceOption>
</ServiceOptions>
</ServiceResult>
</Results>
</AvailabilityRS>
</ServiceAvailResponse>
</soap:Body>
</soap:Envelope>
This is an optional request and lets us check the service availability before sending a ServiceBookingRules request.
Therefore, in order to send this request we need a RatePlanCode obtained from the availability response or after a product change.
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | Web Service version. |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages. Note: Some suppliers only support one language. If your language. If your language is not supported, default language is returned. |
{Login} | N | - | Customer login to access the Web Service. |
./ServiceCheckAvailRequest | N | - | Search properties container. |
./ServiceCheckAvailRequest/ServiceOption | N | - | Search properties. |
./ServiceOption/@RatePlanCode | N | String | Code that identifies the service option. |
./AdvancedOptions | Y | - | Optional information. |
./AdvancedOptions/ShowBreakdownPrice | Y | Boolean | If the value is True, it will show the full price object with all the information about the prices. If not specified, False is assumed by default. |
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<ServiceCheckAvail>
<ServiceCheckAvailRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<ServiceCheckAvailRequest>
<ServiceCheckOption RatePlanCode = "fuYLMSQUyj9cDYlAfLTCo3vAVWRSwfYfu/yG1NHCivVkk3x3b6pUKUy2ljc+CYWFmjhj1hQCxdpk1aXrQgyjMl9ULxxxTx7wegonbV2dLb..."/>
</ServiceCheckAvailRequest>
<AdvancedOptions>
<ShowBreakdownPrice>true</ShowBreakdownPrice>
</AdvancedOptions>
</ServiceCheckAvailRQ>
</ServiceCheckAvail>
</soapenv:Body>
</soapenv:Envelope>
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Url | N | String | URL endpoint |
@TimeStamp | N | DateTime | Response date and time. Format: yyyy-MM-ddThh:mm:ss (UTC) |
@IntCode | N | String | Internal control code |
{Errors} | Y | - | Applicable errors. |
{Warnings} | Y | - | Applicable warnings. |
Results | N | - | List of services results. |
./Results/ServiceResult | N | - | Element containing the service information. |
./ServiceResult/@Start | N | Date | Start Date Range. Format: yyyy-MM-dd |
./ServiceResult/@End | N | Date | End date Range. Format: yyyy-MM-dd |
./ServiceResult/@DestinationZone | N | Integer | Juniper code of the destination zone. |
./ServiceResult/@Code | N | String | Service code. |
./ServiceResult/@Status | N | String | Availability. Possible values: OK: Available RQ: On request |
./ServiceResult/ServiceInfo | - | - | - |
./ServiceInfo/Name | N | String | Service name. |
./ServiceInfo/{Images} | Y | String | Images URL. |
./ServiceInfo/Description | Y | String | Service description. |
./ServiceInfo/Latitude | Y | String | Service latitude. |
./ServiceInfo/Longitude | Y | String | Service longitude. |
./ServiceResult/ServiceOptions | N | - | Service options container. |
./ServiceOptions/ServiceOption | N | - | Service option. Contains basic informations like names of zones, name of the option, prices, ... |
./ServiceOption/Name | N | String | Service option name. |
./ServiceOption/Description | N | String | Service option description. |
./ServiceOption/{Images} | N | String | Service option images. |
./ServiceOption/Dates | N | - | Service option dates container. |
./Dates/Date | N | - | Service option date. Contains the date and prices for that date of the option. |
./Date/@Start | N | Date | Start Date Range. Format: yyyy-MM-dd |
./Date/@RatePlancode | N | String | Code that identifies the service option. |
./Date/@Status | Y | String | Availability status. It is recommended to focus on this one rather than on the higher level (ServiceResult) one. Possible values: OK: Available RQ: On request |
./Date/{InfoDates} | Y | - | Additional dates. Optional node that will only be available on products that have such information. |
./Date/{Prices} | N | - | Prices. |
./ServiceOption/AdditionalElements | Y | - | Additional elements of the service. |
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<ServiceCheckAvailResponse xmlns = "http://www.juniper.es/webservice/2007/">
<CheckAvailRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2021-11-16T16:40:29.9277652+01:00" IntCode = "TvNCzEyr0rZS2SPTrdDLniP18+WGj0RdK0w44KaJwt4=">
<Results>
<ServiceResult Start = "2021-12-18" End = "2021-12-18" DestinationZone = "15011" Code = "6IwSkuinzsgXcNiI6VDtSQ==" Status = "OK">
<ServiceInfo>
<Name>Excursión Coves del Drach</Name>
<Description>Excursion to Drach Caves, stunning natural scenery, carved by nature through the centuries</Description>
<Images>
<Image Featured = "true">
<FileName>https://juniper-uat.bookingengine.es/images/upload_p/Bus_anfibio.jpg</FileName>
</Image>
</Images>
</ServiceInfo>
<ServiceOptions>
<ServiceOption Code = "3">
<Name>Ticket with concert</Name>
<OccupancyAllowed Children = "true"/>
<Description><![CDATA[Long description of the service option, may include parsed HTML]]></Description>
<Images>
<Image>https://juniper-uat.bookingengine.es/images/upload_p/1270127676_0.jpg</Image>
</Images>
<Dates>
<Date Start = "2021-12-18T10:15:00" End = "2021-12-18T10:15:00" Duration = "1" RatePlanCode = "fuYLMSQUyj9cDYlAfLTCo3vAVWRSwfYfu/yG1NHCivVkk3x3b6pUKUy2ljc+CYWFmjhj1hQCxdpk1aXrQg...">
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Gross = "30" Nett = "30">
<Service Amount = "30"/>
</TotalFixAmounts>
<Breakdown>
<Concepts>
<Concept Type = "BAS" Name = "Base">
<Items>
<Item Amount = "12" Date = "2021-12-18" Quantity = "1" TtaCode = "0"/>
<Item Amount = "18" Date = "2021-12-18" Quantity = "1" PaxType = "ADU" TtaCode = "0"/>
</Items>
</Concept>
</Concepts>
</Breakdown>
</Price>
</Prices>
</Date>
</Dates>
</ServiceOption>
</ServiceOptions>
</ServiceResult>
</Results>
</CheckAvailRS>
</ServiceCheckAvailResponse>
</soap:Body>
</soap:Envelope>
This transaction is based on the "RatePlanCode". It validates the service starting from the specified RatePlanCode, and returns a new code called "BookingCode" with which it is possible to book the service or finish its configuration with other ServiceBookingRules transactions.
Besides the BookingCode needed to confirm the booking, this transaction will return:
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | Web Service version. |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages. Note: Some suppliers only support one language. If your language. If your language is not supported, default language is returned. |
{Login} | N | - | Customer login to access the Web Service. |
./ServiceBookingRulesRequest | N | - | Search properties. |
./ServiceBookingRulesRequest/ServiceRuleOption | N | - | - |
./ServiceRuleOption/@RatePlanCode | N | String | Code that identifies the service option. |
./AdvancedOptions | Y | - | Optional information. |
./AdvancedOptions/ShowBreakdownPrice | Y | Boolean | If the value is True, it will show the full price object with all the information about the prices. If not specified, False is assumed by default. |
./AdvancedOptions/PromoCode | Y | String | Promotional code that you would like to apply to the combination. • If found and applied, the promotion will not be included within the HotelResult price and, instead, be returned through its own AdjustmentElement. • If unsuccessful, the response will include a warnPromoNotApply warning. |
./PromoCode/@BinCode | Y | String | BinCode for which you would like to search for an applicable promotion. May be sent along with a PromoCode, case on which the system will look for the best possible promotion available within the two. |
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<ServiceBookingRules>
<ServiceBookingRulesRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<ServiceBookingRuleRequest>
<ServiceRuleOption RatePlanCode = "fuYLMSQUyj9cDYlAfLTCo3vAVWRSwfYfu/yG1NHCivVkk3x3b6pUKUy2ljc+CYWFmjhj1hQCxd..."/>
</ServiceBookingRuleRequest>
<AdvancedOptions>
<ShowBreakdownPrice>true</ShowBreakdownPrice>
</AdvancedOptions>
</ServiceBookingRulesRQ>
</ServiceBookingRules>
</soapenv:Body>
</soapenv:Envelope>
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Url | N | String | URL endpoint |
@TimeStamp | N | DateTime | Response date and time. Format: yyyy-MM-ddThh:mm:ss (UTC) |
@IntCode | N | String | Internal control code |
{Errors} | Y | - | Applicable errors. |
{Warnings} | Y | - | Applicable warnings. |
Results | N | - | Result container. |
./Results/ServiceResult | N | - | Element containing the service information. |
./ServiceResult/@Status | N | String | Availability. Possible values: OK: Available RQ: On request |
./ServiceResult/@Start | N | Date | Start Date Range. Format: yyyy-MM-dd |
./ServiceResult/@End | N | Date | End date Range. Format: yyyy-MM-dd |
./ServiceResult/@DestinationZone | N | Integer | Juniper code of the destination zone. |
./ServiceResult/@Code | N | String | Service code. |
./ServiceResult/BookingCode | N | String | Service code. |
./BookingCode/@ExpirationDate | N | DateTime | Shows the expiration date of the generated BookingCode. Format: yyyy-MM-dd |
./ServiceResult/{ServiceRequiredFields} | N | - | Requiered fields for the booking process. Only the nodes and attributes that are returned in this structure will be mandatory, the rest of the information will be considered as optional. The structure matches with a ServiceBooking request, refer to the mentioned for a list of all of the possible required fields. |
./ServiceResult/{CancellationPolicy} | Y | - | List of cancellation policies |
./ServiceResult/{CancellationPolicyCost} | Y | - | List of cancellation policies. Resticted information, contract with Juniper for more information. |
./ServiceResult/PriceInformation | N | - | Price information, including basic information of the selected combination. |
./PriceInformation/ServiceInfo | N | - | Basic service information. |
./ServiceInfo/Name | N | String | Service name. |
./ServiceInfo/Description | Y | String | Service description. |
./ServiceInfo/Images | Y | - | Images container. |
./ServiceInfo/Latitude | Y | String | Service latitude. |
./ServiceInfo/Longitude | Y | String | Service longitude. |
./Images/Image | Y | - | Image container. |
./Image/FileName | Y | String | Image URL. |
./PriceInformation/ServiceOptions | N | - | Service options container. |
./ServiceOptions/ServiceOption | N | - | Service option. Contains basic information like names of the zones, name of the option, prices, supplements, ... |
./ServiceOption/Name | N | String | Service option name. |
./ServiceOption/OccupancyAllowed | Y | - | Occupancy information. |
./OccupancyAllowed/@Children | Y | Boolean | Indicates if the service option allows children. |
./ServiceOption/Description | N | String | Service option description. |
./ServiceOption/Images | Y | String | Service option image. |
./ServiceOption/Dates | N | - | Service option dates container. |
./Dates/Date | N | - | Service option date. Contains the date and prices for that date of the option. |
./Date/@Start | N | Date | Start date range. Format: yyyy-MM-dd |
./Date/@End | N | Date | End date range. Format: yyyy-MM-dd |
./Date/@Duration | N | Integer | Service option duration. |
./Date/@RatePlanCode | N | String | Encoded data with service combination. |
./Date/@Status | Y | String | Availability status. It is recommended to focus on this one rather than on the higher level (ServiceResult) one. Possible values: OK: Available RQ: On request |
./Date/{InfoDates} | Y | - | Additional dates. Optional node that will only be available on products that have such information. |
./Date/{Prices} | N | - | Prices. |
./ServiceOption/AdditionalElements | Y | - | Additional elements of the service. |
./ServiceOption/OptionalElements | Y | - | Optional elements of the service. |
./ServiceOption/RestrictedMeetingPoints | Y | - | Additional elements container. |
./RestrictedMeetingPoints/MeetingPoint | N | - | Meeting point container. |
./MeetingPoint/@Code | N | String | Meeting point code. |
./MeetingPoint/@Time | N | Time | Meeting point time. |
./MeetingPoint/Name | N | String | Meeting point name. |
./ServiceOption/AdditionalDescriptions | Y | - | Additional descriptions of the service. |
./PriceInformation/BillingOrganization | Y | String | Billing organization name. This information is restricted and will not be available by default. |
./BillingOrganization/@Code | Y | String | Billing organization code. |
./Results/{AdjustmentResult} | Y | - | Additional adjustment result. It will be available if, for example, you've manually added a PromoCode by using the AdvancedOption found within this same transaction request. |
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<ServiceBookingRulesResponse xmlns = "http://www.juniper.es/webservice/2007/">
<BookingRulesRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2021-11-16T16:44:13.2341328+01:00" IntCode = "6iUEdRj4xB5jkMnfEq9hoa+xu1VbByB+Tx9py1HtRN8=">
<Warnings>
<Warning Code = "warnCheckNotPossible" Text = "Price review is not possible"/>
</Warnings>
<Results>
<ServiceResult Status = "OK" Start = "2021-12-18" End = "2021-12-18" DestinationZone = "15011" Code = "6IwSkuinzsgXcNiI6VDtSQ==">
<BookingCode ExpirationDate = "2021-11-16T16:54:13.1872671+01:00">n8xL/ikoco+8UyvWDsGLkKy+P5dw/2OMniGBDdIPtHofly9IdIm5Q66qz9Jo9czwcnehrkqVV...</BookingCode>
<ServiceRequiredFields>
<ServiceBooking>
<Paxes>
<Pax IdPax = "1">
<Name>Holder Name</Name>
<Surname>Holder Surname</Surname>
<Age>30</Age>
</Pax>
</Paxes>
<Holder>
<RelPax IdPax = "1"/>
</Holder>
<Elements>
<ServiceElement>
<BookingCode>n8xL/ikoco+8UyvWDsGLkKy+P5dw/2OMniGBDdIPtHofly9IdIm5Q66qz9Jo9czwcnehrkqVV...</BookingCode>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
<ServiceBookingInfo>
<MeetingPointInfo Code = "000" MeetingTime = "0001-01-01T00:00:00"/>
<Language Code = "en"/>
</ServiceBookingInfo>
</ServiceElement>
</Elements>
</ServiceBooking>
</ServiceRequiredFields>
<CancellationPolicy CurrencyCode = "EUR">
<FirstDayCostCancellation Hour = "00:00">2021-12-09</FirstDayCostCancellation>
<Description>* Cancelling from 16/11/2021 at 00:00:00 to 09/12/2021 at 00:00:00: 0 &euro; * Cancelling from 09/12/2021 at 00:00:00 to 14/12/2021 at 00:00:00: 50.00 % of expenses * Cancelling from 14/12/2021 at 00:00:00 to 19/12/2021 at 00:00:00: 100.00 % of expenses</Description>
<PolicyRules>
<Rule From = "10" DateFrom = "2021-11-16" DateFromHour = "00:00" DateTo = "2021-12-09" DateToHour = "00:00" Type = "V" FixedPrice = "0" PercentPrice = "0" Nights = "0" ApplicationTypeNights = "Average"/>
<Rule From = "5" To = "9" DateFrom = "2021-12-09" DateFromHour = "00:00" DateTo = "2021-12-14" DateToHour = "00:00" Type = "V" FixedPrice = "0" PercentPrice = "50" Nights = "0" ApplicationTypeNights = "Average"/>
<Rule From = "0" To = "4" DateFrom = "2021-12-14" DateFromHour = "00:00" DateTo = "2021-12-19" DateToHour = "00:00" Type = "V" FixedPrice = "0" PercentPrice = "100" Nights = "0" ApplicationTypeNights = "Average"/>
</PolicyRules>
</CancellationPolicy>
<PriceInformation>
<ServiceInfo>
<Name>Excursión Coves del Drach</Name>
<Description>Excursion to Drach Caves, stunning natural scenery, carved by nature through the centuries</Description>
<Images>
<Image Featured = "true">
<FileName>https://juniper-uat.bookingengine.es/images/upload_p/Bus_anfibio.jpg</FileName>
</Image>
</Images>
</ServiceInfo>
<ServiceOptions>
<ServiceOption Code = "3">
<Name>Ticket with concert</Name>
<OccupancyAllowed Children = "true"/>
<Description><![CDATA[Long description of the service option, may include parsed HTML]]></Description>
<Images>
<Image>https://juniper-uat.bookingengine.es/images/upload_p/1270127676_0.jpg</Image>
</Images>
<Dates>
<Date Start = "2021-12-18T10:15:00" End = "2021-12-18T10:15:00" Duration = "1" RatePlanCode = "fuYLMSQUyj9cDYlAfLTCo3vAVWRSwfYfu/yG1NHCivVkk3x3b6pUKUy2ljc+CYWFmjhj1hQCxdpk1...">
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Gross = "30" Nett = "30">
<Service Amount = "30"/>
</TotalFixAmounts>
<Breakdown>
<Concepts>
<Concept Type = "BAS" Name = "Base">
<Items>
<Item Amount = "12" Date = "2021-12-18" Quantity = "1" TtaCode = "0"/>
<Item Amount = "18" Date = "2021-12-18" Quantity = "1" PaxType = "ADU" TtaCode = "0"/>
</Items>
</Concept>
</Concepts>
</Breakdown>
</Price>
</Prices>
</Date>
</Dates>
<RestrictedMeetingPoints>
<MeetingPoint Code = "149" Time = "00:00" DestinationCode = "15011">
<Name>APARTAMENTOS ALLSUN PIL-LARI PLAYA</Name>
</MeetingPoint>
</RestrictedMeetingPoints>
<Languages>
<Language Code = "en">
<Name>English</Name>
</Language>
<Language Code = "es">
<Name>Spanish</Name>
</Language>
</Languages>
</ServiceOption>
</ServiceOptions>
</PriceInformation>
</ServiceResult>
</Results>
</BookingRulesRS>
</ServiceBookingRulesResponse>
</soap:Body>
</soap:Envelope>
Now, we will proceed to detail and give examples of the key points of this response:
The additional required fields is a set of additional parameters that your suppliers might request you to comply with on their products in order to be capable of completing reservations on them.
These may be optional or mandatory depending on the @Mandatory
property found within the AdditionalRequiredField
node. If required, it will be essential to include them on your ServiceBooking request in order to complete the reservation.
Attached you will be able to find an example of a list of additional required fields that you might find on ServiceBookingRules response.
<ServiceBookingInfo>
<AdditionalRequiredFields>
<AdditionalRequiredField Code = "1" Mandatory = "true" Type = "String" Size = "20">
<Name>Mandatory field 1</Name>
</AdditionalRequiredField>
<AdditionalRequiredField Code = "2" Mandatory = "false" Type = "String" Size = "20">
<Name>Optional field 2</Name>
</AdditionalRequiredField>
<AdditionalRequiredField Code = "3" Mandatory = "false" Type = "CheckBox">
<Name>Optional field 3</Name>
</AdditionalRequiredField>
<AdditionalRequiredField Code = "4" Mandatory = "true" Type = "Enum">
<Name>Select "Immediate issue and payment"</Name>
<Values>
<Value Code = "92">Immediate issue and payment</Value>
</Values>
</AdditionalRequiredField>
</AdditionalRequiredFields>
</ServiceBookingInfo>
And an example of how would this information later be specified on the ServiceBooking request.
<ServiceBookingInfo>
<AdditionalRequiredFields>
<AdditionalRequiredField Code = "1">
<Value>Mandatory value</Value>
</AdditionalRequiredField>
<AdditionalRequiredField Code = "2">
<Value>Optional value</Value>
</AdditionalRequiredField>
<AdditionalRequiredField Code = "3">
<Value>true</Value>
</AdditionalRequiredField>
<AdditionalRequiredField Code = "4">
<Value>92</Value>
</AdditionalRequiredField>
</AdditionalRequiredFields>
</ServiceBookingInfo>
Kindly contact the Juniper team if you would like further information in this regard or help with testing this feature on the UAT environment.
We book a service by a BookingCode which we got in the BookingRules Response:
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | Web Service version. |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages. Note: Some suppliers only support one language. If your language is not supported, default language is returned. |
@TimeStamp | Y | DateTime | This is an optional field that allows for you to send your own time stamp. Format: yyyy-MM-ddThh:mm:ss (UTC) |
{Login} | N | - | Customer login to access the Web Service. |
{Paxes} | N | - | Indicates the passenger information. Array of passengers. Fields necessary for this transaction: - @IdPax (Required) - Age (Optional for adults) |
ReservationLocator | Y | String | You may indicate an existing booking code to add a service to it. Remarcable points: - If no data os the mail pax is sent, current data of the booking holder will be taken. - If some data of the main pax is sent, name and surname should match to the current booking holder. The rest of the info will be updated. |
ExternalBookingReference | Y | String | Free text that may indicate its agency reference, booking code or any code you wish to identify the booking. It will not exceed 50 characters. |
PlatformBookingReference | Y | String | Free text field through which you may send the reference of your platform (ideally you should always prioritize the ExternalBookingReference but, if you would like to differentiate between your platform and the agency's final booking reference, send the agency one on ExternalBookingReference and yours here). Right now this is mainly a referential purposes, and cannot be used in order to search and/or identify bookings. |
FileNumber | Y | String | File No. |
Agent | Y | - | If you are interested you may modify the name and email of the user that is making the booking. By default, the ones that are configured are used in the user. |
./Agent/@Name | Y | String | Agent name. |
./Agent/@Email | Y | String | Agent email. |
./Agent/@idCliRef | Y | Integer | Referred agency id. For use of guidetype agencies on which it will be mandatory to specify this information prior to being able to confirm a booking. |
Holder | N | - | Main passenger. |
./Holder/@IdPax | N | Integer | Main passenger identifier. |
Comments | Y | - | List of comments. |
./Comments/Comment | N | String | Comment. |
./Comment/@Type | Y | String | Comment type. Possible values: • RES: General booking comments • INT: Internal booking comments. Kindly note that these comments are restricted, contact with Juniper for more information. Note that it is important to set the proper @Type or the comment won’t be properly saved. |
Elements | N | - | List of service elements. |
./Elements/ServiceElement | N | - | Service element. |
./ServiceElement/BookingCode | N | String | Encrypted code which identifies the package you want to book. |
./BookingCode/RelPaxesDist | N | - | Passengers' distribution you wish to request. |
./RelPaxesDist/RelPaxDist | N | - | Distribution list. |
./RelPaxDist/RelPaxes | N | - | Passengers list of this distribution. |
./RelPaxes/RelPaxt | N | - | Passenger. |
./RelPax/@IdPax | N | Integer | Passenger identifier. It should match with a Pax@IdPax. |
./ServiceElement/Comments | Y | - | List of comments. |
./Comments/Comment | N | String | Comment. |
./Comment/@Type | N | String | Comment type. Possible values: • ELE: Booking element comments. • TKT: Service voucher comment. Note that it is important to set the proper @Type or the comment won't be properly saved. |
./ServiceElement/ServiceBookingInfo | N | - | Basic information of the service. |
./ServiceBookingInfo/MeetingPointInfo | N | - | Information about the the selected meeting point on this service. |
./MeetingPointInfo/@Code | N | String | Meeting point code. Mandatory when the client uses the groundhandling module. If not, it accepts 000. These codes may be retrieved from the MeetingPointList transaction. |
./MeetingPointInfo/@MeetingTime | N | DateTime | Meeting point meeting time. |
./MeetingPointInfo/Name | Y | String | Meeting point name. |
./ServiceBookingInfo/SupplementsInfo | Y | - | Information about all of the supplements applied to the combination. |
./SupplementsInfo/SupplementInfo | N | - | Information about a specific supplement applied to the combination. |
./SupplementInfo/@Code | N | Integer | Code that identifies the specific supplement from the combination. |
./SupplementInfo/{Origin} | Y | - | Origin information of the service supplement. The structure matches with the Origin node from the {TransferBooking} request. |
./ServiceBookingInfo/{HotelService} | Y | - | Optional information about the the selected hotel of the service. |
./ServiceBookingInfo/Language | Y | - | Language of the service. |
./Language/@Code | N | String | Language code. |
./ServiceBookingInfo/{AdditionalRequiredFields} | Y | - | Additional required fields of the service. |
AdvancedOptions | Y | - | Optional information. |
./AdvancedOptions/ShowBreakDownPrice | Y | Boolean | If the value is True, it will show the full price object with all the information about the prices. If not specified, False is assumed by default. |
./AdvancedOptions/SendMailTo | Y | String | If included with ALL value a booking confirmation email will be sent to your email account. |
./AdvancedOptions/BookingPaid | Y | String | Parameter meant for internal use only. |
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<ServiceBooking>
<ServiceBookingRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<Paxes>
<Pax IdPax = "1">
<Name>María</Name>
<Surname>Martínez López</Surname>
<Email>maria@mydomain.com</Email>
<Age>30</Age>
<Nationality>ES</Nationality>
</Pax>
</Paxes>
<Holder>
<RelPax IdPax = "1"/>
</Holder>
<ExternalBookingReference>MY_OWN_LOCATOR_123456</ExternalBookingReference>
<Comments>
<Comment Type = "RES">BOOKING-WISE COMMENTS</Comment>
</Comments>
<Elements>
<ServiceElement>
<BookingCode>n8xL/ikoco+8UyvWDsGLkKy+P5dw/2OMniGBDdIPtHofly9IdIm5Q66qz9Jo9czwcnehrkqVV...</BookingCode>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
<Comments>
<Comment Type = "ELE">BOOKING-LINE COMMENTS</Comment>
</Comments>
<ServiceBookingInfo>
<MeetingPointInfo Code = "000" MeetingTime = "2021-11-16T16:55:00"/>
<Language Code = "en"/>
</ServiceBookingInfo>
</ServiceElement>
</Elements>
<AdvancedOptions>
<ShowBreakdownPrice>true</ShowBreakdownPrice>
</AdvancedOptions>
</ServiceBookingRQ>
</ServiceBooking>
</soapenv:Body>
</soapenv:Envelope>
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Url | N | String | URL endpoint |
@TimeStamp | N | DateTime | Response date and time. Format: yyyy-MM-ddThh:mm:ss (UTC) |
@IntCode | N | String | Internal control code |
{Errors} | Y | - | Applicable errors. |
{Warnings} | Y | - | Applicable warnings. |
Reservations | - | - | List of reservations. |
./Reservations/Reservation | N | - | Reservation item. |
./Reservation/@Locator | N | String | Booking locator. |
./Reservation/@Status | N | String | Booking confirmation status. Possible values are: •PAG – Booking confirmed and paid •CON – Booking confirmed •CAN or CAC – Booking cancelled •PRE or PDI – Booking on request •QUO – Quotation (this is a similar status to on request that will always be received when your account requires for the payment of the booking through the WebService) It is very important to check the Status attribute in order to verify the booking is confirmed. |
./Reservation/ExternalBookingReference | N | String | Free text that may indicate its agency reference, booking code or any code you wish to identify the booking. It will not exceed 50 characters. |
./Reservation/Holder | - | - | Booking holder or mail passenger. |
./Holder/RelPax | - | - | - |
./RelPax/@IdPax | N | Integer | Holder ID. |
./Reservation/{Paxes} | N | - | Passenger data. Mandatory passenger data will be filled in with random data. |
./Reservation/Comments | Y | - | List of booking-wise comments. |
./Comments/Comment | N | String | Comment. |
./Comment/@Type | Y | String | Comment type. Possible values: • RES: General booking comments • INT: Internal booking comments |
./Reservation/Payment | Y | - | Payment information. |
./Payment/@Type | N | String | Payment type code. Possivle values: •C: Credit •B: Bank •T: POS (Point of sale) |
./Reservation/Items | - | - | List of items. |
./Items/ServiceItem | - | - | Service item. |
./ServiceItem/@ItemId | N | String | ID of the booking Element. |
./ServiceItem/@Code | N | String | Service code. |
./ServiceItem/@Status | N | String | Service status. |
./ServiceItem/@Start | N | Date | Starting date of the Service. Format: yyyy-MM-dd |
./ServiceItem/@End | N | Date | Ending date of the Service. Format: yyyy-MM-dd |
./ServiceItem/ExternalInfo | Y | - | External information. Restricted. |
./ExternalInfo/ExternalLocator | Y | String | Supplier locator. |
./ExternalInfo/ExternalCancellationLocator | Y | String | Supplier cancellation locator. |
./ExternalInfo/ExternalTransactionIDS | Y | - | Supplier transaction ids. |
./ExternalTransactionIDS/ExternalTransactionID | N | - | Supplier transaction id. |
./ExternalTransactionID/@Type | N | String | Transaction type. Possible values: • CONFIRM • MODIFY • CANCEL |
./ExternalTransactionID/@Value | N | String | Transaction id. |
./ServiceItem/{Prices} | N | - | Price. |
./ServiceItem/CancellationPolicy | N | - | Cancellation policies. |
./ServiceItem/Comments | Y | - | List of item-wise comments. |
./Comments/Comment | N | String | Comment text. |
./Comment/@Type | Y | String | Comment type. Possible values: • ELE: Item line comments • TKT: Comments from the provider/ticket voucher comments. |
./ServiceItem/ServiceInfo | Y | - | Service general info. |
./ServiceInfo/Name | Y | String | Service name. |
./ServiceInfo/Description | Y | String | Service description. |
./ServiceInfo/Images | Y | - | Service images. |
./Images/Image | Y | - | Specific image. |
./Image/@Featured | Y | Boolean | If the image is the featured one. |
./Image/FileName | Y | String | File address of the image. |
./ServiceItem/ServiceOptions | N | - | Service options container. |
./ServiceOptions/ServiceOption | N | - | Service option. |
./ServiceOption/Name | N | String | Service option name. |
./ServiceOption/OccupancyAllowed | Y | - | Occupancy information. |
./OccupancyAllowed/@Children | Y | Boolean | Indicates if the service option allows children. |
./ServiceOption/Description | N | String | Service option description. |
./ServiceOption/Images | Y | - | Service option images. |
./Images/Image | Y | String | Service option image. |
./ServiceOption/Dates | N | - | Service option dates container. |
./Dates/Date | N | - | Service option date. Contains the date and prices for that date of the option. |
./Date/@Start | N | Date | Start date range. Format: yyyy-MM-dd |
./Date/@End | N | Date | End date range. Format: yyyy-MM-dd |
./Date/@Duration | N | Integer | Service option duration. |
./Date/{InfoDates} | Y | - | Additional dates. Optional node that will only be available on products that have such information. |
./Date/{Prices} | N | - | Prices. |
./ServiceOption/ServiceBookingInfo | N | - | Basic information of the service. |
./ServiceBookingInfo/MeetingPointInfo | N | - | Information about the selected meeting point on this service. |
./MeetingPointInfo/@Code | N | String | Meeting point code. |
./MeetingPointInfo/@MeetingTime | N | DateTime | Meeting point meeting time. |
./MeetingPointInfo/@Name | N | String | Meeting point name. |
./ServiceBookingInfo/{HotelService} | N | - | Information about the selected meeting point on this service. |
./ServiceItem/RelPaxes | N | - | Passenger distribution of the reservation |
./RelPaxes/RelPax | N | - | Passenger. |
./RelPaxes/@IdPax | N | Integer | It focuses on the passenger it refers to. |
./ServiceItem/Vouchers | Y | - | Applicable vouchers of the reservation. As of the moment of writing this the voucher is only available on very specific product types, and it is not recommended to expect for it to always be available on all reservations. |
./Vouchers/Voucher | Y | - | Specific voucher. |
./Voucher/@URL | N | String | Web address to the related voucher. |
./Items/{AdjustmentItem} | Y | - | Additional adjustment item. It will be available if, for example, you've manually added a PromoCode on the previous BookingRules step. |
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<ServiceBookingResponse xmlns = "http://www.juniper.es/webservice/2007/">
<BookingRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2021-11-16T16:51:59.5420478+01:00" IntCode = "3INWUB7xSFwCBrAJgpZJr6oSoQWbtzb4xUyBaW8+az8=">
<Reservations>
<Reservation Locator = "B92821" Status = "PAG" Language = "en">
<ExternalBookingReference>MY_OWN_LOCATOR_123456</ExternalBookingReference>
<Holder>
<RelPax IdPax = "2"/>
</Holder>
<Paxes>
<Pax IdPax = "1">
<Name>María</Name>
<Surname>Martínez López</Surname>
<Age>30</Age>
<Email>maria@mydomain.com</Email>
<Nationality>ES</Nationality>
</Pax>
<Pax IdPax = "2">
<Name>María</Name>
<Surname>Martínez López</Surname>
<Age>30</Age>
<Email>maria@mydomain.com</Email>
<Nationality>ES</Nationality>
</Pax>
</Paxes>
<Comments>
<Comment Type = "RES">BOOKING-WISE COMMENTS</Comment>
</Comments>
<AgenciesData>
<AgencyData>
<ReferencedAgency>false</ReferencedAgency>
<AgencyCode>222</AgencyCode>
<AgencyName>Test XML Integrator</AgencyName>
<AgencyHandledBy>XML Agent</AgencyHandledBy>
<AgencyEmail>noreply@ejuniper.com</AgencyEmail>
<AgencyReference>MY_OWN_LOCATOR_123456</AgencyReference>
</AgencyData>
<AgencyData>
<ReferencedAgency>true</ReferencedAgency>
<AgencyCode>0</AgencyCode>
</AgencyData>
</AgenciesData>
<Items>
<ServiceItem ItemId = "332262" Status = "OK" Start = "2021-12-18" End = "2021-12-18" Code = "6IwSkuinzsgXcNiI6VDtSQ==">
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Gross = "30" Nett = "30">
<Service Amount = "30"/>
</TotalFixAmounts>
<Breakdown>
<Concepts>
<Concept Type = "BAS" Name = "Base">
<Items>
<Item Amount = "12" Date = "2021-12-18" Quantity = "1" Days = "1" TtaCode = "0"/>
<Item Amount = "18" Date = "2021-12-18" Quantity = "1" Days = "1" PaxType = "ADU" TtaCode = "0"/>
</Items>
</Concept>
</Concepts>
</Breakdown>
</Price>
</Prices>
<CancellationPolicy CurrencyCode = "EUR">
<FirstDayCostCancellation Hour = "00:00">2021-12-09</FirstDayCostCancellation>
<Description>* Cancelling from 16/11/2021 at 00:00:00 to 09/12/2021 at 00:00:00: 0 &euro; * Cancelling from 09/12/2021 at 00:00:00 to 14/12/2021 at 00:00:00: 50.00 % of expenses * Cancelling from 14/12/2021 at 00:00:00 to 19/12/2021 at 00:00:00: 100.00 % of expenses</Description>
<PolicyRules>
<Rule From = "10" DateFrom = "2021-11-16" DateFromHour = "00:00" DateTo = "2021-12-09" DateToHour = "00:00" Type = "V" FixedPrice = "0" PercentPrice = "0" Nights = "0" ApplicationTypeNights = "Average"/>
<Rule From = "5" To = "9" DateFrom = "2021-12-09" DateFromHour = "00:00" DateTo = "2021-12-14" DateToHour = "00:00" Type = "V" FixedPrice = "0" PercentPrice = "50" Nights = "0" ApplicationTypeNights = "Average"/>
<Rule From = "0" To = "4" DateFrom = "2021-12-14" DateFromHour = "00:00" DateTo = "2021-12-19" DateToHour = "00:00" Type = "V" FixedPrice = "0" PercentPrice = "100" Nights = "0" ApplicationTypeNights = "Average"/>
</PolicyRules>
</CancellationPolicy>
<Comments>
<Comment Type = "ELE">BOOKING-LINE COMMENTS</Comment>
</Comments>
<ServiceInfo>
<Name>Excursión Coves del Drach</Name>
<Description>Excursion to Drach Caves, stunning natural scenery, carved by nature through the centuries</Description>
<Images>
<Image Featured = "true">
<FileName>https://juniper-uat.bookingengine.es/images/upload_p/Bus_anfibio.jpg</FileName>
</Image>
</Images>
</ServiceInfo>
<ServiceOptions>
<ServiceOption Code = "3">
<Name>Ticket with concert</Name>
<OccupancyAllowed Children = "true"/>
<Description><![CDATA[Long description of the service option, may include parsed HTML]]></Description>
<Images>
<Image>https://juniper-uat.bookingengine.es/images/upload_p/1270127676_0.jpg</Image>
</Images>
<Dates>
<Date Start = "2021-12-18T10:15:00" End = "2021-12-18T10:15:00" Duration = "1" RatePlanCode = "fuYLMSQUyj9cDYlAfLTCo3vAVWRSwfYfu/yG1NHCivVkk3x3b6pUKUy2ljc+CYWFmjhj1hQCxdpk1aXrQgyjMl9ULxxxTx7wegonbV2dLbEy7Y+lz6PVvUuWOLNFqw+7tCC79nilpw4r2YljGDVkL7NP2Sjyh1qQ6beU21pQoY7iCCuUKtbRjDNDYyjnp8Jb">
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Recommended = "0" Gross = "30" Nett = "30">
<Service Amount = "30"/>
</TotalFixAmounts>
</Price>
</Prices>
</Date>
</Dates>
<ServiceBookingInfo>
<MeetingPointInfo MeetingTime = "2021-12-18T16:55:00"/>
<Language Code = "en">
<Name>English</Name>
</Language>
</ServiceBookingInfo>
</ServiceOption>
</ServiceOptions>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</ServiceItem>
</Items>
</Reservation>
</Reservations>
</BookingRS>
</ServiceBookingResponse>
</soap:Body>
</soap:Envelope>
This is to obtain a booking by its reference code. The returned information is the same as in ServiceBooking. Please see section ServiceBooking for further information.
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | Web Service version. |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages. |
{Login} | N | - | Customer login to access the Web Service. |
ReadRequest | N | - | - |
./ReadRequest/@ReservationLocator | N | - | Booking code. |
AdvancedOptions | Y | - | Optional information. |
./AdvancedOptions/ShowBreakdownPrice | Y | Boolean | If the value is True, it will show the full price object with all the information about the prices. If not specified, False is assumed by default. |
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<ReadBooking>
<ReadRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<ReadRequest ReservationLocator = "CSY243"/>
</ReadRQ>
</ReadBooking>
</soapenv:Body>
</soapenv:Envelope>
It returns the same information as the response of ServiceBooking. For further information regarding the parameters, please review the section related to the response of ServiceBooking transaction.
This transaction allows for the cancellation of a booking, either to the booking as a whole or to specifically one of its services/items. Through the use of the @OnlyCancellationFees property it will also allow you to retrieve the cancellation costs of such booking without needing to actually cancel the same, whenever available (as it is important to note that this information could be unavailable and, on those cases, you will need to rely on the available cancellation policies).
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | Web Service version |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages. |
{Login} | N | - | Customer login to access the Web Service |
CancelRequest | N | - | - |
./CancelRequest/@ReservationLocator | N | String | Booking code. If not used along an @ItemId will allow for the cancellation of the booking as a whole. |
./CancelRequest/@ItemId | Y | Integer | Booking line (service item) identifier. If it is the only/latest available item of a booking, canceling the locator as a whole will be necessary. |
./CancelRequest/@OnlyCancellationFees | Y | Boolean | Allows for the retrieval of the available cancellation costs of the booking. If included, the booking will not be cancelled. |
AdvancedOptions | Y | - | Optional parameters. |
./AdvancedOptions/SendMailTo | Y | String | If included with the ALL value, a booking confirmation email will be sent to your email account. |
./AdvancedOptions/ShowBreakdownPrice | Y | Boolean | If the value is true, it will show the full price object with all the information about the prices. If not specified, false is assumed by default. |
./AdvancedOptions/ShowCancelBreakdown | Y | Boolean | If the value is true and if the information is available, it will include the cancellation cost breakdown. |
Booking locator cancellation
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<CancelBooking>
<CancelRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<CancelRequest ReservationLocator = "WZS1N6"/>
</CancelRQ>
</CancelBooking>
</soapenv:Body>
</soapenv:Envelope>
Retrieval of cancellation costs
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<CancelBooking>
<CancelRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<CancelRequest ReservationLocator = "WZS1N6" OnlyCancellationFees = "true"/>
</CancelRQ>
</CancelBooking>
</soapenv:Body>
</soapenv:Envelope>
Aside from the CancelInfo object (which we detail below), if the cancellation request is successful, this response will return the same structure that the response of the ServiceBooking request has. Kindly refer to the ServiceBooking request for the specifications of the nodes and properties from this transaction.
In addition to this, it is very important to focus on the warnings from the response of this transaction, as they will tell you if the cancellation cost could or could not be retrieved and if the reservation was or was not canceled, as in the below list of examples:
Important
In the event of canceling the reservation but getting a response on which the cancellation cost could not be calculated (warnCancelledAndCancellationNotCalculated), it is important to never assume that this reservation will not involve any costs and contacting with your Juniper supplier will be necessary.
Object that details the cancellation costs of a reservations, if any. We may refer to this object as: {CancelInfo}
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
BookingCodeState | Y | String | Status on which the booking has been left. Refer to the booking confirmation response, for a list of all of the possible statuses. |
BookingCancelCost | Y | Double | Cancellation cost of the reservation. |
BookingCancelCostCurrency | Y | String | Cancellation cost currency of the reservation. |
BreakDown | Y | - | Cancellation cost breakdown of the reservation. Refer to the breakdown node from the {Prices} object, for further information on its specification. |
Actual booking cancellation
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<CancelBookingResponse xmlns = "http://www.juniper.es/webservice/2007/">
<BookingRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2022-11-30T11:45:24.7817582+01:00" IntCode = "JObE7JM8D9DJtKzKcFWsGf8a6DLVaQ+5cwGmNKAYuc0=">
<Warnings>
<Warning Code = "warnCancelledAndCancellationCostRetrieved" Text = "Cancellation cost retrieved. Reservation was cancelled."/>
<CancelInfo>
<BookingCodeState>CaC</BookingCodeState>
<BookingCancelCost>0</BookingCancelCost>
<BookingCancelCostCurrency>EUR</BookingCancelCostCurrency>
</CancelInfo>
</Warnings>
<Reservations>
<Reservation Locator = "WZS1N6" Status = "CAC" Language = "en">
<ExternalBookingReference>YOUR_OWN_REFERENCE</ExternalBookingReference>
<Holder>
<RelPax IdPax = "4"/>
</Holder>
<Paxes>
<Pax IdPax = "2">
<Name>Passenger Name</Name>
<Surname>Passenger Surname</Surname>
<Age>30</Age>
</Pax>
<Pax IdPax = "3">
<Name>Passenger Name 2</Name>
<Surname>Passenger Surname 2</Surname>
<Age>30</Age>
</Pax>
<Pax IdPax = "4">
<Name>Holder Name</Name>
<Surname>Holder Surname</Surname>
<Age>30</Age>
<Nationality>ES</Nationality>
</Pax>
</Paxes>
<Comments>
<Comment Type = "RES">GENERAL BOOKING COMMENTS</Comment>
</Comments>
<AgenciesData>
<AgencyData>
<ReferencedAgency>false</ReferencedAgency>
<AgencyCode>280</AgencyCode>
<AgencyName>Juniper (Integrador)</AgencyName>
<AgencyHandledBy>Agente XML</AgencyHandledBy>
<AgencyEmail>replacement@test.com</AgencyEmail>
<AgencyReference>YOUR_OWN_REFERENCE</AgencyReference>
</AgencyData>
<AgencyData>
<ReferencedAgency>true</ReferencedAgency>
<AgencyCode>0</AgencyCode>
</AgencyData>
</AgenciesData>
<Items>
<ServiceItem ItemId = "368017" Status = "CA" Start = "2023-09-03" End = "2023-09-05">...</ServiceItem>
</Items>
<Payment Type = "C"/>
</Reservation>
</Reservations>
</BookingRS>
</CancelBookingResponse>
</soap:Body>
</soap:Envelope>
Cancellation cost retrieval
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<CancelBookingResponse xmlns = "http://www.juniper.es/webservice/2007/">
<BookingRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2022-11-30T11:36:47.3924763+01:00" IntCode = "dyPTSrKuEYclahby39DdPTgHCqIuVWcSjmp8IrvX2c4=">
<Warnings>
<Warning Code = "warnCancellationCostRetrieved" Text = "Cancellation cost retrieved. Reservation was not cancelled."/>
<CancelInfo>
<BookingCodeState>Pag</BookingCodeState>
<BookingCancelCost>0</BookingCancelCost>
<BookingCancelCostCurrency>EUR</BookingCancelCostCurrency>
<BreakDown>
<Concepts>
<Concept Name = "Ticket Reservation (03/09/2023 - 05/09/2023)">
<Items>
<Item Amount = "0"/>
</Items>
</Concept>
</Concepts>
</BreakDown>
</CancelInfo>
</Warnings>
</BookingRS>
</CancelBookingResponse>
</soap:Body>
</soap:Envelope>
The modification transactions allow you to modify service bookings without the need of cancelling and creating them again. You will be able to modify the following information:
At a booking level:
At a service level (ServiceItem):
Important note:
It is important to keep in mind that you will not always be able to modify all of this information. This will depend on the service itself as they may only allow some of these modifications, or even it will not be allowed.
The bookings that have cancellation charges cannot be modified. In order to modify them you will have to cancel them, assume the cancellation charges and create a new one on your end.
The modification process consists of two steps:
ServiceModify: This transaction allows you to check if the modifications that you want to perform are possible without the need of actually performing them in the process. In the transaction you will have to indicate the information that you want to modify so that on the response you will get:
ServiceConfirmModify: After checking that the modifications are possible with the ServiceModify transaction, this transaction will allow you to actually confirm such modifications. If the ServiceModify transaction gave you one or more @ModifyCode you will have to choose and send one in this transaction.
In this first step you will have to specify the information you wish to modify.
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | Web Service version |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages. |
{Login} | N | - | Customer login to access the Web Service |
ReservationLocator | N | String | Reservation locator |
./ReservationLocator/@ItemId | N | String | Hotel item Id |
{Paxes} | Y | - | Allows you to modify the passenger information or the occupancy of the rooms of the booking. |
Holder | N | - | Allows you to modify the lead passenger information. |
./Holder/RelPax | N | - | - |
./RelPax/@IdPax | N | Integer | Booking passenger Id. It should match with a Pax@IdPax |
ExternalBookingReference | Y | String | Allows you to modify the external booking reference. |
Comments | Y | - | Allows you to modify the booking comments. |
./Comments/Comment | Y | String | - |
./Comment/@Type | Y | String | RES |
SearchSegmentServices | Y | - | |
./SearchSegmentServices/@Start | Y | Date | Allows you to modify the start date. |
./SearchSegmentServices/@End | Y | Date | Allows you to modify the end date. |
./SearchSegmentServices/@Code | Y | String | Allows you to modify the service |
./SearchSegmentServices/@OptionCode | Y | String | Allows you to modify the service option |
RelPaxesDist | Y | - | Allows you to modify the passenger distribution. |
./RelPaxesDist/RelPaxDist | N | - | Distribution list. |
./RelPaxDist/RelPaxes | N | - | Passengers list of this distribution |
./RelPaxes/RelPax | N | Passenger | |
./RelPax/@IdPax | N | Integer | Passenger Identifier. It should match with a Pax@IdPax |
ServiceBookingInfo | N | - | Basic information of the service |
./ServiceBookingInfo/MeetingPointInfo | N | - | Infomation about the selected meeting point on this service. |
./MeetingPointInfo/@Code | N | String | Meeting point code. |
./MeetingPointInfo/@MeetingTime | N | DateTime | Meeting point meeting time. |
./MeetingPointInfo/@Name | N | String | Meeting point name. |
./ServiceBookingInfo/{HotelService} | Y | - | Optional information about the selected hotel of the service. |
AdvancedOptions | Y | - | Optional information |
./AdvancedOptions/ShowBreakdownPrice | Y | Boolean | If the value is True, it will show the full price object with all the information about the prices. If not specified, False is assumed by default. |
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Url | N | String | URL endpoint |
@TimeStamp | N | DateTime | Response date and time. Format: yyyy-MM-ddThh:mm:ss (UTC) |
@IntCode | N | String | Internal control code |
{Errors} | Y | - | Applicable errors. |
{Warnings} | Y | - | Applicable warnings. |
Results | N | - | List of results |
./Results/ServiceModifyResult | Y | - | Only if the price will be modified (new service, option, date). |
./ServiceModifyResult/@Start | N | Date | Start |
./ServiceModifyResult/@End | N | Date | End |
./ServiceModifyResult/@Code | N | String | Code |
./ServiceModifyResult/@Status | N | String | Availability. Possible values: OK: Available RQ: On request |
./ServiceModifyResult/@DestinationZone | N | String | Destination Code |
./ServiceModifyResult/ServiceInfo | Y | - | Service basic information. |
./ServiceInfo/Name | Y | String | Service name |
./ServiceInfo/Description | Y | String | Service description |
./ServiceInfo/Images | Y | - | List of images |
./ServiceInfo/Latitude | Y | String | Service latitude. |
./ServiceInfo/Longitude | Y | String | Service longitude. |
./Images/Image | Y | String | URL image |
./ServiceModifyResult/ServiceOptions | N | - | List of options |
./ServiceOptions/ServiceOption | N | - | Option |
./ServiceOption/@Code | N | String | Option Code |
./ServiceOption/Name | Y | String | Option name |
./ServiceOption/Description | Y | String | Service option description. |
./ServiceOption/Dates | N | - | List of dates |
./Dates/Date | N | - | Room |
./Date/@Start | N | Date | Start date |
./Date/@End | N | Date | End date |
./Date/@Duration | N | Integer | Service option duration |
./Date/@Status | Y | String | Availability status. It is recommended to focus on this one rather than on the higher level (ServiceResult) one. Possible values: OK: Available RQ: On request |
./Date/ModifyCode | N | String | Code that identifies the combination that will be used on the modification. |
./ModifyCode/@ExpirationDate | N | DateTime | Expiration Date of the modify Code, will appear just for the option send in the request in case we get a result available Format: yyyy-MM-ddThh:mm:ss (UTC) |
./Date/{Prices} | N | - | Prices |
./Date/AdditionalElements | Y | - | Additional elements of the service. |
./Date/OptionalElements | Y | - | Optional elements of the service. NOT IMPLEMENTED |
Request
We request to modify the booking comments.
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<ServiceModify>
<ServiceModifyRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<ReservationLocator ItemId = "123456">XXXXXX</ReservationLocator>
<Comments>
<Comment Type = "RES">Modify general booking comments</Comment>
</Comments>
</ServiceModifyRQ>
</ServiceModify>
</soapenv:Body>
</soapenv:Envelope>
Response
The response will simply confirm that the modification will be done changing the comment from "1234" to "Modify general booking comments"
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<ServiceModifyResponse xmlns = "http://www.juniper.es/webservice/2007/">
<ModifyRS Url = "https://xml-uat.bookingengine.es" TimeStamp = "2020-01-01T16:27:41.3001568+01:00" IntCode = "O5RVrr8NMek65UvsA+dY0M5pwiRypS5qImg0BsPrgzE=">
<Warnings>
<Warning Code = "warnModifyBookingComments" Text = "The booking comments will be modified. Before: [1234] After: [Modify general booking comments]"/>
</Warnings>
<Results/>
</ModifyRS>
</ServiceModifyResponse>
</soap:Body>
</soap:Envelope>
Request
We request to modify the booking dates. In this case the Origin/Destination information is required.
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<ServiceModify>
<ServiceModifyRQ Version = "1.1" Language = "es">
<Login Email = "user@mydomain.com" Password = "pass"/>
<ReservationLocator ItemId = "123456">XXXXXX</ReservationLocator>
<SearchSegmentServices Start = "2020-06-24" End = "2020-06-24"/>
<ServiceBookingInfo>
<MeetingPointInfo MeetingTime = "2020-06-24T15:00:00">
<Name>Meeting Point Name</Name>
</MeetingPointInfo>
</ServiceBookingInfo>
</ServiceModifyRQ>
</ServiceModify>
</soapenv:Body>
</soapenv:Envelope>
Response
We have to select an option and send its related @ModifyCode in the ServiceConfirmModify petition.
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<ServiceModifyResponse xmlns = "http://www.juniper.es/webservice/2007/">
<ModifyRS Url = "https://xml-uat.bookingengine.es" TimeStamp = "2020-01-01T08:23:37.1376464+01:00" IntCode = "iwUJW71oLNcnd2XGr98HG6cXOUxHwx26PKPeYW11+LI=">
<Warnings>
<Warning Code = "warnModifyDates" Text = "The dates will be modified. Before: [25/03/2020 00:00-25/03/2020 00:00] After: [24/06/2020 00:00-24/06/2020 00:00]"/>
<Warning Code = "warnModifyBookingInfo" Text = "The booking info will be modified"/>
</Warnings>
<Results>
<ServiceModifyResult Start = "2020-06-24" End = "2020-06-24" Code = "fv19DV+fUfTtNpw5rm1eCQ==" Status = "OK">
<ServiceInfo>
<Name>Test Service</Name>
<Description>Service description</Description>
<Images/>
</ServiceInfo>
<ServiceOptions>
<ServiceOption Code = "2888">
<Name>Option Name</Name>
<OccupancyAllowed Children = "true"/>
<Description>Option description</Description>
<Dates>
<Date Start = "2020-06-24T00:00:00" End = "2020-06-24T00:00:00" Duration = "1">
<ModifyCode ExpirationDate = "2020-01-01T08:33:37.044361+01:00">WKGyylPuDlgu3AyyHMNxUO+Q3bbaSuK6M4OEnT/pPLw2sIvFzOdodksSQAJ+YK2rwZGawL3ATkt8cAR5lMy1IrdWNqNvQLTYc/1Oqmta87hxQfDRCyoNqlJPnsVozcpVln50p2xNW6Ch8cTCFKFfRN6skpOBD95eXgToy6Prja4HSJvXFb5IAFxh0erHIVFiuUTc7oJRFF08WJeHqvEDm2PJAGeM0K8pIFueHkM2gv3t4721TnGQRJYD4DAjo+T22KNzmi0m/IQ9U11J6QFTBDPHZ1xJYY9t4t9mXI4CAzE=</ModifyCode>
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Gross = "45" Nett = "45">
<Service Amount = "45"/>
</TotalFixAmounts>
</Price>
</Prices>
</Date>
</Dates>
</ServiceOption>
</ServiceOptions>
</ServiceModifyResult>
</Results>
</ModifyRS>
</ServiceModifyResponse>
</soap:Body>
</soap:Envelope>
Once you confirm that the modification can be made through the ServiceModify petition you can proceed to make such modifications through this petition. For this end, you will have to specify all the information that you want to modify along with the @ModifyCode if it is necessary.
The response will always return a warning with the changes that have been made along with the booking information.
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | Web Service version |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages. |
{Login} | N | - | Customer login to access the Web Service |
ReservationLocator | N | String | Reservation locator |
./ReservationLocator/@ItemId | N | Integer | Service item Id |
{Paxes} | Y | - | Allows you to modify the passenger information or the occupancy of the rooms of the booking. |
Holder | Y | - | Allows you to modify the lead passenger information. |
./Holder/RelPax | N | - | - |
./RelPax/@IdPax | N | Integer | Booking passenger Id. It should match with a Pax@IdPax |
ExternalBookingReference | Y | String | Allows you to modify the external booking reference. |
Comments | Y | - | Allows you to modify the booking comments. |
./Comments/Comment | N | String | - |
./Comment/@Type | N | String | RES |
ServiceElement | Y | ||
./ServiceElement/ModifyCode | N | String | Code that identifies the combination. Obtained from the ServiceModify petition. |
./ServiceElement/RelPaxesDist | N | - | Allows you to modify the passenger distribution. |
./RelPaxesDist/RelPaxDist | N | - | Distribution list. Each one them corresponds to a room. |
./RelPaxDist/RelPaxes | N | - | Passengers list of this distribution/room. |
./RelPaxes/RelPax | N | - | Passenger |
./RelPax/@IdPax | N | Integer | Passenger Identifier. It should match with a Pax@IdPax |
ServiceBookingInfo | N | - | Basic information of the service |
./ServiceBookingInfo/MeetingPointInfo | N | - | Infomation about the selected meeting point on this service. |
./MeetingPointInfo/@Code | N | String | Meeting point code. |
./MeetingPointInfo/@MeetingTime | N | DateTime | Meeting point meeting time. |
./MeetingPointInfo/@Name | N | String | Meeting point name. |
./ServiceBookingInfo/{HotelService} | Y | - | Optional information about the selected hotel of the service. |
AdvancedOptions | Y | - | Optional information |
./AdvancedOptions/ShowBreakdownPrice | Y | Boolean | If the value is True, it will show the full price object with all the information about the prices. If not specified, False is assumed by default. |
It returns the same information as the ServiceBooking response. If you wish to know the specifications of this petition, please review the section related to the ServiceBooking response.
Please check the Appendix: Warnings section (concretely Modification warnings) to see the warning list.
Request
We modify the booking comments.
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<ServiceConfirmModify>
<ServiceConfirmModifyRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<ReservationLocator ItemId = "123456">XXXXXX</ReservationLocator>
<Comments>
<Comment Type = "RES">Modify general booking comments</Comment>
</Comments>
</ServiceConfirmModifyRQ>
</ServiceConfirmModify>
</soapenv:Body>
</soapenv:Envelope>
Request
We modify the booking dates. In the previous step we've selected a combination (@ModifyCode) that we are now sending through this petition. In this case, there’s no need for more information to be sent as the @ModifyCode contains all of the necessary information.
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<ServiceConfirmModify>
<ServiceConfirmModifyRQ Version = "1.1" Language = "es">
<Login Email = "user@mydomain.com" Password = "pass"/>
<ReservationLocator ItemId = "123456">XXXXXX</ReservationLocator>
<ServiceElement>
<ModifyCode>WKGyylPuDlgu3AyyHMNxUO+Q3bbaSuK6M4OEnT/pPLw2sIvFzOdodksSQAJ+YK2rwZGawL3ATkt8cAR5lMy1IrdWNqNvQLTYc/1Oqmta87hxQfDRCyoNqlJPnsVozcpVln50p2xNW6Ch8cTCFKFfRN6skpOBD95eXgToy6Prja4HSJvXFb5IAFxh0erHIVFiuUTc7oJRFF08WJeHqvEDm2PJAGeM0K8pIFueHkM2gv3t4721TnGQRJYD4DAjo+T22KNzmi0m/IQ9U11J6QFTBDPHZ1xJYY9t4t9mXI4CAzE=</ModifyCode>
<ServicesBookingInfo>
<ServiceBookingInfo>
<MeetingPointInfo MeetingTime = "2020-06-24T15:00:00">
<Name>Meeting Point Name</Name>
</MeetingPointInfo>
</ServiceBookingInfo>
</ServicesBookingInfo>
</ServiceElement>
</ServiceConfirmModifyRQ>
</ServiceConfirmModify>
</soapenv:Body>
</soapenv:Envelope>
Before moving to the live environment, you will be asked to perform some tests in order to validate your integration and ensure the correct use of the API:
First of all, we will need you to create, read and cancel the following bookings in the development environment:
The next step will be to supply us with the following information (on each one of the bookings that you performed):
XML request and responses of all of the transactions included on these bookings, this may include:
Detailed information about the booking that you have saved on your system (through screenshots if posible), this may include:
We would also like you to give us a short description of your system flow and how many requests you have planned to do in live. We want the approximate number of requests per day and per second for times of more work, both availability and reservations as others (total requests). We need an estimation, the number doesn’t have to be exact.
Please also give us some information regarding the length of the timeout that you have set for our availability response and reservation response.
What we check in the booking flow certification
First, the structure of the availability request must be correctly formed, and none of the mandatory fields must be missed. Amongst other, we will check the following nodes:
It is also mandatory to allow for compressed responses on the request so that the response size will be considerably reduced (meaning faster transfer times). If you do not allow for the same, the response will contain the following error:
<soap:Envelope
xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<ServiceAvailResponse xmlns = "http://www.juniper.es/webservice/2007/">
<AvailabilityRS Url="https://xml-uat.bookingengine.es" TimeStamp="2019-12-20T13:03:20.8017875+02:00" IntCode = "bHxkoVhe4ruZktxcRZFID8R80tkBd5Vsvyr0kCJAW3g=">
<Errors>
<Error Text = " Please add the 'Accept-Encoding: gzip, deflate header in your petition.
This can reduce the transmission time and response size by about 75-95%.
See more here: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html" Code = "COMPRESSION_REQUIRED"/>
</Errors>
</AvailabilityRS>
</ServiceAvailResponse>
</soap:Body>
</soap:Envelope>
If the request is valid, you will receive a response containing all the possible services for the desired criteria. Each service may contain multiple options and each option will be returned along a RatePlanCode which should be used in the next step of the booking flow, which can be ServiceCheckAvail (if you desire to validate the availability of the selected option) or ServiceBookingRules. Please be aware that the proper use of the RatePlanCode is an important point in the certification process.
The ServiceBookingRules transaction is a mandatory step for the booking process which, apart from supplying you with any involved cancellation policies, validates the allotment/rate and returns any required field that may apply to this combination. Please note that the proper use of the required fields is a crucial point for both the booking confirmation and the certification process. This transaction only requires the RatePlanCode from the availability response and its response will contain:
<BookingCode
ExpirationDate="2019-03-26T10:31:44.393171+01:00">3WCCdKrNDmJB1QQRyLq2X3CEfLuy1b....................mOySKbvdSTXtO35YtBgquA6m6</BookingCode>
<Warnings>
<Warning Code = "warnCheckNotPossible" Text = "Price review is not possible"/>
</Warnings>
<ServiceRequiredFields>
<ServiceBooking>
<Paxes>
<Pax IdPax = "1">
<Name>Holder Name</Name>
<Surname>Holder Surname</Surname>
<Age>30</Age>
</Pax>
</Paxes>
<Holder>
<RelPax IdPax = "1"/>
</Holder>
<Elements>
<ServiceElement>
<BookingCode>3WCCdKrNDmJB1QQRyLq2X3CEfLuy1b....................mOySKbvdSTXtO35YtBgquA6m6</BookingCode>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
<ServiceBookingInfo>
<MeetingPointInfo Code = "999" MeetingTime = "2019-12-20T13:57:02.2243141+02:00"/>
</ServiceBookingInfo>
</ServiceElement>
</Elements>
</ServiceBooking>
</ServiceRequiredFields>
NOTE:
Keep in mind that the required fields feature default values, meaning that you have to replace the default values with the preferred information.
<CancellationPolicy CurrencyCode = "USD">
<FirstDayCostCancellation Hour = "00:00">2019-12-11</FirstDayCostCancellation>
<Description>
* Cancelando desde 20/10/2019 a las 00:00:00 hasta 11/11/2019 a las 00:00:00: 0 &nbsp;USD
* Cancelando desde 11/11/2019 a las 00:00:00 hasta 16/12/2019 a las 00:00:00: 50.00 % gastos
* Cancelando desde 16/12/2019 a las 00:00:00 hasta 21/12/2019 a las 00:00:00: 00.00 % gastos
</Description>
<PolicyRules>
<Rule From = "10" DateFrom = "2019-06-20" DateFromHour = "00:00" DateTo = "2019-12-11" DateToHour = "00:00" Type = "V" FixedPrice = "0" PercentPrice = "0" Nights = "0" ApplicationTypeNights = "Average"/>
<Rule From = "5" To = "9" DateFrom = "2019-12-11" DateFromHour = "00:00" DateTo = "2019-12-16" DateToHour = "00:00" Type = "V" FixedPrice = "0" PercentPrice = "50" Nights = "0" ApplicationTypeNights = "Average"/>
<Rule From = "0" To = "4" DateFrom = "2019-12-16" DateFromHour = "00:00" DateTo = "2019-12-21" DateToHour = "00:00" Type = "V" FixedPrice = "0" PercentPrice = "100" Nights = "0" ApplicationTypeNights = "Average"/>
</PolicyRules>
</CancellationPolicy>
The last step in the booking flow is the ServiceBooking transaction. This transaction validates all of the information retrieved from all of the previous transactions and confirms the booking. Some important information we will check are:
Finally, we ask you to check the value of the Status property from the booking response. You should not consider a booking confirmed without reading its status as it might be returned as cancelled (CaC or Can) or on request (Pre or PDI) if there is any problem on the booking confirmation.