# Modify Search

Get Air Itineraries available for exchange/modification/deletion against current pnr.

Endpoint: POST /v2/air/modify-search
Version: v2
Security: Bearer

## Security:

  - `Bearer` (unknown)
    http bearer

## Request fields (application/json):

  - `pnrId` (string, required)
    The unique spotnana pnr id which needs to be exchanged.
    Example: 1213124111

  - `legs` (array, required)
    The list of all legs (to keep as same, to remove and to be added). In the example shared, if there is a trip from SFO to ANC with one Leg containing a direct flight from mentioned source to destination, and traveller needs to add a visit to Seattle in between changing his trip to now contain two legs SFO->SEA and SEA->ANC, then we would remove the first existing leg(indexed 0) SFO->ANC and add two new legs SFO->SEA and SEA->ANC.
    Example: [{"index":0,"remove":true},{"source":"SFO","destination":"SEA","date":"2022-01-21T17:00"},{"source":"SEA","destination":"ANC","date":"2022-01-22T17:00"}]

  - `legs.origin` (string)
    3 letter IATA airport code for origin
    Example: SFO

  - `legs.destination` (string)
    3 letter IATA airport code for origin
    Example: SFO

  - `legs.date` (object)
    Local date and time in ISO 8601 format.

  - `legs.date.iso8601` (string, required)
    Example: 2017-07-21T17:32

  - `legs.index` (integer)
    The index of the leg in the existing PNR which needs to be kept or removed(see remove field) during the exchange process with the following origin-destination information. For new legs leave empty (null). Fields origin, destination and date are required only if this leg is a new leg to be added.
    Example: 1

  - `legs.remove` (boolean)
    This should be set to true, if this leg is to be cancelled.
    Example: true

  - `filters` (array)

  - `filters.cabin` (object)

  - `filters.cabin.type` (string)
    Determines how cabin type selection will be applied.
- DEFAULT: By default AT_LEAST_ONE cabin type is used.
- ALL: Ensures that all the segments in the itinerary have the specified cabin.
- AT_LEAST_ONE: Ensures that at least one segment in the itinerary has the specified cabin.
    Enum: "DEFAULT", "ALL", "AT_LEAST_ONE"

  - `filters.cabin.cabin` (string)
    Flight cabin
    Enum: "UNKNOWN_CABIN", "ECONOMY", "PREMIUM_ECONOMY", "BUSINESS", "FIRST"

  - `filters.maxNumStops` (integer)

  - `filters.timeRange` (object)

  - `filters.timeRange.timeRanges` (array)

  - `filters.timeRange.timeRanges.legIndex` (integer)

  - `filters.timeRange.timeRanges.departure` (object)

  - `filters.timeRange.timeRanges.departure.min` (object)
    ISO8601 Local Time

  - `filters.timeRange.timeRanges.departure.min.iso8601` (string, required)
    Example: 17:32

  - `filters.alliance` (object)

  - `filters.alliance.alliances` (array)

  - `filters.alliance.airlines` (array)
    2-letter IATA codes for the preferred airlines.

  - `filters.fareRange` (object)

  - `filters.fareRange.min` (object)
    Money object containing details such as the amount, the currency code, and the converted amount.

  - `filters.fareRange.min.amount` (number, required)
    The numeric value for the amount of money.
    Example: 510

  - `filters.fareRange.min.currencyCode` (string, required)
    The 3-letter currency code for the money amount (defined using ISO 4217 standard).
    Example: GBP

  - `filters.fareRange.min.convertedAmount` (number)
    The converted currency and amount that has been converted (if a currency conversion has been requested).
