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 insurance 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 INS @ProductType).
It is the availability request. The mandatory information to search for availability is:
It will return all available insurance for the search criteria. This request returns basic information regarding each insurance product, such as the name and a small description. To obtain the full coverage you should use the transaction JP_InsuranceBookingRules.
Once the search is made and before completing the booking you should validate the selected option. We may do it in two ways:
InsuranceCheckAvail: it allows validating the availability and the insurance policy price. This transaction is optional.
InsuranceBookingRules: this transaction is mandatory and it allows you to validate the availability and the prices, and also returns important information, such as, the cancellation policies if any, the mandatory data of the booking request (InsuranceRequiredFields) and the code you should use in order to make a booking (BookingCode). Also, it returns more detailed information about the insurance, such as the full insurance, help desk telephone numbers, etc (this information will depend on the insurance supplier).
You may only book with the returned code InsuranceBookingRules 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 uniquely identifying the booking. 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 Insurance integration process, here we supply you with a series of resources which, along with the use of test environment XML credentials, will let you experience the Insurance integration process first hand.
In this section, you will be able to find SoapUI test suites that may help you perform the development of your integration.
Juniper WebService Insurance PULL Welcome Pack. This test suite contains all of the transactions that will be necessary to perform an integration against the Juniper system.
In this section, we have a Postman example that embraces all of the Flight 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.
For the methods to retrieve the static information such as areas and insurance complete information. Take into account that the information varies between the test environment and the production environment.
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.
It allows obtaining a destination list where you may search. To do so, you may use the ZoneList generic transaction sending a product type INS.
Request to search for an insurance product for a specific destination. The following information is mandatory:
Destination area
Start and end date
Passengers/travelers that will profit from the insurance. Age is mandatory.
Nationality
Optionally, you may filter by supplier
Request
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<InsuranceAvail>
<InsuranceAvailRQ Version = "1.1" Language = "es">
<Login Email = "user@mydomain.com" Password = "pass"/>
<Paxes>
<Pax IdPax = "1">
<Age>30</Age>
</Pax>
</Paxes>
<InsuranceRequest>
<SearchSegmentsInsurance>
<SearchSegmentInsurance Start = "2026-12-01" End = "2026-12-10" DestinationZone = "17852"/>
<CountryOfResidence>ES</CountryOfResidence>
</SearchSegmentsInsurance>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
</InsuranceRequest>
</InsuranceAvailRQ>
</InsuranceAvail>
</soapenv:Body>
</soapenv:Envelope>
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 passangers. Fields necessary for this transaction: • @IdPax (required) • Age (optional for adults) |
InsuranceRequest | N | - | Request container |
./InsuranceRequest/SearchSegmentsInsurance | N | - | Search properties. |
./SearchSegmentsInsurance/SearchSegmentInsurance | N | - | Basic search properties |
./SearchSegmentInsurance/@Start | N | Date | Check-in date. Format: yyyy-MM-dd |
./SearchSegmentInsurance/@End | N | Date | Check-out date. Format: yyyy-MM-dd |
./SearchSegmentInsurance/@OriginZone | Y | Integer | Origin area. Optional filter required by some insurances. |
./SearchSegmentInsurance/@DestinationZone | N | Integer | Destination area. |
./SearchSegmentInsurance/CountryOfResidence | N | 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 booking confirmation request. This code follows the ISO-3166-1 standard. |
./SearchSegmentInsurance/Suppliers | Y | - | List of supplier codes that you may wish to filter availability for. Please contact Juniper for further information. If not informed, all suppliers are assumed. |
./Suppliers/Supplier | N | String | Supplier code |
./SearchSegmentInsurance/Price | Y | - | Price that you would like to insure. Keep in mind that this price will be forwarded to any insurance suppliers that allow for the same on their respective availability request, but that results from suppliers that do not allow for the same will keep being provided. |
./Price/@Amount | Y | Integer | Total price amount to insure. |
./Price/@CurrencyCode | N | String | Currency code. |
./SearchSegmentsInsurance/RelPaxesDist | N | - | Passengers’ distribution you wish to request. |
./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]. |
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. |
<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>
<InsuranceAvailResponse xmlns = "http://www.juniper.es/webservice/2007/">
<AvailabilityRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2019-12-24T12:44:09.3787916+02:00" IntCode = "I1MHV/w95M4igPXZmVtB+hGmJy9pCfp/D1TiQWxSJQ8=">
<Results>
<InsuranceResult Code = "kAS/BXhRGFe72CECUcgDAg==" DestinationZone = "17852" RatePlanCode = "/s9xc6NKKvv8oTLv9HkcHDVkbYw..." Status = "OK">
<InsuranceInfo>
<Name>Test Assistance - Individual</Name>
<Descriptions>
<Description Type = "GEN">Insurance Description</Description>
</Descriptions>
<Images>
<Image Type = "THB">
<FileName>http://xml-uat.bookingengine.es/images/upload/Logos/logo_qa_r.jpg</FileName>
</Image>
</Images>
</InsuranceInfo>
<Prices>
<Price Type = "S" Currency = "USD">
<TotalFixAmounts Gross = "260" Nett = "260">
<Service Amount = "259.92"/>
<ServiceTaxes Included = "true" Amount = "0"/>
<Commissions Included = "true" Amount = "0"/>
<HandlingFees Included = "true" Amount = "0"/>
<Discount Amount = "-0"/>
</TotalFixAmounts>
</Price>
</Prices>
</InsuranceResult>
</Results>
</AvailabilityRS>
</InsuranceAvailResponse>
</soap:Body>
</soap: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 / InsuranceResult | N | - | List of results |
./InsuranceResult/@Code | N | String | Insurance Code |
./InsuranceResult/@OriginZone | Y | String | Origin Code |
./InsuranceResult/@DestinationZone | N | String | Destination Code |
./InsuranceResult/@RatePlanCode | N | String | Code that identifies the insurance |
./InsuranceResult/@Status | N | String | Availability status. Possible values: • OK – Available • RQ - On Request |
./InsuranceResult/InsuranceInfo | Y | - | Insurance basic information. |
./InsuranceInfo/Name | Y | String | Insurance name |
./InsuranceInfo/Descriptions | Y | String | Insurance description |
./Descriptions/Description | N | String | Description text |
./Description/@Type | N | String | Description Type. Possible values: • GEN – Generic description |
./InsuranceInfo/Images | Y | - | List of images |
./Images/Image | N | - | Image |
./Image/@Type | Y | String | Image type. Possible values: • BIG – Big image • THB – Thumb image If nothing, a standard image is returned. |
./Image/FileName | N | String | URL image |
./InsuranceResult/Supplier | Y | - | Supplier name |
./Supplier/@Code | Supplier code | ||
./Supplier/{Prices} | N | - | Prices |
This process is optional and it is used to check the insurance price. The only necessary data is the RatePlanCode obtained in the availability response.
<InsuranceCheckAvail>
<InsuranceCheckAvailRQ Version = "1.1" Language = "en">
<Login Password = "pass" Email = "user@mydomain.com"/>
<InsuranceCheckAvailRequest>
<Insurance RatePlanCode = "GoUCOAOFflqhNf4Vd9+g7/vXxvXVvkT+x4fecUsnRTGknM................J5JnlL8pIke0qKFtbt/9zCmfl4smjT8ELp+QwKwt"/>
</InsuranceCheckAvailRequest>
</InsuranceCheckAvailRQ>
</InsuranceCheckAvail>
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 |
InsuranceCheckAvailRequest | N | - | - |
./InsuranceCheckAvailRequest/Insurance | N | - | - |
./Insurance/@RatePlanCode | N | - | RatePlanCode |
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. |
<InsuranceCheckAvailResponse>
<InsuranceCheckAvailRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2019-12-24T12:44:09.3787916+02:00" IntCode = "I1MHV/w95M4igPXZmVtB+hGmJy9pCfp/D1TiQWxSJQ8=">
<Warnings>
<Warning Code = "warnPriceChanged" Text = "Price changed. A new RatePlanCode has been returned. Use the new RatePlanCode."/>
</Warnings>
<Results>
<InsuranceResult RatePlanCode = "s9xc6NKKvv8oTLv9HkcHDVkbYwBRLcpJgh................sPPNb4b58Pd0BRflksfJFDK3jfjkdFJD3I0pOlh" Status = "OK">
<InsuranceInfo>
<Name>Test Assistance - Individual</Name>
<Descriptions>
<Description Type = "GEN">Insurance Description</Description>
</Descriptions>
<Images>
<Image Type = "THB">
<FileName>http://xml-uat.bookingengine.es/images/upload/Logos/logo_qa_r.jpg</FileName>
</Image>
</Images>
</InsuranceInfo>
<Prices>
<Price Type = "S" Currency = "USD">
<TotalFixAmounts Gross = "255" Nett = "255">
<Service Amount = "259.92"/>
<ServiceTaxes Included = "true" Amount = "0"/>
<Commissions Included = "true" Amount = "0"/>
<HandlingFees Included = "true" Amount = "0"/>
<Discount Amount = "-0"/>
</TotalFixAmounts>
</Price>
</Prices>
</InsuranceResult>
</Results>
</InsuranceCheckAvailRS>
</InsuranceCheckAvailResponse>
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/InsuranceResult | N | - | Insurance results |
./InsuranceResult/@RatePlanCode * | N | String | Encoded data |
./InsuranceResult/@Status | N | String | Insurance status. Possible values: • OK - Available • RQ - On Request |
./InsuranceResult/InsuranceInfo | Y | - | Insurance basic information. |
./InsuranceInfo/Name | Y | String | Insurance name |
./InsuranceInfo/Descriptions | Y | String | Insurance description |
./Descriptions/Description | N | String | Description text |
./Description/@Type | Y | String | Description Type. Possible values: • GEN – Generic description |
./InsuranceInfo/Images | Y | - | List of images |
./Images/Image | N | - | Image |
./Images/@Type | N | - | Image type. Possible values: • BIG – Big image • THB – Thumb image If nothing, a standard image is returned. |
./Images/FileName | Y | String | URL image |
Results/**InsuranceResult/{Prices} | N | - | Price object. |
NOTE: If there is any change in Price or on insurance availability, a new RatePlanCode will be generated automatically. For any later stage usage in the Webservice transactions, you should use the new RatePlanCode.
InsuranceBookingRules is the step you should follow to end a booking. This is a mandatory transaction since it returns a special code called BookingCode with which you should make all bookings.
Also, it will validate the availability and the insurance price informing of any possible eventuality, for example, if a price changes it will inform about it through an alert or warning. This is why, apart from checking all errors, it is also important to check the Warnings node.
Furthermore, it returns other important information such as the mandatory data when booking, the cancellation policies and full information regarding the insurance. Some of these are full insurance, help desk telephone numbers, general conditions, etc. To retrieve this you should send the Extra ShowCompleteInfo.
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<InsuranceBookingRules>
<InsuranceBookingRulesRQ Version = "1.1" Language = "en">
<Login Password = "pass" Email = "user@mydomain.com"/>
<InsuranceBookingRulesRequest>
<Insurance RatePlanCode = "pVsm9eHOyAu4ihH4WJfK7p3JOJAVfnOhcUsMp7QOzN0S7Mrf5dfnx.....................6MwvaUR9a0yAa8Od3D9Olr0IIDbDuCQyOhQ=="/>
</InsuranceBookingRulesRequest>
<AdvancedOptions>
<ShowCompleteInfo>true</ShowCompleteInfo>
</AdvancedOptions>
</InsuranceBookingRulesRQ>
</InsuranceBookingRules>
</soapenv:Body>
</soapenv:Envelope>
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 |
InsuranceBookingRuleRequest | N | - | - |
./InsuranceBookingRuleRequest/InsuranceOption | N | - | - |
./InsuranceOption/@RatePlanCode | N | - | RatePlanCode |
AdvancedOptions | Y | - | Optional information |
./AdvancedOptions/ShowBreakdownPrice | Y | Boolean | If the value is True show the full object Price with all information about prices. If not specified, False is assumed. |
./AdvancedOptions/ShowCompleteInfo | 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. |
<InsuranceBookingRuleResponse>
<InsuranceBookingRuleRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2019-12-27T14:42:38.9186528+01:00" IntCode = "5+uGQ7VeR/kiHBNwQBqKFJ1tEnQY9OT/DmyJsZvVPK4=">
<Results>
<InsuranceResult Status = "OK">
<BookingCode ExpirationDate = "2019-12-24T14:52:38.9186528+01:00">dcFZbKty1cJGKeRtgxIDGUZAprp1mua8ySl4iVIZ7NVKBF/PG...................+XDMZ15xCI/OHDO9FuPeAAd</BookingCode>
<InsuranceRequiredFields>
<InsuranceBooking>
<Paxes>
<Pax IdPax = "1">
<Name>Holder Name</Name>
<Surname>Holder Surname</Surname>
<Age>30</Age>
</Pax>
</Paxes>
<Holder>
<RelPax IdPax = "1"/>
</Holder>
<Elements>
<InsuranceElement>
<BookingCode>dcFZbKty1cJGKeRtgxIDGUZAprp1mua8ySl4iVIZ7NVKBF/PG...................+XDMZ15xCI/OHDO9FuPeAAd</BookingCode>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
</InsuranceElement>
</Elements>
</InsuranceBooking>
</InsuranceRequiredFields>
<CancellationPolicy>
<Description>You are liable for everything even if you cancel</Description>
</CancellationPolicy>
<PriceInformation>
<InsuranceInfo>
<Name>Test Assistance - Individual</Name>
<Descriptions>
<Description Type = "GEN">Insurance Description</Description>
<Description Type = "CND">http://xml-uat.bookingengine.es/data/documentos/General_Conditions_Titanium_2013.pdf</Description>
</Descriptions>
<EmergencyContact Allowed = "true"/>
<Images>
<Image Type = "THB">
<FileName>http://xml-uat.bookingengine.ess/images/upload/Logos/logo_qa_r.jpg</FileName>
</Image>
</Images>
<Coverages>
<Coverage>
<Name>Medical Assistance in case of accident</Name>
<Content>$300000</Content>
</Coverage>
<Coverage>
<Name>Medical Assistance in case sickness</Name>
<Content>$100000</Content>
</Coverage>
<Coverage>
<Name>Prescription drugs</Name>
<Content>Included</Content>
</Coverage>
</Coverages>
</InsuranceInfo>
<Prices>
<Price Type = "S" Currency = "USD">
<TotalFixAmounts Gross = "255" Nett = "255">
<Service Amount = "259.92"/>
<ServiceTaxes Included = "true" Amount = "0"/>
<Commissions Included = "true" Amount = "0"/>
<HandlingFees Included = "true" Amount = "0"/>
<Discount Amount = "-0"/>
</TotalFixAmounts>
</Price>
</Prices>
</PriceInformation>
</InsuranceResult>
</Results>
</InsuranceBookingRuleRS>
</InsuranceBookingRuleResponse>
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/InsuranceResult | N | - | Insurance results |
./InsuranceResult/@Status | N | String | Insurance status. Posible values: • OK - Available • RQ - On Request |
./InsuranceResult/BookingCode | N | String | Key reference necessary to make a booking. This key reference has an expiry date, if it exceeds this date, the keyword is no longer valid, and so it should regenerate a key reference sending again the transaction InsuranceBookingRule. |
./BookingCode/@ExpirationDate | N | DateTime | Expiry date or key reference expiry. Normally, it is 10 minutes more. Format: yyyy-MM-ddThh:mm:ss (UTC) |
./InsuranceResult/{InsuranceRequiredFields} | 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 InsuranceBooking request, refer to the mentioned for a list of all of the possible required fields. |
./InsuranceResult/{CancellationPolicy} | Y | - | Cancellation policies. At the end of this explanation you will see a series of examples which aim is to clarify the functioning of the cancellation policies. |
./InsuranceResult/PriceInformation | Y | - | Price information, including basic information of the selected insurance. |
./PriceInformation/InsuranceInfo | Y | - | Insurance basic information. |
./InsuranceInfo/Name | Y | String | Insurance name |
./InsuranceInfo/Descriptions | Y | String | Insurance description |
./Descriptions/Description | N | String | Description text |
./Description/@Type | Y | String | Description Type. Possible values: • GEN – Generic description • CVR – Coverages. Some suppliers return the coverages in a plain text. • CND – General conditions. Some providers may return a link to a PDF. • TEL – Telephone numbers. Some providers return the telephone numbers in a plain text. • BNF – Benefits. • OTH – Others |
./InsuranceInfo/EmergencyContact | Y | - | Emergency contact |
./EmergencyContact/@Allowed | N | Boolean | Indicates if this information is allowed to be sent |
./InsuranceInfo/Images | Y | - | List of images |
./Images/Image | N | - | Image |
./Image/@Type | Y | String | Image type. Possible values: • BIG – Big image • THB – Thumb image If nothing, a standard image is returned. |
./Image/FileName | N | String | URL image |
./InsuranceInfo/Coverages | Y | - | List of coverages. |
./Coverages/Coverage | N | - | Coverage |
./Coverage/Name | N | String | Coverage name. |
./Coverage/Description | Y | String | Coverage description |
./Coverage/Content | Y | String | Coverage content |
./PriceInformation/{Prices} | N | - | Selected insurance price. |
./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. |
(*) Cancellation Policy:
If available, only a plain text is returned in insurance cancellation policies. Example:
<CancellationPolicy>
<Description>You are liable for everything even if you cancel</Description>
</CancellationPolicy>
Note that most insurance products do not have cancellation policies.
(*) Required fields
Required fields are mandatory information in the booking request. There is information that will always be mandatory, such as the BookingCode, paxes, etc, but there is other information that is only mandatory in specific cases depending on the insurance supplier.
You should consider mandatory all nodes and attributes returned in the RequiredFields, whether they have a value or not. If a node is not returned it will not be necessary to send it when booking. Also take into account that the returned information is generic, and therefore not related: in any case, you should not send this information when booking, but instead, you should create the request from scratch.
<InsuranceRequiredFields>
<InsuranceBooking>
<Paxes>
<Pax IdPax = "1">
<Name>Holder Name</Name>
<Surname>Holder Surname</Surname>
<Age>30</Age>
<BornDate>1975-01-20</BornDate>
</Pax>
</Paxes>
<Holder>
<RelPax IdPax = "1"/>
</Holder>
<Elements>
<InsuranceElement>
<BookingCode>dcFZbKty1cJGKeRtgxIDGUZAprp1mua8ySl4iVIZ7NVKBF/PGk8lhZlN7Hcszjs2RwUR2Dxsrv.............................Dt4k/g+XDMZ15xCI/OHDO9FuPeAAd</BookingCode>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
</InsuranceElement>
</Elements>
</InsuranceBooking>
</InsuranceRequiredFields>
It is the transaction to end a booking. BookingCode is the code used to identify the insurance that you wish to book. Also, you should send the passengers/ travelers that will profit from the insurance, as well as the booking holder.
Remember that you will also have to send all the information returned in the response of InsuranceBookingRule under the node: InsuranceRequiredFields.
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<InsuranceBooking>
<InsuranceBookingRQ Version = "1.1" Language = "en">
<Login Password = "pass" Email = "user@mydomain.com"/>
<Paxes>
<Pax IdPax = "1">
<Name>Holder Name</Name>
<Surname>Holder Surname</Surname>
<Email>holder@yourdomain.com</Email>
<PhoneNumbers>
<PhoneNumber>111111111</PhoneNumber>
</PhoneNumbers>
<Document Type = "DNI">22222222E</Document>
<Address>Address Holder 67</Address>
<City>Palma de Mallorca</City>
<Country>Spain</Country>
<PostalCode>5555</PostalCode>
<Nationality>ES</Nationality>
</Pax>
</Paxes>
<Holder>
<RelPax IdPax = "1"/>
</Holder>
<EmergencyContact>
<Name>test</Name>
<PhoneNumbers>
<PhoneNumber>654654321</PhoneNumber>
<PhoneNumber>654654322</PhoneNumber>
</PhoneNumbers>
</EmergencyContact>
<ExternalBookingReference>AAAA01</ExternalBookingReference>
<Comments>
<Comment Type = "RES">General booking comments</Comment>
</Comments>
<Elements>
<InsuranceElement>
<BookingCode>dcFZbKty1cJGKeRtgxIDGUZAprp1mua8ySl4iVIZ7NVKBF/PGk8lhZlN7Hcszjs2RwUR2Dxsrv5l0cZDORK.................../OHDO9FuPeAAd</BookingCode>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
</InsuranceElement>
</Elements>
</InsuranceBookingRQ>
</InsuranceBooking>
</soapenv:Body>
</soapenv:Envelope>
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 passangers. It should indicate the name, surname and passenger age. If it is the booking holder, you should also indicate the identity document. |
|
ReservationLocator | Y | String | You may indicate an existing booking code to add an insurance product to it. Remarcable points: • If no data of the main 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 |
Holder | N | - | Booking holder. It is mandatory to indicate which of the passengers of the Paxes node that you wish to be the booking holder. Any passenger/traveler that benefits of the insurance may be the booking holder or you may add a new passenger. |
./Holder/RelPax | N | - | - |
./RelPax/@IdPax | N | Integer | Booking passenger Id. It should match with a {Pax@IdPax} |
EmergencyContact | N | - | Contact information in case of emergency |
./EmergencyContact/Name | N | String | Contact name |
./EmergencyContact/PhoneNumbers | N | - | List of phone numbers |
./PhoneNumbers/PhoneNumber | N | Integer | Item phone number |
./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 | - | |
./Elements/InsuranceElement | N | - | Search properties. Insurances have only 1 SearchSegmentsInsurance type. |
./InsuranceElement/BookingCode | N | String | BookingCode is the code that is used to identify the combination. You must get it from InsuranceBookingRules response. |
./InsuranceElement/RelPaxesDist | N | - | Passenger distribution you wish to book. |
./RelPaxesDist/RelPaxDist | N | - | Distribution list. For insurances, only 1 is needed. |
./RelPaxDist/RelPaxes | N | - | Passenger list of this distribution |
./RelPaxes/RelPax | N | - | Passenger |
./RelPax/@IdPax | N | Integer | Passenger Id. It should match with a {Pax@IdPax} |
./InsuranceElement/Comments | Y | - | - You may add comments for this specific element. |
./Comments/Comment | N | String | Comment |
./Comments/@Type | N | String | Comment type. Possible values: • ELE: Booking element comments Note that it is important to set the proper @Type or the comment won’t be properly saved. |
./InsuranceElement/InsuranceBookingInfo | Y | - | Required fields of the insurance. |
./InsuranceBookingInfo/{AdditionalRequiredFields} | Y | - | Additional required fields of the insurance. |
AdvancedOptions | N | - | 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 the ALL value a booking confirmation email will be sent to your email account. |
./AdvancedOptions/BookingPaid | Y | String | Parameter meant for internal use only. |
<InsuranceBookingResponse>
<InsuranceBookingRS Url= "http://xml-uat.bookingengine.es" TimeStamp = "2019-12-27T14:42:38.9186528+01:00" IntCode = "5+uGQ7VeR/kiHBNwQBqKFJ1tEnQY9OT/DmyJsZvVPK4=">
<Reservations>
<Reservation Locator = "FEY258" Status = "PAG">
<ExternalBookReference>AAAA01</ExternalBookReference>
<Holder>
<RelPax IdPax = "1"/>
</Holder>
<Paxes>
<Pax IdPax = "1">
<Name>Holder Name</Name>
<Surname>Holder Surname</Surname>
<Email>holder@yourdomain.com</Email>
<Document>22222222E</Document>
<Address>Address Holder 67</Address>
<City>Palma de Mallorca</City>
<Country>Spain</Country>
<PostalCode>5555</PostalCode>
<Nationality>ES</Nationality>
</Pax>
</Paxes>
<Comments>
<Comment Type = "RES">General booking comments</Comment>
</Comments>
<Elements>
<InsuranceElement
Status = "OK"
Start = "2019-12-01"
End = "2019-12-10">
<InsuranceInfo>
<Name>Test Assistance - Individual</Name>
<Descriptions>
<Description Type = "GEN">Insurance Description</Description>
<Description Type = "CND">http://www.bookingengine.es/data/documentos/General_Conditions_Titanium_2013.pdf</Description>
</Descriptions>
<Images>
<Image Type = "THB">
<FileName>www.bookingengine.es/images/upload/Logos/logo_qa_r.jpg</FileName>
</Image>
</Images>
<Coverages>
<Coverage>
<Name>Medical Assistance in case of accident</Name>
<Content>$300000</Content>
</Coverage>
<Coverage>
<Name>Medical Assistance in case sickness</Name>
<Content>$100000</Content>
</Coverage>
<Coverage>
<Name>Prescription drugs</Name>
<Content>Included</Content>
</Coverage>
</Coverages>
</InsuranceInfo>
<Prices>
<Price Type = "S" Currency = "USD">
<TotalFixAmounts Gross = "255" Nett = "255">
<Service Amount = "259.92"/>
<ServiceTaxes Included = "true" Amount = "0"/>
<Commissions Included = "true" Amount = "0"/>
<HandlingFees Included = "true" Amount = "0"/>
<Discount Amount = "-0"/>
</TotalFixAmounts>
</Price>
</Prices>
<CancellationPolicy>
<Description>You are liable for everything even if you cancel</Description>
</CancellationPolicy>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</InsuranceElement>
</Elements>
</Reservation>
</Reservations>
</InsuranceBookingRS>
</InsuranceBookingResponse>
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 /Reservation | N | - | Reservation node |
./Reservation/@Locator | N | String | Booking code that you should use to check or cancel the booking. Ie: MSZB3S |
./Reservation/@Status | N | String | Booking status. Possible values are: • Pag - booking confirmed and paid • Con - booking confirmed • Tar - booking confirmed (if pending credit card charge) • Can or CaC - Booking cancelled • PRe or PDI - Booking on request It is very important to check the Status attribute in order to verify that the booking is confirmed. |
./Reservation/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. |
./Reservation/Holder | N | - | Booking holder Indicate which passenger from the Paxes node is the booking holder. It may not match with one of the booking passengers. |
./Holder/RelPax | N | - | - |
./RelPax/@IdPax | N | Integer | Passenger identifier. |
./Holder/{Paxes} | N | - | Passengers and booking holder. |
./Holder/Comments | Y | - | Booking 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 | N | - | Reservation items |
./Items/InsurancelItem | N | - | Insurance lItem equivalent to an element |
./InsurancelItem/@ItemId | N | String | Item identifier |
./InsurancelItem/@Status | N | String | Item status. Possible values are: • OK or AV - Available • RQ - On request • CA - Cancelled |
./InsurancelItem/ExternalItemReference | Y | String | |
./InsurancelItem/{Prices} | N | - | Item prices or combination |
./InsurancelItem/{CancelationPolicies} | N | - | Cancellation policies. |
./InsurancelItem/InsuranceInfo | N | String | Insurance basic information |
./InsuranceInfo/Name | N | String | Insurance name |
./InsurancelItem/Descriptions | N | String | Insurance description |
./Descriptions/Description | N | String | Description text |
./Description/@Type | Y | String | Description Type. Possible values: • GEN – Generic description |
./InsurancelItem/Images | Y | - | List of images |
./Images/Image | N | - | Image |
./Image/@Type | Y | String | Image type. Possible values: • BIG: Big image • THB: Thumb image If nothing, a standard image is returned. |
./Image/FileName | N | String | URL image |
./InsurancelItem/Comments | Y | - | tem or insurance comments |
./Comments/Comment | N | String | Comment |
./Comment/@Type | N | String | Comment type. Possible values: • ELE: Booking element comments |
./InsurancelItem/RelPaxes | N | - | |
./RelPaxes/RelPax | N | - | |
./RelPax/@IdPax | N | Integer | It focuses on the passenger it refers to. |
./Items/{AdjustmentItem} | Y | - | Additional adjustment item. It will be available if, for example, you've manually added a PromoCode on the previous BookingRules step. |
This is to obtain a booking by its reference code. The returned information is the same as in {InsuranceBooking}. Please see section InsuranceBooking or further information.
<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>
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. |
It allows you to cancel the total booking or of one of its services/items. It will also allow you to learn about the cancellation charges that you would incur if the booking is canceled.
In the following example, we cancel the whole booking.
<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 = "CSY243"/>
</CancelRQ>
</CancelBooking>
</soapenv:Body>
</soapenv:Envelope>
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 | - | Booking code. |
./CancelRequest/@ItemId | Y | - | Item identifier. |
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. |
Example of obtaining the cancellation charges. This option does not cancel the booking.
<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 = "CSY243">
<AdvancedOptions>
<OnlyCancellationFees>true</OnlyCancellationFees>
</AdvancedOptions>
</CancelRequest>
</CancelRQ>
</CancelBooking>
</soapenv:Body>
</soapenv:Envelope>
<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 = "2019-12-27T14:48:45.0326528+01:00" IntCode = "s+4sOTN3Hx0l/7Vc/Y5qqrv+FENED1aFnZKFpM7GLlg=">
<Warnings>
<Warning Code = "warnCancellationCostRetrieved" Text = "Cancellation cost retrieved. Reservation was not cancelled."/>
<CancelInfo>
<BookingCodeState>Pag</BookingCodeState>
<BookingCancelCost>50</BookingCancelCost>
<BookingCancelCostCurrency>USD</BookingCancelCostCurrency>
</CancelInfo>
</Warnings>
</BookingRS>
</CancelBookingResponse>
</soap:Body>
</soap:Envelope>
When it has not been possible to calculate the cancellation charges, the message returned is the following:
<Warnings>
<Warning Code = "warnCancellationNotCalculated" Text = "Cancellation cost could not be calculated. Reservation was not cancelled."/>
</Warnings>
Should this happen, please, contact your partner.