Car Rental Software

Introduction

Car Rental Software offers two different APIs that allow its users to make, modify or cancel reservations.

An OTA compliant SOAP web service that offers functions to retrieve pricing information, block quotes and make and cancel reservations. The OTA compliant API is under ongoing development and may offer new functions in the future.

The CRS Booking Engine on the other hand is a more light-weight API that offers the retrieval of pricing information, block quotes and make reservations. Reservation modifications are not supported. The Booking Engine is the result of earlier API requirements and was replaced by the OTA compliant API.

Authorizing API calls

API calls have to provide authorization information in order for the system to identify the calling party. The APIs are designed for brokers to allow to work with bookings of their partner car rental companies directly from their desk.

Therefore each system connecting to one of Car Rental Software's APIs has to clearly identify itself as a registered broker for the car rental company, respectively. In order to do so it has to provide the broker's unique identifier (username) and a valid API key (password) in every API call.

The credentials can be requested from the appropriate car rental company.

OTA Compliant Web Service

Car Rental Software offers a OTA-compliant SOAP web service described by its WSDL file located at https://carrentalsoftware.myappy.it/web/ota/opentravel.wsdl. This web service is a partial implementation of the 2017B-1.0 version of the OpenTravel schema and the documentation is limited on the functions supported by the CRS OTA API.

A more comprehensive documentation of the full OTA standard can be found on their website: https://opentravel.org. If you're looking for a more detailed description of the types and models used by OTA, you can have a look at https://modelviewers.pilotfishtechnology.com/modelviewers/OTA/

As of now the CRS OTA API offers the following functions:

Function Description
OTA_Ping This function is solely for testing purposes and can be used to test whether the interface is available and running as expected.
OTA_VehAvailRate Call OTA_VehAvailRate in order to get pricing information for a given period, pickup/drop off stations and vehicle types.
OTA_VehLocSearch This function can be used to get a list of all or of selected stations matching given search criteria of the car rental company.
OTA_VehModify OTA_VehModify has to be used to confirm a booking that has previously been created via the OTA_VehRes function with the two-step procedure.
OTA_VehRes OTA_VehRes is the function that has to be called to block an offer retrieved earlier via OTA_VehAvailRate or to book a previously requested offer.
OTA_VehRetRes Once an offer has been blocked or booked, you can use this function to retrieve its details.

All API calls are based on SOAP messages containing the request and response data. The main data block of a SOAP message usually starts with the name of the called function followed by the suffix RQ indicating a function call (request) and RS for a response.

Authentication

Every API call (except the Ping method) has to provide proper authentication information so that the system is able to identify the calling party. Therefore you need to include a Username and a Password in the requests that you want to send to the server. These credentials can be requested by the appropriate car rental company that can generate them or look them up using the broker file of the CRS control panel.

Authentication credentials are put into a POS → Source → RequestorID tag of the SOAP message as demonstrated in the code sample.

Parameter Description
Type Indicates the type of the entity that is trying to identify. Set to 29 which is the value for Booking agent.
ID The unique broker ID/username that the car rental company provided to you.
MessagePassword The broker's API Key/password that the car rental company provided to you.

Please note that in the following, the authentication part will be skipped in order to keep code samples as simple as possible.

Authentication part for a OTA_VehAvailRateRQ message
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.opentravel.org/OTA/2003/05">
  <SOAP-ENV:Body>
    <ns1:OTA_VehAvailRateRQ>
      <POS>
        <Source>
          <RequestorID Type="29" ID="{Username}" MessagePassword="{Password}"/>
        </Source>
      </POS>
      
      <!-- Message content here -->
      
    </ns1:OTA_VehAvailRateRQ>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Error handling

Every response from the server should contain either the Success flag indicating that the request has been processed successfully or an Errors tag indicating one or more errors that occurred during the elaboration of the request.

Response parameter Description
Success Flag indicating that the request has been processed successfully. If not present, check for the Errors tag to see what went wrong.
Errors Container for one ore more error messages that indicate why the request could not been processed successfully.

Please note that in the following, the success/errors part will be skipped in order to keep code samples as simple as possible.

Response of a successfully processed OTA_VehLocSearch request
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.opentravel.org/OTA/2003/05">
  <SOAP-ENV:Body>
    <ns1:OTA_VehLocSearchRS>
      <ns1:Success/>
      
      <!-- Response data here -->
      
    </ns1:OTA_VehLocSearchRS>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Permission denied error occurring when using wrong authentication credentials
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.opentravel.org/OTA/2003/05">
  <SOAP-ENV:Body>
    <ns1:OTA_VehLocSearchRS>
      <Errors>
        <Error Code="403" ShortText="Permission denied"/>
      </Errors>
    </ns1:OTA_VehLocSearchRS>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

OTA_Ping

The OTA_Ping method is for testing purposes only and can be used to check whether the system is up and running correctly.

Request

The only parameter expected inside its main OTA_PingRQ message is a random string identified as EchoData.

Request parameter Description
EchoData The string that the server should echo back.

Response

After processing the request, the system will respond to the caller echoing back the same string that was provided when the function was called together with the Success flag set.

Response parameter Description
EchoData The string echoed back to the caller
Ping Request
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.opentravel.org/OTA/2003/05">
  <SOAP-ENV:Body>
    <ns1:OTA_PingRQ>
      <EchoData>Echo data</EchoData>
    </ns1:OTA_PingRQ>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Ping Response
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.opentravel.org/OTA/2003/05">
  <SOAP-ENV:Body>
    <ns1:OTA_PingRS>
      <ns1:Success/>
      <ns1:EchoData>Echo data</ns1:EchoData>
    </ns1:OTA_PingRS>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

OTA_VehAvailRate

The OTA_VehAvailRate function can be used to retrieve pricing information for one or more specific vehicle type(s) or a given period of time and a pickup/drop-off station. This function does not block any requested prices but does only return price. After analyzing the server's response, it is then possible to use the OTA_VehRes function to block a certain quote or make a booking straightaway.

Request

In order to get pricing information, a certain set of parameters are mandatory while others are optional to refine the search. Please check the code sample to find out how the parameters are structured and whether they are separate tags or tag attributes.