For example, if the call requests that money be sent in a specified currency (because the frontend requested
the backend to send money in the user's preferred currency).
    Example: 715.42

  - `filters.fareRange.min.convertedCurrency` (string)
    The 3-letter currency code for the converted currency (defined using ISO 4217 standard).
    Example: USD

  - `filters.fareRange.min.otherCoinage` (array)
    List of the dollar amount in other coinage systems like reward points, cryptocurrency etc.

  - `filters.fareRange.min.otherCoinage.coinageCode` (string)
    Payment method
    Enum: "PAYMENT_METHOD_UNKNOWN", "CREDIT_CARD", "BREX_POINTS", "CASH", "QANTAS_POINTS", "VENDOR_PROGRAM_PAYMENT", "DELAYED_INVOICING", "FLIGHT_CREDITS", "QANTAS_TRAVEL_FUND", "CUSTOM_VIRTUAL_PAYMENT", "FLIGHT_PASS", "MISCELLANEOUS_CREDIT_ORDER", "NO_PREPAYMENT", "DELAYED_PAYMENT"

  - `filters.fareRange.min.otherCoinage.amount` (number)
    Example: 1000

  - `filters.fareRange.min.otherCoinage.conversionRate` (number)
    1 coin in this system equals to how many currency value
    Example: 0.01

  - `filters.fareRange.min.otherCoinage.preferredCurrencyConversionRate` (number)
    1 coin in this system equals to how many currency value
    Example: 0.01

  - `filters.fareRange.min.otherCoinage.otherCoinageMetadata` (any)
    Metadata to store additional information related to the payment method

  - `filters.fareRange.min.otherCoinage.otherCoinageMetadata.metadataType` (string)
    Discriminator field for polymorphic deserialization
    Enum: "FlightPassPaymentMetadata"

  - `filters.fareRange.min.otherCoinage.otherCoinageMetadata.flightPassMetadata` (object, required)
    Metadata specific to Flight Pass payment method in OtherCoinage.

  - `filters.fareRange.min.otherCoinage.otherCoinageMetadata.flightPassMetadata.flightPassNumber` (string)
    Flight pass number
    Example: FP123456789

  - `filters.fareRange.min.otherCoinage.otherCoinageMetadata.flightPassMetadata.flightPassAmounts` (object)
    Fare breakdown for the flight pass booking.

  - `filters.fareRange.min.otherCoinage.otherCoinageMetadata.flightPassMetadata.flightPassAmounts.taxBreakdown` (array)
    Breakdown of taxes by code (e.g. GST_HST, QST, OTHER).

  - `filters.airlinePref` (object)

  - `filters.airlinePref.airlinePrefs` (array)

  - `filters.airlinePref.airlinePrefs.legIndex` (integer)

  - `filters.airlinePref.airlinePrefs.airline` (array)

  - `filters.fareType` (string)
    Enum: "UNKNOWN", "PUBLIC", "PRIVATE", "CORPORATE"

  - `filters.changeable` (string)
    List of filters related to refund and change options for flights.
    Enum: "NO_CHANGEABLE_FILTER", "CHANGEABLE_FLEXIBLE_REFUNDABLE", "REFUNDABLE_WITH_PENALTY", "REFUNDABLE_WITHOUT_PENALTY"

  - `filters.connectingAirports` (object)

  - `filters.connectingAirports.legFilters` (array)

  - `filters.connectingAirports.legFilters.legIndex` (integer)

  - `filters.connectingAirports.legFilters.airportCodes` (array)

  - `filters.seatPref` (object)

  - `filters.seatPref.seatTypes` (array)

  - `filters.seatPref.minPitchInch` (integer)

  - `filters.covid` (object)

  - `filters.covid.vaccine` (string)
    Enum: "NO_PREFERENCE", "REQUIRED", "NOT_REQUIRED"

  - `filters.baggage` (object)

  - `filters.baggage.freeCheckedBag` (boolean)
    If true, only itineraries with free checked bag are returned. Otherwise, no
preference.

  - `filters.baggage.freeCarryOn` (boolean)
    If true, only itineraries with free carry on bag are returned. Otherwise, no
preference.

  - `filters.flightNumber` (object)
    Filters itineraries where the flight number matches that of either the marketing or operating carrier.

  - `filters.flightNumber.flightNumber` (object)
    Flight number and airline code.

  - `filters.flightNumber.flightNumber.num` (string, required)
    Flight number.
    Example: 321

  - `filters.flightNumber.flightNumber.airlineCode` (string, required)
    Two-letter IATA airline code.
    Example: AA

  - `filters.flightNumber.flightIdentifier` (string)
    Free-form flight identifier string, can have spaces and can be without airline name.

  - `filters.policyFilter` (object)

  - `filters.policyFilter.onlyInPolicy` (boolean)
    If true, only in-policy itineraries are returned.

  - `filters.multiTicketFilter` (object)

  - `filters.multiTicketFilter.hideMultiTicket` (boolean)
    Designates whether multi ticket options are to be shown. If true, only single ticket itineraries are returned.

  - `filters.fareCategoryFilter` (object)

  - `filters.fareCategoryFilter.fareCategories` (array)

  - `filters.fareCategoryFilter.fareCategories.ngsCategory` (string)
    Enum: "UNKNOWN_NGS_CATEGORY", "BASE", "STANDARD", "ENHANCED", "PREMIUM", "LUXURY", "ULTRA_LUXURY"

  - `filters.fareCategoryFilter.fareCategories.cabinViewCategory` (string)
    Enum: "UNKNOWN_CABIN_CATEGORY", "BASIC", "ECONOMY", "PREMIUM_ECONOMY", "ECONOMY_PLUS", "BUSINESS", "FIRST"

  - `filters.corporateCodeFilter` (object)

  - `filters.corporateCodeFilter.corpAccountCodes` (array)
    List of Corporate code to be filtered

  - `filters.unusedCreditFilter` (object)

  - `filters.unusedCreditFilter.hideWithoutCredits` (boolean)
    If true, only itineraries with applicable unused credits are returned.

  - `filters.payByPointsFilter` (object)

  - `filters.payByPointsFilter.payByPoints` (boolean)
    If true, only itineraries whose allowed FOP has Brex Pay byPoints are returned.

  - `sortOptions` (array)

  - `sortOptions.sortBy` (string)
    Enum: "PRICE", "DEPARTURE_TIME", "ARRIVAL_TIME", "DURATION", "NO_OF_STOPS", "TICKET_TYPE", "USER_PREFERRED_AIRLINE", "ORG_PREFERRED_AIRLINE", "CO2_EMISSION"

  - `sortOptions.sortOrder` (string)
    Enum: "ASCENDING", "DESCENDING"

  - `sortOptions.shelfNumber` (integer)
    Only used when 'SortBy' is 'PRICE' and represents which shelf should be used for sorting. If shelf_number is 0 (default), minimum of all shelf prices is used.

  - `legSearchParams` (object)

  - `legSearchParams.searchId` (string)
    The unique ID returned by the air search response of the previous leg.

  - `legSearchParams.selectedRateOptionId` (string)
    The unique ID identifying the selected flights in the previous leg's response.

  - `legSearchParams.legIndex` (integer)
    The index ID for the leg for which the results are to be returned for this request.

  - `legSearchParams.asyncRouteHappy` (boolean)
    Designates if RouteHappy content is fetched asynchronously. If true, RouteHappy content will be fetched
asynchronously and not returned in response.

  - `legSearchParams.pageNumber` (integer)
    The page number for which data is to be fetched. If pageNumber is 0, the complete air search response (without pagination) will be returned.

  - `legSearchParams.pageSize` (integer)
    Optional parameter to specify the max number of results per page. If not set or set as 0, default page size of 50 is used.

  - `legSearchParams.legCloneInfo` (object)
    Information about a leg to clone from an existing PNR.

  - `legSearchParams.legCloneInfo.pnrId` (string)
    The PNR which needs to be cloned.

  - `legSearchParams.legCloneInfo.pnrLegIndex` (integer)
    The leg index within the PNR which needs to be cloned.

  - `preModifySearchAnswers` (array)

  - `preModifySearchAnswers.answers` (array)

  - `preModifySearchAnswers.answers.entityId` (string)
    The unique ID for the question.

  - `preModifySearchAnswers.answers.userInput` (string)
    The text input given by user (if any).

  - `preModifySearchAnswers.answers.itemIds` (array)
    The id/enum value corresponding to the option chosen by the user as
answer.

  - `preModifySearchAnswers.answers.answers` (array)

  - `preModifySearchAnswers.answers.answers.item` (string)
    The option selected from the list of available choices.

  - `preModifySearchAnswers.answers.answers.value` (string)
    The additional input provided (by the user) while selecting one of the options.

  - `preModifySearchAnswers.answers.answers.description` (string)
    Description of the selected option.

  - `preModifySearchAnswers.answers.customFieldType` (string)
    The type of custom field.
    Enum: "QUESTION", "MEETING", "BUDGET", "BREX_TOKEN"

  - `preModifySearchAnswers.answers.questionDisplayText` (string)
    The question text to be displayed to the user.

  - `preModifySearchAnswers.answers.question` (object)
    The message defines the format of a question which can be asked to a user in any kind of workflows.

  - `preModifySearchAnswers.answers.question.id` (string, required)

  - `preModifySearchAnswers.answers.question.name` (string, required)
    Question display name that the user will see. For eg, 'Choose the purpose of your trip'.

  - `preModifySearchAnswers.answers.question.questionFormat` (string)
    Question types. INPUT_BOX will make user enter a free flowing text.
RADIO_BUTTON will have multiple options, user can select only one.
CHECKBOX questions contain the possible set of options, from which the user can choose multiple options.
CHECKBOX_WITH_PERCENTAGE is similar to checkbox, with the difference being that each option having an additional input field whose values must add up to 100.
    Enum: "INPUT_BOX", "RADIO_BUTTON", "CHECKBOX", "CHECKBOX_WITH_PERCENTAGE"

  - `preModifySearchAnswers.answers.question.optionInfo` (object)
    Options related information for the question.

  - `preModifySearchAnswers.answers.question.optionInfo.source` (string, required)
    Option source
    Enum: "MANUAL", "COMPANY_CONFIG"

  - `preModifySearchAnswers.answers.question.optionInfo.sourceMetadata` (object)
    Metadata information for the option source.

  - `preModifySearchAnswers.answers.question.optionInfo.sourceMetadata.companyConfig` (object)
    For this option source, options would be auto generated based on specified parameter.

  - `preModifySearchAnswers.answers.question.optionInfo.sourceMetadata.companyConfig.optionsParam` (string, required)
    Parameter to form options for the custom field.
    Enum: "COST_CENTER", "LEGAL_ENTITY", "OFFICE", "DEPARTMENT"

  - `preModifySearchAnswers.answers.question.optionInfo.totalNumOptions` (integer)
    Total number of options

  - `preModifySearchAnswers.answers.question.optionInfo.options` (array)
    Available options for the question. This will contain only max 10 options if only 
summary is requested.

  - `preModifySearchAnswers.answers.question.optionInfo.options.displayCode` (string, required)
    The code which is sent in answer response.

  - `preModifySearchAnswers.answers.question.optionInfo.options.displayValue` (string)
    The text to be displayed to the user beside this option.

  - `preModifySearchAnswers.answers.question.isRequired` (boolean, required)
    Whether its compulsory to answer the question or not.
    Example: true

  - `preModifySearchAnswers.answers.question.isDisabled` (boolean, required)
    Whether the question is disabled or not. If true, this should not be asked.
    Example: true

  - `preModifySearchAnswers.answers.question.includeInItinerary` (boolean)
    Whether to include this question in the itinerary related emails.
    Example: true

  - `preModifySearchAnswers.answers.question.customFieldLocations` (array)

  - `preModifySearchAnswers.answers.question.matchConditions` (object)
    Conditions to select the custom field for given context.

  - `preModifySearchAnswers.answers.question.matchConditions.travelerConditions` (object)
    Matching conditions for traveler.

  - `preModifySearchAnswers.answers.question.matchConditions.travelerConditions.workerTypes` (array)
    Worker types. Users belonging to any of these would match.

  - `preModifySearchAnswers.answers.question.matchConditions.travelerConditions.countries` (array)
    Countries.

  - `preModifySearchAnswers.answers.question.matchConditions.travelerConditions.legalEntities` (array)
    Legal entities

  - `preModifySearchAnswers.answers.question.matchConditions.travelerConditions.legalEntities.id` (string, required)
    Example: b93dc51f-12dd-46c7-b7d6-1cb12cd3f5b3

  - `preModifySearchAnswers.answers.question.matchConditions.travelerConditions.legalEntities.name` (string)
    Example: Name

  - `preModifySearchAnswers.answers.question.matchConditions.travelerConditions.departments` (array)
    Departments

  - `preModifySearchAnswers.answers.question.matchConditions.travelerConditions.costCenters` (array)
    Cost centers

  - `preModifySearchAnswers.answers.question.matchConditions.travelerConditions.offices` (array)
    Offices

  - `preModifySearchAnswers.answers.question.matchConditions.travelTypes` (array)
    Travel types to match.

  - `preModifySearchAnswers.answers.question.matchConditions.travelRegionTypes` (array)
    Travel region types to match.

  - `preModifySearchAnswers.answers.question.matchConditions.tripUsageTypes` (array)
    Trip usage types to match. If empty, all trip usage types will be matched.

  - `preModifySearchAnswers.answers.question.questionType` (object)
    Question type.

  - `preModifySearchAnswers.answers.question.questionType.preSearchQuestionType` (string)
    Types of pre-search questions.
PURPOSE_OF_TRIP required to ask purpose of the trip user is going to. For example: meeting, training, interview.
    Enum: "UNKNOWN_SEARCH_QUESTION_TYPE", "PURPOSE_OF_TRIP"

  - `preModifySearchAnswers.answers.question.questionType.preCheckoutQuestionType` (string)
    Types of pre-checkout questions.
USER_DEFINED_QUESTION the default question type for all pre checkout questions which have been created from UI.
OOP_REASON_CODE is kept separate so that existing OOP flow doesn't break.
    Enum: "UNKNOWN_CHECKOUT_QUESTION_TYPE", "USER_DEFINED_QUESTION", "OOP_REASON_CODE"

  - `preModifySearchAnswers.userEntitiesResponseId` (string)

## Response 200:

  - `200` (unknown)
    OK

## Response 200 fields (application/json):

  - `searchId` (string, required)
    The unique ID for this search response. This value must be passed on in the subsequent booking API calls.
    Example: ChBjZDg3ZjRjZmRmMTFmMWFiEhBjZDg3Z

  - `itineraryDetails` (object, required)
    Describes the detailed itinerary information provided in the search response.

  - `itineraryDetails.itineraries` (array)

  - `itineraryDetails.itineraries.itineraryId` (string, required)
    The unique ID for this itinerary.
    Example: kjdUjak8hX

  - `itineraryDetails.itineraries.legs` (array, required)

  - `itineraryDetails.itineraries.legs.id` (string, required)
    The unique ID for this leg.
    Example: leg_0

  - `itineraryDetails.itineraries.legs.flights` (array, required)
    Details of the list of flights present in the leg.

  - `itineraryDetails.itineraries.legs.flights.id` (string, required)
    The unique ID for this flight in the itinerary.
    Example: flight_0

  - `itineraryDetails.itineraries.legs.flights.flightData` (object)

  - `itineraryDetails.itineraries.legs.flights.flightData.flightRef` (object)
    Flight reference information.

  - `itineraryDetails.itineraries.legs.flights.flightData.flightRef.flightRef` (string, required)
    Points to the detailed flight information in auxiliary flight data fields. flightRef is present in
FlightCommon. As a result, FlightRef can be used to point to the FlightCommon object.
    Example: flight_3

  - `itineraryDetails.itineraries.legs.flights.flightData.flightData` (object)
    Basic information about the flight.

  - `itineraryDetails.itineraries.legs.flights.flightData.flightData.flightRef` (string)
    Unique ID for this flight in the response.
    Example: flight_3

  - `itineraryDetails.itineraries.legs.flights.flightData.flightData.departureDateTime` (object, required)
    Local date and time in ISO 8601 format.

  - `itineraryDetails.itineraries.legs.flights.flightData.flightData.origin` (object, required)
    Detailed information about the airport.

  - `itineraryDetails.itineraries.legs.flights.flightData.flightData.departureGate` (object)
    Information about the flight's departure / arrival gates and terminals.

  - `itineraryDetails.itineraries.legs.flights.flightData.flightData.marketing` (object, required)
    Flight number and airline code.

  - `itineraryDetails.itineraries.legs.flights.flightData.flightData.operationalDisclosure` (string)
    Operating airline name that has to be displayed to the user
    Example: SKYWEST DBA UNITED EXPRESS

  - `itineraryDetails.itineraries.legs.flights.flightData.flightData.hiddenStops` (array)
    Any stops for refueling or boarding additional passengers.

  - `itineraryDetails.itineraries.legs.flights.flightData.flightData.duration` (object)
    Represents a duration of time with specific units of time.

  - `itineraryDetails.itineraries.legs.flights.flightData.flightData.equipment` (object)
    The type of the aircraft equipment

  - `itineraryDetails.itineraries.legs.flights.flightData.flightData.flightSeatType` (string)
    Seat type classification for a flight.
    Enum: "ALLEGRIS", "SENSES"

  - `itineraryDetails.itineraries.legs.flights.flightData.flightData.subjectToGovtApproval` (boolean)
    Whether the flight is subject to government and regulatory approval.

  - `itineraryDetails.itineraries.legs.flights.cabin` (string, required)
    Flight cabin
    Enum: "UNKNOWN_CABIN", "ECONOMY", "PREMIUM_ECONOMY", "BUSINESS", "FIRST"

  - `itineraryDetails.itineraries.legs.flights.bookingCode` (string)
    The airline's one-letter code for the associated fare
    Example: B

  - `itineraryDetails.itineraries.legs.flights.seatAvailability` (integer)
    The availability of seats on this flight
    Example: 9

  - `itineraryDetails.itineraries.legs.flights.corpAccountCode` (string)
    The account code is used to get corporate negotiated price
    Example: DFG

  - `itineraryDetails.itineraries.legs.flights.carbonEmission` (object)
    CO2 emission details for the flight.

  - `itineraryDetails.itineraries.legs.flights.carbonEmission.emissionValue` (number, required)
    Estimated C02 emissions value for selected flight and seating class, per passenger (in tons)
    Example: 10

  - `itineraryDetails.itineraries.legs.flights.carbonEmission.averageEmissionValue` (number)
    Average estimated C02 emissions per passenger for same route (in tons)
    Example: 10

  - `itineraryDetails.itineraries.legs.flights.carbonEmission.flightDistanceKm` (number)
    Total distance flown by the flight in kilometres.
    Example: 10

  - `itineraryDetails.itineraries.legs.flights.carbonEmission.isApproximate` (boolean)
    Indicates whether the emissions value is approximate or not.
    Example: true

  - `itineraryDetails.itineraries.legs.flights.carbonEmission.weight` (object)
    Specifies weight unit and weight amount.

  - `itineraryDetails.itineraries.legs.flights.carbonEmission.weight.weight` (number, required)
    Amount of weight.
    Example: 150

  - `itineraryDetails.itineraries.legs.flights.carbonEmission.weight.unit` (string, required)
    Unit of weight.
    Enum: "KG", "LBS"

  - `itineraryDetails.itineraries.legs.flights.carbonEmission.cost` (object)
    Money object containing details such as the amount, the currency code, and the converted amount.

  - `itineraryDetails.itineraries.legs.flights.carbonEmission.cost.amount` (number, required)
    The numeric value for the amount of money.
    Example: 510

  - `itineraryDetails.itineraries.legs.flights.carbonEmission.cost.currencyCode` (string, required)
    The 3-letter currency code for the money amount (defined using ISO 4217 standard).
    Example: GBP

  - `itineraryDetails.itineraries.legs.flights.carbonEmission.cost.convertedAmount` (number)
    The converted currency and amount that has been converted (if a currency conversion has been requested).
For example, if the call requests that money be sent in a specified currency (because the frontend requested
the backend to send money in the user's preferred currency).
    Example: 715.42

  - `itineraryDetails.itineraries.legs.flights.carbonEmission.cost.convertedCurrency` (string)
    The 3-letter currency code for the converted currency (defined using ISO 4217 standard).
    Example: USD

  - `itineraryDetails.itineraries.legs.flights.carbonEmission.cost.otherCoinage` (array)
    List of the dollar amount in other coinage systems like reward points, cryptocurrency etc.

  - `itineraryDetails.itineraries.legs.flights.amenities` (array)
    The amenities associated with the flight.

  - `itineraryDetails.itineraries.legs.flights.amenities.seatAmenity` (object)
    Seat Amenity properties

  - `itineraryDetails.itineraries.legs.flights.amenities.wifiAmenity` (object)
    Wifi Amenity properties

  - `itineraryDetails.itineraries.legs.flights.amenities.powerAmenity` (object)
    Power Amenity properties

  - `itineraryDetails.itineraries.legs.flights.amenities.entertainmentAmenity` (object)
    The properties of an entertainment amenity.

  - `itineraryDetails.itineraries.legs.flights.amenities.beverageAmenity` (object)
    Beverage amenity option properties.

  - `itineraryDetails.itineraries.legs.flights.amenities.aircraftAmenity` (object)
    Aircraft Amenity properties

  - `itineraryDetails.itineraries.legs.flights.amenities.layoutAmenity` (object)
    Layout Amenity properties

  - `itineraryDetails.itineraries.legs.flights.amenities.freshFoodAmenity` (object)
    Properties associated with the fresh food amenity.

  - `itineraryDetails.itineraries.legs.flights.amenities.cleaningAmenity` (object)
    Cleaning amenity properties.

  - `itineraryDetails.itineraries.legs.flights.amenities.maskAmenity` (object)
    Properties associated with the mask amenity.

  - `itineraryDetails.itineraries.legs.flights.amenities.temperatureAmenity` (object)
    Temperature Amenity properties

  - `itineraryDetails.itineraries.legs.flights.amenities.passengerCapacityAmenity` (object)
    Passenger capacity amenity properties.

  - `itineraryDetails.itineraries.legs.flights.amenities.blockedAdjacentSeatsAmenity` (object)
    Passenger Capacity Amenity properties

  - `itineraryDetails.itineraries.legs.flights.amenities.covidTestingAmenity` (object)
    Covid testing amenity properties.

  - `itineraryDetails.itineraries.legs.flights.amenities.vaccineAmenity` (object)
    Vaccine Amenity properties

  - `itineraryDetails.itineraries.legs.flights.flightAttributes` (array)
    The set of product attributes associated with the flight.

  - `itineraryDetails.itineraries.legs.flights.flightAttributes.headline` (string)
    Short headline text for the flight attribute.
    Example: Fully Flat Bed

  - `itineraryDetails.itineraries.legs.flights.flightAttributes.description` (string)
    Marketing description and images associated with the flight attribute.
    Example: A fully flat bed

  - `itineraryDetails.itineraries.legs.flights.flightAttributes.categories` (array)
    List of categories in which this flight attribute falls into

  - `itineraryDetails.itineraries.legs.flights.flightAttributes.photos` (array)
    List of images associated with the flight attribute.

  - `itineraryDetails.itineraries.legs.flights.flightAttributes.video` (array)
    List of videos associated with the flight attribute.

  - `itineraryDetails.itineraries.legs.flights.flightAttributes.tour` (array)
    List of 360-degree tour media associated with the flight attribute.

  - `itineraryDetails.itineraries.legs.flights.fareBasisCode` (string)
    The fare basis code contains information about the fare.
    Example: QUAJZNB3

  - `itineraryDetails.itineraries.legs.flights.flightId` (string)
    Base64 encoded identifier using rateOptionId, legIndex and flightIndex.

  - `itineraryDetails.itineraries.legs.travelerInfos` (array, required)
    Details of passenger(s) information for this leg.

  - `itineraryDetails.itineraries.legs.travelerInfos.travelerId` (string, required)
    Unique identifier for the traveler in this response
    Example: adult_0

  - `itineraryDetails.itineraries.legs.travelerInfos.travelerLegFare` (object)
    Fare amount including base fare and tax.

  - `itineraryDetails.itineraries.legs.travelerInfos.travelerLegFare.taxBreakdown` (array)

  - `itineraryDetails.itineraries.legs.travelerInfos.travelerLegFare.taxBreakdown.taxCode` (string)
    Tax code
    Example: VAT

  - `itineraryDetails.itineraries.legs.travelerInfos.travelerLegFare.taxBreakdown.percentage` (number)
    Tax amount to total amount
    Example: 9

  - `itineraryDetails.itineraries.legs.travelerInfos.travelerLegFare.taxBreakdown.description` (string)
    Tax name or Tax Description
    Example: AIR TRAVELLERS SECURITY CHARGE

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules` (object)
    The rules and restrictions associated with the fare.

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.baggagePolicy` (object)
    Baggage policy for this traveler.

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.baggagePolicy.checkedIn` (array, required)
    Policies for checked-in baggage

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.baggagePolicy.carryOn` (array, required)
    Policies for carry-on baggage

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.cancellationPolicy` (object)
    Information about the cancellation policy.

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.cancellationPolicy.description` (string)
    Text describing the cancellation policy.
    Example: Non-refundable

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.cancellationPolicy.assessmentType` (string)
    Enum: "NEUTRAL", "BENEFIT", "RESTRICTION", "FEE"

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.cancellationPolicy.isCat16` (boolean)
    Is source cat16
    Example: true

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.cancellationPolicy.isConditional` (boolean)
    Is conditional
    Example: true

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.exchangePolicy` (object)
    Information about the exchange policy.

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.exchangePolicy.description` (string)
    Text describing the exchange policy.
    Example: Change allowed for free

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.exchangePolicy.isCat16` (boolean)
    Is source cat16
    Example: true

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.exchangePolicy.isConditional` (boolean)
    Is conditional
    Example: true

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.seatSelectionPolicy` (object)
    Seat selection rule

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.seatSelectionPolicy.description` (string, required)
    Seat selection policy text
    Example: Seat selection for free

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.boardingPolicy` (object)
    Priority boarding information.

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.boardingPolicy.description` (string, required)
    Text describing the priority boarding policy.
    Example: Priority boarding provided for free

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.checkInPolicy` (object)
    Information about the check-in policy.

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.checkInPolicy.description` (string, required)
    Description text for the check-in policy.
    Example: Standard check-in priority

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.loungePolicy` (object)
    Information about the lounge policy.

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.loungePolicy.description` (string, required)
    Lounge policy description text (may include whether a fee is charged).
    Example: Lounge access for a fee

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.seatType` (object)
    Seat information

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.seatType.seatType` (string, required)
    Description of the type of seat available
    Example: Recliner seat

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.mealsPolicy` (object)
    Information about complimentary meals or drinks.

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.mealsPolicy.description` (string, required)
    Text describing the meals policy.
    Example: Complimentary meals provided

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.sameDayChangePolicy` (object)

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.sameDayChangePolicy.sameDayChangePolicy` (object)
    Air UTA data

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.sameDayChangePolicy.sameDayChangePolicy.summary` (object)

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.sameDayChangePolicy.sameDayChangePolicy.value` (object)
    Policy value which can be used by clients to decide how this policy is displayed.

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.upgradeEligibilityPolicy` (object)

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.overheadBagPolicy` (object)

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.securityPolicy` (object)

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.rewards` (array)
    Loyalty reward points earned for this fare.

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.rewards.loyaltyProgram` (string)
    The loyalty program name.
    Enum: "UNKNOWN", "QANTAS"

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.rewards.pointsType` (string)
    The type of points.
    Enum: "UNKNOWN", "REWARDS_POINTS", "STATUS_CREDIT", "COMPANY_EARN"

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.rewards.description` (string)
    Text describing the points earning.
    Example: Earn 1000 Qantas Points

  - `itineraryDetails.itineraries.legs.travelerInfos.fareRules.rewards.points` (number)
    The number of points earned.
    Example: 1000

  - `itineraryDetails.itineraries.legs.fareCategory` (object, required)

  - `itineraryDetails.itineraries.legs.fareCategory.ngsCategory` (string)
    Enum: "UNKNOWN_NGS_CATEGORY", "BASE", "STANDARD", "ENHANCED", "PREMIUM", "LUXURY", "ULTRA_LUXURY"

  - `itineraryDetails.itineraries.legs.fareCategory.cabinViewCategory` (string)
    Enum: "UNKNOWN_CABIN_CATEGORY", "BASIC", "ECONOMY", "PREMIUM_ECONOMY", "ECONOMY_PLUS", "BUSINESS", "FIRST"

  - `itineraryDetails.itineraries.legs.brandName` (string)
    The brand name advertised by the airline.
    Example: Economy Flex

  - `itineraryDetails.itineraries.legs.brandCode` (string)
    The brand code assigned by the airline corresponding brandName.
    Example: AADOM-MAIN

  - `itineraryDetails.itineraries.legs.validatingAirline` (string)
    The airline code for the airline which is validating this booking and orchestrating the payment.
    Example: AA

  - `itineraryDetails.itineraries.legs.rateType` (string)
    Type of booked fare
    Enum: "RATE_TYPE_UNKNOWN", "PUBLISHED", "TMC_NEGOTIATED", "COMPANY_NEGOTIATED"

  - `itineraryDetails.itineraries.legs.vendorProgramType` (string)
    The type of the vendor program
    Enum: "UA_PASS_PLUS", "GENERIC_PROGRAM_TYPE"

  - `itineraryDetails.itineraries.legs.performanceVerdict` (string)
    On-time performance verdict for a leg.
    Enum: "USUALLY_ON_TIME", "SOMETIMES_DELAYED", "OFTEN_DELAYED"

  - `itineraryDetails.itineraries.legs.additionalTotalLegFares` (array)
    Additional fare amounts for this leg summed across all passengers.

  - `itineraryDetails.itineraries.legs.additionalTotalLegFares.type` (string, required)
    Type of additional fare amount
    Enum: "TYPE_UNKNOWN", "FLIGHT_PASS_AMOUNT", "CHANGE_FEE", "CANCELLATION_FEE", "PENALTY", "AIRLINE_FEE", "SEAT", "BAGGAGE"

  - `itineraryDetails.itineraries.legs.additionalTotalLegFares.isIncludedInFareAmount` (boolean)
    Whether this additional fare amount is included in the ticket fare or not
    Example: false

  - `itineraryDetails.itineraries.legs.additionalLegFaresPerPax` (array)
    Additional fare amounts for this leg per passenger.

  - `itineraryDetails.itineraries.legs.preferences` (array)
    Preference information for this leg.

  - `itineraryDetails.itineraries.legs.preferences.preferredType` (string, required)
    Preference type.
    Enum: "NOT_PREFERRED", "COMPANY_PREFERRED", "SPOTTERS_CHOICE", "COMPANY_BLOCKED", "TMC_PREFERRED"

  - `itineraryDetails.itineraries.legs.preferences.blockedReason` (string)
    Reason for blocking the leg, hotel or car.

  - `itineraryDetails.itineraries.legs.preferences.label` (string)
    The label assigned to a specific tier of preference.

  - `itineraryDetails.itineraries.legs.multiSupplierInfo` (object)
    Multi-supplier information for a leg.

  - `itineraryDetails.itineraries.legs.multiSupplierInfo.source` (string)
    Enum: "UNKNOWN_SOURCE", "SABRE", "TRAVEL_FUSION", "AVIA", "NDC", "TRAINLINE", "ATPCO_NDC", "FARELOGIX_NDC", "OFFLINE", "CONNEXUS", "ROUTEHAPPY", "AMADEUS", "GIATA", "QBR", "BCD", "QANTAS_HOTELS", "SOUTHWEST", "EXPEDIA", "HOTEL_HUB", "MARRIOTT", "CLEARTRIP", "KYTE", "GROUNDSPAN", "SABRE_NDC", "BOOKING_COM", "CARTRAWLER", "PREMIER_INN", "TRAVELODGE", "ENTERPRISE", "HYATT", "HILTON", "EUROSTAR", "NATIONAL", "ALAMO", "AVIS", "BUDGET", "HERTZ", "DOLLAR", "THRIFTY", "FIREFLY", "AMADEUS_NDC", "SIXT"

  - `itineraryDetails.itineraries.legs.multiSupplierInfo.posDescriptor` (string)
    Point of sale descriptor for this leg.

  - `itineraryDetails.itineraries.travelers` (array, required)

  - `itineraryDetails.itineraries.travelers.travelerId` (string, required)
    Unique identifier for the traveler in this response
    Example: adult_0

  - `itineraryDetails.itineraries.travelers.travelerType` (string, required)
    Type of passenger
    Enum: "UNKNOWN_PASSENGER_TYPE", "ADULT", "CHILD", "INFANT", "INFANT_ON_LAP", "YOUTH", "SENIOR", "TEEN"

  - `itineraryDetails.itineraries.travelers.travelerAge` (object)
    Age of the traveler

  - `itineraryDetails.itineraries.travelers.travelerAge.numYears` (integer, required)
    Age of the passenger
    Example: 22

  - `itineraryDetails.itineraries.travelers.fareInfo` (object, required)
    The detailed information about the fare (including tax and merchant fee details).

  - `itineraryDetails.itineraries.travelers.fareInfo.merchantFeeInfo` (object)
    Describes the merchant fee applicable on the itinerary.

  - `itineraryDetails.itineraries.travelers.fareMetadata` (object)
    Metadata about pax fare

  - `itineraryDetails.itineraries.travelers.fareMetadata.corpAccountCode` (string)
    The corp account code for each pax.
    Example: 6CA4

  - `itineraryDetails.itineraries.travelers.additionalFaresPerPax` (array)
    Additional fare amounts per passenger.

  - `itineraryDetails.itineraries.ticketType` (string, required)
    The ticket issuance type for a given itinerary, whether single or multiple
    Enum: "SINGLE", "MULTI"

  - `itineraryDetails.itineraries.policyInfos` (object)
    Policy Info applicable for the associated itinerary

  - `itineraryDetails.itineraries.policyInfos.policies` (array)
    List of policies applied to the itinerary.

  - `itineraryDetails.itineraries.policyInfos.policies.id` (string, required)
    Policy id

  - `itineraryDetails.itineraries.policyInfos.policies.version` (string, required)
    version of the policy

  - `itineraryDetails.itineraries.policyInfos.policies.policyName` (string)
    Name of the policy applied.

  - `itineraryDetails.itineraries.policyInfos.policies.approvalType` (string)
    Enum: "HARD_APPROVAL", "SOFT_APPROVAL", "PASSIVE_APPROVAL"

  - `itineraryDetails.itineraries.policyInfos.policies.policyType` (string)
    Enum: "GLOBAL", "DEFAULT", "GROUP"

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos` (array)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos` (array)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.predicateString` (string)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.predicate` (string)
    This contains the enum mentioning the policy rule which was violated.
    Enum: "UNKNOWN_PREDICATE_STRING", "MAX_FARE_PER_TRAVELLER_VIOLATION", "FARE_MORE_THAN_MINIMUM", "FARE_MORE_THAN_MEDIAN", "FARE_LESS_THAN_MEDIAN", "FARE_MORE_THAN_LLF", "MAX_FARE_PER_TRAVELLER_VIOLATION_INCLUDING_TAX", "MAX_FARE_PER_TRAVELLER_VIOLATION_EXCLUDING_TAX", "HOTEL_PAYMENT_OPTIONS_VIOLATION", "RAIL_BOOKING_WINDOW_GAP_VIOLATION", "RAIL_TRAVEL_CLASS_VIOLATION", "RAIL_TICKET_REFUNDABLE_VIOLATION", "RAIL_MAX_BOOKING_PRICE_VIOLATION_INCLUDING_TAX", "RAIL_MAX_BOOKING_PRICE_VIOLATION_EXCLUDING_TAX", "AIR_MAX_PRICE_MORE_THAN_LLF_VIOLATION_INCLUDING_TAX", "AIR_MAX_PRICE_MORE_THAN_LLF_VIOLATION_EXCLUDING_TAX", "HOTEL_RESTRICTED_KEYWORDS_VIOLATION", "RESTRICTED_LOCATION_VIOLATION", "FLIGHT_ADVANCE_BOOKING_WINDOW_DOMESTIC_VIOLATION", "FLIGHT_ADVANCE_BOOKING_WINDOW_INTERNATIONAL_VIOLATION", "FLIGHT_ADVANCE_BOOKING_WINDOW_VIOLATION", "ITINERARY_WITHIN_EVENT_TRAVEL_WINDOW", "HOTEL_IN_ALLOWED_HOTEL_LIST", "PAYMENT_ACCESS_VIOLATION", "AIRPORT_IN_ALLOWED_AIRPORT_LIST", "ITINERARY_TYPE_IS_NOT_IN_ALLOWED_BOOKING_TYPES", "PAYMENT_AIR_ADDON_VIOLATION", "MAX_HOTEL_BOOKING_PRICE_INCLUDING_TAX", "MAX_HOTEL_BOOKING_PRICE_EXCLUDING_TAX", "AIR_NUM_TRAVELERS_ALLOWED", "PREFERRED_VENDOR_VIOLATION", "SEAT_ADDON_VIOLATION", "BAGGAGE_ADDON_VIOLATION", "EARLY_BIRD_ADDON_VIOLATION", "WIFI_ADDON_VIOLATION", "RESTRICTED_BOOKING_VIOLATION", "HIGHEST_ALLOWED_CABIN_VIOLATION", "LOWEST_FARE_PER_HOTEL_PROPERTY_VIOLATION", "AIR_RESTRICTED_FARES_VIOLATION", "AIR_ANCILLARY_VIOLATION"

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue` (object)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.displaySuffix` (string)
    Optional display suffix for the policy const value

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.i` (integer)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.l` (integer)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.s` (string)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.d` (number)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.b` (boolean)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.iList` (array)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.dList` (array)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.sList` (array)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.length` (object)
    Specifies the length or a distance.

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.postalAddress` (object)
    Postal Address Details

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.userOrgId` (object)
    User and user's organization information.

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.legalEntityId` (object)
    The ID of the legal entity.

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.officeId` (object)
    The unique ID of the office.

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.userOrgIdList` (array)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.legalEntityIdList` (array)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.officeIdList` (array)
    A list of office IDs.

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.rating` (number)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.percentage` (number)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.iRange` (object)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.dRange` (object)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.persona` (string)
    Persona of the user
    Enum: "UNKNOWN_PERSONA", "EMPLOYEE", "GUEST", "PERSONAL", "RELATIVE", "ADHOC"

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.personaList` (array)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.railTravelClass` (string)
    Rail Travel classes in hierarchy numbering higher to keep scope for future additions in 
between.
    Enum: "UNKNOWN", "STANDARD", "COACH", "STANDARD_PREMIUM", "BUSINESS", "BUSINESS_PREMIUM", "FIRST", "SLEEPER"

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.keywordWithReasonList` (object)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.workerType` (string)
    The type of worker.
    Enum: "EMPLOYEE", "CONTINGENT", "SEASONAL", "INTERN", "GUEST"

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.workerTypeList` (array)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.airRestrictedFaresParams` (object)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.violationInfos.expectedValue.postalAddressList` (array)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.subViolationInfos` (array)
    In case of complex rules this will contain extra information as to how the rule was 
calculated.

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.actions` (array)
    Followed actions if rule was satisfied else violated actions.

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.actions.flag` (object)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.actions.flag.message` (string)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.actions.hide` (boolean)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.actions.alertOnSelection` (object)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.actions.alertOnSelection.message` (string)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.actions.takeApproval` (object)

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.actions.takeApproval.numHierarchyLevels` (integer)
    How many levels of hierarchy should approval be taken? If it's just immediate manager, 
this value would be 1. If it's manager and their manager, this would ge 2 and so on.

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.actions.takeApproval.positionTitles` (array)
    What position in the cost center or department. For eg, any business class upgrade 
might require VP approval.

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.actions.takeApproval.userOrgIds` (array)
    The specific users from whom to take approval. For eg, say for a company, all approvals
go through Adam.

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.actions.takeApproval.allRequired` (boolean)
    This tells whether all the people above needs to approve or if any of these approve, 
it is sufficient.

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.actions.takeApproval.hardApprovalRequired` (boolean)
    Whether to take soft approval (false) or hard approval (true).

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.actions.takeApproval.approvalType` (string)
    Type of APPROVAL
    Enum: "HARD_APPROVAL", "SOFT_APPROVAL", "PASSIVE_APPROVAL", "PRE_APPROVAL"

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.actions.preventBooking` (object)
    Whether to allow booking if a rule is violated.

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.actions.preventBooking.prevent` (boolean)
    True if booking is to be blocked if rule is violated, else false

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.actions.preventBooking.reason` (string)
    Reason describing why was that specific itinerary not allowed to book.

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.actions.splitPayment` (object)
    Split payment details for claiming reimbursements.

  - `itineraryDetails.itineraries.policyInfos.ruleResultInfos.actions.splitPayment.isAmountReimbursable` (boolean)
    If the in policy amount is reimbursable or not.

  - `itineraryDetails.itineraries.posInfo` (array)
    The point of sales which offer the itinerary.

  - `itineraryDetails.itineraries.posInfo.posDescriptor` (string)
    The identifier for the point of sale. This would be the PCC for GDS bookings.
    Example: 6CA4

  - `itineraryDetails.itineraries.allowedFopRules` (array)
    The payment method types applicable to the itinerary.

  - `itineraryDetails.itineraries.allowedFopRules.paymentItems` (array)

  - `itineraryDetails.itineraries.allowedFopRules.paymentItems.itemType` (string)
    Type of payment item eligible for this fop rule
    Enum: "SERVICE_FEE", "TRAVEL_TICKET", "SEAT", "BAGGAGE", "EARLY_BIRD"

  - `itineraryDetails.itineraries.allowedFopRules.paymentItems.fareComponent` (array)

  - `itineraryDetails.itineraries.allowedFopRules.paymentRules` (array)

  - `itineraryDetails.itineraries.allowedFopRules.paymentRules.paymentSplitDetails` (object)
    Payment details of slider payment function.

  - `itineraryDetails.itineraries.allowedFopRules.paymentRules.paymentSplitDetails.minMaxAmount` (object)
    Payment amount details if slider payment function is linear.

  - `itineraryDetails.itineraries.allowedFopRules.paymentRules.paymentSplitDetails.splitAmount` (object)
    Payment amount details if slider payment function is non-linear.

  - `itineraryDetails.itineraries.allowedFopRules.paymentRules.paymentSplitDetails.splitAmount.amount` (array)

  - `itineraryDetails.itineraries.allowedFopRules.paymentRules.paymentSourceIds` (array)

  - `itineraryDetails.itineraries.allowedFopRules.paymentRules.allowAddCard` (boolean)
    Whether to allow user to add a new card for the selected split payment.

  - `itineraryDetails.itineraries.allowedFopRules.paymentRules.splitCriterion` (object)
    The criterion for the payment split.

  - `itineraryDetails.itineraries.allowedFopRules.paymentRules.splitCriterion.accessType` (string)
    Access Type of the Payment Source being created.
    Enum: "CENTRALISED", "PERSONAL", "APPLICATION", "TMC", "ITINERARY", "EVENT", "EVENT_TEMPLATE"

  - `itineraryDetails.itineraries.allowedFopRules.paymentRules.unusablePaymentSources` (array)
    List of payment sources that are not usable for this payment rule

  - `itineraryDetails.itineraries.allowedFopRules.paymentRules.unusablePaymentSources.id` (string, required)
    Unique identifier identifying this payment source
    Example: f49d00fe-1eda-4304-ba79-a980f565281d

  - `itineraryDetails.itineraries.allowedFopRules.paymentRules.unusablePaymentSources.reason` (string)
    Reason why a payment source is not usable.
    Enum: "SUPPLIER_RESTRICTION", "POLICY_RESTRICTION", "INCOMPLETE_PAYMENT_SOURCE", "INSUFFICIENT_BALANCE"

  - `itineraryDetails.itineraries.allowedFopRules.paymentRules.paymentSourceConditions` (array)
    List of conditions for payment sources

  - `itineraryDetails.itineraries.allowedFopRules.paymentRules.paymentSourceConditions.type` (string, required)
    Enum: "CARD"

  - `itineraryDetails.itineraries.allowedFopRules.paymentRules.paymentSourceConditions.cardCompanies` (array)
    List of card companies allowed for the payment

  - `itineraryDetails.itineraries.fareAttributes` (object)
    The rules and attributes related to the fare.

  - `itineraryDetails.itineraries.fareAttributes.isVoidable` (boolean)
    Designates whether the fare is voidable or not.

  - `itineraryDetails.itineraries.fareAttributes.isNonVerifiedExchangeOffer` (boolean)
    Designates whether the fare is a non-verified exchange offer. For these fares, the 
exchange price guarantee is not provided by the supplier.

  - `itineraryDetails.itineraries.additionalTotalFares` (array)
    Additional fare amounts like flight pass, change penalty, etc.

  - `itineraryDetails.itineraries.changeFee` (object)
    Change fee for a rate option.

  - `itineraryDetails.itineraries.hasApplicableCredits` (boolean)
    Whether the rate option has at least one matched unused credit.

  - `itineraryDetails.itineraries.applicableCreditIndices` (array)
    Indices of applicable unused credits for this rate option.

  - `itineraryDetails.itineraries.showRawFareRules` (boolean)
    Hint for frontend to show raw fare rule link.

  - `itineraryDetails.itineraries.cloneInfo` (object)
    Information regarding cloning an itinerary.

  - `itineraryDetails.itineraries.cloneInfo.isClosestMatch` (boolean)
    Whether a particular rate option is closest to the original itinerary.

  - `itineraryDetails.itineraries.airline` (string)
    Airline within the source, required for suppliers like NDC with multiple airlines in a single source.

  - `itineraryDetails.itineraries.isUnselectable` (boolean)
    Whether the given rate option is selectable by user for booking.

  - `itineraryDetails.itineraries.checkoutApprovalInfo` (object)
    Checkout approval information containing approval type and approver details

  - `itineraryDetails.itineraries.checkoutApprovalInfo.approverDetails` (array)
    List of approver details

  - `itineraryDetails.itineraries.checkoutApprovalInfo.approverDetails.approverName` (string)
    Name of approver
    Example: John Doe

  - `itineraryDetails.itineraries.checkoutApprovalInfo.approverDetails.approverEmail` (string)
    Email of approver
    Example: john.doe@company.com

  - `itineraryDetails.itineraries.checkoutApprovalInfo.approverDetails.type` (string)
    Type of approver
    Enum: "UNKNOWN_APPROVER", "APPROVER", "AUTHORIZER"

  - `itineraryDetails.itineraries.allowedFop` (array)
    List of allowed forms of payment for this rate option.

  - `itineraryDetails.flightData` (array)
    The set of flights and their details that are contained in this response.

  - `paginationParams` (object)
    Pagination parameters for response.

  - `paginationParams.numResults` (integer, required)
    Total number of results in the paginated list.

  - `paginationParams.numPages` (integer, required)
    Total number of pages in the paginated list.

  - `paginationParams.currentPageNumber` (integer)
    Current page number in the paginated list.

  - `paginationParams.currentPageSize` (integer)
    Number of results per page.

  - `metadata` (object)
    Metadata associated with the air search response.

  - `metadata.airlineInfo` (array)
    Metadata for all airlines available in the specific route.

  - `metadata.airlineInfo.airlineCode` (string, required)
    IATA code for airline.
    Example: AA

  - `metadata.airlineInfo.airlineName` (string)
    Airline name
    Example: American Airlines

  - `metadata.applicableAlliances` (array)
    Alliances which are applicable based on the airlines info

  - `metadata.legBylegPricing` (boolean)
    Flag indicating whether itineraries are priced on a leg-by-leg basis (instead of the overall itinerary
pricing, which is the default).

  - `metadata.enableFareCategories` (array)
    Fare categories that need to be used for the given air search

  - `metadata.isExpressSearch` (boolean)
    Flag indicating whether the search was performed as an express search.

  - `metadata.availableConnectingAirports` (array)
    List of connecting airports (layover locations) available in the search results.
Sorted by: 1) number of results (descending), 2) alphabetically (ascending).

  - `metadata.flightRestrictions` (array)
    Flight-level restrictions such as seat booking availability.

  - `metadata.flightRestrictions.flightIndex` (integer)
    Index of the flight in the search response data flights list.

  - `metadata.flightRestrictions.restrictions` (array)
    Restrictions applicable to this flight.

  - `metadata.paymentMetadata` (object)
    Payment metadata for the air search response.

  - `metadata.paymentMetadata.rewardsPermittedForTraveler` (boolean)
    Whether it is allowed to use reward points for this traveler.

  - `metadata.paymentMetadata.wallets` (array)
    Third party wallet balances available to the traveler.

  - `metadata.paymentMetadata.wallets.balance` (number)
    The amount available in the wallet.

  - `metadata.paymentMetadata.isDelayedInvoicing` (boolean)
    Whether delayed invoicing is configured.

  - `metadata.logicalFareStatistics` (array)
    Fare statistics of all logical itineraries per shelf.

  - `metadata.logicalFareStatistics.minimum` (object)
    A fare statistic item (minimum, median, or maximum).

  - `metadata.shelfInfo` (array)
    Contains minimum fare and duration information for every shelf.

  - `metadata.vendorPrograms` (array)
    List of all vendor programs in this air search response.

  - `metadata.vendorPrograms.discountCode` (string)
    Snap code or discount code for the vendor program.

  - `metadata.currentItinerary` (object)
    Current itinerary reference for exchange or modify flows.

  - `metadata.currentItinerary.index` (integer)
    Index of the itinerary in the search response itineraries list. Defaults to -1 if not present.

  - `metadata.currentItinerary.rateOptionId` (string)
    Selected rate option ID in the current itinerary.

  - `metadata.fareCategoryView` (string)
    Indicates how fare categories should be displayed in the search results.
    Enum: "UNKNOWN", "CABIN", "NGS"

  - `unusedCredits` (array)
    Applicable unused airline credits based on the search.

  - `unusedCredits.sourcePnr` (string)
    PNR number corresponding to third party through which booking was made.
    Example: MC5ONS

  - `unusedCredits.spotnanaPnr` (string)
    Spotnana pnr ID.
    Example: 2345678

  - `unusedCredits.ticketNumber` (string)
    Ticket number for the ticket that was converted into an unused credit.
    Example: 5267779139217

  - `unusedCredits.airlineCode` (string)
    2 letter airline code of the airline associated with this unused credit.
    Example: AA

  - `unusedCredits.issueDate` (object)
    ISO8601 UTC Date Time

  - `unusedCredits.issueDate.iso8601` (string, required)
    Example: 2017-07-21T17:32Z

  - `unusedCredits.segmentsAvailable` (string)
    Whether all segments are unused or some have already been used.
    Enum: "UNKNOWN", "ALL_OPEN", "PARTIAL", "OTHER"

  - `unusedCredits.passengerName` (object)
    Full name containing first, middle, last (family) names, and suffix.

  - `unusedCredits.passengerName.family1` (string, required)
    Last (family) name.
    Example: Gandas

  - `unusedCredits.passengerName.family2` (string)
    Example: FamilyTwo

  - `unusedCredits.passengerName.given` (string, required)
    First (given) name.
    Example: Vichitr

  - `unusedCredits.passengerName.middle` (string)
    Middle name.
    Example: Kumar

  - `unusedCredits.passengerName.suffix` (string)
    Suffix for name
    Enum: "NAME_SUFFIX_UNKNOWN", "SR", "JR", "MD", "PHD", "II", "III", "IV", "DO", "ATTY", "V", "VI", "ESQ", "DC", "DDS", "VM", "JD", "SECOND", "THIRD"

  - `unusedCredits.passengerName.preferred` (string)
    Informal preferred name added by traveler. This is not used on any PNR or tickets
    Example: Don

  - `unusedCredits.departureCountry` (string)
    3 letter country code of the departure country associated with the original ticket.
    Example: USA

  - `unusedCredits.arrivalCountry` (string)
    3 letter country code of the arrival country associated with the original ticket.
    Example: USA

  - `unusedCredits.ticketType` (string)
    Type of credit.
    Enum: "TICKET_TYPE_UNKNOWN", "ETICKET", "MCO", "NON_GDS"

  - `unusedCredits.pcc` (string)
    PCC the credit was issued on.

  - `unusedCredits.status` (string)
    Status of the credit.
    Enum: "STATUS_UNKNOWN", "OPEN", "USED", "RESERVED"

  - `unusedCredits.tripId` (string)
    Trip ID that contains the unused credit
    Example: 1234567

  - `unusedCredits.redeemVia` (string)
    Credit redemption method.
