1. Search

Initiate Request:

<request version="4.0">
  <auth>
    <username>example</username>
    <password>example</password>
    <agent>example</agent>
  </auth>
  <flights-search roundTrip="true">
    <dates>
      <departure>2014-12-15</departure>
      <departureReturn>2014-12-25</departureReturn>
    </dates>
    <area type="origin" entityType="location" entityID="3474"/>
    <area type="destination" entityType="terminal" entityID="AMS"/>
    <filters>
      <filter type="isNonStop">0</filter>
      <filter type="plusMinusDays">3</filter>
      <filter type=”cabinClasses”>economy business first premiumEconomy</filter>
    </filters>
    <pax-group customerCountryCode="UK">
      <pax>
        <adults count="2"/>
        <children count="2">
          <age>5</age>
          <age>8</age>
        </children>
      </pax>
    </pax-group>
    <currencies default="EUR">
      <currency code="EUR"/>
      <currency code="GBP"/>
      <currency code="USD"/>
    </currencies>
  </flights-search>
</request>
Request Parameters:

 Parameter Type Comments
flight-search @roundTripbooleanis the search made for 1 way or with return
dates/departureYYYY-mm-ddthe date of departure flight
dates/departureReturnYYYY-mm-ddthe date of the return flight
area @typeorigin/destinationorigin or destination
area @entityTypelocation/terminallocation/terminal/metropolitan code
area @entityIdstring either cityid or a 3 letter terminal code  
filter/@type = isNonStop boolean 1 means show only non-stop flights, 0 shows flights with stops
filter/@type = cabinClasses string one or more of the following classes:  economy business first premiumEconomy
filter/@type = plusMinusDays  int flexible dates by X days
 pax-group @customerCountryCode country code2 letter ISO code for the customer country
 pax nodethe pax node describing the people who should be on the flight
 pax/adults @count intthe number of adults
 pax/children @count intthe number of children
 pax/children/age intthe age of each child
 currencies @defaultcurrency 3 letter ISO code for the default currency
 currencies/currency @code currency3 letter ISO code for the accepted currency

Notes

  1. dates/departureReturn is mandatory only if the @roundTrip option is set to "true"
  2. filter nodes are not mandatory and can be omitted if not used
  3. customerCountryCode is mandatory, and the same code should be used for the entire session flow. i.e. when searching for a specific country code, you must use the same country code for booking.
  4. children are optional. if you are not search for a room with children, do not include the children node.
  5. currencies are returned according to the list in the request. properties that use a currency that does not appear on the list will be converted to the "default" currency. to remove restrictions and return all currencies, add an attribute to the currencies node: all="true"
  6. the "metropolitan" code is a IATA code of the city (like "LON" for london, or "PAR" for paris)
Asynchronous Response:
<response success="1" session="dv.UpX7Bz0osA">
  <search status="working">
    <server>http://mishor.example.com/</server>
  </search>
</response>

The Asynchronous response consists of the following elements:
Parameter Type Comments
response @successboolean was the request successful
response @sessionstring the search id of the requested search
serverurlthe url  of the search server to use for polling and booking

Open Jaw

In order to run an "Open jaw" search, you will need to add the following node under the "flight-search" node in the request:

<return> 
   <area type="origin" entityType="terminal" entityID="PAR"/>
   <area type="destination" entityType="terminal" entityID="AMS"/>
</return>

The "return" node details the 2nd origin and destination. if the flight goes from A->B->C->D, the "return" node holds the "C" and "D" parts.

Initiate Poll

With the search response session id, it is now possible to start polling the results. For a description of the flow, please revert to section 3: Search Flow
Poll Request
<request version="4.0">
  <auth>
    <username>example</username>
    <password>example</password>
    <agent>example</agent>
  </auth>
  <flights-poll session="dv.UpX7Bz0osA" last="0"/>
</request>

Parameter Type Comments
flights-poll @sessionstringthe session id of the requested search
flights-poll @lastintthe last @last attribute received from the previous poll

Poll Response