Request parameter Description
PickUpDateTime* Date and time at which the vehicle has to be picked up.
Use the date format YYYY-MM-DD'T'hh:mm:ss'Z' (including the Z suffix) to specify the date and time in UTC. If the trailing Z is omitted, hence you are using YYYY-MM-DD'T'hh:mm:ss as format, the date and time value is considered to be in local time (referred to the timezone of the car rental company).
ReturnDateTime* Date and time (given in UTC) at which the vehicle will be returned.
Use the date format YYYY-MM-DD'T'hh:mm:ssZ (including the Z suffix) to specify the date and time in UTC. If the trailing Z is omitted, hence you are using YYYY-MM-DD'T'hh:mm:ss as format, the date and time value is considered to be in local time (referred to the timezone of the car rental company).
PickUpLocation* The station where the vehicle has to be picked up from. Provide the station's UID in the LocationCode attribute.
ReturnLocation The station where the vehicle will be returned to. Provide the station's UID in the LocationCode attribute. This parameter is optional and in case it is not given, the PickUpLocation will also be used as the ReturnLocation.
RateRange This tag can be used to filter out pricing information that does not match your expectations. You can specify either a MinRate and/or a MaxRate or a FixedRate. Please note that the system will only consider the rental rate (taxes, optionals and coverages excluded) for given rate range. All monetary amounts are expected to be given in EUR.
VehPrefs Optional vehicle preferences. Can be used to indicate a vehicle type preference. Use separate VehPref blocks for each preference, specifying the ACRISS code of the preferred type in the Code attribute of the VehMakeModel tag. The Name is ignored by the system and can be left empty. If in doubt, get in contact with the car rental company to get a list with available ACRISS codes.
(*) mandatory field

Response

After processing the request, the system will respond to the caller providing a set of pricing information matching the calling request. The quotes will appear in different VehAvail blocks that can be found in VehVendorAvails → VehVendorAvail → VehAvails. Furthermore, the response will contain the request's information about pickup/drop-off times and stations in the VehicleRentalCore to confirm the search parameters.

Each VehAvail block contains two elements. VehAvailCore provides information about the vehicle type linked to an offer together with rental pricing information and additional equipment that can be booked. The VehAvailInfo part provides information about available coverage options that can be booked for the given vehicle type. Since the equipment and coverage options are optional they are not included in the rental price and the total estimate in VehAvailCore → TotalCharge.

Please note, that all prices provided by the system are taxes excluded. For each charge however, you'll also find the TaxAmounts part summarizing the expected taxes. Only the field EstimatedTotalAmount of VehAvailCore → TotalCharge contains the rental price including taxes (but excluded any optional equipment and coverage options).

VehAvailCore parameter Description
Vehicle The vehicle tag contains information about the vehicle type associated to the pricing information, such as the ACRISS code in the Code attribute and a textual Description. CodeContext specifies what to expect in Code field and will always be set to SIPP which refers to ACRISS code.
If available, the vehicle element may contain a PictureURL child indicating the URL of an image file in order to illustrate the vehicle type.
TotalCharge The total charge to expect when booking this option, taxes excluded (RateTotalAmount) and taxes and fees included (EstimatedTotalAmount).
Please note that the total charge indicated here does not include any optional equipment or coverage options. Mandatory extras may be present however.
Rental Rate Provides further information about the specific rental rate applied to this offer.

The rate distance specifies distance limitations. If applicable (Unlimited="false") the DistUnitName together with the Quantity and VehiclePeriodUnitName indicate the maximum distance that is covered by the quote. If no limits apply, Unlimited will be set to true.

The vehicle charges element provides a list of different charges that were considered for the calculation of the booking totals. The golden rule here is: Only vehicle specific charges (Purpose="1") will be included in the total rental rate (IncludedInRate and IncludedInEstTotalInd will always be true). Any other fees or mandatory extras will only be included in the estimated reservation totals (IncludedInEstTotalInd will be true).

All charges are taxes excluded. The TaxAmounts child however indicates expected taxes that have to be added in order to get the full estimated rental price.

As said before, additional fees or mandatory extras may be present in the vehicle charges list. When the system determines for example that either the pickup date and time or the return date and time are beyond office hours, another VehicleCharge element of type 82 (= Out of hours fee) might be present.
Another VehicleCharge element might be listed when a company takes extra fees for One way rentals, i.e. where the drop-off station is not the same as the pickup station. In this case a VehicleCharge element of type 2 (= Drop fee) might be present, following the same logic and restrictions as the out of hours fee.
Please note, that any fee or extra being present as a VehicleCharge in the VehAvailRate response of a requested quote, has to be included in an eventual OTA_VehRes request in order to block a quote or make booking successfully. If you try to block a quote without a mandatory fee or extra, the system will not proceed with the operation and return an error.
PricedEquips Gives you a list of optional equipment that can be booked together with the vehicle. Each PricedEquip element provides information about the equipment itself including the OpenTravel Code List Equipment Type (EQP) in the EquipType attribute and a textual Description, as well as pricing information provided by the Charge element. As said before, equipment prices are never included in the rate totals of an availability response, so IncludedInRate and IncludedInEstTotalInd will always be false.

In case a listed equipment is countable, a Quantity="1" attribute will be present within the Equipment tag. In this case, the corresponding Charge element indicates the pricing information for a single piece of equipment.

Please note, that if EquipType is set to 39 (= other) booking a specific equipment might not succeed. In this case get in contact with the car rental company and ask them to properly set the equipment type for registered optionals via their control panel.

