AirPrice Full Payload API Reference
|
POST |
price/offers/buildfromproducts Base path: Pre-production https://api.pp.travelport.net/11/air/ Production https://api.travelport.net/11/air/ |
Related Content: Air Pricing Guide, AirPrice Reference Payload API Reference
The AirPrice API confirms pricing on air search results. While air pricing is generally an optional but recommended step, it is required for low cost carriers and some NDC carriers.
The full payload request
In the JSON Air APIs, a reqeust that sends all details of the offer or flight/s to be shopped, priced, added to the workbench. The alternative is to send a reference payload request, which sends a reference to an offer in a previous API response instead of full details. sends full itinerary details without a reference to any previous search. It can be used to price an itinerary returned from the Search API or from a non-Travelport source.
For NDC, only specific NDC carriers support the AirPrice full payload request.
For GDS and NDC differences in the JSON APIs, see the support tables for seats, ancillaries, fare rules, and exchanges/refunds, and the NDC and GDS Functionality Comparison.
For differences within NDC by individual carriers, see NDC capabilities by airline through JSON API in the Travelport Knowledge Base. See Knowledge Base NDC Resources if you need login assistance.
Request
As part of the request requirements, also see Authentication and Common Air Headers.
Query Parameters
None.
Request Body
Basic AirPrice Request - Full Payload
|
Object |
Description |
Required/Optional |
|---|---|---|
|
OfferQueryBuildFromProducts |
Top level object. Includes BuildFromProductsRequest and FareRuleType. |
Required |
|
NDC only; not supported for GDS.
Number. Supports values from 0 to 99 inclusive. Send to request upsell offers along with pricing for the requested class of service or cabin, returned in ascending price order. An upsell is the next highest fare in a different brand or cabin than requested. NDC only; not supported for GDS. Upsells are returned as follows:
|
Optional |
|
Boolean. Provides pricing flexibility around class of service. If not sent, or sent with false, the response returns fares only in the requested class of service. Supported values:
Note that when requesting branded fares with lowFareFindInd=true, AirPrice uses only the brand tier (and any other pricing modifiers) to find the lowest fare within a brand tier regardless of class of service. |
Optional |
|
Boolean. Use to request the return of branded fares, which by default are not returned for the AirPrice Full Payload request. See Branded Fares and Attributes in the Air Pricing Guide. Supported values:
Supported only in the full payload request.
|
Optional |
|
|
Boolean. Sets whether to validate inventory in the requested class of service. Supported values:
GDS only; not supported for NDC, as NDC carriers already validate inventory at pricing.
|
Optional; default is false |
|
|
Boolean. Sets whether to validate inventory on the first flight in the itinerary in the requested class of service by booking and then releasing seats. Supported values:
Because this indicator temporarily affects seat availability, recommended best practice is to use validateInventoryInd above instead. Some airlines have revenue management applications that monitor for high volumes of ‘sell/ignore’ transactions for inventory. Regardless of pricing results, air fares and inventory are only guaranteed by airlines when ticketed and paid for.
To cause AirPrice to perform the same check for connecting flights, you can send both reCheckInventory=true and SpecificFlightCriteria/boundFlightsInd=true for each connecting flight per below.
|
Optional; default is false |
|
FareRuleType |
Returns fare rules in the price response. Use not recommended; send the Fare Rules request instead. |
Optional; use not recommended |
|
BuildFromProductsRequest |
Top level object. Includes PricingModifiersAir, PassengerCriteria, and ProductCriteriaAir. |
Required |
|
PricingModifiersAir |
Optional pricing modifiers. See the PricingModifiersAir table below. |
Optional |
|
PassengerCriteria |
Array. Defines the type of passenger/s on the itinerary. Send one PassengerCriteria for each passenger type code (PTC). AirPrice supports up to nine total passengers across all PTCs. May include optional CustomerLoyalty. |
Required |
|
String. The passenger type code for the passengers on the itinerary. Common PTCs are:
See Downloads to download a full list of PTCs. When running a multiple passenger request for NDC on Qantas, Qantas supports only these PTCs: ADT, CHD, CNN, INF. Sending any other PTC may result in an error at ticketing.
|
Required |
|
Number. The number of passengers with this PTC. Default is 1. |
Required |
|
|
Number. The age of the passenger. Notes on PTC and age
|
Optional |
|
Boolean. AirPrice returns pricing only for the specified PTC. This indicator sets behavior if no offers for that PTC are available:
GDS only; not supported for NDC.
|
Optional Default is false |
|
CustomerLoyalty |
Optional object for sending customer loyalty information, such as for a frequent flyer program. If CustomerLoyalty is sent in the Search request, it must also be sent in the AirPrice request and the Add Traveler request. Because some carriers validate frequent traveler data through the workflow, failing to send the same CustomerLoyalty details, even if invalid, may cause a booking failure. If an invalid number is sent, the response returns a warning message that the FQTV is invalid, and the invalid number is cached to prevent a potential booking failure.
NDC only; not supported for GDS.
|
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 where the local fare is valid. Supported values are
|
Optional |
|
PaymentCriteria |
Optional object to send the BIN of the credit card to be used for payment. Sending the BIN returns OB fees in the response, which are ticketing and form of payment (FOP) fees, including credit card fees. Returned in an instance of Price/PriceBreakdown/Fees/Fee with a feeCode of OB. Includes IssuerIdentificationNumber. |
Optional |
|
String, The BIN of the credit card to be used for payment. |
Required if PaymentCriteria sent |
|
ProductCriteriaAir |
Top level object for itinerary details. Includes SpecificFlightCriteria and CabinPreference. |
Required |
|
SpecificFlightCriteria |
Array. Each instance sends details for each flight (aka segment) on the itinerary to price. |
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="2026-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 price. |
Required |
|
String. Class of service to price. |
Required |
|
String. The brand tier to price, if brand tier pricing is desired. Supported only in the full payload request.
|
Optional |
|
Sequence of this segment on the leg, starting with 0 for the first segment on the leg. A segment is one flight with the same flight number. |
Optional |
|
String. Send with either GDS for GDS content or NDC for NDC content. |
Optional |
|
Recommended to send in the full payload request. Supported values and definitions for AvailabilitySourceCode:
|
Optional but recommended |
|
Boolean. Sets whether to validate inventory on a connecting flight in the requested class of service by booking and then releasing seats. Supported values:
Because this indicator temporarily affects seat availability, recommended best practice is to use validateInventoryInd instead of reCheckInventoryInd and boundFlightsInd. Some airlines have revenue management applications that monitor for high volumes of ‘sell/ignore’ transactions for inventory. Regardless of pricing results, air fares and inventory are guaranteed by airlines only when ticketed and paid for.
GDS only; not supported for NDC. Supported only in the full payload request.
|
Optional |
|
Array. Requests a fare based on cabin class. Only one cabin preference type is allowed per request, but there is no limit to the number of cabins that can be sent. |
Optional |
|
|
String. The type of cabin preference. Supported values are (no default):
|
Required if CabinPreference sent |
|
String. A space-delimited list of cabins. Supported values are (no default):
|
Required if CabinPreference sent |
|
CustomResponseModifiersAir |
Sends additional modifiers. May include BrandAttributeInclusion. |
Optional |
|
Boolean. Sets whether to return unbundled fares:
GDS only; not supported for NDC.
|
Optional Default is false |
|
Boolean. Indicator to return flight amenities from ATPCO RouteHappy data:
If requested, amenities are returned in ReferenceListAmenity. |
Optional |
|
Boolean. Indicator to set whether to return change and cancel penalties:
If requested, change and cancel penalties are returned in TermsAndConditionsFullAir. GDS only; not supported for NDC.
|
Optional Default if not sent is false |
|
BrandAttributeInclusion |
Object. Supports returning only information about the brand attributes specified in Classification below and does not return any other brand attributes for those fares. |
Optional |
|
String. Send one or more of the following values to return information about only the specified attributes. Fares may include other attributes but information about them is not returned. Supported values:
May include AdditionalClassification. |
Required if BrandAttributeInclusion sent |
|
String. Send one or more of the following values to return information about only the specified additional attributes. Supported values:
|
Optional |
PricingModifiersAir (optional pricing modifiers)
Add one or more optional pricing modifiers. All pricing modifiers are in OfferQueryBuildFromCatalogProductOfferings/BuildFromCatalogProductOfferingsRequestAir/PricingModifiersAir.
|
Object |
Description |
Required |
|---|---|---|
|
PricingModifiersAir |
Object for optional journey modifiers. |
Optional |
|
|
GDS only, not supported for NDC. Not supported for AirPrice Full Payload or Standalone Price.
Boolean for split ticketing.
For split ticketing, the AirPrice request must send offers that are identified in the Search response with CombinabilityCode j0, which identifies those offers as one-way outbound and one-way inbound split ticketing offers. A combination of j0 and any non-j0 value offer returns an error message that split pricing is not supported Split ticketing is available only for customers specifically provisioned for split ticketing. Split ticketing returns one-way outbound and one-way inbound fares in addition to round-trip offers. Split ticket offers are identified with a CombinabilityCode of j0. If your account is not configured for split ticketing, sending includeSplitPaymentInd returns a response without split ticket offers and a warning message. GDS only, not supported for NDC.
|
Optional |
|
String. Send the currency type to return if you want to override the default currency of your PCC For a list of currency codes, see the Universal API Reference Data file linked from Downloads. |
Optional |
|
SellCity |
GDS only, not supported for NDC.
String. The IATA location code for the city. Overrides the sell city of the requester to specify an alternate sale location and return pricing based on that location. The response returns pricing in the local currency for the specified sell city instead of your PCC's default currency. |
Optional |
|
TicketCity |
GDS only, not supported for NDC.
String. The IATA location code for the city. Overrides the ticketing city of the requester to specify an alternate ticket location and return pricing based on that location. The response returns pricing in the local currency for the specified ticket city instead of your PCC's default currency. |
Optional |
|
TicketingPCC |
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. |
Optional |
|
PricingPCC |
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 below) return results as follows:
|
Optional |
|
ManualFareAdjustment |
GDS only, not supported for NDC. Not supported for Standalone Price.
Send to manually adjust the base fare amount on all fares for a specific PTC. You can increase or decrease the base fare per these @type values by either an amount or a percentage:
If the PCC currency and the country of origin currency are different, then the amount or percentage is applied to the filed amount base fare that is converted into the PCC currency.
The following PricingModifiersAir excerpt sends one instance of ManualFareAdjustment that discounts the ADT fare by 20%, and another instance that increases the CHD fare by the amount of 50.
|
Optional |
|
Send the PTC/s to be increased or decreased. This increases or decreases the fare for all passengers with that PTC/s. |
Required if ManualFareAdjustment is sent |
|
Send to adjust the base fare for the specified PTC/s by the percentage sent in Percent as follows:
|
Either AmountPercentPercent or AmountPercentAmount is required if ManualFareAdjustment is sent |
|
Send to adjust the base fare for the specified PTC/s by the amount sent in Amount as follows:
|
Either AmountPercentPercent or AmountPercentAmount is required if ManualFareAdjustment is sent |
|
FareSelection |
Requests the return of 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 |
|
String. Supported values:
The response identifies the type of fare returned for each Product in PassengerFlight/FlightProduct @fareType. Possible values in the response are AirlinePrivateFare, AgencyPrivateFare, NetFare, or PublicFare. Includes FareSelectionDetail. |
Optional |
|
IATA code for a carrier to override any default validating carrier. |
Optional |
|
FareSelectionDetail |
Request fares with specific restrictions. The response does not return any indicators about these conditions. GSD only; not supported for NDC. No NDC content is returned if any of the following are sent with true.
|
Optional |
|
Boolean. true prevents the return of fares that require advance purchase. Default is false. |
Optional |
|
Boolean. true prevents the return of fares that require a maximum stay. Default is false. |
Optional |
|
Boolean. true prevents the return of fares that require a minimum stay. Default is false. |
Optional |
|
Boolean. true prevents the return of fares that are not fully refundable. Default is false. |
Optional |
|
OrganizationInformation
|
Use to send account codes for negotiated fares. Includes OrganizationIdentifier. |
Optional |
|
OrganizationIdentifier
|
Array of account codes to return negotiated fares. The response returns an instance of TermsAndConditions/OrganizationInformation/OrganizationIdentifier for each account code sent. When FareSelection/fareType=PrivateFaresOnly and an account code is sent in OrganizationIdentifier, AirPrice ignores the account code. Instead, AirPrice returns any private fares available for that market and a booking code for your PCC. This prevents the return of an error message when no specific fare has been filed for that account code.
|
Optional |
|
String. Always send with a value of Account.
|
Required with OrganizationIdentifier |
|
String. The account code to apply. |
Required with OrganizationIdentifier |
|
String. The IATA code for the airline on which the account code is applicable. |
Required with OrganizationIdentifier |
|
GDS only; not supported for NDC. Not supported in Standalone Price.
Boolean. Sets whether to limit fares returned to only fares filed for an account code.
If accountCodeFaresOnlyInd=true and an account code is sent, the response includes any fares filed for that account code plus fares that are not specific to the account code. If accountCodeFaresOnlyInd=true is sent and no account code is sent, accountCodeFaresOnlyInd is ignored; the response returns all fares and a warning message that the request must include an account code. Note the following when also requesting private fares only:
Note the following when also requesting net fares:
|
Optional |
|
TaxExemption |
GDS only, not supported for NDC.
Use to exempt some or all taxes. Must include either allTaxesExemptInd orboth countries and taxCodes per below. If sent, the response returns any exempt taxes with exemptInd=true and value=0. |
Optional |
|
countries |
Array. One or more codes for the countries in which the paired taxCodes sent are tax exempt. Must also send taxCodes object. Up to nine values total supported for countries, or for taxCodes, or for countries and taxCodes combined. |
Optional |
|
taxCodes |
Array. One or tax codes to mark as exempt in the paired country. Must also send countries object. |
Optional |
|
Boolean. Use to set all taxes as exempt.
|
Optional |
Response
The AirPrice response structure is the same for both reference and full payload requests. See the AirPrice Reference Payload API Reference for the response table.
See the Air Pricing Guide for response layout diagrams and description.
Example Request
The following round-trip full payload request includes the optional CustomerLoyalty object (NDC only) for sending frequent traveler details.
{
"OfferQueryBuildFromProducts": {
"lowFareFinderInd": "",
"returnBrandedFaresInd": "true",
"reCheckInventoryInd": "",
"validateInventoryInd": "",
"BuildFromProductsRequest": {
"@type": "BuildFromProductsRequestAir",
"PassengerCriteria": [
{
"passengerTypeCode": "ADT",
"number": 1,
"age": 24,
"CustomerLoyalty": [
{
"supplier": "1925825570",
"cardHolderName": "MEMBER LOYTEST"
}
]
}
],
"ProductCriteriaAir": [
{
"SpecificFlightCriteria": [
{
"@type": "SpecificFlightCriteria",
"carrier": "UA",
"flightNumber": "532",
"departureDate": "2024-03-12",
"departureTime": "06:00:00",
"arrivalDate": "2024-03-12",
"arrivalTime": "09:30:00",
"from": "DEN",
"to": "ORD",
"classOfService": "P",
"segmentSequence": "0",
"ContentSource": "NDC"
}
]
},
{
"SpecificFlightCriteria": [
{
"@type": "SpecificFlightCriteria",
"carrier": "UA",
"flightNumber": "532",
"departureDate": "2024-03-26",
"departureTime": "06:00:00",
"arrivalDate": "2024-03-26",
"arrivalTime": "09:30:00",
"from": "DEN",
"to": "ORD",
"classOfService": "P",
"segmentSequence": "0",
"ContentSource": "NDC"
}
]
}
]
},
"FareRuleType": ""
}
}
The following one-way request includes the SellCity pricing modifier, supported only for GDS.
{
"OfferQueryBuildFromProducts": {
"BuildFromProductsRequest": {
"@type": "BuildFromProductsRequestAir",
"PricingModifiersAir": {
"@type": "PricingModifiersAir",
"SellCity": "SYD"
},
"PassengerCriteria": [
{
"@type": "PassengerCriteria",
"number": 1,
"passengerTypeCode": "ADT"
}
],
"ProductCriteriaAir": [
{
"SpecificFlightCriteria": [
{
"flightNumber": "1974",
"carrier": "UA",
"departureDate": "2023-01-13",
"departureTime": "07:46:00",
"arrivalDate": "2023-01-13",
"arrivalTime": "12:41:00",
"from": "DEN",
"to": "ATL",
"classOfService": "K",
"cabin": "Economy",
"segmentSequence": 1,
"brandTier": "4",
"ContentSource": "GDS"
}
]
}
]
}
}
}
The following request sends MaxNumberOfUpsellsToReturn with a value of 2 to request two upsells in addition to pricing specific to the requested class of booking. Supported only for NDC in the AirPrice full payload.
{
"OfferQueryBuildFromProducts": {
"MaxNumberOfUpsellsToReturn": 2,
"BuildFromProductsRequest": {
"@type": "BuildFromProductsRequestAir",
"PassengerCriteria": [
{
"number": 1,
"passengerTypeCode": "ADT"
}
],
"ProductCriteriaAir": [
{
"SpecificFlightCriteria": [
{
"flightNumber": "403",
"carrier": "IB",
"departureDate": "2025-06-06",
"departureTime": "07:10:00",
"arrivalDate": "2025-06-06",
"arrivalTime": "08:25:00",
"from": "MAD",
"to": "BCN",
"classOfService": "O",
"cabin": "Economy",
"segmentSequence": 1,
"ContentSource": "NDC"
}
]
}
]
}
}
}
Example Response
The AirPrice response is the same for both reference and full payload requests. See the AirPrice Reference Payload API Reference for an example response without upsells. The exception is that upsells can be returned for NDC if requested, per below.
NDC AirPrice response with upsells example
Generally, both the full and reference payload AirPrice responses return pricing specific only to the class of booking in the request; i.e., pricing of one single offer. For NDC only, and only in the full payload request, you can request upsells by sending MaxNumberOfUpsellsToReturn set to the number of upsells to return. The example response below returns pricing on the requested offer plus two upsells for a total of three priced offers.
{
"OfferListResponse": {
"@type": "OfferListResponse",
"OfferID": [
{
"@type": "Offer",
"id": "o0",
"Identifier": {
"authority": "IB",
"value": "SUI1YmUsYzFlZmE1NTQ0ZjhmYTk3MTFkZjYwMjc1ZmRkZk9QfFFtOXZhMmx1WjBCSFZ5MHhOelEyTWpNeE5UUTBOek16TFV0M2JFVnF8MjAyNS0wNS0wM1QwMDo0OTowNXxBRFQ6SUI1YmUsYzFlZmE1NTQ0ZjhmYTk3MTFkZjYwMjc1ZmRkZk9QXzAxfElC"
},
"ContentSource": "NDC",
"Product": [
{
"@type": "ProductAir",
"totalDuration": "PT1H15M",
"id": "p0",
"FlightSegment": [
{
"@type": "FlightSegment",
"id": "s1",
"sequence": 1,
"universalProductAttributeRefs": [],
"Flight": {
"@type": "FlightDetail",
"duration": "PT1H15M",
"carrier": "IB",
"number": "403",
"operatingCarrier": "IB",
"operatingCarrierName": "Iberia",
"equipment": "320",
"id": "f1",
"Identifier": {
"value": "IB040320250606"
},
"Departure": {
"@type": "DepartureDetail",
"terminal": "4",
"location": "MAD",
"date": "2025-06-06",
"time": "07:10:00"
},
"Arrival": {
"@type": "ArrivalDetail",
"terminal": "1",
"location": "BCN",
"date": "2025-06-06",
"time": "08:25:00"
}
}
}
],
"PassengerFlight": [
{
"@type": "PassengerFlight",
"passengerQuantity": 1,
"passengerTypeCode": "ADT",
"FlightProduct": [
{
"@type": "FlightProduct",
"segmentSequence": [
1
],
"classOfService": "O",
"cabin": "Economy",
"fareBasisCode": "OZNOB4",
"fareType": "PublicFare",
"Brand": {
"@type": "Brand",
"name": "BASIC",
"Identifier": {
"authority": "Travelport",
"value": "1739115"
}
}
}
]
}
]
}
],
"Price": {
"@type": "PriceDetail",
"id": "price0",
"CurrencyCode": {
"value": "EUR"
},
"Base": 22,
"TotalTaxes": 20.37,
"TotalFees": 0,
"TotalPrice": 42.37,
"PriceBreakdown": [
{
"@type": "PriceBreakdownAir",
"quantity": 1,
"requestedPassengerType": "ADT",
"Amount": {
"@type": "Amount",
"CurrencyCode": {
"value": "EUR"
},
"Base": 22,
"Taxes": {
"@type": "TaxesDetail",
"TotalTaxes": 20.37,
"Tax": [
{
"taxCode": "JD",
"description": "Spain Departure Charge",
"value": 15.59
},
{
"taxCode": "OG",
"description": "Spain Aviation Safety And Security Fee",
"value": 0.69
},
{
"taxCode": "QV",
"description": "Spain Security Tax",
"value": 4.09
}
]
},
"Fees": {
"@type": "FeesDetail",
"TotalFees": 0
},
"Total": 42.37
}
}
]
},
"TermsAndConditionsFull": [
{
"@type": "TermsAndConditionsFullAir",
"ExpiryDate": "2025-05-03T00:49:05Z",
"TextBlock": [
{
"@type": "TextBlock",
"TextFormatted": [
{
"value": "TICKET IS NON-REFUNDABLE IN CASE OF CANCEL/REFUND."
}
]
}
],
"BaggageAllowance": [
{
"@type": "BaggageAllowanceDetail",
"passengerTypeCodes": [
"ADT"
],
"baggageType": "FirstCheckedBag",
"ProductRef": [
"p0"
],
"BaggageItem": [
{
"@type": "BaggageItem",
"quantity": 0,
"includedInOfferPrice": "No",
"soldByPieceInd": true,
"Text": "Up to 50 lb/23 kg,Up to 62 li/158 lcm"
}
],
"SegmentSequenceList": [
1
],
"Text": [
"0PC"
]
},
{
"@type": "BaggageAllowanceDetail",
"passengerTypeCodes": [
"ADT"
],
"baggageType": "CarryOn",
"ProductRef": [
"p0"
],
"BaggageItem": [
{
"@type": "BaggageItem",
"quantity": 2,
"includedInOfferPrice": "Yes",
"soldByPieceInd": true
}
],
"SegmentSequenceList": [
1
],
"Text": [
"2PC"
]
}
],
"ValidatingAirline": [
{
"@type": "ValidatingAirline",
"ValidatingAirline": "IB"
}
],
"PaymentTimeLimit": "2025-05-04T21:59:59Z",
"Penalties": [
{
"@type": "Penalties",
"Cancel": [
{
"@type": "CancelPermitted",
"penaltyTypes": [
"AfterDeparture",
"NoShow",
"BeforeDeparture"
],
"ProductRefs": [
"p0"
],
"SegmentSequence": [
1
]
}
],
"PassengerTypeCodes": [
"ADT"
]
},
{
"@type": "Penalties",
"Change": [
{
"@type": "ChangePermitted",
"penaltyTypes": [
"AfterDeparture",
"BeforeDeparture"
],
"higherPenatltyAppliesInd": true,
"ProductRefs": [
"p0"
],
"SegmentSequence": [
1
],
"Penalty": [
{
"@type": "PenaltyAmount",
"Amount": {
"code": "EUR",
"minorUnit": 2,
"value": 65
}
}
]
}
],
"PassengerTypeCodes": [
"ADT"
]
}
]
}
]
},
{
"@type": "Offer",
"id": "o1",
"Identifier": {
"authority": "IB",
"value": "SUJlZjJjODhkZGQzYzk0ZGI5ODc5MmM5ZTdkMDQ1YTRmMU9QfFFtOXZhMmx1WjBCSFZ5MHhOelEyTWpNeE5UUTBOek16TFV0M2JFVnF8MjAyNS0wNS0wM1QwMDo0OTowNXxBRFQ6SUJlZjJjODhkZGQzYzk0ZGI5ODc5MmM5ZTdkMDQ1YTRmMU9QXzAxfElC"
},
"ContentSource": "NDC",
"Product": [
{
"@type": "ProductAir",
"totalDuration": "PT1H15M",
"id": "p0",
"FlightSegment": [
{
"@type": "FlightSegment",
"id": "s1",
"sequence": 1,
"universalProductAttributeRefs": [],
"Flight": {
"@type": "FlightDetail",
"duration": "PT1H15M",
"carrier": "IB",
"number": "403",
"operatingCarrier": "IB",
"operatingCarrierName": "Iberia",
"equipment": "320",
"id": "f1",
"Identifier": {
"value": "IB040320250606"
},
"Departure": {
"@type": "DepartureDetail",
"terminal": "4",
"location": "MAD",
"date": "2025-06-06",
"time": "07:10:00"
},
"Arrival": {
"@type": "ArrivalDetail",
"terminal": "1",
"location": "BCN",
"date": "2025-06-06",
"time": "08:25:00"
}
}
}
],
"PassengerFlight": [
{
"@type": "PassengerFlight",
"passengerQuantity": 1,
"passengerTypeCode": "ADT",
"FlightProduct": [
{
"@type": "FlightProduct",
"segmentSequence": [
1
],
"classOfService": "O",
"cabin": "Economy",
"fareBasisCode": "OZNOM4",
"fareType": "PublicFare",
"Brand": {
"@type": "Brand",
"name": "OPTIMA",
"Identifier": {
"authority": "Travelport"
}
}
}
]
}
]
}
],
"Price": {
"@type": "PriceDetail",
"id": "price0",
"CurrencyCode": {
"value": "EUR"
},
"Base": 43,
"TotalTaxes": 20.37,
"TotalFees": 0,
"TotalPrice": 63.37,
"PriceBreakdown": [
{
"@type": "PriceBreakdownAir",
"quantity": 1,
"requestedPassengerType": "ADT",
"Amount": {
"@type": "Amount",
"CurrencyCode": {
"value": "EUR"
},
"Base": 43,
"Taxes": {
"@type": "TaxesDetail",
"TotalTaxes": 20.37,
"Tax": [
{
"taxCode": "JD",
"description": "Spain Departure Charge",
"value": 15.59
},
{
"taxCode": "OG",
"description": "Spain Aviation Safety And Security Fee",
"value": 0.69
},
{
"taxCode": "QV",
"description": "Spain Security Tax",
"value": 4.09
}
]
},
"Fees": {
"@type": "FeesDetail",
"TotalFees": 0
},
"Total": 63.37
}
}
]
},
"TermsAndConditionsFull": [
{
"@type": "TermsAndConditionsFullAir",
"ExpiryDate": "2025-05-03T00:49:05Z",
"BaggageAllowance": [
{
"@type": "BaggageAllowanceDetail",
"passengerTypeCodes": [
"ADT"
],
"baggageType": "FirstCheckedBag",
"ProductRef": [
"p0"
],
"BaggageItem": [
{
"@type": "BaggageItem",
"quantity": 1,
"includedInOfferPrice": "Yes",
"soldByPieceInd": true,
"Text": "Up to 50 lb/23 kg,Up to 62 li/158 lcm"
}
],
"SegmentSequenceList": [
1
],
"Text": [
"1PC"
]
},
{
"@type": "BaggageAllowanceDetail",
"passengerTypeCodes": [
"ADT"
],
"baggageType": "CarryOn",
"ProductRef": [
"p0"
],
"BaggageItem": [
{
"@type": "BaggageItem",
"quantity": 2,
"includedInOfferPrice": "Yes",
"soldByPieceInd": true
}
],
"SegmentSequenceList": [
1
],
"Text": [
"2PC"
]
}
],
"ValidatingAirline": [
{
"@type": "ValidatingAirline",
"ValidatingAirline": "IB"
}
],
"PaymentTimeLimit": "2025-05-04T21:59:59Z",
"Penalties": [
{
"@type": "Penalties",
"Cancel": [
{
"@type": "CancelPermitted",
"penaltyTypes": [
"AfterDeparture",
"NoShow",
"BeforeDeparture"
],
"ProductRefs": [
"p0"
],
"SegmentSequence": [
1
]
}
],
"PassengerTypeCodes": [
"ADT"
]
},
{
"@type": "Penalties",
"Change": [
{
"@type": "ChangePermitted",
"penaltyTypes": [
"BeforeDeparture",
"AfterDeparture"
],
"higherPenatltyAppliesInd": true,
"ProductRefs": [
"p0"
],
"SegmentSequence": [
1
],
"Penalty": [
{
"@type": "PenaltyAmount",
"Amount": {
"code": "EUR",
"minorUnit": 2,
"value": 45
}
}
]
}
],
"PassengerTypeCodes": [
"ADT"
]
}
]
}
]
},
{
"@type": "Offer",
"id": "o2",
"Identifier": {
"authority": "IB",
"value": "SUJlYWJjMzIyN2ViYWE0ZmEyOWRhMGE4ZTEyNTFmZTRiZE9QfFFtOXZhMmx1WjBCSFZ5MHhOelEyTWpNeE5UUTBOek16TFV0M2JFVnF8MjAyNS0wNS0wM1QwMDo0OTowNXxBRFQ6SUJlYWJjMzIyN2ViYWE0ZmEyOWRhMGE4ZTEyNTFmZTRiZE9QXzAxfElC"
},
"ContentSource": "NDC",
"Product": [
{
"@type": "ProductAir",
"totalDuration": "PT1H15M",
"id": "p0",
"FlightSegment": [
{
"@type": "FlightSegment",
"id": "s1",
"sequence": 1,
"universalProductAttributeRefs": [],
"Flight": {
"@type": "FlightDetail",
"duration": "PT1H15M",
"carrier": "IB",
"number": "403",
"operatingCarrier": "IB",
"operatingCarrierName": "Iberia",
"equipment": "320",
"id": "f1",
"Identifier": {
"value": "IB040320250606"
},
"Departure": {
"@type": "DepartureDetail",
"terminal": "4",
"location": "MAD",
"date": "2025-06-06",
"time": "07:10:00"
},
"Arrival": {
"@type": "ArrivalDetail",
"terminal": "1",
"location": "BCN",
"date": "2025-06-06",
"time": "08:25:00"
}
}
}
],
"PassengerFlight": [
{
"@type": "PassengerFlight",
"passengerQuantity": 1,
"passengerTypeCode": "ADT",
"FlightProduct": [
{
"@type": "FlightProduct",
"segmentSequence": [
1
],
"classOfService": "L",
"cabin": "Economy",
"fareBasisCode": "LDNOFB",
"fareType": "PublicFare",
"Brand": {
"@type": "Brand",
"name": "PUENTE AEREO COMFORT",
"Identifier": {
"authority": "Travelport"
}
}
}
]
}
]
}
],
"Price": {
"@type": "PriceDetail",
"id": "price0",
"CurrencyCode": {
"value": "EUR"
},
"Base": 138,
"TotalTaxes": 20.37,
"TotalFees": 0,
"TotalPrice": 158.37,
"PriceBreakdown": [
{
"@type": "PriceBreakdownAir",
"quantity": 1,
"requestedPassengerType": "ADT",
"Amount": {
"@type": "Amount",
"CurrencyCode": {
"value": "EUR"
},
"Base": 138,
"Taxes": {
"@type": "TaxesDetail",
"TotalTaxes": 20.37,
"Tax": [
{
"taxCode": "JD",
"description": "Spain Departure Charge",
"value": 15.59
},
{
"taxCode": "OG",
"description": "Spain Aviation Safety And Security Fee",
"value": 0.69
},
{
"taxCode": "QV",
"description": "Spain Security Tax",
"value": 4.09
}
]
},
"Fees": {
"@type": "FeesDetail",
"TotalFees": 0
},
"Total": 158.37
}
}
]
},
"TermsAndConditionsFull": [
{
"@type": "TermsAndConditionsFullAir",
"ExpiryDate": "2025-05-03T00:49:05Z",
"BaggageAllowance": [
{
"@type": "BaggageAllowanceDetail",
"passengerTypeCodes": [
"ADT"
],
"baggageType": "FirstCheckedBag",
"ProductRef": [
"p0"
],
"BaggageItem": [
{
"@type": "BaggageItem",
"quantity": 0,
"includedInOfferPrice": "No",
"soldByPieceInd": true,
"Text": "Up to 50 lb/23 kg,Up to 62 li/158 lcm"
}
],
"SegmentSequenceList": [
1
],
"Text": [
"0PC"
]
},
{
"@type": "BaggageAllowanceDetail",
"passengerTypeCodes": [
"ADT"
],
"baggageType": "CarryOn",
"ProductRef": [
"p0"
],
"BaggageItem": [
{
"@type": "BaggageItem",
"quantity": 2,
"includedInOfferPrice": "Yes",
"soldByPieceInd": true
}
],
"SegmentSequenceList": [
1
],
"Text": [
"2PC"
]
}
],
"ValidatingAirline": [
{
"@type": "ValidatingAirline",
"ValidatingAirline": "IB"
}
],
"PaymentTimeLimit": "2025-05-04T21:59:59Z",
"Penalties": [
{
"@type": "Penalties",
"Cancel": [
{
"@type": "CancelPermitted",
"penaltyTypes": [
"NoShow"
],
"higherPenatltyAppliesInd": true,
"ProductRefs": [
"p0"
],
"SegmentSequence": [
1
]
},
{
"@type": "CancelPermitted",
"penaltyTypes": [
"AfterDeparture",
"BeforeDeparture"
],
"higherPenatltyAppliesInd": true,
"ProductRefs": [
"p0"
],
"SegmentSequence": [
1
],
"Penalty": [
{
"@type": "PenaltyAmount",
"Amount": {
"code": "EUR",
"minorUnit": 2,
"value": 45
}
}
]
}
],
"PassengerTypeCodes": [
"ADT"
]
},
{
"@type": "Penalties",
"Change": [
{
"@type": "ChangePermitted",
"penaltyTypes": [
"BeforeDeparture",
"AfterDeparture"
],
"ProductRefs": [
"p0"
],
"SegmentSequence": [
1
],
"Penalty": [
{
"@type": "PenaltyAmount",
"Amount": {
"code": "USD",
"minorUnit": 2,
"value": 0
}
}
]
}
],
"PassengerTypeCodes": [
"ADT"
]
}
]
}
]
}
],
"Identifier": {
"value": "holajose_PC"
}
}
}