<response success="1" session="dv.UpX7Bz0osA">
  <job status="done"/>
  <results last="1" count="33">
    <result token="dv.1210273892" providers="InnstantTravel" on-request="0">
      <price minCommissionablePrice="790.26" currency="EUR" final="0" commissionable="1" billable="1"/>
      <outbound>
        <connection id="0">
          <info travelTime="PT7H25M"/>
          <segment>
            <flightNumber>795</flightNumber>
            <carrierCode>TK</carrierCode>
            <class>Economy</class>
            <departure terminal="TLV" date="2014-12-15" time="12:30:00"/>
            <arrival terminal="IST" date="2014-12-15" time="14:50:00"/>
          </segment>
          <segment>
            <flightNumber>453</flightNumber>
            <carrierCode>TK</carrierCode>
            <class>Economy</class>
            <departure terminal="IST" date="2014-12-15" time="18:15:00"/>
            <arrival terminal="DOK" date="2014-12-15" time="20:10:00"/>
          </segment>
        </connection>
        <connection id="1">
          <info travelTime="PT8H05M"/>
          <segment>
            <flightNumber>791</flightNumber>
            <carrierCode>TK</carrierCode>
            <class>Economy</class>
            <departure terminal="TLV" date="2014-12-15" time="01:20:00"/>
            <arrival terminal="IST" date="2014-12-15" time="03:30:00"/>
          </segment>
          <segment>
            <flightNumber>451</flightNumber>
            <carrierCode>TK</carrierCode>
            <class>Economy</class>
            <departure terminal="IST" date="2014-12-15" time="07:25:00"/>
            <arrival terminal="DOK" date="2014-12-15" time="09:20:00"/>
          </segment>
        </connection>
      </outbound>
      <inbound>
        <connection id="0">
          <info travelTime="PT6H40M"/>
          <segment>
            <flightNumber>454</flightNumber>
            <carrierCode>TK</carrierCode>
            <class>Economy</class>
            <departure terminal="DOK" date="2014-12-25" time="21:15:00"/>
            <arrival terminal="IST" date="2014-12-25" time="23:20:00"/>
          </segment>
          <segment>
            <flightNumber>792</flightNumber>
            <carrierCode>TK</carrierCode>
            <class>Economy</class>
            <departure terminal="IST" date="2014-12-26" time="00:50:00"/>
            <arrival terminal="TLV" date="2014-12-26" time="02:55:00"/>
          </segment>
        </connection>
      </inbound>
    </result>
    ...    
  </results>
</response>


Parameter Type Comments
response @successbooleanwas the request successfull
job @statusstring"working" or "done"

results @last intkeep this number for the next poll (see request)
results @count inthow many results were returned in this specific poll response
result @id intthe identifier of the specific result
result @providers stringcomma separated string of providers available for this property
result @availableBoards stringcomma separated string of boards available for this property
result/price node availablity coming from innstant.travel
result/price @currency currency 3 letter ISO currency code
result/price @minCommissionablePrice doublethe minimum commissionable price - appears only if such result is available
result/price @minNonCommissionablePrice doublethe minimum non-commissionable price - appears only if such result is available
result/price @minAllowedPrice doubleminimum price to be displayed for B2C environment (BAR rate)
result/price @on-request booleancan the result be confirmed immediately 
outboundnodethe outbound flight information 
outbound/connectionnodeconnection is an "option" for a flight plan between the departure and arrival terminals
outbound/connection @id intan identifier for the connected
outbound/connection/info @travelTime  date interval stringISO 8601 time interval string to show the duration of the entire flight
outbound/connection/segmentnode a segment is one "leg" of a flight plan 
outbound/connection/segment/
flightNumber
integerthe flight number 
outbound/connection/segment/
carrierCode
carrier code2 letter IATA carrier code
outbound/connection/segment/
class
tringsegment flight class
outbound/connection/segment/
departure @terminal
terminal code3 letter ISO code of the departure terminal 
outbound/connection/segment/
departure @date
datedeparture date in the terminal local time zone
 outbound/connection/segment/
departure @time
timedeparture time in the terminal local time zone 
outbound/connection/segment/
arrival @terminal
terminal code3 letter ISO code of the arrival terminal
outbound/connection/segment/
arrival @date
datearrival date in the terminal local time zone
 outbound/connection/segment/
arrival @time
timearrival time in the terminal local time zone

Notes

  1. The first poll request should be sent at least 3 seconds after the search response. You also need to wait at least 3 seconds between poll requests.
  2. If there are no results from your direct providers, the non-billable-price node will not be returned
  3. it is not allowed to add commission on top of non-commissionable items
  4. B2C platforms MUST make sure that they never show prices that are lower than the minAllowedPrice attribute value
  5. Dates and Times are returned in the local terminal timezone
  6. the @travelTime format is based on the ISO 8601 standard. for example, "P3DT4H15M" means 3 days, 4 hours and 15 mintues. "P" is the prefix, "T" means the time. In case the carrier does not support this feature, the travelTime will be returned as "P0DT0H0M";



Comments