Most of the EQP codes are defined by the standard, to have a complete overview of the supported codes (check with the rental company!) refer to the following list:
1: Mobile phone / Cellulare
2: Bike rack / Portabiciclette
3: Luggage rack / Portabagagli
4: Ski rack / Portasci
5: Trailer hitch / Gancio di traino
6: Automatic locks / Chiusura automatica
7: Infant child seat / Seggiolino per bambini
8: Child toddler seat / Seggiolino per neonato
9: Booster seat / Rialza per bambini
10: Snow chains / Catene da neve
11: Hand control right / Hand control (destra)
12: Hand control left / Hand control (sinistra)
13: Navigational system / Navigatore
14: Snow tires / Pneumatici invernali
15: Baby stroller / Passegino
16: DVD player monitor / DVD
17: VCR player monitor / VCR
18: Spinner knob / Manopola sul volante
19: Furniture pads / Cuscinetti per mobili
20: Car dolly / Carrello auto
21: Auto transport / Trasporto auto
22: Hand truck / Carrello per sacchi
23: Cargo barrier front / Barriera del carico (anteriore)
24: Cargo barrier rear / Barriera del carico (posteriore)
25: Luggage trailer / Rimorchio per bagagli
26: Camping equipment / Attrezzi campeggio
27: Satellite radio / Radio satellitare
28: Wheelchair accessible van / Veicolo accessibile con sedia a rotelle
29: Seat belt extensions / Prolunghe della cintura di sicurezza
30: Winter package / Pacchetto invernale
31: Citizen band radio / Baracchino
32: Computerized directions / Computerized directions
33: FM radio / Radio
34: Navigational phone / Cellulare con navigatore
35: Ski rental / Noleggio sci
36: Ski equipped / Attrezzatura sci
37: Cassette player / Mangianastri
38: Television / TV
39: Other [do not use] / Altro
40: Portable DVD/CD/picture player / DVD/CD portatile
41: Multimedia centre / Multimedia center
42: Flag holder / Portabandiera
43: Motorcycle helmet / Casco
44: Jerrycan / Tanica
45: Luggage roof case / Portapacchi (tetto)
46: Hand-held navigation system / Navigatore portatile
47: Snow board rack / Porta snowboard
48: Ski box / Box per sci
49: Surf rack / Porta surf
50: Scooter case / Bauletto per scooter
51: Car telephone / Telefono
52: Toll payment tag/pass / Dispositivo per pagamenti pedaggi
53: Additional spare tire / Ruota di scorta
54: Wheelchair / Sedia a rotelle
55: WiFi Access / WIFI
56: Road/congestion payment scheme / Road/congestion payment scheme
57: Booster cushion / Cuscino riduttore
58: Trolley / Carrello
59: Carbon offset / Carbon offset
60: Security devices / Dispositivi sicurrezza
61: Travel Tab / Travel tab
101: Additional driver / Conducente addizionale
102: Young Driver / Young Driver
103: Road assistance / Assistenza stradale
104: Fuel Antifreeze / Fuel Antifreeze
105: Child seat (generic) / Child seat (generic)
150: Generic code 1 / Generico 1
151: Generic code 2 / Generico 2
152: Generic code 3 / Generico 3
153: Generic code 4 / Generico 4
154: Generic code 5 / Generico 5
155: Generic code 6 / Generico 6
156: Generic code 7 / Generico 7
157: Generic code 8 / Generico 8
158: Generic code 9 / Generico 9
159: Generic code 10 / Generico 10
160: Generic code 11 / Generico 11
161: Generic code 12 / Generico 12
162: Generic code 13 / Generico 13
163: Generic code 14 / Generico 14
164: Generic code 15 / Generico 15
165: Generic code 16 / Generico 16
166: Generic code 17 / Generico 17
167: Generic code 18 / Generico 18
168: Generic code 19 / Generico 19
169: Generic code 20 / Generico 20
200: Out of hours checkout / Fuori orario checkout
210: One way / One way
250: Out of hours checkin / Fuori orario checkin
VehAvailInfo parameter Description
PricedCoverages Provides a list with coverage options that may be booked together with the vehicle. Each PricedCoverage element specifies information about the coverage itself in the Coverage element and pricing information in Charge.

Each option comes with a unique identifier in the Code attribute that is needed in case you want to book an option. CoverageType provides details about the type of coverage and will be set to 21 (= insurance). This might change in the future in order to provide more information using a more detailed OpenTravel Code List Vehicle Coverage Type (VCT). The Details child gives you a textual description of the coverage option.

The coverage charges are similar to equipment charges and are not further explained here.

The Deductible elements specifies the deductible amount for this coverage option.
Quote request
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.opentravel.org/OTA/2003/05">
  <SOAP-ENV:Body>
    <ns1:OTA_VehAvailRateRQ>
      <VehAvailRQCore>
        <VehRentalCore PickUpDateTime="2020-03-02T18:00:00Z"
            ReturnDateTime="2020-03-06T18:00:00Z">
          <PickUpLocation LocationCode="98107384"/>
          <ReturnLocation LocationCode="98107384"/>
        </VehRentalCore>
        <RateRange CurrencyCode="EUR" MinRate="10.00" MaxRate="40.00"/>
        <VehPrefs>
          <VehPref>
            <VehMakeModel Code="CDAR" Name=""/>
          </VehPref>
        </VehPrefs>
      </VehAvailRQCore>
    </ns1:OTA_VehAvailRateRQ>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Quote response
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.opentravel.org/OTA/2003/05">
  <SOAP-ENV:Body>
    <ns1:OTA_VehAvailRateRS>
      <ns1:VehAvailRSCore>
        <VehRentalCore PickUpDateTime="2020-03-02T18:00:00Z"
            ReturnDateTime="2020-03-06T18:00:00Z">
          <PickUpLocation LocationCode="98107384"/>
          <ReturnLocation LocationCode="98107384"/>
        </VehRentalCore>
        <VehVendorAvails>
          <VehVendorAvail>
            <VehAvails>
              <VehAvail>
                <VehAvailCore>
                  <Vehicle Code="CDAR" CodeContext="SIPP"
                      Description="Gruppo B Automatica (Km illimitati)">
                    <PictureURL>http://url/to/image</PictureURL>
                  </Vehicle>
                  <TotalCharge CurrencyCode="EUR" RateTotalAmount="40.00"
                      EstimatedTotalAmount="48.80"/>
                  <RentalRate>
                    <RateDistance Unlimited="false" DistUnitName="km"
                        Quantity="1000" VehiclePeriodUnitName="Day"/>
                    <VehicleCharges>
                      <VehicleCharge Purpose="1" TaxInclusive="false"
                          IncludedInEstTotalInd="true" IncludedInRate="true"
                          Description="" Amount="40" CurrencyCode="EUR">
                        <TaxAmounts>
                          <TaxAmount CurrencyCode="EUR" Percentage="22"
                              Total="8.80"/>
                        </TaxAmounts>
                      </VehicleCharge>
                    </VehicleCharges>
                  </RentalRate>
                  <PricedEquips>
                    <PricedEquip>
                      <Equipment EquipType="39">
                        <Description>Navigatore</Description>
                      </Equipment>
                      <Charge IncludedInEstTotalInd="false"
                          IncludedInRate="false" TaxInclusive="false"
                          Amount="40.00" CurrencyCode="EUR">
                        <TaxAmounts>
                          <TaxAmount CurrencyCode="EUR" Percentage="22"
                              Total="8.80"/>
                        </TaxAmounts>
                      </Charge>
                    </PricedEquip>
                    <PricedEquip>
                      <Equipment EquipType="39">
                        <Description>Portasci</Description>
                      </Equipment>
                      <Charge IncludedInEstTotalInd="false"
                          IncludedInRate="false" TaxInclusive="false"
                          Amount="100.00" CurrencyCode="EUR">
                        <TaxAmounts>
                          <TaxAmount CurrencyCode="EUR" Percentage="22"
                              Total="22.00"/>
                        </TaxAmounts>
                      </Charge>
                    </PricedEquip>
                    
                    <!-- Other PricedEquip blocks with further optionals 
                         to book -->
                    
                  </PricedEquips>
                </VehAvailCore>
                <VehAvailInfo>
                  <PricedCoverages>
                    <PricedCoverage>
                      <Coverage Code="23" CoverageType="21">
                        <Details CoverageTextType="Copertura Standard"/>
                      </Coverage>
                      <Charge TaxInclusive="false"
                          Description="Copertura Standard"
                          Amount="0" CurrencyCode="EUR">
                        <TaxAmounts>
                          <TaxAmount CurrencyCode="EUR" Percentage="22"
                              Total="0.00"/>
                        </TaxAmounts>
                      </Charge>
                      <Deductible CurrencyCode="EUR" Amount="1200.00"/>
                    </PricedCoverage>
                    <PricedCoverage>
                      <Coverage Code="18" CoverageType="21">
                        <Details CoverageTextType="Mini-Kasko"/>
                      </Coverage>
                      <Charge TaxInclusive="false"
                          Description="Mini-Kasko"
                          Amount="58" CurrencyCode="EUR">
                        <TaxAmounts>
                          <TaxAmount CurrencyCode="EUR" Percentage="22"
                              Total="12.76"/>
                        </TaxAmounts>
                      </Charge>
                      <Deductible CurrencyCode="EUR" Amount="600.00"/>
                    </PricedCoverage>
                    
                    <!-- Other PricedCoverage blocks with further coverage options
                         to book -->
                    
                  </PricedCoverages>
                </VehAvailInfo>
              </VehAvail>
              
              <!-- Other VehAvail blocks with further quotes -->
              
            </VehAvails>
          </VehVendorAvail>
        </VehVendorAvails>
      </ns1:VehAvailRSCore>
    </ns1:OTA_VehAvailRateRS>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

