Add Offer Full Payload API Reference
POST |
book/airoffer/reservationworkbench/{workbenchID}/offers/buildfromproducts For {workbenchID} send the workbench identifier returned in ReservationResponse/Identifer/value in the workbench create response. Base path: Pre-production https://api.pp.travelport.com/11/air/ Production https://api.travelport.com/11/air/ |
Related Content: Booking Guide, Booking Session Workflow
Use the Add Offer full payload request to add an offer to the reservation workbench as part of the booking workflow. The full payload request sends full itinerary details instead of identifiers from the Search response as in the reference payload request.
Add Multiple Offers (GDS)
Add offer to expired booking (GDS only)
You can use this or the reference payload request to add an offer to an existing reservation, such as when the previously added offer has expired and can no longer be booked. Start with a post-commit workbench. GDS only; not supported for NDC.
Pricing modifiers and brand information
The full payload request supports optional pricing modifiers and/or brand information. You must send these modifiers during the initial booking workbench session - you cannot add them later.
-
Pricing modifiers: If no pricing modifier is sent, the auto stored fare is added to the reservation. If a requested modifier does not have any fares associated with it, the Add Offer step returns a successful response but the Commit step will fail and return the error message No Fare Found.
-
Brand information: You can store fares with brand information at either or both the offer or segment level.
- To store brand information at the offer level, send PricingModifiersAir/Brand/tier with any valid brand tier value.
- To store brand information at the segment level, send the brand tier with the flight segment in ProductCriteriaAir/SpecificFlightCriteria/brandtier. You can send brandTier for any or all segments.
- There is no change in the response when brand information is requested. Brand details are returned after booking in the Reservation Retrieve.
Request
Also see Authorization and Common Headers.
Query Parameters
None.
Request Body
Basic Add Offer Request - Full Payload
Object |
Description |
Required/Optional |
---|---|---|
OfferQueryBuildFromProducts
|
Top level object. Contains BuildFromProductsRequest. |
Required |
BuildFromProductsRequest |
Top level object. Contains PassengerCriteria, ProductCriteriaAir, and PricingModifiersAir (optional). |
Required |
Defines the type of passenger. Send one PassengerCriteria object for each passenger type code (PTC). For a full list of PTCs, see the Tools page for the SOAP/XML API Reference Data file. May include TravelerGeographicLocation. |
Required |
|
|
The PTC of the passenger type. Any traveler sent without a PTC value is defaulted to ADT. PTC can be sent or omitted for ADT passenger. AirReservation defaults the PTC to ADT and returns it in the Reservation Retrieve. |
Required |
|
The number of passengers in that PTC for this request. Default is 1. |
Required |
|
The age of the passenger. Notes on PTC and age
|
Optional |
TravelerGeographicLocation |
Optional object for requesting local citizen/local resident fares for Spain and associated islands. You must also send a PTC relevant to the local resident fares; e.g., ADR for adult resident, CHR for child resident.
GDS only; not supported for NDC.
|
Optional |
|
String. IATA code specifying the location relevant to the local citizen//local resident fare. |
Optional |
|
String. The type of location. Supported values are
|
Optional |
ProductCriteriaAir |
Array. Each instance is one leg of the itinerary. Includes one or more SpecificFlightCriteria objects. |
Required |
SpecificFlightCriteria |
Array. Each instance is one flight on that leg. |
Required |
|
String. IATA code of airline carrier for flight. |
Required |
|
String. Flight number assigned by airline. |
Required |
|
String. Departure date of flight in YYYY-MM-DD format (e.g., departureDate="2024-12-06") |
Required |
|
String. Departure time of flight. HH:MM:SS (24-hour) format (e.g., departureTime="18:00"). |
Required |
|
String. Arrival date of flight in YYYY-MM-DD format. |
Required |
|
String. Arrival time of flight in HH:MM:SS (24-hour) format. |
Required |
|
String. IATA airport code of departure. |
Required |
|
String. IATA airport code of arrival. |
Required |
|
String. Cabin class to book. |
Required |
|
String. Class of service to book. |
Required |
|
Order of this segment in this leg, starting with 1 for the first segment on the leg. A segment is one flight with the same flight number. Note that the segmentSequence value for connecting flights is the same; for example, for two connecting flights on the outbound or first leg of the itinerary, both flights have the segmentSequence value 1. |
Required |
|
Recommended to send in the full payload request. Supported values and definitions for AvailabilitySourceCode are as follows:
|
Optional but recommended |
|
This indicator is not sent by the user but instead is sent if included in the information stored in the price by the carrier. The bound flights indicator boundFlightsInd is a Boolean variable indicating segments are married/bound. When returned with a value of true, the flight segments are polled together and usually share the same fare basis code and class of service. The indicator is returned as true for all leading segments on one leg of the flight, and not returned for the last segment of the bound flight leg journey, indicating where the bound flights end. For example, if an O&D pair has 3 flight segments, boundFlightsInd is returned for the first two segments on that leg. If the segments are not bound, boundFlightsInd is false and not returned. Not returned for NDC. |
n/a |
|
Send only if requesting to store brand information at the segment level. A segment is one flight with the same flight number. You can send brandTier for any or all instances of SpecificFlightCriteria. To store brand information at the offer level instead, see PricingModifiersAir below. |
Optional |
PricingModifiersAir
|
Any optional pricing modifiers. See PricingModifiersAir table below. |
Optional |
OrganizationInformation |
Use to send optional India GST SSR Remarks in GSTRegistrationNumber. |
Optional |
GSTRegistrationNumber |
Key value pairs:
|
All values are required if sent
|
OrganizationInformation |
Any optional account codes. |
Optional |
GSTRegistrationNumber |
Send to add India GST (Goods and Services Tax) SSRs. If sent, all of the following are required; these are details for the business purchasing the goods and services in the GST:
See India GST SSRs in the Remarks & Service Requests Guide for important details.
|
All values are required if sent |
Optional pricing modifiers - PricingModifiersAir
When you add an offer with the full payload, you can store fares with one or more optional pricing modifiers. If a pricing modifier is not added, the auto stored fare is added to the reservation. There is no change in the AirReservation response when pricing modifiers are requested.
If the requested modifier does not have any fares associated with it, the workbench commit fails and returns the error message No Fare Found. Pricing happens at commit, not at Add Offer.
Object |
Description |
Required/Optional |
---|---|---|
PricingModifiersAir
|
Any optional pricing modifiers. Required only when sending fare modifiers. Includes FareSelection. |
Optional |
|
The currency code for overriding the default currency associated with your PCC provisioned by Travelport. |
Optional |
|
GDS only, not supported for NDC.
String, 2-10 characters supported. Overrides the ticketing PCC associated with your account to specify an alternate PCC and return pricing based on that PCC. (PCC is the pseudo city code; a travel provider's identification code for the JSON APIs, provisioned from Travelport.) |
Optional |
|
GDS only, not supported for NDC.
String, 2-10 characters supported. Use to send a faring PCC for which a selective access or code group agreement exists between that PCC and the PCC associated with your account. The following combinations of PricingPCC and FareSelection/fareType=PrivateFaresOnly (see immediately below) return results as follows:
|
Optional |
TaxExemption |
AirReservation 23.11.25 and later.
Sends specific tax codes to mark as tax exempt. TaxExemption supports up to nine values for countries, or nine values for taxCodes, or up to nine values in countries and taxCodes combined. Key value pairs; send either or both countries and taxCodes or allTaxesExemptInd:
|
Optional |
FareSelection |
Additional optional fare modifiers. Stores fare types including private fares (negotiated), public fares (published), or net fares (consolidator fares, or any negotiated wholesale price that is further marked up for sale to customers). |
Optional |
|
Allows you to store either a private fare or a public fare, or the lowest of either private or public fares. These can be combined. Supported values are:
|
Optional |
|
true stores only refundable fares, false stores only non-refundable fares. |
Optional |
|
true stores only fares that do not require a minimum stay; false allows minimum stay fares. |
Optional |
|
true stores only fares that do not require a maximum stay; false allows maximum stay fares. |
Optional |
|
true stores only fares that do not require advance purchase; false allows fares with advance purchase restrictions. |
Optional |
|
Allows you to specify the carrier to override the default validating carrier (the airline designator that the ticket is issued against). String to send the IATA code for a carrier to override the default validating carrier. If the validating carrier code is not supported for an itinerary, the response returns the error Ticketing Agreement does not exist. If an invalid validating carrier code is sent in the request, the response returns the error Unknown Carrier. |
Optional |
FareModifiers |
Top level object for account codes. Required only when sending account code. |
Optional |
Account |
Sends account codes for negotiated fares. |
Optional |
|
The account code to price. |
Optional |
Brand |
Send in PricingModifiersAir only if requesting to store a fare with brand details at the offer level. |
Optional |
|
The brand tier. |
Optional |
PricingModifiersAir (optional pricing modifiers)
Optionally, you can store fares with one or more pricing modifiers. If a pricing modifier is not added, the auto stored fare is added to the reservation. There is no change in the AirReservation response when pricing modifiers are requested. AirReservation applies modifiers from Add Offer and earlier steps as follows:
-
Modifiers sent in the Add Offer request (supported for both full and reference payload)
-
If no modifiers are sent in Add Offer, any pricing modifiers sent in AirPrice are applied
-
If no modifiers were sent in AirPrice, any pricing modifiers sent in Search are applied
If the requested modifier does not have any fares associated with it, the workbench commit fails and returns the error message No Fare Found. Pricing happens at commit, not at Add Offer.
Object |
Description |
Required/Optional |
---|---|---|
PricingModifiersAir
|
Any optional pricing modifiers. Required only when sending fare modifiers. Includes FareSelection. |
Optional |
|
The currency code for overriding the default currency associated with your PCC provisioned by Travelport. |
Optional |
TaxExemption |
AirReservation 23.11.25 and later.
Sends specific tax codes to mark as tax exempt. Key value pairs; send either countries and taxCodes or allTaxesExemptInd:
|
Optional |
FareSelection |
Additional optional fare modifiers. Stores fare types including private fares (negotiated), public fares (published), or net fares (consolidator fares, or any negotiated wholesale price that is further marked up for sale to customers). |
Optional |
|
Allows you to store either a private fare or a public fare, or the lowest of either private or public fares. These can be combined. Supported values are:
|
Optional |
|
true stores only refundable fares, false stores only non-refundable fares. |
Optional |
|
true stores only fares that do not require a minimum stay; false allows minimum stay fares. |
Optional |
|
true stores only fares that do not require a maximum stay; false allows maximum stay fares. |
Optional |
|
true stores only fares that do not require advance purchase; false allows fares with advance purchase restrictions. |
Optional |
|
Allows you to specify the carrier to override the default validating carrier (the airline designator that the ticket is issued against). String to send the IATA code for a carrier to override the default validating carrier. If the validating carrier code is not supported for an itinerary, the response returns the error Ticketing Agreement does not exist. If an invalid validating carrier code is sent in the request, the response returns the error Unknown Carrier. |
Optional |
FareModifiers |
Top level object for account codes. Required only when sending account code. |
Optional |
Account |
Sends account codes for negotiated fares. |
Optional |
|
The account code to price. |
Optional |
Brand |
Send in PricingModifiersAir only if requesting to store a fare with brand details at the offer level. |
Optional |
|
The brand tier. |
Optional |
Response
The response returns the system-generated offer identifier. This identifier must be sent in several subsequent transactions, such as payment and ticketing.
Object |
Description |
---|---|
OfferListResponse |
Top level object. |
OfferID |
Top level object. |
Identifier |
Returns the system-generated offer identifier in the following key value pairs; in this case authority is Travelport:
|
Example Request
The following example full payload request adds an offer for a one-way itinerary.
{
"OfferQueryBuildFromProducts": {
"BuildFromProductsRequest": {
"@type": "BuildFromProductsRequestAir",
"PassengerCriteria": [
{
"number": 1,
"passengerTypeCode": "ADT"
}
],
"ProductCriteriaAir": [
{
"SpecificFlightCriteria": [
{
"flightNumber": "1177",
"carrier": "UA",
"departureDate": "2022-01-09",
"departureTime": "10:15:00",
"arrivalDate": "2022-01-09",
"arrivalTime": "15:09:00",
"from": "DEN",
"to": "ATL",
"classOfService": "P",
"cabin": "First",
"segmentSequence": 1,
"brandTier": "9"
}
]
}
]
}
}
}
{
"OfferQueryBuildFromProducts": {
"BuildFromProductsRequest": {
"@type": "BuildFromProductsRequestAir",
"PassengerCriteria": [
{
"number": 1,
"age": 25,
"passengerTypeCode": "ADT"
}
],
"ProductCriteriaAir": [
{
"SpecificFlightCriteria": [
{
"flightNumber": "733",
"carrier": "QF",
"departureDate": "2022-01-09",
"departureTime": "08:35:00",
"arrivalDate": "2022-01-09",
"arrivalTime": "10:10:00",
"from": "SYD",
"to": "ADL",
"classOfService": "Q",
"cabin": "Economy",
"segmentSequence": 1,
"brandTier": "1"
},
{
"flightNumber": "680",
"carrier": "QF",
"departureDate": "2022-01-09",
"departureTime": "12:05:00",
"arrivalDate": "2022-01-09",
"arrivalTime": "13:50:00",
"from": "ADL",
"to": "MEL",
"classOfService": "Q",
"cabin": "Economy",
"segmentSequence": 2,
"brandTier": "1"
}
]
},
{
"SpecificFlightCriteria": [
{
"flightNumber": "402",
"carrier": "QF",
"departureDate": "2022-01-16",
"departureTime": "06:00:00",
"arrivalDate": "2022-01-16",
"arrivalTime": "07:25:00",
"from": "MEL",
"to": "SYD",
"classOfService": "Q",
"cabin": "Economy",
"segmentSequence": 1,
"brandTier": "1"
}
]
}
]
}
}
}
Example Response
The response returns the system-generated offer identifier. This identifier must be sent in several subsequent transactions, such as payment and ticketing.
{
"OfferListResponse": {
"OfferID": [
{
"@type": "OfferIdentifier",
"Identifier": {
"authority": "Travelport",
"value": "ec33332f-bdde-4bca-bebf-e81568f0d205"
}
}
]
}
}