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 car 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 CAR @ProductType) and, depending on the products of your Juniper supplier (as this is only available for some products), it may also be possible for you to retrieve other static data information through the following transactions:
The availability process is the first step to create a new booking. Search can be configured with several parameters as we can see in section RentacarAvail.
Each result will have a different RatePlanCode to be identified. It is important to understand that the whole booking process starts from the RatePlanCode on, which will be the code you should send in the following transaction.
In this point after searching for availability, we have decided a car and through the RatePlanCode we validate the information obtained by the availability to ensure that it is correct, since with this step, with the passage of time, something may have altered the result of the RentacarAvail. For this reason we have two functions that allow us to validate the information obtained from the availability.
We can book a product by using the BookingCode obtained in the previous step. It will return a booking locator and the booking status.
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 RentaCar 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 RentaCar 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 RentACar 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 RentaCar 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 supplements and offers/promotions. We refer to this object labeled as: {AdditionalElements}
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
AdditionalElements | Y | - | List of additional elements. Supplements and offers/promotions. |
./AdditionalElements/{CarSupplements} | Y | - | List of supplements that apply to the combination. |
./AdditionalElements/{CarFees} | Y | - | List of fees that apply to the combination. |
Object that shows car supplements. We refer to this object labeled as: {CarSupplements}
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
CarSupplements | Y | - | List of car supplements. If found within the AdditionalElements node it will be an already included car supplement, while if found within the OptionalElements it will be an optional supplement available for inclusion. |
./CarSupplements/CarSupplement | N | - | Car supplement item. |
./CarSupplement/@PriceType | Y | Integer | Price type of the car supplement. Possible values: • 1: Per day • 3: Per booking |
./CarSupplement/@Code | Y | String | Supplement Code |
./CarSupplement/@Units | Y | Integer | Number of selected units of the supplement. Available on additional supplements. |
./CarSupplement/@UntMin | Y | Integer | Mininum number of units that may be selected. Available on optional supplements. |
./CarSupplement/@UntMax | Y | Integer | Maximun number of units that may be selected. Available on optional supplements. |
./CarSupplement/@PaymentOffice | N | String | Identifies if the supplement must be paid at destination. |
./CarSupplement/@Status | N | String | Supplement status. Posible values: • OK: Available • RQ: On Request |
./CarSupplement/@Amount | Y | Double | Supplement amount |
./CarSupplement/@Currency | Y | String | Supplement amount currency |
./CarSupplement/@RatePlanCode | Y | String | RatePlanCode that must be sent on the RentacarBookingRules request in order to apply the supplement to the combination. Available on optional supplements. |
./CarSupplement/Name | N | String | Supplement name |
./CarSupplement/Description | N | String | Supplement description |
Object that shows car fees. We refer to this object labeled as: {CarFees}
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
CarFees | Y | - | List of car fees. |
./CarFees/CarFee | N | - | Car fee item. |
./CarFee/@PaymentOffice | N | Boolean | Indicates if the fee must be paid at destination. |
./CarFee/@Amount | Y | Double | Fee amount. |
./CarFee/@Currency | Y | String | Fee amount currency. |
./CarFee/Name | N | String | Fee name. |
Object that contains information related to a specific rentacar location. We refer to this object labeled as either {RentacarLocationDetail} or {RentacarLocationContent}
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
RentacarLocationDetail | N | - | Rentacar location detail. |
./RentacarLocationDetail/@Code | N | String | Rentacar location code. |
./RentacarLocationDetail/@Group | N | String | Rentacar location group code. |
./RentacarLocationDetail/@LocationType | Y | String | Description type. Possible values: • A: Airport • P: Port • S: Bus/Train Station • C: City • H: Hotel • O: Others |
./RentacarLocationDetail/Name | N | String | Location name. |
./RentacarLocationDetail/Zone | Y | - | Zone. |
./Zone/@Code | N | String | Zone code. |
./Zone/Name | Y | String | Zone name. |
./Zone/ExternalZone | Y | - | External supplier zone information. Restricted node that requires for a permission and is only available on a very limited number of suppliers, contact with Juniper if you would like for more information regarding the same. |
./ExternalZone/@IATA | Y | String | External supplier IATA code. |
./ExternalZone/@ISO2 | Y | String | External supplier ISO2 country code. |
./RentacarLocationDetail/Address | Y | String | Location address. |
./RentacarLocationDetail/Latitude | Y | String | Latitude. |
./RentacarLocationDetail/Longitude | Y | String | Longitude. |
./RentacarLocationDetail/PhoneNumbers | Y | - | - |
./PhoneNumbers/PhoneNumber | N | String | Phone number of the office |
./PhoneNumber/@Type | N | String | Phone number type. Possible values: • GEN: General |
./RentacarLocationDetail/OperationSchedule | Y | - | Schedule information. |
./OperationSchedule/OperationTime | Y | - | Operation time information. |
./OperationTime/@Day | Y | String | Day of week. If not specified apply for all days. Possible values: • Sunday • Monday • Tuesday • Wednesday • Thursday • Friday • Saturday |
./OperationTime/@DateFrom | Y | Date | Indicate the start date for the schedule. Useful for special schedule like holidays, etc. |
./OperationTime/@DateTo | Y | Date | Indicate the end date for the schedule. Useful for special schedule like holidays, etc. |
./RentacarLocationDetail/Supplier | Y | - | Supplier information. Restricted by default |
./Supplier/@Code | N | String | Supplier product type code. |
./Supplier/Name | Y | String | Car rental supplier name. |
Documents available for a result. We refer to this object labeled as: {Documents}
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
Documents | Y | - | List of documents available. |
./Documents/Document | N | - | Specific document. |
./Document/@Type | Y | String | Document type. Possible values: • TAC: Terms and conditions |
./Document/FileName | N | String | Url of the document in question. |
Requests to retrieve the static information such as areas, offices, etc… You should take into account that this information varies between 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.
This petition allows for the retrieval of available rentacar location codes from within a specific destination. Using this request in combination with the RentacarLocationContent one, you will be capable of retrieving all of the available rentacar location static data information from within a Juniper supplier.
The @ZoneCode property indicates the destination on which you will be searching offices. It is mandatory and may be retrieved through the use of the ZoneList request.
Important note:
It is important to note that this transaction will only supply you with rentacar location codes that are typified within the system meaning that, depending on the rentacar suppliers that your Juniper supplier will be working with, there could be rentacar location codes that are present on the RentacarAvail response but unavailable through this process.
Request
ç
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<RentacarLocationList>
<RentacarLocationListRQ Version = "1.1" Language = "en">
<Login Password = "pass" Email = "user@mydomain.com"/>
<RentacarLocationListRequest ZoneCode = "55153" ShowBasicInfo = "true"/>
</RentacarLocationListRQ>
</RentacarLocationList>
</soapenv:Body>
</soapenv:Envelope>
RentacarLocationList Request Detail
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 |
RentacarLocationListRequest | N | - | - |
./RentacarLocationListRequest/@ZoneCode | N | String | Zone code. Mandatory. |
./RentacarLocationListRequest/@ShowBasicInfo | Y | Boolean | To show the rentacar location name. |
./RentacarLocationListRequest/Suppliers | Y | - | With this option, you can specify the suppliers you wish |
./Suppliers/Supplier | N | String | Supplier code |
Response
The response will only contain the rentacar locations codes (and its names if the option ShowBasicInfo is included). For more information (description, location, etc) you must use the RentacarLocationContent 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>
<RentacarLocationListResponse>
<RentacarLocationListRS Url="http://xml-uat.bookingengine.es" TimeStamp="2019-06-26T18:47:48.1584685+02:00" IntCode="kmJ1bL08d6WgEzLsGf/6CHdfmSwwjFc9XTcvC2+BUT0=">
<RentacarLocationList>
<RentacarLocation Code="4s6BSnAhHk4nfJO3oW+a5vqlNBxfMmce13BdZ6XSiC0=">
<Name>Paris Orly Airport</Name>
</RentacarLocation>
<RentacarLocation Code="WVlrXdymdiC3VE2Dk2wlALeO4281pPS8rYUs37UYltI=">
<Name>67 Rue De Paris</Name>
</RentacarLocation>
<RentacarLocation Code="+Rkpgj3ZHff5hdi/ixdm8ldsy0Yuv+7i/ViWdXaPyo8=">
<Name>Chantiers Railway Station Gare SNCF</Name>
</RentacarLocation>
</RentacarLocationList>
</RentacarLocationListRS>
</RentacarLocationListResponse>
</soap:Body>
</soap:Envelope>
RentacarLocationList Response Detail
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. |
RentacarLocationListRS | N | - | - |
./RentacarLocationListRS/RentacarLocationList | N | - | List of rentacar locations |
./RentacarLocationList/RentacarLocation | Y | - | - |
./RentacarLocation/@Code | N | String | Rentacar location code |
./RentacarLocation/Name | N | String | Rentacar location name |
From the message RentacarLocationList we obtain a set of rentacar location codes; with these codes we can request more information about a specific rentacar location. The request also allows to search up to 50 rentacar location codes at once.
Request
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns="http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<RentacarLocationContent>
<RentacarLocationContentRQ Version="1.1" Language="en">
<Login Email="user@mydomain.com" Password="pass"/>
<RentacarLocationContentList>
<RentacarLocation Code="XTcvC2"/>
</RentacarLocationContentList>
</RentacarLocationContentRQ>
</RentacarLocationContent>
</soapenv:Body>
</soapenv:Envelope>
RentacarLocationContent Request Detail
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 |
RentacarLocationContentList | N | - | List of rentacar locations. Limited to 50. |
./RentacarLocationContentList/RentacarLocation | N | - | - |
./RentacarLocation/@Code | Y | String | Rent a car location code |
Response
<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>
<RentacarLocationContentResponse
xmlns="http://www.juniper.es/webservice/2007/">
<ContentRS Url="http://xml-uat.bookingengine.es" TimeStamp="2019-05-21T15:04:37.8793261+02:00" IntCode="oIXmUXMr8AfukieXG8ylSdcE3ToOCbv0LaqTLuZl8TE=">
<Contents>
<RentacarLocationContent Code="XTcvC2" Group="eoL4G9gGVbv5rF92zMu5bA==" LocationType="A">
<Name>Madrid Airport</Name>
<Zone Code="1992">
<Name>Adolfo Suárez Madrid-Barajas Aeropuerto</Name>
</Zone>
<Address>Aeropuerto De Madrid</Address>
<Latitude>40,468254</Latitude>
<Longitude>-3,571093</Longitude>
<PhoneNumbers>
<PhoneNumber>(34) 902 200162|</PhoneNumber>
</PhoneNumbers>
<OperationSchedule>
<OperationTimes>
<OperationTime Day="Monday">
<Hours>
<Hour Start="07:00" End="02:00"/>
</Hours>
</OperationTime>
<OperationTime Day="Tuesday">
<Hours>
<Hour Start="07:00" End="02:00"/>
</Hours>
</OperationTime>
<OperationTime Day="Wednesday">
<Hours>
<Hour Start="07:00" End="02:00"/>
</Hours>
</OperationTime>
<OperationTime Day="Thursday">
<Hours>
<Hour Start="07:00" End="02:00"/>
</Hours>
</OperationTime>
<OperationTime Day="Friday">
<Hours>
<Hour Start="07:00" End="02:00"/>
</Hours>
</OperationTime>
<OperationTime Day="Saturday">
<Hours>
<Hour Start="07:00" End="02:00"/>
</Hours>
</OperationTime>
<OperationTime Day="Sunday">
<Hours>
<Hour Start="07:00" End="02:00"/>
</Hours>
</OperationTime>
</OperationTimes>
</OperationSchedule>
</RentacarLocationContent>
</Contents>
</ContentRS>
</RentacarLocationContentResponse>
</soap:Body>
</soap:Envelope>
RentacarLocationContent Response Detail
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. |
Contents | N | - | - |
./Contents/{RentacarLocationContent} | N | - | Detailed RentACar location information. |
Return a list of vehicles, each vehicle has a RatePlanCode that identify it.
Options including different parameters in the request:
Request
In this example we search vehicles provided by Dollar
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<RentacarAvail>
<RentacarAvailRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<RentacarRequest>
<SearchSegmentsRentacar>
<SearchSegmentRentacar Start = "2019-30-09" End = "2019-02-10" Hour = "10:00:00" HourEnd = "10:00:00" OriginZone = "35424" DestinationZone = "35424">
<CountryOfResidence>ES</CountryOfResidence>
<AgeDriver>30</AgeDriver>
</SearchSegmentRentacar>
</SearchSegmentsRentacar>
</RentacarRequest>
</RentacarAvailRQ>
</RentacarAvail>
</soapenv:Body>
</soapenv:Envelope>
RentacarAvail Request Detail
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 |
RentacarRequest | N | - | - |
./RentacarRequest/SearchSegmentsRentacar | N | - | Search properties |
./SearchSegmentsRentacar/SearchSegmentRentacar | N | - | Basic search properties |
./SearchSegmentRentacar/@Start | N | Date | Pickup date. Format: yyyy-MM-dd |
./SearchSegmentRentacar/@End | N | Date | DropOff date. Format: yyyy-MM-dd |
./SearchSegmentRentacar/@Hour | N | DateTime | Pickup time. Format: hh:mm:ss (UTC) |
./SearchSegmentRentacar/@HourEnd | N | DateTime | DropOff time. Format: hh:mm:ss (UTC) |
./SearchSegmentRentacar/@OriginZone | N | Integer | Pickup zone |
./SearchSegmentRentacar/@DestinationZone | N | Integer | DropOff zone. If origin and destination are the same must by indicated anyway |
./SearchSegmentRentacar/@CarCategory | Y | String | Acording Acriss Estandard. The first character of the Acriss Standard indicates that just Vehicles that match to the Category will appear as a result. f.e: ECAR , just vehicles the ones his SippCode has ‘E’ as first character |
./SearchSegmentRentacar/@CarType | Y | String | Acording Acriss Estandard. The second character of the Acriss Standard indicates that just Vehicles that match to the Type will appear as a result f.e: ECAR , just vehicles the ones his SippCode has ‘C’ as second character |
./SearchSegmentRentacar/@CarTransmission | Y | String | Acording Acriss Estandard. The third character of the Acriss Standard indicates that just Vehicles that match to the Transmission will appear as a result. f.e: ECAR , just vehicles the ones his SippCode has ‘A’ as third character |
./SearchSegmentRentacar/@CarDriveAC | Y | String | Acording Acriss Estandard. The fourth character of the Acriss Standard indicates that just Vehicles that match to the DriveAC will appear as a result. f.e: ECAR , just vehicles the ones his SippCode has ‘R’ as fourth character |
./SearchSegmentRentacar/CountryOfResidence | N | String | Code of the country residence of the holder following the ISO-3166-1 standard. You may refer to the FAQ section for further information. |
./SearchSegmentRentacar/AgeDriver | N | Integer | Age of the driver. |
./SearchSegmentsRentacar/RentacarLocations | Y | - | List of the RentACar locations you wish to search |
./RentacarLocations/RentacarLocation | Y | - | - |
./RentacarLocation/@PickUpCode | N | String | Pickup location code |
./RentacarLocation/@DropOffCode | N | String | Dropoff location code |
./SearchSegmentsRentacar/RentacarSuppliers | Y | - | Suppliers. If there is no supplier specified, all the possible results will be returned. Not available by default. Please contact Juniper for further information. |
./RentacarSuppliers/RentacarSupplier | Y | - | Supplier. If there is some supplier specified, it will be returned only results from this provider. More than one supplier code can be sent in the request |
./RentacarSupplier/@Type | N | String | Mandatory field if tag below is informed |
./RentacarSupplier/RentacarContracts | Y | - | List of contracts |
./RentacarContracts/RentacarContract | Y | - | - |
./RentacarContract/@Code | Y | String | Contract code. Only one is allowed. |
./RentacarRequest/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/ShowAllOfficeCombinations | Y | Boolean | If the value is true, it will show all the possible office combinations on the response. It's very important to understand that using this option will considerably increase the response size and, most of all, negatively impact its response time. Please, contact Juniper in order to know if this option is available on your supplier. |
./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 car rental products 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. |
./AdvancedOptions/ShowDocuments | Y | Boolean | If the value is true, it will return the documents that the results may have available on the response. |
Response
<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>
<RentacarAvailResponse xmlns = "http://www.juniper.es/webservice/2007/">
<AvailabilityRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2019-09-21T09:31:44.6803105+02:00" IntCode = "ULD3Op4nIZNyaRMja6ZqCUZ+a0lVSpAN551mGq1Y7SA=">
<Warnings/>
<Results>
<RentCarResult Code = "IG16YZjjlvqbzCvaPWpt6PFU=" OriginZone = "35424" DestinationZone = "35424">
<RentacarInfo>
<Name>Dodge Avenger</Name>
<Description>Dodge Avenger or Similar, A/C, Automático, 4 puertas, 5 Plazas, 3 Maletas</Description>
<Image>http://www.dollar.com/images/dollar/images/cars/BB747CC03B604ED6982D6B16B5AD63CE.gif</Image>
</RentacarInfo>
<RentacarOptions>
<RentacarOption PickUpCode = "MIA" DropOffCode = "MIA" AcrissCode = "IDAR" RatePlanCode = "wKqRZu1pelUTYuNyNN9.......bZ1hac6h0D0HRXVP/qVWVyPN4=" PaymentOffice = "false">
<RentacarInfo>
<Name>Dodge Avenger</Name>
<Description>Dodge Avenger or Similar, A/C, Automático, 4 puertas, 5 Plazas, 3 Maletas</Description>
</RentacarInfo>
<Prices>
<Price Type = "S" Currency = "USD">
<TotalFixAmounts Gross = "122" Nett = "122">
<Service Amount = "122"/>
<ServiceTaxes Included = "true" Amount = "0"/>
<Commissions Included = "true" Amount = "0"/>
<HandlingFees Included = "true" Amount = "0"/>
<Discount Amount = "-0"/>
</TotalFixAmounts>
</Price>
</Prices>
<ContractInfo>
<Name>Contract name</Name>
<Description>Contract description</Description>
<Includes>Full gas tank</Includes>
<NotIncludes>Full coverage insurance. GPS</NotIncludes>
</ContractInfo>
<AdditionalElements>
<CarSupplements>
<CarSupplement Code = "COVERAGE 24" Units = "1" PaymentOffice = "false" Status = "OK">
<Name>COVERAGE 24 - LOSS DAMAGE WAIVER</Name>
<Description>COVERAGE 24 - LOSS DAMAGE WAIVER</Description>
</CarSupplement>
<CarSupplement Code = "COVERAGE 42" Units = "1" PaymentOffice = "false" Status = "OK">
<Name>COVERAGE 42 - SUPPL LIAB INS</Name>
<Description>COVERAGE 42 - SUPPL LIAB INS</Description>
</CarSupplement>
</CarSupplements>
<CarFees>
<CarFee PaymentOffice = "false" Amount = "0" Currency = "USD">
<Name>FACILITY CHARGE</Name>
</CarFee>
<CarFee PaymentOffice = "false" Amount = "0" Currency = "USD">
<Name>Add'L Driver</Name>
</CarFee>
</CarFees>
</AdditionalElements>
</RentacarOption>
</RentacarOptions>
<RentacarLocationDetails>
<RentacarLocationDetail>
<Supplier>
<Name>Keddy</Name>
</Supplier>
</RentacarLocationDetail>
</RentacarLocationDetails>
<Supplier Code = "HTZ" Code = "234"/>
</RentCarResult>
</Results>
</AvailabilityRS>
</RentacarAvailResponse>
</soap:Body>
</soap:Envelope>
RentacarAvail Response Detail
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/RentacarResult | N | - | Rentacar results |
./RentacarResult/@Code | N | String | Result internal code |
./RentacarResult/@OriginZone | N | String | Origin Code |
./RentacarResult/@DestinationZone | N | String | Destination Code |
./RentacarResult/RentacarInfo | Y | - | - |
./RentacarInfo/Name | Y | String | Vehicle Name |
./RentacarInfo/Description | Y | String | Vehicle Description |
./RentacarInfo/Image | Y | String | Vehicle Image |
./RentacarResult/RentacarOptions | N | - | - |
./RentacarOptions/RentacarOption | N | - | - |
./RentacarOption/@PickUpCode | N | String | Pickup code from supplier |
./RentacarOption/@DropOffCode | N | String | Drop off code from supplier |
./RentacarOption/@AcrissCode | N | String | Standard Acriss Code for the vehicle. You may refer to the FAQ section for further information. |
./RentacarOption/@RatePlanCode | N | String | Result internal code to be used in BookingRules request |
./RentacarOption/@Status | Y | String | Availability Status. Posible values: • OK – Available • RQ - On Request |
./RentacarOption/@PaymentOffice | N | String | Indicates if the car must be paid at destination |
./RentacarOption/RentacarInfo | N | - | - |
./RentacarInfo/Name | Y | String | Vehicle Option Name |
./RentacarInfo/Description | Y | - | Vehicle Description |
./RentacarOption/{Prices} | N | - | Price information |
./RentacarOption/{CancellationPolicy} | Y | - | Cancellation policies. |
./RentacarOption/ContractInfo | Y | - | - |
./ContractInfo/@Code | Y | String | Contract code. Restricted information that depends on a permission. |
./ContractInfo/Name | Y | String | Contract name |
./ContractInfo/Description | Y | String | Contract description |
./ContractInfo/Includes | Y | String | Indicates what the contract includes in the price |
./ContractInfo/NotIncludes | Y | String | Indicates what the contract does not include in the price |
./RentacarOption/{AdditionalElements} | Y | - | Additional elements contained in the combination, such as offers or supplements. The prices are included in the total price of the combination. |
./RentacarOption/OptionalElements | Y | - | Optional elements. |
./OptionalElements/{Documents} | Y | - | List of documents available for the result. |
./RentacarResult/RentacarLocationDetails | Y | - | Supplier location information. Restricted by default. |
./RentacarLocationDetails/RentacarLocationDetail | N | - | Specific supplier location. |
./RentacarLocationDetail/Supplier | Y | - | Supplier information. |
./Supplier/Name | Y | String | Car rental supplier name. |
./RentacarResult/Supplier | Y | - | Supplier information. Restricted by default. Kindly contact with Juniper for further information. |
./Supplier/@Code | Y | String | Supplier product type code. |
./Supplier/@IntCode | Y | String | Provider internal code. |
This method is used to check a vehicle price. It can be used in two different ways, the first one is by using the RatePlanCode got from Availability Response, and the second one is by sending the search parameters in order to quote a vehicle. With the second way we can use the BookingCode as a new RatePlanCode and we won’t lose the quotation of the supplements.
Request
We check a vehicle price with the RatePlanCode got in Availability Response:
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns="http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<RentacarCheckAvail>
<RentacarCheckAvailRQ Version="1.1" Language="en">
<Login Password="pass" Email="user@mydomain.com"/>
<RentacarRequest>
<RentacarOption RatePlanCode="wKqRZu1pelUTYuNyNN9gI2Z5Hl.......WbZ1hac6h0D0HRXVP/qVWVyPN4="/>
</RentacarRequest>
</RentacarCheckAvailRQ>
</RentacarCheckAvail>
</soapenv:Body>
</soapenv:Envelope>
RentacarCheckAvail Request Detail
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 |
RentacarRequest | N | - | - |
./RentacarRequest/RentacarOption | Y | - | - |
./RentacarOption/@RatePlanCode | N | - | - Internal Code, RatePlanCode got in Availability Response |
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. |
Response
<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>
<RentacarCheckAvailResponse
xmlns="http://www.juniper.es/webservice/2007/">
<RentacarCheckAvailRS Url="http://xml-uat.bookingengine.es" TimeStamp="2019-09-21T10:03:57.6186798+02:00" IntCode="u+l+aP7VT0svoiZ5jzJCp+OlsF3/Hjj0cG0lGjBHoWU=">
<Warnings>
<Warning Code="warnPriceChanged" Text="Price changed. A new RatePlanCode has been returned. Use the new RatePlanCode."/>
</Warnings>
<Results>
<RentacarResult Code="IG16YZjjlvqbzCvaPWpt6PFU=" OriginZone="35424" DestinationZone="35424">
<RentacarInfo>
<Name>Dodge Avenger</Name>
<Description>Dodge Avenger or Similar, A/C, Automatic, 4 doors, 5 Passengers, 3 Baggage allowance</Description>
<Image>http://www.dollar.com/images/dollar/images/cars/BB747CC03B604ED6982D6B16B5AD63CE.gif</Image>
</RentacarInfo>
<RentacarOptions>
<RentacarOption PickUpCode="MIA" DropOffCode="MIA" AcrissCode="IDAR" RatePlanCode="wKqRZu1pelUTYuNyNN9gI2Z5Hli3.......wUsCoFybCY8VRbR7rTU69IzVffdf3DF==" PaymentOffice="false">
<Prices>
<Price Type="S" Currency="USD">
<TotalFixAmounts Gross="125" Nett="125">
<Service Amount="125"/>
<ServiceTaxes Included="true" Amount="0"/>
<Commissions Included="true" Amount="0"/>
<HandlingFees Included="true" Amount="0"/>
<Discount Amount="-0"/>
</TotalFixAmounts>
</Price>
</Prices>
<AdditionalElements>
<CarSupplements>
<CarSupplement Code="COVERAGE 24" Units="1" PaymentOffice="false" Status="OK">
<Name>COVERAGE 24 - LOSS DAMAGE WAIVER</Name>
<Description>COVERAGE 24 - LOSS DAMAGE WAIVER</Description>
</CarSupplement>
<CarSupplement Code="COVERAGE 42" Units="1" PaymentOffice="false" Status="OK">
<Name>COVERAGE 42 - SUPPL LIAB INS</Name>
<Description>COVERAGE 42 - SUPPL LIAB INS</Description>
</CarSupplement>
</CarSupplements>
<CarFees>
<CarFee PaymentOffice="false" Amount="0" Currency="USD">
<Name>FACILITY CHARGE</Name>
</CarFee>
<CarFee PaymentOffice="false" Amount="0" Currency="USD">
<Name>Add'L Driver</Name>
</CarFee>
</CarFees>
</AdditionalElements>
</RentacarOption>
</RentacarOptions>
</RentacarResult>
</Results>
</RentacarCheckAvailRS>
</RentacarCheckAvailResponse>
</soap:Body>
</soap:Envelope>
RentacarCheckAvail Response Detail
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 result |
./Results/RentacarResult | N | - | Rentacar results |
./RentacarResult/@Code | N | String | Result internal code |
./RentacarResult/@OriginZone | N | String | JP OriginZone Code |
./RentacarResult/@DestinationZone | N | String | JP DestinationZone Code |
./RentacarResult/RentacarInfo | Y | - | - |
./RentacarInfo/Name | Y | String | Vehicle Name |
./RentacarInfo/Description | Y | String | Vehicle Description |
./RentacarInfo/Image | Y | String | Vehicle Image |
./RentacarResult/RentacarOptions | N | - | - |
./RentacarOptions/RentacarOption | N | - | - |
./RentacarOption/@PickUpCode | N | String | Pickup code from supplier |
./RentacarOption/@DropOffCode | N | String | Drop off code from supplier |
./RentacarOption/@AcrissCode | N | String | Standard Acriss Code for the vehicle. You may refer to the FAQ section for further information. |
./RentacarOption/@RatePlanCode | N | String | Result internal code to be used in BookingRules request |
./RentacarOption/@Status | N | String | Availability Status. Posible values: • OK – Available • RQ - On Request |
./RentacarOption/@PaymentOffice | N | String | Indicates if the car must be paid at destination |
./RentacarOption/RentacarInfo | Y | - | - |
./RentacarInfo/Name | N | String | Vehicle option name |
./RentacarInfo/Description | N | String | Vehicle description |
./RentacarOption/{Prices} | N | - | Price information |
./RentacarOption/{AdditionalElements} | Y | - | Additional elements that contain a combination, such as offers or supplements. The prices are included in the total price of the combination. |
This method is used to quote a vehicle and get the booking code to be used in the booking request. This method works using the RatePlanCode got from Availability Response.
Request
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<RentacarBookingRules>
<RentacarBookingRulesRQ Version = "1.1" Language = "en">
<Login Password = "pass" Email = "user@mydomain.com"/>
<RentacarRequest>
<RentacarOption RatePlanCode = "wKqRZu1pelUTYuNyNN9gI2Z5Hli3L4w4Haf3aGs..."/>
</RentacarRequest>
</RentacarBookingRulesRQ>
</RentacarBookingRules>
</soapenv:Body>
</soapenv:Envelope>
RentacarBookingRules Request Detail
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 |
RentacarRequest | N | - | - |
./RentacarRequest/RentacarOption | N | - | - |
./RentacarOption/@RatePlanCode | N | - | Internal Code, RatePlanCode got in Availability response |
./RentacarRequest/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. |
Response
<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>
<RentacarBookingRulesResponse xmlns = "http://www.juniper.es/webservice/2007/">
<BookingRulesRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2019-09-21T14:27:55.1281083+02:00" IntCode = "qYxbHrLI2vt9U2JuR5ZZ6HAKlJX/ZSy9mU/wmSGMT0M=">
<Results>
<RentacarResult>
<RentacarResultsBookingRules Code = "IG16YZjjlvqbzCvaPWpt6PFU=" OriginZone = "35424" DestinationZone = "35424">
<RentacarOptions>
<RentacarOption PickUpCode = "MIAC02" DropOffCode = "MIAC02" AcrissCode = "FDAR" Status = "OK" PaymentOffice = "false">
<BookingCode ExpirationDate = "2019-09-21T14:37:55.1281083+02:00">IdMOSaQmx1W9Jewm4EPfSOVGO.......aGZ9bvx4fcs4KQe/bRfkg7aSd7ZCB9MxdaoycohLi</BookingCode>
<RentcarRequiredFields>
<RentacarBooking>
<Paxes>
<Pax IdPax = "1">
<Name>Name</Name>
<Surname>Surname</Surname>
<PhoneNumbers>
<PhoneNumber Type = "MO">00000000</PhoneNumber>
</PhoneNumbers>
</Pax>
</Paxes>
<Holder>
<RelPax IdPax = "1"/>
</Holder>
<Elements>
<RentacarElement>
<BookingCode ExpirationDate = "2019-09-21T14:37:55.1281083+02:00">IdMOSaQmx1W9Jewm4EPfSOVGO.......aGZ9bvx4fcs4KQe/bRfkg7aSd7ZCB9MxdaoycohLi</BookingCode>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
</RentacarElement>
</Elements>
</RentacarBooking>
</RentcarRequiredFields>
<PriceInformation>
<Prices>
<Price Type = "S" Currency = "USD">
<TotalFixAmounts Gross = "140" Nett = "140">
<Service Amount = "140"/>
<ServiceTaxes Included = "true" Amount = "0"/>
<Commissions Included = "true" Amount = "0"/>
<HandlingFees Included = "true" Amount = "0"/>
<Discount Amount = "-0"/>
</TotalFixAmounts>
</Price>
</Prices>
<AdditionalElements>
<CarSupplements>
<CarSupplement Code = "COVERAGE 24" Units = "1" PaymentOffice = "false" Status = "OK">
<Name>COVERAGE 24 - LOSS DAMAGE WAIVER</Name>
<Description>COVERAGE 24 - LOSS DAMAGE WAIVER</Description>
</CarSupplement>
<CarSupplement Code = "COVERAGE 42" Units = "1" PaymentOffice = "false" Status = "OK">
<Name>COVERAGE 42 - SUPPL LIAB INS</Name>
<Description>COVERAGE 42 - SUPPL LIAB INS</Description>
</CarSupplement>
</CarSupplements>
<CarFees>
<CarFee PaymentOffice = "false" Amount = "0" Currency = "USD">
<Name>Add'L Driver</Name>
</CarFee>
<CarFee PaymentOffice = "false" Amount = "0" Currency = "USD">
<Name>ENERGY RECOVERY FEE</Name>
</CarFee>
</CarFees>
</AdditionalElements>
</PriceInformation>
<OptionalElements>
<CarSupplements>
<CarSupplement Code = "7" UntMin = "0" UntMax = "1" PaymentOffice = "true" Status = "RQ" Amount = "71.5" Currency = "ARS" RatePlanCode = "Jd5ytCdnaxH8fMpv2ruqu+RTy........Z+2tQiL1VkKE+rYpG36E1D2pICFeTRpp6sV">
<Name>Infant child seat</Name>
<Description>Infant child seat</Description>
</CarSupplement>
<CarSupplement Code = "13" UntMin = "0" UntMax = "1" PaymentOffice = "true" Status = "RQ" Amount = "65.72" Currency = "ARS" RatePlanCode = "Jd5ytCdnaxH8fMpv2ruqu+RTyWb5puOWqExNVEH.......2tQiL1VkKE+oQp4AgC2HVFC6+mFSuSshJ">
<Name>Navigational system (GPS)</Name>
<Description>Navigational system (GPS)</Description>
</CarSupplement>
</CarSupplements>
</OptionalElements>
</RentacarOption>
<RentacarOption PickUpCode = "MIA" DropOffCode = "MIA" AcrissCode = "FDAR" RatePlanCode = "IdMOSaQmx1W9Jewm4EPf.......qulXdtTw6X/9vcEvMUEDxu3IyFnBo=" Status = "OK"/>
<RentacarOption PickUpCode = "MIA" DropOffCode = "MIAC02" AcrissCode = "FDAR" RatePlanCode = "IdMOSaQmx1W9Jewm4EPfSJ7xYiTIx+/K8.......Ah5GDF3qayLok+Ts5O5crwtNEkk=" Status = "OK"/>
</RentacarOptions>
<RentacarLocationDetails>
<RentacarLocationDetail Code = "MIAC02">
<Name>Miami Beach-Mosaic Condominium</Name>
<Address>3801 COLLINS AVE, 33140, MIAMI BEACH, US</Address>
<PhoneNumbers>
<PhoneNumber>305-532-2760</PhoneNumber>
</PhoneNumbers>
</RentacarLocationDetail>
</RentacarLocationDetails>
<Supplier Code = "HTZ" Code = "234"/>
</RentacarResultsBookingRules>
</RentacarResult>
</Results>
</BookingRulesRS>
</RentacarBookingRulesResponse>
</soap:Body>
</soap:Envelope>
RentacarBookingRules Response Detail
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 result |
./Results/RentacarResult | N | - | Rentacar results |
./RentacarResult/RentacarResultsBookingRules | - | - | List of results |
./RentacarResultsBookingRules/@Code | N | String | Result internal code |
./RentacarResultsBookingRules/@OriginZone | N | String | JP OriginZone Code |
./RentacarResultsBookingRules/@DestinationZone | N | String | JP DestinationZone Code |
./RentacarResultsBookingRules/RentacarInfo | Y | - | - |
./RentacarInfo/Name | Y | String | Vehicle Name |
./RentacarInfo/Description | Y | String | Vehicle Description |
./RentacarInfo/Image | Y | String | Vehicle Image |
./RentacarResultsBookingRules/RentacarOptions | N | - | - |
./RentacarOptions/RentacarOption | - | - | The option sent in case it can be booked will have all the information and a BookingCode The rest of options will appear without all the info but with a RatePlanCode, so it can be used to quote another option. |
./RentacarOption/@PickUpCode | N | String | Pickup code from supplier |
./RentacarOption/@DropOffCode | N | String | Drop off code from supplier |
./RentacarOption/@AcrissCode | N | - | Standard Acriss Code for the vehicle. You may refer to the FAQ section for further information. |
./RentacarOption/@RatePlanCode | Y | String | Result internal code to be used in BookingRules to quote other options from the result. |
./RentacarOption/@Status | N | String | Availability Status. Posible values: • OK – Available • RQ - On Request |
./RentacarOption/@PaymentOffice | N | String | Indicates if the car must be paid at destination |
./RentacarOption/BookingCode | Y | String | Internal Code to be used in bookingRequest |
./BookingCode/@ExpirationDate | Y | DateTime | Expiration Date of the booking 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) |
./RentacarOption/{RentcarRequiredFields} | N | - | Required 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 RentacarBooking request, refer to the mentioned for a list of all of the possible required fields. Additionally, kindly refer to the below section on which you will be able to find a practical example of all of the required fields that you may be asked for on a specific combination. |
./RentacarOption/{CancellationPolicy} | Y | - | If available, indicates the cancellation policies |
./RentacarOption/PriceInformation | N | - | - |
./PriceInformation/{Prices} | N | - | Price information |
./PriceInformation/{AdditionalElements} | N | - | Additional elements such as supplements or fees. The prices are included in the total 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. |
./RentacarOption/OptionalElements | Y | - | List of optional elements that can be added. To add an optional element you must request a new BookingRules using the new RatePlanCode. |
./OptionalElements/{CarSupplements} | Y | - | List of available optional supplements that may be included into the combination. |
./OptionalElements/Comments | Y | - | List of comments that may be provided for the product. |
./Comments/Comment | N | String | Comment contents. |
./Comment/@Type | N | String | Comment type. Possible values: • CAR: Product related comments |
./OptionalElements/{Documents} | Y | - | List of documents available for the result. |
./RentacarResultsBookingRules/RentacarLocationDetails | N | - | Location details of the selected/first option |
./RentacarLocationDetails/{RentacarLocationDetail} | N | - | - |
./RentacarResultsBookingRules/Supplier | Y | - | Supplier information. Restricted by default. Kindly contact with Juniper for further information. |
./Supplier/@Code | Y | String | Supplier product type code. |
./Supplier/@IntCode | Y | String | Provider internal 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. |
(*) Required fields
Required fields are mandatory information in the booking request. There is information that will always be mandatory, such as the BookingCode, holder information, etc, but there is other information that will only be mandatory in specific cases depending on the rentacar supplier. For example, the documentation or email of the booking holder is only mandatory for certain cases.
You should consider mandatory all those 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.
<RentcarRequiredFields>
<RentacarBooking>
<Paxes>
<Pax IdPax = "1" Gender = "M">
<PhoneNumbers>
<PhoneNumber>000000000</PhoneNumber>
</PhoneNumbers>
<Name>Holder Name</Name>
<Surname>Holder Surname</Surname>
<Email>email@domain.com</Email>
<BornDate>1990-11-05</BornDate>
<Address>Address</Address>
<City>City</City>
<Country>BRAZIL</Country>
<PostalCode>00000</PostalCode>
<Nationality>ES</Nationality>
</Pax>
</Paxes>
<Holder>
<RelPax IdPax = "1"/>
</Holder>
<Elements>
<RentacarElement>
<BookingCode>MXKGzM+8zNSoRWVnc8ZUHXNxV40nJl0DzWzlVM83uc++DtcNArY2qLTuTHONjpxJNeMzSnzm1Fr7MtS7FNdV7bNn1+Ku+vdhOG65Aoqh...</BookingCode>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
<RentacarBookingInfo>
<PickUp>
<FlightInfo FlightTime = "0001-01-01T00:00:00" FlightNumber = "XX1234"/>
</PickUp>
</RentacarBookingInfo>
</RentacarElement>
</Elements>
</RentacarBooking>
</RentcarRequiredFields>
Request
We book a vehicle by the BookingCode got in BookingRules Response:
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns="http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<RentacarBooking>
<RentacarBookingRQ Version="1.1" Language="en">
<Login Password="pass" Email="user@yourdomain.com"/>
<Paxes>
<Pax IdPax="1">
<Title>Mr</Title>
<Name>Test</Name>
<Surname>Testing</Surname>
<Age>28</Age>
<Email>client@email.com</Email>
<Document Type="DNI">12345678</Document>
<PhoneNumbers>
<PhoneNumber>01141147600</PhoneNumber>
</PhoneNumbers>
<BornDate>1981-01-01</BornDate>
<Address>YourAddress</Address>
<City>YourCity</City>
<Country>Spain</Country>
<PostalCode>1005</PostalCode>
<Nationality>ES</Nationality>
</Pax>
</Paxes>
<Holder>
<RelPax IdPax="1"/>
</Holder>
<Elements>
<RentacarElement>
<BookingCode>DuI8uf1tzGWUFZxuBBuP6QaEv......RFkNFxpnEyDajR/5I/MuR/WcM+Twzl6+ymOH9ET/wJVZUg==</BookingCode>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax="1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
</RentacarElement>
</Elements>
</RentacarBookingRQ>
</RentacarBooking>
</soapenv:Body>
</soapenv:Envelope>
RentacarBooking Request Detail
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 |
@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 or modify services. |
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. |
./Holder/RelPax | N | - | - |
./RelPax/@IdPax | N | Integer | Booking passenger Id. It should match with a Pax@IdPax |
Comments | Y | - | You may add booking comments. |
./Comments/Comment | Y | 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/RentacarElement | N | - | Rentacar element information. |
./RentacarElement/BookingCode | N | String | BookingCode. Contains all the information to do a rentacar reservation. |
./RentacarElement/RelPaxesDist | N | - | Passenger distribution you wish to book |
./RelPaxesDist/RelPaxDist | N | - | Distribution list. |
./RelPaxDist/RelPaxes | N | - | Passenger list of this distribution. |
./RelPaxes/RelPax | N | - | Driver |
./RelPax/@IdPax | N | Integer | Driver Id. It should match with a Pax@IdPax |
./RentacarElement/RentacarBookingInfo | Y | - | Required field information. |
./RentacarBookingInfo/PickUp | Y | - | Pickup information. |
./PickUp/FlightInfo | Y | - | Pickup flight information. |
./FlightInfo/@Airport | Y | String | Pickup flight airport. |
./FlightInfo/@FlightTime | Y | DateTime | Pickup flight time. |
./FlightInfo/@FlightNumber | Y | String | Pickup flight number. |
./RentacarElement/Comments | Y | - | You may add comments for this specific element. |
./Comments/Comment | Y | - | Comment |
./Comment/@Type | Y | 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. |
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 the ALL value a booking confirmation email will be sent to your email account. |
./AdvancedOptions/BookingPaid | Y | String | Parameter meant for internal use only. |
Response
<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>
<RentacarBookingResponse
xmlns="http://www.juniper.es/webservice/2007/">
<BookingRS Url="http://xml-uat.bookingengine.es" TimeStamp="2019-09-21T13:14:06.3241029+02:00" IntCode="XReGm1rR8PZkIEFeKtSLLKxGyUPUjrO5H7r+NZul9PQ=">
<Reservations>
<Reservation Locator="2RXB8N" Status="PAG">
<ExternalBookingReference>Referencia agencia</ExternalBookingReference>
<Holder>
<RelPax IdPax="2"/>
</Holder>
<Paxes>
<Pax IdPax="1">
<Title>Mr</Title>
<Name>Test</Name>
<Surname>Testing</Surname>
<Age>28</Age>
<Email>client@email.com</Email>
<PhoneNumbers>
<PhoneNumber>01141147600</PhoneNumber>
</PhoneNumbers>
</Pax>
<Pax IdPax="2">
<Name>Test</Name>
<Surname>Testing</Surname>
<Email>client@email.com</Email>
<Document>12345678</Document>
<Address>YourAddress</Address>
<City>YourCity</City>
<Country>Spain</Country>
<PostalCode>1005</PostalCode>
<Nationality>ES</Nationality>
</Pax>
</Paxes>
<Comments>
<Comment Type="RES">General booking comments</Comment>
</Comments>
<Items>
<CarItem ItemId="93770" Status="OK" Start="2019-30-09" Hour="10:00" End="2019-02-10" HourEnd="10:00">
<Prices>
<Price Type="S" Currency="USD">
<TotalFixAmounts Gross="122" Nett="122">
<Service Amount="122"/>
<ServiceTaxes Included="true" Amount="0"/>
<Commissions Included="true" Amount="0"/>
<HandlingFees Included="true" Amount="0"/>
<Discount Amount="-0"/>
</TotalFixAmounts>
<Breakdown>
<Concepts>
<Concept Type="BAS" Name="Base">
<Items>
<Item Amount="122" Date="2019-02-10" Quantity="1" Days="1"/>
<Item Amount="0" Date="2019-02-10" Quantity="1" Days="1"/>
</Items>
</Concept>
</Concepts>
</Breakdown>
</Price>
</Prices>
<AdditionalElements>
<CarSupplements>
<CarSupplement Code="COVERAGE 24" Units="1" PaymentOffice="false" Status="OK">
<Name>COVERAGE 24 - LOSS DAMAGE WAIVER</Name>
<Description>COVERAGE 24 - LOSS DAMAGE WAIVER</Description>
</CarSupplement>
<CarSupplement Code="COVERAGE 42" Units="1" PaymentOffice="false" Status="OK">
<Name>COVERAGE 42 - SUPPL LIAB INS</Name>
<Description>COVERAGE 42 - SUPPL LIAB INS</Description>
</CarSupplement>
</CarSupplements>
<CarFees>
<CarFee PaymentOffice="false" Amount="0" Currency="USD">
<Name>Add''L Driver</Name>
</CarFee>
<CarFee PaymentOffice="false" Amount="0" Currency="USD">
<Name>ENERGY RECOVERY FEE</Name>
</CarFee>
</CarFees>
</AdditionalElements>
<RentacarLocationDetails>
<RentacarLocationDetailPickUp Code="MIAC02">
<Name>Miami Beach-Mosaic Condominium</Name>
<Address>3801 COLLINS AVE, 33140, MIAMI BEACH, UNITED STATES, FLORIDA</Address>
</RentacarLocationDetailPickUp>
<RentacarLocationDetailDropOff Code="MIAC02">
<Name>Miami Beach-Mosaic Condominium</Name>
<Address>3801 COLLINS AVE, 33140, MIAMI BEACH, UNITED STATES, FLORIDA</Address>
</RentacarLocationDetailDropOff>
</RentacarLocationDetails>
<RelPaxes>
<RelPax IdPax="1"/>
</RelPaxes>
</CarItem>
</Items>
</Reservation>
</Reservations>
</BookingRS>
</RentacarBookingResponse>
</soap:Body>
</soap:Envelope>
RentacarBooking Response Detail
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 | N | - | Reservation node |
./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 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 |
./Reservation/{Paxes} | N | - | Passenger data. Mandatory passenger data will be filled in with random data. |
./Reservation/Comments | Y | - | Booking comments |
./Comments/Comment | Y | - | - |
./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/CarItem | N | - | Specific car reservation |
./CarItem/@ItemId | N | String | Item identifier |
./CarItem/@Status | N | String | Item status. Possible values are: • OK or AV - Available • RQ - On request • CA - Cancelled |
./CarItem/@Start | N | Date | Pickup date. Format: yyyy-MM-dd |
./CarItem/@Hour | N | DateTime | Pickup time. Format: hh:mm:ss (UTC) |
./CarItem/@End | N | Date | DropOff date. Format: yyyy-MM-dd |
./CarItem/@HourEnd | N | DateTime | DropOff time. Format: hh:mm:ss (UTC) |
./CarItem/ExternalItemReference | Y | String | - |
./CarItem/{Prices} | N | - | Item prices or combination. |
./CarItem/{CancelationPolicies} | Y | - | Cancellation policies |
./CarItem/Comments | Y | - | Possible comments from the booking. |
./Comments/Comment | N | String | Comment contents. |
./Comment/@Type | N | String | Comment type. Possible values: • ELE: Booking element comments • PAG: Payment information • CAR: Product related comments |
./CarItem/{AdditionalElements} | Y | - | Combination additional elements, such as offers or supplements. |
./CarItem/RentacarLocationDetails | N | - | - |
./RentacarLocationDetails/{RentacarLocationDetailPickUp} | N | - | RentACar location details of the pickup. |
./RentacarLocationDetails/{RentacarLocationDetailDropOff} | N | - | RentACar location details of the dropoff. |
./CarItem/{Documents} | Y | - | List of documents available for the result. |
./CarItem/RelPaxes | N | - | Passengers/drivers. |
./RelPaxes/RelPax | N | - | - |
./RelPax/@IdPax | N | Integer | Passenger identifier. It should match with a Pax@IdPax |
./Items/{AdjustmentItem} | Y | - | Additional adjustment item. It will be available if, for example, you've manually added a PromoCode on the previous BookingRules step. |
Obtaining a booking by its reference code. The returned information is the same as in Booking Method. Please see the respective Booking method for further information.
Request
<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>
ReadBooking Request Detail
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
ReadBooking | N | - | - |
@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 | - | - | - |
./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. |
Response
It returns the same information as the response of RentacarBooking. If you want to know the parameters more detailed, please review the section related to the response of RentacarBooking transaction.
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 cancelled. In the following example we cancel a complete booking.
Request
<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>
CancelBooking Request Detail
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
CancelBooking | N | - | - |
@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 | Y | String | Booking code |
./CancelRequest/@ItemId | Y | Integer | Item identifier |
./CancelRequest/@OnlyCancellationFees | Y | Boolean | Option to retrieve the cancellation charges if the booking is cancelled at that point in time. The booking is not cancelled. |
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 | g If included with the ALL value a booking confirmation email will be sent to your email account. |
Response
It returns the same information as the response of RentacarBooking. If you want to know the parameters more detailed, please review the section related to the response of RentacarBooking transaction.
Request
<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" OnlyCancellationFees="true"/>
</CancelRQ>
</CancelBooking>
</soapenv:Body>
</soapenv:Envelope>
Response
<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-03-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.
ACRISS are a set of industry standard car classification codes developed and maintained by ACRISS (the Association of Car Rental Industry Systems Standards) and designed to enable customers and travel professionals to make an informed choice when booking car rental in Europe, The Middle East and Africa.
ACRISS members include:
You can go to http://www.acriss.org/expanded-matrix.asp to check the values (Old Matrix).
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):
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 algo 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>
<TransferAvailResponse xmlns="http://www.juniper.es/webservice/2007/">
<AvailabilityRS Url="http://xml-uat.bookingengine.es" TimeStamp="2019-06-20T13:03:20.8017875+02:00" IntCode="LkA/OybCaPcNYWQsOXR0S8apZRv97EEUlhg3j6Aebn8=">
<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>
</TransferAvailResponse>
</soap:Body>
</soap:Envelope>
If the request is valid, you will receive a response containing all the possible transfers for the desired criteria. Each transfer will be returned along a RatePlanCode which should be used in the next step of the booking flow, which can be RentacarCheckAvail (if you desire to validate the availability of the selected option) or RentacarBookingRules.
Please be aware that the proper use of the RatePlanCode is an important point in the certification process.
The RentacarBookingRules 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.........mOySKbvdSTXtO35YtBgquA6m6U</BookingCode>
<Warnings>
<Warning Code="warnCheckNotPossible" Text="Price review is not possible"/>
</Warnings>
<RentcarRequiredFields>
<RentacarBooking>
<Paxes>
<Pax IdPax="1">
<Name>Holder Name</Name>
<Surname>Holder Surname</Surname>
</Pax>
</Paxes>
<Holder>
<RelPax IdPax="1"/>
</Holder>
<Elements>
<RentacarElement>
<BookingCode>TgdcKoHrs2TQxzxGOwJuQs............/bxIIc9hNYdkiK8A/wwsa3A=</BookingCode>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax="1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
</RentacarElement>
</Elements>
</RentacarBooking>
</RentcarRequiredFields>
NOTE: Keep in mind that the required fields feature default values, meaning that you have to replace the default values with the preferred information.
<OptionalElements>
<CarSupplements>
<CarSupplement UntMin="0" UntMax="1" PaymentOffice="false" Status="OK" Amount="27.93" Currency="EUR" RatePlanCode="CKxZSVbfsTCidD4dbEmRjO..........wg4EKPOkBLimY6lXvNoxKMA==">
<Name>INSURANCE - MEDIUM - Medium Protection Package</Name>
<Description>INSURANCE - MEDIUM - Medium Protection Package</Description>
</CarSupplement>
<CarSupplement UntMin="0" UntMax="1" PaymentOffice="false" Status="OK" Amount="5.38" Currency="EUR" RatePlanCode="CKxZSVbfsTCidD4dbEm..........C7Q8dSdSpf1uubLYkDEvqw==">
<Name>INSURANCE - PAI - Personal Accident cover (PAI)</Name>
<Description>INSURANCE - PAI - Personal Accident cover (PAI)</Description>
</CarSupplement>
<CarSupplement UntMin="0" UntMax="1" PaymentOffice="false" Status="OK" Amount="39.75" Currency="EUR" RatePlanCode="CKxZSVbfsTCidD4dbEmRjOEiqS5..........n27rpRvBX6RzM5F4MOwhb2gA==">
<Name>INSURANCE - PREMIUM - Premium Protection package more 26 Years old</Name>
<Description>INSURANCE - PREMIUM - Premium Protection package more 26 Years old</Description>
</CarSupplement>
<CarSupplement UntMin="0" UntMax="1" PaymentOffice="false" Status="OK" Amount="8.59" Currency="EUR" RatePlanCode="CKxZSVbfsTCidD4dbEmRjOE..........SCFf+EaDvLJ3pxsvLenbA==">
<Name>INSURANCE - WWI - glass & tyres protection</Name>
<Description>INSURANCE - WWI - glass & tyres protection</Description>
</CarSupplement>
</CarSupplements>
</OptionalElements>
The last step in the booking flow is the RentacarBooking 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.