OTA_VehLocSearch

The OTA_VehLocSearch function can be used to retrieve a list of available pickup/drop-off stations of the car rental company. It may be called without any search criterions to get a full list of available stations.

Request

If you are not interested in a complete list of available stations, use search criterions to filter the results. At the moment address information of the stations are non-formatted and thus the filtering functionality is limited.

Request parameter Description
VehLocSearchCriterion The only filter accepted at the moment is the Address → CityName parameter. Depending on the information that each car rental company provides, this parameter can however be used to search for a specific city name, airport code, ecc.

Response

After processing the request, the system will respond to the caller providing a list of localities where rented vehicles can be picked up or dropped off. Each locality comes in a separate VehMatchedLoc element with a LocationDetail child containing all the information.

Response parameter Description
Code Provides a unique identifier needed for booking and availability requests.
Name Name of the locality
Address Provides further information about the locality, such as its address in a non-formatted way using the AddressLine tags and CityName the name of the city where the locality can be found.
AdditionalInfo → OperationSchedules Provides information about the opening hours of the locality.
Each OperationSchedule block may specify the opening hours for a certain period or day (specified by the Start and End tags) or may be valid for a certain day of the week in general (Mon to Sun tags set to true in the corresponding OperationTimes → OperationTime element).
The information about the operation times should be interpreted as follows:
  • If no operation schedules are given the locality is supposed to be operating 24/7.
  • If more than one OperationSchedule exist for the same period then the OperationTimes → OperationTime elements with the highest Priority attribute is/are valid only.
  • If an OperationTimes → OperationTime element is given with a certain day of the week flagged (Mon, Tue, Weds, Thur, Fri, Sat and/orSun set to true) for an OperationSchedule, then the locality's opening hours for that specific day of the week corresponds to the given OperatingTime blocks indicating that day.
  • An OperationTime element may present a AdditionalOperationInfoCode attribute indicating whether the schedule is valid for a checkout/checkin respectively. Possible values are:
    • 1 - Out of hours checkout and checkin
    • 3 - Out of hours checkout only
    • 4 - Out of hours checkin only
    • 6 - Checkout and checkin
    • 7 - Checkout only
    • 8 - Checkin only
    • 9 - Checkout and out of hours checkin
    • 10 - Checkin and out of hours checkout
    An out of hours operation may indicate that an extra fee has to be paid for the specific operation.
  • If an empty OperationSchedule element is given for a certain period (from Start to End including), i.e. with no OperationTimes given, the locality is closed for the period. This overrides the operation times that are in place for the specific days for the indicated period (even if they have a higher Priority).
In the code example, the location Milano-MXP generally operates from Mondays to Fridays from 07:00 AM to 11:00 PM and Saturdays from 07:00 AM to 01:00 PM. On 24 Dec 2022 it is open from 08:00 AM to 08:00 PM. On 25 Dec, 26 Dec and 31 Dec 2022 it is open from 08:00 AM to 06:00 PM and on 01 Jan 2023 it remains closed.
Locality search request
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.opentravel.org/OTA/2003/05">
  <SOAP-ENV:Body>
    <ns1:OTA_VehLocSearchRQ>
      <VehLocSearchCriterion>
        <Address>
          <CityName>APT</CityName>
        </Address>
      </VehLocSearchCriterion>
    </ns1:OTA_VehLocSearchRQ>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Locality search response
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.opentravel.org/OTA/2003/05">
  <SOAP-ENV:Body>
    <ns1:OTA_VehLocSearchRS>
      <ns1:VehMatchedLocs>
        <ns1:VehMatchedLoc>
          <ns1:LocationDetail Code="98107384" Name="Milano-MXP">
            <Address Remark="MI-MXP">
              <AddressLine>APT Malpensa (MI)</AddressLine>
              <AddressLine>Lun-Ven:08:00/22:00</AddressLine>
              <AddressLine>Sab:09:00/18:30</AddressLine>
              <AddressLine>Tel:+39 02-123456</AddressLine>
              <CityName>Milano - Malpensa</CityName>
            </Address>
            <AdditionalInfo>
              <OperationSchedules>
                <OperationSchedule Start="2022-12-24" End="2022-12-24">
                  <OperationTimes>
                    <OperationTime Start="08:00" End="20:00" Mon="true" Tue="true" Weds="true" Thur="true" Fri="true" Sat="true" Sun="true" Priority="100" />
                  </OperationTimes>
                </OperationSchedule>
                <OperationSchedule Start="2022-12-25" End="2022-12-26">
                  <OperationTimes>
                    <OperationTime Start="08:00" End="18:00" Mon="true" Tue="true" Weds="true" Thur="true" Fri="true" Sat="true" Sun="true" Priority="100" />
                  </OperationTimes>
                </OperationSchedule>
                <OperationSchedule Start="2022-12-31" End="2022-12-31">
                  <OperationTimes>
                    <OperationTime Start="08:00" End="18:00" Mon="true" Tue="true" Weds="true" Thur="true" Fri="true" Sat="true" Sun="true" Priority="100" />
                  </OperationTimes>
                </OperationSchedule>
                <OperationSchedule Start="2023-01-01" End="2023-01-01">
                </OperationSchedule>

                <!-- Other OperationSchedule blocks with operation times for other days -->

                <OperationSchedule Start="2022-01-01" End="2030-12-31">
                  <OperationTimes>
                    <OperationTime Start="07:00" End="23:00" Mon="true" Tue="true" Weds="true" Thur="true" Fri="true" Priority="10" />
                    <OperationTime Start="07:00" End="13:00" Sat="true" Priority="10" />
                  </OperationTimes>
                </OperationSchedule>

              </OperationSchedules>
            </AdditionalInfo>
          </ns1:LocationDetail>
        </ns1:VehMatchedLoc>

        <!-- Other VehMatchedLoc blocks with further stations -->

    </ns1:OTA_VehLocSearchRS>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

