Frequently Asked Questions

Question: Why we selected SOAP instead of REST?
Answer:

Quote from http://spf13.com/post/soap-vs-rest
"REST doesn't have standard messaging system and expects clients to deal with communication failures by retrying. SOAP has successful/retry logic built in and provides end-to-end reliability even through SOAP intermediaries."

Question: What is the recommended time interval to retrieve next LowFareSearchAsynch results?
Answer:

About a notification service that it will notify the client when the results are ready, so you don't need to try to get the result on different time intervals. This service was deprecated and no longer available. At this moment there is no recommended time interval to retrieve next results.

Question: I'm using Microsoft Visual Studio. I've imported the WDSL files and schemas and am trying to connect to Travelport Universal API. I receive an error referring to conversion of type like this:

"Unable to generate a temporary class (result=1). error CS0029: Cannot implicitly convert type 'int' to 'int[]'"

Answer:

This is a limitation with the way WSDL files are converted by Microsoft Visual Studio. This results in some arrays being converted into jagged arrays (double arrays, [][] in C#).

In order to resolve the problem for C#:
· Import the files from Travelport Universal API as normal.
· Do a global search/replace in Visual Studio – search for [][] and replace with []. In Visual Studio 2010 this can be done by selecting Edit – Find and Replace – Replace in Files.

Question: When sending a request I get an error message that refers to configuration or access issues.

Examples include:
<faultstring>Required element in the request is missing-POS/Source</faultstring>
<faultstring>Preferred Provider: 1G is not in the permissible list of providers for this user and operation.</faultstring>
<faultstring>No provider/supplier is configured for this user for the requested transaction.</faultstring>
<faultstring>User Not Authorized to view Fares of the requested Provider - 1G</faultstring>
<faultstring>Invalid provider specified.</faultstring>

Answer:

These error messages are often returned because a target branch have not been specified for the request. The TargetBranch attribute identifies which office location should be searched/used for the request. When the target branch is not specified, Travelport Universal API cannot access the required data.

To resolve this issue:
Find the target branch code to be used. When you received your credentials for Travelport Universal API, this is normally shown as:
BranchCode="P11111"
For each request you send, add the value for branch code to the TargetBranch attribute for the request. This can be done like this:
<air:AirPriceReq FareRuleType="short" xmlns:air="http://www.travelport.com/schema/air_v11_0" xmlns:com="http://www.travelport.com/schema/common_v8_0" TargetBranch="P183202">

Question: I've sent a transaction to Travelport Universal API and received a response, but when I try to send other types of transactions I receive an error.

The error can look like this:
<faultstring>Unrecognized document version system_v5_0</faultstring>
- <detail>
- <common_v10_0:ErrorInfo xmlns:common_v10_0="http://www.travelport.com/schema/common_v10_0">
<common_v10_0:Code>1022</common_v10_0:Code>
<common_v10_0:Service>WEBSVC</common_v10_0:Service>
<common_v10_0:Type>Business</common_v10_0:Type>
<common_v10_0:Description>Please check service endpoint.</common_v10_0:Description>
<common_v10_0:TransactionId>CC1038730A07581201B962C92775A741</common_v10_0:TransactionId>
</common_v10_0:ErrorInfo>
</detail>

The error can also take the form of a HTTP error code 500 – Internal Server Error.

Answer:

Travelport Universal API uses different HTTP endpoints for each transaction type. It is important that you find the correct endpoint to use for each type of transaction you is sending (e.g. LowFareSearchReq, AirPriceReq). The endpoints to use can be found here: http://support.travelport.com/webhelp/uapi/Getting_Started/Sending_Requests/Universal_API_Services_and_Schema.htm

The listed address needs to be added to the regular URL (e.g. https://americas.copy-webservices.travelport.com/B2BGateway/connect/uAPI/).

Question: How are flight connections returned from e.g. a low fare search?
Answer:

Connections are used to indicate air segments that are not a stop and should be used to build routings applicable for e.g. a shopping response. The segment index refers to the index for segments in the order they are returned.

When creating a routing, it is also important to take Group attribute on each segment into consideration. This value indicates direction (group 0=outbound and group 1=inbound for a return search).

Example 1: GDS return fares from Copenhagen to Auckland. One air pricing solution looks like this:
<air:AirPricingSolution Key="1519T" TotalPrice="GBP14233.40" BasePrice="DKK122500.00" ApproximateTotalPrice="GBP14233.40" ApproximateBasePrice="GBP13758.00" EquivalentBasePrice="GBP13758.00" Taxes="GBP475.40">
<air:AirSegmentRef Key="926T" /> - this is segment index 0 and refers to a CPH-BKK flight with Group="0"
<air:AirSegmentRef Key="928T" /> - this is segment index 1 and refers to a BKK-AKL flight with Group="0"
<air:AirSegmentRef Key="956T" /> - this is segment index 2 and refers to a AKL-DXB flight with Group="1"
<air:AirSegmentRef Key="958T" /> - this is segment index 3 and refers to a DXB-FRA flight with Group="1"
<air:AirSegmentRef Key="960T" /> - this is segment index 4 and refers to a FRA-CPH flight with Group="1"
AirPricingInfo removed for clarity
<air:Connection SegmentIndex="0" />
<air:Connection SegmentIndex="2" />
<air:Connection SegmentIndex="3" />
</air:AirPricingSolution>

Based on the group and the SegmentIndex value in Connection, it is now possible to create the routing:
Outbound: CPH-BKK-AKL
Inbound: AKL-DXB-FRA-CPH

Example 2: One-ways low cost carrier fares from CPH to LGW. Here the same pricing solution contains multiple flight options for the same price.
<air:AirPricingSolution Key="37T" TotalPrice="DKK1052.00" BasePrice="DKK688.00" ApproximateTotalPrice="GBP125.34" ApproximateBasePrice="GBP81.97" Taxes="DKK364.00">
<air:AirSegmentRef Key="25T" /> - this is segment index 0 and refers to CPH-ARN flight DY5152 with Group="0"
<air:AirSegmentRef Key="27T" /> - this is segment index 1 and refers to ARN-LGW flight DY4459 with Group="0"
<air:AirSegmentRef Key="29T" /> - this is segment index 2 and refers to CPH-ARN flight DY4160 with Group="0"
<air:AirSegmentRef Key="27T" /> - this is segment index 3 and refers to ARN-LGW flight DY4459 with Group="0"
AirPricingInfo removed for clarity
<air:Connection SegmentIndex="0" />
<air:Connection SegmentIndex="2" />
</air:AirPricingSolution>

Once you have an air segment for a group that is not a connection, you have a complete route option. The next flight segments will refer to a new routing option. Based on the connection index, there are two different options for this price:
CPH-ARN-LGW using DY5152 and DY4459 or
CPH-ARN-LGW using DY4160 and DY4459.