Incremental Updates


This service enables the customer to poll for all new/ up-to-date flight prices that Travelfusion obtains from any source, as soon as it is obtained. 
To receive this data:

1) Poll repeatedly until no data is returned.
2) Stop polling for a period between 1 and 5 minutes
3) Go back to step 1

Important note, all data returned is valid for 1 adult only. 
You cannot necessarily multiply it by the number of adults to get a total price for a group of travellers. 
Please contact Travelfusion if you need to use this data for multiple adults.

Polling

The polling request looks like this:

<CommandList>
    <GetIncrementalUpdates>
        <XmlLoginId>***</XmlLoginId>
        <LoginId>***</LoginId>
        <LastPoll>34534</LastPoll>
        <Supplier>ezy</Supplier> <!-- Mandatory. 1 supplier at a time -->
        <CompressedSegments>true</CompressedSegments> <!-- must be set to 'true' -->
    </GetIncrementalUpdates>
</CommandList>

The value of 'LastPoll' should be whatever you received in our previous response querying for the same supplier in the 'LastPoll' element (use 0 in case of no previous requests), i.e. you will have to track 'LastPoll' value per supplier.

You must submit CompressedSegments with value 'true'. As a result the 'SegmentList' element (see below) will be omitted and a compressed version will be returned instead. The format is described here: Compressed Segments.


The response looks like this:

<CommandList>
      <LoginId>*****</LoginId>
      <LastPoll>73737</LastPoll>
      <FaresList>
         <Fares>
            <Supplier>ryanair</Supplier>
            <Origin>
               <Code>ALC</Code>
               <Type>airport</Type>
            </Origin>
            <Destination>
               <Code>GSE</Code>
               <Type>airport</Type>
            </Destination>
            <OutwardDate>29/05/14-08:54</OutwardDate>
            <TravellerType>adult</TravellerType>
            <TravellerNumber>1</TravellerNumber>
            <DoNotUseForOneways>false</DoNotUseForOneways>
            <DoNotUseForRoundtrips>false</DoNotUseForRoundtrips>
            <IsReturnPartOfRoundtrip>true</IsReturnPartOfRoundtrip>
            <GroupList>
               <Group>
                  <OutwardList>
                     <Outward>
                        <CacheInfo>
                           <CacheDataAgeSeconds>356</CacheDataAgeSeconds>
                        </CacheInfo>
                        <Price>
                           <Amount>1022.00</Amount>
                           <Currency>SEK</Currency>
                           <PriceIncludesTax>true</PriceIncludesTax>
                           <TaxItemList>
                              <TaxItem>
                                 <Name>Taxes and Fees</Name>
                                 <Amount>73.00</Amount>
                                 <Currency>SEK</Currency>
                              </TaxItem>
                           </TaxItemList>
                        </Price>
                        <Duration>215</Duration>
                        <SegmentList>
                           <Segment>
                              <Origin>
                                 <Code>ALC</Code>
                                 <Type>airport</Type>
                              </Origin>
                              <Destination>
                                 <Code>GSE</Code>
                                 <Type>airport</Type>
                              </Destination>
                              <DepartDate>29/05/14-06:40</DepartDate>
                              <ArriveDate>29/05/14-10:15</ArriveDate>
                              <Duration>215</Duration>
                              <TFOperator>
                                 <Name>Ryanair</Name>
                                 <Code>FR</Code>
                              </TFOperator>
                              <TFVendingOperator>
                                 <Name>Ryanair</Name>
                                 <Code>FR</Code>
                              </TFVendingOperator>
                              <Operator>
                                 <Name>Ryanair</Name>
                                 <Code>FR</Code>
                              </Operator>
                              <VendingOperator>
                                 <Name>Ryanair</Name>
                                 <Code>FR</Code>
                              </VendingOperator>
                              <FlightId>
                                 <Code>FR9086</Code>
                                 <Number>9086</Number>
                              </FlightId>
                              <TravelClass>
                                 <SupplierClass>Economy With Restrictions</SupplierClass>
                              </TravelClass>
                              <SegmentMayEndWithAStop>false</SegmentMayEndWithAStop>
                           </Segment>
                        </SegmentList>
                     </Outward>
                  </OutwardList>
               </Group>
            </GroupList>
         </Fares>
         ...........
         ...........
      </FaresList>
   </GetIncrementalUpdates>
</CommandList>


Polling for grouped supplier could yield different response, 'Price' element could appear at 'Group' level, leg prices might not be present, example(with compressed segments mentioned below enabled):

<Group>
   <Price>
      <Amount>323.00</Amount>
      <Currency>EUR</Currency>
      <PriceIncludesTax>true</PriceIncludesTax>
      <TaxItemList>
         ...........
         ...........
      </TaxItemList>
   </Price>
   <OutwardList>
      <Outward>
         <CacheInfo>
            <CacheDataAgeSeconds>354</CacheDataAgeSeconds>
         </CacheInfo>
         <Duration>145</Duration>
         <CompressedSegmentList>
            ...........
            ...........
         </CompressedSegmentList>
      </Outward>
   </OutwardList>
   <ReturnList>
      <Return>
         <CacheInfo>
            <CacheDataAgeSeconds>354</CacheDataAgeSeconds>
         </CacheInfo>
         <Duration>140</Duration>
         <CompressedSegmentList>
            ...........
            ...........
         </CompressedSegmentList>   
      </Return>
   </ReturnList>
</Group>

Please refer to CheckRouting Response for detailed descriptions of generic xml elements, specifically group and leg level 'Price' description, to be able to determine roundtrip price correctly for grouped suppliers.

Note 
For some grouped suppliers outward and return leg's segments' departure date might not match 
FaresList>Fares>OutwardDate/ReturnDate. Please use Segment's departure date in such cases to determine actual outward/return dates.

Note 
Passenger breakdown is not provided within 'Price' element at the moment as prices are per one adult.

The following 3 elements have special meanings:

<DoNotUseForOneways>: If true, this indicates that the price is only valid as part of a roundtrip flight.
<DoNotUseForRoundtrips>: If true, this indicates that the price is only valid as a oneway flight.
<IsReturnPartOfRoundtrip>: If true, then this data was received as the return part of a roundtrip search. 
                                        This means that if you use this data for an outward flight, there is a risk that 
                                        the price will not be fully accurate due to currency conversion issues.
                                        When this flag is false, the flight was an outward leg, and so there is a similar 
                                        risk in using the data as the return part of a roundtrip. 

Travelfusion has now released a more concise version of this specification, as it currently creates a large amount of 
unnecessary XML data (EDIT: see CompressedSegments added in the request above)
All customers are now required to move to the new format within a reasonable amount of time (3 months).


Comments