OTA_VehModify

The OTA_VehModify function can be used to confirm a reservation that has previously been initiated via the OTA_VehRes function. The rental company may have defined a timeout (usually 10 minutes) that gives you a maximum time that may pass between the OTA_VehRes call and the confirmation before a reservation will be canceled automatically. Once canceled, you won't be able to confirm the reservation anymore. If in doubt, get in contact with the car rental company to find out whether and what timeout was defined for your account.

Please note, that at this stage the function can only be used to confirm a previously initiated reservation. No other modifications are allowed.

Request

In order to use the function to confirm a reservation, the reservation should have already been initiated via the OTA_VehRes function which returned you a unique reservation reservation of Type=16. This ID (or ConfID as it is entitled in the OTA_VehRes response) has to be used to confirm the reservation.

Request parameter Description
UniqueID* The unique reservation reference that the system returned to you in the response of the OTA_VehRes function call. Only the unique reference of Type="16" can be used for the OTA_VehModify function.
VehModifyRQCore* Include this tag with the attribute ModifyType="Book" to indicate that you want to confirm the reservation.
VehModifyRQInfo Contains the RentalPaymentPref tag that can be used to specify details about an eventual pre-payment. The structure of the RentalPaymentPref tag is the same as is the case for the OTA_VehRes function call.
(*) mandatory field

Response

Upon successful processing of a OTA_VehModify request the full reservation record will be returned to the caller. This is the same as the result of a OTA_VehRetRes call and is described more in detail there.

Reservation modification request
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-Env:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.opentravel.org/OTA/2003/05">
  <SOAP-Env:Body>
    <ns1:OTA_VehModifyRQ>
      <UniqueID Type="16" ID="123456"/>
      <VehModifyRQCore ModifyType="Book"/>
      <VehModifyRQInfo>
        <RentalPaymentPref>
          <Voucher Identifier="2144454359350886"/>
          <PaymentAmount CurrencyCode="EUR" Amount="139.86"/>
        </RentalPaymentPref>
      </VehModifyRQInfo>
    </ns1:OTA_VehModifyRQ>
  </SOAP-Env:Body>
</SOAP-Env:Envelope>
Reservation modification response
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.opentravel.org/OTA/2003/05">
  <SOAP-ENV:Body>
    <ns1:OTA_VehModifyRS>
      <ns1:Success/>
      <VehModifyRSCore ModifyStatus="Book">
        <VehReservation ReservationStatus="Reserved">
          …
        </VehReservation>
      </VehModifyRSCore>
    </ns1:OTA_VehModifyRS>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

OTA_VehRes

The OTA_VehRes function can be used to block a quote or make a reservation. The information that have to provided when making the request have to be taken from a previously performed OTA_VehAvailRate request.

Request

In order to block a quote or make a reservation, you need to specify a series of parameters that are described in the following. Most of them are child elements of the VehResRQCore element. Only the details about the preferred coverage option to book has to be put into the VehResRQInfo element.

Pricing information have to be taken from the response of a previously made OTA_VehAvailRate call. Once the system receives a OTA_VehRes request, it performs an internal availability check to get actual quote information and only accepts the quote to be blocked or the reservation to be made if the prices from the request match the result from the internal check. It is thus important that you put monetary amounts from the availability request without modifying into the OTA_VehRes request, otherwise it will be refused.

VehResRQCore parameter Description
VehRentalCore* Describes the basic rental parameters as described for the OTA_VehAvailRate request.
VehPref* Use the Code attribute of the VehMakeModel child element to specify the ACRISS code of the vehicle type that you would like to book. For more details about the VehPref element have a look at the OTA_VehAvailRef function.
Customer* Provides basic information about the primary customer and any additional customers. In order block a quote or make a reservation successfully at least the Name of the Primary customer has to be provided. Alternatively, if you have performed a booking for the same client and know its unique identifier you can also provide the CustomerID as shown in the example to recall the customer details from a previous booking.

The following elements can be used to describe the primary and any additional customer.
- BirthDate Indicates the date of birth of the customer and has to be given as an attribute of the Primary or Additional customer tag respectively.
- PersonName* Specifies the name of the customer. At the moment, only the GivenName and the Surname are considered by the system. Please note that for every customer record, at least the Surname has to be given.
- Document Used to provide information about a legal document of the customer. DocType defines the type of the document that is presented. Use either 2 for passports, 4 for driver's licenses and 5 for national identify documents. Please note that passports and national ids are treated equally by the system and will always be returned as national id documents. DocID specifies the actual document number, DocIssueAuthority the authority that has issued the document and EffectiveDate and ExpireDate the validity period.
- Telephone Telephone number (preferably) including the national prefix to be given as PhoneNumber attribute.
- Email Valid email address of the customer
- Address Address information of the customer. While most fields are self-explaining please note that the CountryName has to be the ISO 3166 two-letter code.
- CustomerID Use this element to specify the unique identifier of a previously registered customer to recall its information automatically. Type has to be 1 (= customer) and ID the unique identifier (from the CRS context!) of the customer. This id can be retrieved from the same CustomerID field of the Customer element of an existing reservation. Please not that the CustomerID can only be used for the Primary customer.
VehicleCharges* Lists all the charges that have to be applied to the quote to be blocked or the reservation to be made. Have a look at the OTA_VehAvailRate function to learn more about vehicle charges.