If the value contains `CONTACT_AGENT`, then the agent must book the ticket and redeem the credits on behalf of the traveler.
    Enum: "REDEEM_VIA_OBT", "CONTACT_AGENT"

  - `unusedCredits.sourceOfTruth` (string)
    The system that owns the credit.
    Enum: "SPOTNANA", "MANUAL_FORM", "MAGNATECH", "BCD", "OBT", "CWT"

  - `unusedCredits.owningPcc` (string)
    PCC the PNR was created on.

  - `unusedCredits.paymentSourceId` (string)
    Payment source ID associated with the credit.
    Example: edd5b835-8001-430c-98f8-fedeccebe4cf

  - `unusedCredits.creditUsageType` (string)
    Usage type of the credit.
    Enum: "CREDIT_USAGE_TYPE_UNKNOWN", "COMPANY", "PERSONAL"

  - `unusedCredits.email` (string)
    Email of the passenger owning the unused credit.

  - `unusedCredits.fopInfo` (object)
    Form of payment information associated with an unused credit.

  - `unusedCredits.fopInfo.paymentSourceType` (string)
    Type of Payment Source
    Enum: "CARD", "VIRTUAL_CARD", "REWARDS_PROGRAM", "DELAYED_INVOICING", "CUSTOM_PAYMENT_METHOD", "VENDOR_PROGRAM_PAYMENT", "UNUSED_CREDIT", "CASH"

  - `unusedCredits.fopInfo.card` (object)
    User card info

  - `unusedCredits.fopInfo.card.id` (string)
    Unique identifier for this card
    Example: 34d536b6-f8ff-11eb-9a61-0242ac180002

  - `unusedCredits.fopInfo.card.type` (string)
    Type of card
    Enum: "UNKNOWN", "CREDIT", "DEBIT"

  - `unusedCredits.fopInfo.card.company` (string)
    The issuing company of card
    Enum: "NONE", "VISA", "MASTERCARD", "AMEX", "DISCOVER", "AIR_TRAVEL_UATP", "CARTE_BLANCHE", "DINERS_CLUB", "JCB", "BREX", "UNION_PAY", "EURO_CARD", "ACCESS_CARD", "ELO_CARD"

  - `unusedCredits.fopInfo.card.name` (string)
    Name on card
    Example: Harrison Schwartz

  - `unusedCredits.fopInfo.card.number` (string, required)
    Card number
    Example: 4111111111111111

  - `unusedCredits.fopInfo.card.expiryMonth` (integer)
    Expiry month
    Example: 1

  - `unusedCredits.fopInfo.card.expiryYear` (integer)
    Expiry year
    Example: 2010

  - `unusedCredits.fopInfo.card.cvv` (string)
    Card cvv number
    Example: 012

  - `unusedCredits.fopInfo.card.label` (string)
    Card Label
    Example: Label amex

  - `unusedCredits.fopInfo.card.currency` (string)
    Native currency of the card.
    Example: USD

  - `unusedCredits.fopInfo.card.externalId` (string)
    Spotnana partner card id.
    Example: bxt_RNGsNfzgJDaTstKIKqK4xEuhGYAnMdYK8T40

  - `unusedCredits.fopInfo.card.vaultId` (string)
    ID of the vault used for creating the card.
    Example: 34d536b6-f8ff-11eb-9a61-0242ac180002

  - `unusedCredits.fopInfo.card.expiry` (object)
    Contains the expiry of a Card.

  - `unusedCredits.fopInfo.card.expiry.tokenizedExpiry` (object)
    Contains the tokenized expiry of a Card.

  - `unusedCredits.fopInfo.card.expiry.tokenizedExpiry.expiryMonth` (string, required)
    Tokenized Expiry month
    Example: KvAuPANQWCpjwRQxcC8EXg==

  - `unusedCredits.fopInfo.card.expiry.tokenizedExpiry.expiryYear` (string, required)
    Tokenized Expiry year
    Example: fPBm0OWrKwPyIrCVcbg4cA==

  - `unusedCredits.fopInfo.card.expiry.expiry` (object)
    Contains the expiry of a Card.

  - `unusedCredits.fopInfo.card.expiry.expiry.expiryMonth` (integer, required)
    Expiry month
    Example: 1

  - `unusedCredits.fopInfo.card.expiry.expiry.expiryYear` (integer, required)
    Expiry year
    Example: 2010

  - `unusedCredits.fopInfo.card.ownershipLabel` (string)
    Ownership label of the card whether it is personal, corporate or central.
    Enum: "CORPORATE", "PERSONAL", "CENTRAL"

  - `unusedCredits.fopLabel` (string)
    The label associated with the FOP. This value can be empty if that particular FOP does not have any label.

  - `unusedCredits.exchangeInfo` (object)
    Exchange information for unused credits.

  - `unusedCredits.exchangeInfo.previousTicket` (string)
    Previous ticket number in case of exchanges.

  - `unusedCredits.fopCardAccessType` (string)
    The card access type of the FOP associated with the unused credit.
    Enum: "CARD_ACCESS_CENTRAL", "CARD_ACCESS_PERSONAL", "CARD_ACCESS_CORPORATE"

  - `unusedCredits.legalEntityName` (string)
    The name of the legal entity associated with this unused credit.

  - `unusedCredits.countryCode` (string)
    Country code of the credit's Point-of-Sale market, derived from the credit's PCC.
    Example: US

  - `cheapestOptions` (array)
    List of cheapest itineraries after applying filters.

  - `waiverApplicabilityType` (string)
    Type of waiver applicable to an exchange:
- WAIVER_APPLICABILITY_UNKNOWN: No waiver is applicable.
- AIRLINE_DISRUPTION_WAIVER: Airline-issued disruption waiver is applicable.
    Enum: "WAIVER_APPLICABILITY_UNKNOWN", "AIRLINE_DISRUPTION_WAIVER"

## Response 401:

  - `401` (unknown)
    Unauthorized

## Response 401 fields (application/json):

  - `debugIdentifier` (string)
    Link to debug the error internally.

  - `errorMessages` (array)

  - `errorMessages.errorCode` (string)
    Error code to identify the specific errors.

  - `errorMessages.message` (string)
    Message containing details of error.

  - `errorMessages.errorParameters` (array)
    Error message parameters.

  - `errorMessages.errorParameters.name` (string)
    Parameter name

  - `errorMessages.errorParameters.value` (string)
    Parameter value

  - `errorMessages.errorDetail` (string)
    More details about the error.

## Response 403:

  - `403` (unknown)
    Forbidden

## Response 403 fields (application/json):

  - `debugIdentifier` (string)
    Link to debug the error internally.

  - `errorMessages` (array)

  - `errorMessages.errorCode` (string)
    Error code to identify the specific errors.

  - `errorMessages.message` (string)
    Message containing details of error.

  - `errorMessages.errorParameters` (array)
    Error message parameters.

  - `errorMessages.errorParameters.name` (string)
    Parameter name

  - `errorMessages.errorParameters.value` (string)
    Parameter value

  - `errorMessages.errorDetail` (string)
    More details about the error.

## Response 404:

  - `404` (unknown)
    The specified resource was not found.

## Response 404 fields (application/json):

  - `debugIdentifier` (string)
    Link to debug the error internally.

  - `errorMessages` (array)

  - `errorMessages.errorCode` (string)
    Error code to identify the specific errors.

  - `errorMessages.message` (string)
    Message containing details of error.

  - `errorMessages.errorParameters` (array)
    Error message parameters.

  - `errorMessages.errorParameters.name` (string)
    Parameter name

  - `errorMessages.errorParameters.value` (string)
    Parameter value

  - `errorMessages.errorDetail` (string)
    More details about the error.