Please note that while the charges listed in the OTA_VehAvailRate response contain only charges related to the vehicle itself and other mandatory fees or extras, in a OTA_VehRes request you also have to list the charges of all additional equipment and coverage options that you want to include in the booking as well. Use the Purpose attribute of every VehicleCharge record to indicate what the charge is related to. Use 1 for charges related to the vehicle rental, 82 for out of hours fees (if present), 2 for one way fees (if present), 21 for any equipment to book and 4 for a coverage option. Similarly to the response of a OTA_VehAvailRate response, these additional equipment charges should not be included in the rate (IncludedInRate="false"). Together with the estimated taxes they have to be included in the estimated totals (IncludedInEstTotalInd="true") though.
In case a countable equipment has to be added to the booking, a separate charge has to be added for each piece, i.e. if you would like to add two child seats to the booking, add the child seat charge to the VehicleCharges twice.
SpecialEquipPrefs List with additional equipment that has to be included in the booking. Since equipment charges have to be put into the VehicleCharges part of the request, it is sufficient to provide only the equipment type via the EquipType attribute. Use the Quantity attribute to indicate the desired quantity of countable extras.
TotalCharge Specifies the total charge of the quote to block or the reservation to make. The RateTotalAmount is the sum of car rental specific charges only (taxes excluded), while EstimatedTotalAmount considers all the charges including taxes.
VehResRQInfo parameters Description
ResStatus The ResStatus attribute of the VehResRQInfo allows you to specify whether you simply want to block a quote or whether you want to make a booking. Booking can either be done by confirming a reservation straightaway or by using a two-step booking procedure that allows you to first, initiate a booking, then perform other steps (like processing a payment) in-between and afterwards confirming the booking to block an actual vehicle.
If you intend to you the two-step procedure set the ResStatus="Initiate". This will signal to the system that the reservation it creates still has to be confirmed. In order to do so, you'll have to use the OTA_VehModify function later on. Please note, the car rental company may have defined a timeout (usually 10min) that gives you a maximum time frame for confirming the booking. If you do not make it in time to confirm the booking, it will be canceled automatically and you won't be able to confirm it anymore. However, if in doubt, contact the car rental company to get to know whether it has defined a timeout and what it is in detail.
If you'd like to create a reservation that is confirmed straightaway sest ResStatus="Book".
In case this parameter is not given, the system will simply block the quote for the given client. Quotes are usually valid for one week before they expire.
CoveragePrefs Use the CoveragePrefs → CoveragePref tag to indicate the coverage option to be included in the booking. CoverageType has to be set to 21 (= insurance) while Code has to be the code taken from the appropriate record of the respective availability search.
RentalPaymentPref Use this field in case a reservation is made and you want to inform the car rental company about a pre-payment that was made by the client. PaymentAmount takes information about the amount that has been paid. For every payment, also a Voucher with a valid Identifier has to be given in order to identify the payment.
(*) mandatory field

Response

Upon successful processing of a OTA_VehRes request the full reservation record will be returned to the caller. This is the same as the result of a OTA_VehRetRes call and is described more in detail there.

Vehicle reservation request
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.opentravel.org/OTA/2003/05">
  <SOAP-ENV:Body>
    <ns1:OTA_VehResRQ>
      <VehResRQCore>
        <VehRentalCore PickUpDateTime="2020-03-03T09:36:53Z" ReturnDateTime="2020-03-07T09:36:53Z">
          <PickUpLocation LocationCode="98107384"/>
          <ReturnLocation LocationCode="98107384"/>
        </VehRentalCore>
        <VehPref>
          <VehMakeModel Code="CDAR" Name=""/>
        </VehPref>
        <Customer>
          <Primary BirthDate="2000-05-13">
            <PersonName>
              <GivenName>John</GivenName>
              <Surname>Smith</Surname>
            </PersonName>
            <Document DocType="5" DocID="ABCDEF33" DocIssueAuthority="City of Washington D.C."
                EffectiveDate="2017-01-01" ExpireDate="2021-12-31"/>
            <Telephone PhoneNumber="555555"/>
            <Email>j.smith@domain.com</Email>
            <Address>
              <AddressLine>543, 5th Avenue</AddressLine>
              <CityName>Washington</CityName>
              <CountryName>US</CountryName>
              <PostalCode>1234</PostalCode>
              <StateProv>DC</StateProv>
            </Address>
            <!-- Customer ID may be used if customer is already registered and you have
                 the CRS's uid -->
            <!-- CustomerID Type="1" ID="{customer uid}" /-->
          </Primary>
          <Additional BirthDate="2002-07-25">
            <PersonName>
              <GivenName>Emily</GivenName>
              <Surname>Smith</Surname>
            </PersonName>
            <Telephone PhoneNumber="555555"/>
            <Address>
              <AddressLine>543, 5th Avenue</AddressLine>
              <CityName>Washington</CityName>
              <CountryName>US</CountryName>
              <PostalCode>1234</PostalCode>
              <StateProv>DC</StateProv>
            </Address>
          </Additional>
        </Customer>
        <VehicleCharges>
          <VehicleCharge Purpose="1" TaxInclusive="false" IncludedInEstTotalInd="true" IncludedInRate="true" Description="" Amount="40" CurrencyCode="EUR">
            <TaxAmounts>
              <TaxAmount CurrencyCode="EUR" Percentage="22" Total="8.80"/>
            </TaxAmounts>
          </VehicleCharge>
          <VehicleCharge Description="Navigatore" IncludedInEstTotalInd="true" IncludedInRate="false" Purpose="21" TaxInclusive="false" Amount="40.00" CurrencyCode="EUR">
            <TaxAmounts>
              <TaxAmount CurrencyCode="EUR" Percentage="22" Total="8.80"/>
            </TaxAmounts>
          </VehicleCharge>
          <VehicleCharge Description="Portasci" IncludedInEstTotalInd="true" IncludedInRate="false" Purpose="21" TaxInclusive="false" Amount="100.00" CurrencyCode="EUR">
            <TaxAmounts>
              <TaxAmount CurrencyCode="EUR" Percentage="22" Total="22.00"/>
            </TaxAmounts>
          </VehicleCharge>
          <VehicleCharge Description="Seggiolino" IncludedInEstTotalInd="true" IncludedInRate="false" Purpose="21" TaxInclusive="false" Amount="32.80" CurrencyCode="EUR">
            <TaxAmounts>
              <TaxAmount CurrencyCode="EUR" Percentage="22" Total="7.22"/>
            </TaxAmounts>
          </VehicleCharge>
          <VehicleCharge Description="[Cod. 2-B] Mini-Kasko" IncludedInEstTotalInd="true" IncludedInRate="false" Purpose="4" TaxInclusive="false" Amount="58.00" CurrencyCode="EUR">
            <TaxAmounts>
              <TaxAmount CurrencyCode="EUR" Percentage="22" Total="12.76"/>
            </TaxAmounts>
          </VehicleCharge>
        </VehicleCharges>
        <SpecialEquipPrefs>
          <SpecialEquipPref EquipType="13"/>
          <SpecialEquipPref EquipType="4"/>
          <SpecialEquipPref EquipType="7"/>
        </SpecialEquipPrefs>
        <TotalCharge CurrencyCode="EUR" RateTotalAmount="40.00" EstimatedTotalAmount="330.38"/>
      </VehResRQCore>
      <VehResRQInfo ResStatus="Book">
        <CoveragePrefs>
          <CoveragePref Code="18" CoverageType="21"/>
        </CoveragePrefs>
        <RentalPaymentPref>
          <PaymentAmount Amount="100.00" CurrencyCode="EUR"/>
          <Voucher Identifier="VOU-123"/>
        </RentalPaymentPref>
      </VehResRQInfo>
    </ns1:OTA_VehResRQ>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Vehicle reservation response
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.opentravel.org/OTA/2003/05">
  <SOAP-ENV:Body>
    <ns1:OTA_VehResRS>
      <ns1:VehResRSCore>
        <VehReservation ReservationStatus="Reserved">
          
          <!-- Vehicle reservation details -->
        
        </VehReservation>
      </ns1:VehResRSCore>
    </ns1:OTA_VehResRS>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

OTA_VehRetRes

The OTA_VehRetRes function can be used to retrieve a previously performed reservation or blocked quote. All you need to request the reservation details is the reservation's uid/reference.

Request

After blocking a quote or making a reservation successfully, the system returns the full reservation to the caller. This record contains a unique reservation reference that has to be given to this function in order to recall all the reservation details.

Request parameter Description
UniqueID* Use the ID field of this element of the VehRetResRQCore block to provide the unique reference of the reservation that you are requesting the details for. Note that for a reservation lookup only references of Type="16" (= reference) are valid.
(*) mandatory field

Response

Upon successful processing of a OTA_VehRetRes request the full reservation record will be returned to the caller enclosed in a VehReservation tag. As illustrated in the example, this record is very similar to the data provided during a OTA_VehRes request and will only be described very briefly.

Response parameter Description
ReservationStatus This attribute of the VehReservation indicates whether the reservation record refers to a blocked quote or a booking. For the former, ReservationStatus will be set to Requested.
If you used the two-step procedure to first create and then confirm the booking, ReservationStatus may take the value Initiate. In this case you still have to use the OTA_VehModify function to confirm the booking.
If the status is set to Reserved the reservation has been confirmed.
If you find the status Cancelled the reservation has been cancelled.
Customer Lists the customers that are linked to the reservation. You should always find the Primary customer information with a valid CustomerID that you may use for later reference. For a more detailed description of all the other fields refer to the OTA_VehRes description.
VehSegmentCore This element contains the same information as described for the VehAvailCore element of the OTA_VehAvailRate response and does not need much explanation. Just two notes:
1) Since the CRS system only works with UTC timestamps internally, the PickUpDateTime and ReturnDateTime attributes of the VehRentalCore will be given in UTC (identifiable by the Z suffix). However, in order to enhance readability, another two attributes PickUpLocalDateTime and ReturnLocalDateTime are provided as well specifying the pickup and return dates/times in local time (considering the timezone of the car rental company).
2) While equipment options of the OTA_VehAvailRate response are never included in the TotalCharge this may be different for an actual reservation record as in this case, all equipment options that have actually been included in the reservations will be considered for the EstimatedTotalAmount attribute of the TotalCharge. Hence, if the IncludedInEstTotalInd attribute is set to true for an equipment option it can be considered included in the quote/booking.

Additionally to the previously described information you can find two ConfID values. One will be of Type=16 which gives you the unique reservation reference that you'll need to look up the reservation again afterwards. The other gives you a more readable quote (Type="23", provisional reservation), reservation (Type="14") or contract (Type="39") number depending on the progress of the given reservation record. This second ConfID is provided for information purposes only and may not be used to recall reservation information through this API. It might be useful however for operators of a car rental company, in case you need personal support for a reservation.
VehSegmentInfo Again, this part of the response is similar to its VehAvailInfo counterpart of a OTA_VehAvailInfo response containing available coverage options that can be included in the booking. In case there is one PricedCoverage option with IncludeInEstTotalInd="true" it can be considered included in the quote or reservation.
Vehicle reservation retrieval request
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.opentravel.org/OTA/2003/05">
  <SOAP-ENV:Body>
    <ns1:OTA_VehRetResRQ>
      <VehRetResRQCore>
        <UniqueID Type="16" ID="{reservation reference}"/>
      </VehRetResRQCore>
    </ns1:OTA_VehRetResRQ>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Vehicle reservation retrieval response
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.opentravel.org/OTA/2003/05">
  <SOAP-ENV:Body>
    <ns1:OTA_VehRetResRS>
      <ns1:VehRetResRSCore>
        <VehReservation ReservationStatus="Reserved">
          <Customer>
            <Primary BirthDate="2000-05-13">
              <CustomerID Type="1" ID="75854"/>
              <PersonName>
                <GivenName>John</GivenName>
                <Surname>Smith</Surname>
              </PersonName>
              <Telephone PhoneNumber="555555"/>
              <Email>j.smith@domain.com</Email>
              <Address>
                <AddressLine>543, 5th Avenue</AddressLine>
                <CityName>Washington</CityName>
                <CountryName>US</CountryName>
                <PostalCode>1234</PostalCode>
                <StateProv>DC</StateProv>
              </Address>
              <Document DocType="5" DocID="ABCDEF33" DocIssueAuthority="City of Washington D.C."
                  EffectiveDate="2017-01-01" ExpireDate="2021-12-31"/>
            </Primary>
            
            <!-- Additional customer information if available -->
            
          </Customer>
          <VehSegmentCore>
            <ConfID Type="16" ID="71603"/>
            <ConfID Type="14" ID="2020/00003 MI-MXP"/>
            <VehRentalCore PickUpDateTime="2020-03-03T09:36:53Z"
                ReturnDateTime="2020-03-07T09:36:53Z"
                PickUpLocalDateTime="2020-03-03T10:36:53"
                ReturnLocalDateTime="2020-03-07T10:36:53">
              <PickUpLocation LocationCode="98107384"/>
              <ReturnLocation LocationCode="98107384"/>
            </VehRentalCore>
            <Vehicle Code="CDAR" CodeContext="SIPP">
              <VehMakeModel Code="CDAR"/>
            </Vehicle>
            <RentalRate>
              <RateDistance Unlimited="false" DistUnitName="km" Quantity="1000" VehiclePeriodUnitName="Day"/>
              <VehicleCharges>
                <VehicleCharge Purpose="1" TaxInclusive="false" IncludedInEstTotalInd="true"
                    IncludedInRate="true" Description="2018 (km illimitati)" Amount="40" CurrencyCode="EUR">
                  <TaxAmounts>
                    <TaxAmount CurrencyCode="EUR" Percentage="22" Total="8.80"/>
                  </TaxAmounts>
                </VehicleCharge>
              </VehicleCharges>
            </RentalRate>
            <PricedEquips>
              <PricedEquip>
                <Equipment EquipType="13">
                  <Description>Navigatore</Description>
                </Equipment>
                <Charge IncludedInEstTotalInd="true" IncludedInRate="false" TaxInclusive="false"
                    Amount="40.00" CurrencyCode="EUR">
                  <TaxAmounts>
                    <TaxAmount CurrencyCode="EUR" Percentage="22" Total="8.80"/>
                  </TaxAmounts>
                </Charge>
              </PricedEquip>

              <!-- Other PricedEquip blocks with further optionals 
                   to book -->

            </PricedEquips>
            <TotalCharge CurrencyCode="EUR" RateTotalAmount="40.00" EstimatedTotalAmount="330.38"/>
          </VehSegmentCore>
          <VehSegmentInfo>
            <PricedCoverages>
              <PricedCoverage>
                <Coverage Code="23" CoverageType="21">
                  <Details CoverageTextType="[Cod. 2-A] - Copertura Standard"/>
                </Coverage>
                <Charge IncludeInEstTotalInd="false" TaxInclusive="false"
                    Description="[Cod. 2-A] - Copertura Standard" Amount="0" CurrencyCode="EUR">
                  <TaxAmounts>
                    <TaxAmount CurrencyCode="EUR" Percentage="22" Total="0.00"/>
                  </TaxAmounts>
                </Charge>
                <Deductible CurrencyCode="EUR" Amount="1200.00"/>
              </PricedCoverage>
              
              <!-- Other PricedCoverage blocks with further coverage options
                   to book -->

            </PricedCoverages>
          </VehSegmentInfo>
        </VehReservation>
      </ns1:VehRetResRSCore>
    </ns1:OTA_VehRetResRS>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

OTA_VehCancel

The OTA_VehCancel function can be used to cancel a previously performed reservation. All you need to do so is the reservation's uid/reference.

Request

After making a reservation successfully, the system returns the full reservation to the caller. This record contains a unique reservation reference that has to be given to this function in order to cancel the reservation.

Request parameter Description
UniqueID* Use the ID field of this element of the VehCancelRQCore block to provide the unique reference of the reservation that you are requesting to cancel. Note that for a reservation lookup only references of Type="16" (= reference) are valid.
(*) mandatory field

Response

Upon successful processing of a OTA_CancelRes request the system will respond to the caller confirming the cancellation of the reservation providing the CancelStatus="Cancelled" attribute of the VehCancelRSCore block.

Response parameter Description
CancelStatus This attribute of the VehCancelRSCore indicates that the reservation has been cancelled and should be set to Cancelled.
Vehicle reservation cancellation request
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.opentravel.org/OTA/2003/05">
  <SOAP-ENV:Body>
    <ns1:OTA_VehCancelRQ>
      <VehCancelRQCore>
        <UniqueID Type="16" ID="{reservation reference}"/>
      </VehCancelRQCore>
    </ns1:OTA_VehCancelRQ>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Vehicle reservation cancellation response
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.opentravel.org/OTA/2003/05">
  <SOAP-ENV:Body>
    <ns1:OTA_VehCancelRS>
      <ns1:Success/>
      <VehCancelRSCore CancelStatus="Cancelled"/>
      <VehCancelRSInfo/>
    </ns1:OTA_VehCancelRS>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

CRS Booking Engine

The CRS Booking Engine documentation has been incorporated into this document. For now, the can be found under the following link: https://carrentalsoftware.myappy.it/web/docs/CRSBooker-v1.3.pdf

Technical support

Introduction

If you are an authorised broker and need technical assistance for your implementation please connect to My Appy Help Center on https://helpcenter.myappy.it. Support via email is not given at this point. If you do not have an account on Help Center, yet, or if you have got an account for a specific client on Car Rental Software but would like to open a new communication channel for another client, compile the form below to have your personal Help Center account configured accordingly.

Request access to My Appy Help Center

Please compile the form below to have your personal access to My Appy Help Center configured accordingly. Do not forget to provide your email address as it will be used to create your account. Afterwards, an invitation will be sent to this email address containing your personal credentials that you'll have to use to access Help Center.
In the broker id field insert the unique identifier that the car rental company has provided to you to be used for the communication with the web service.
Please note that only complete submissions including a correct Broker ID will be considered. All other requests will be discarded without notice.

If you experience problems requesting your Help Center account you can get in touch with us via support@myappy.net. Please remember however that email support is only given for the setup of your account. No technical questions or doubts regarding the APIs will receive response via email.

Form compilation
Broker name             - The name of your company, e.g.
Car rental company name - The name of the car rental company that you want to connect to
Contact name            - The name of the person that is requesting access to Help Center
Contact surname         - Them surname of the person that is requesting access to Help Center
Email address           - The contact's email address
Broker ID               - The unique broker ID/username that the car rental company provided to you