---
title: "Get PNR exchange details"
method: GET
path: "/v2/air/pnrs/{pnrId}/exchange-details"
tags: ["Air"]
---

# Get PNR exchange details

`GET /v2/air/pnrs/{pnrId}/exchange-details`

## Request

- Base URL: `https://api-ext-sboxmeta.partners.spotnana.com`
- URL: `https://api-ext-sboxmeta.partners.spotnana.com/v2/air/pnrs/{pnrId}/exchange-details`
- Auth: HTTP bearer

This endpoint gets exchange details of all the tickets present in the given PNR ID of the
given trip ID.

## Response `200`

OK

- AirPnrExchangeDetailsResponse: Exchange details for the booking.
  - `pnrId` string, required: PNR ID for the booking.
  - `ticketToExchangeInfos` TicketToExchangeInfo[]: List of tickets and their exchange info.
    - `ticketNumber` string: Ticket number. For non-ticketed PNRs, this field will not be present.
    - `exchangeState` 'EXCHANGEABLE_BY_OBT' | 'EXCHANGEABLE_BY_SUPPORT': Current exchange state of the ticket: - EXCHANGEABLE_BY_OBT: Exchange possible via API. - EXCHANGEABLE_BY_SUPPORT: Exchange possible via agent support.
    - `isRefundable` boolean: A flag to indicate if ticket is refundable or not.
    - `exchangeNotSupportedReasons` ExchangeNotSupportedReason[]: Reasons why exchange is not supported via OBT.
    - `supplierPreferredEnabledFields` AirExchangeAvailableOptions: Contains the information of the options that are allowed to exchange.
      - `travelDate` boolean: If true it means Airline allows to change the date.
      - `route` boolean: If true it means Airline allows to change the route.
      - `addLeg` boolean: If true it means Airline allows to add new leg to the existing itinerary.
      - `removeLeg` boolean: If true it means Airline allows to remove leg from the existing itinerary.
      - `modifyPartialItinerary` boolean: If true it means Airline allows to modify partial itinerary.
      - `sameEndpointRestriction` boolean: If true it means Airline allows to change the endpoint across legs for the return itinerary.
    - `userOrgId` UserOrgId: User and user's organization information.
      - `organizationAgencyId` OrganizationAgencyId: Agency id for the organization.
        - `id` string, required
      - `organizationId` OrganizationId, required: Organization id for traveler.
        - `id` string, required
      - `userId` UserId, required: User identifier
        - `id` string, uuid, required
      - `tmcInfo` TmcInfo: TMC config information.
        - `id` CompanyId, required: Company ID
          - `id` string, uuid, required
        - `primaryServiceProviderTmc` PrimaryServiceProviderTmc, required: Primary service provider TMC info
          - `tmcId` CompanyId, required: Company ID
            - `id` string, uuid, required
        - `secondaryServiceProviderTmcs` SecondaryServiceProviderTmc[]: Secondary service provider TMCs for the TMC.
          - `tmcId` CompanyId, required: Company ID
            - `id` string, uuid, required
          - `supplier` 'SABRE' | 'AMADEUS' | 'TRAVEL_FUSION' | 'FARELOGIX_NDC' | 'ATPCO_NDC' | 'TRAINLINE' | 'AVIA' | 'QBR' | 'BCD' | 'QANTAS_HOTELS' | 'SOUTHWEST' | 'EXPEDIA' | 'HOTEL_HUB' | 'NDC' | 'MARRIOTT' | 'CLEARTRIP' | 'KYTE' | 'GROUNDSPAN' | 'SABRE_NDC' | 'BOOKING_COM' | 'CARTRAWLER' | 'PREMIER_INN' | 'TRAVELODGE' | 'ENTERPRISE' | 'HYATT' | 'HILTON' | 'NATIONAL' | 'ALAMO' | 'HERTZ' | 'DOLLAR' | 'THRIFTY' | 'FIREFLY' | 'EUROSTAR' | 'AVIS' | 'BUDGET' | 'AMADEUS_NDC' | 'SIXT', required: Supplier type like Sabre, TravelFusion etc.
          - `travelType` 'AIR' | 'HOTEL' | 'CAR' | 'RAIL' | 'LIMO' | 'MISC' | 'ALL', required: Travel Type
        - `partnerTmcId` CompanyId: Company ID
          - `id` string, uuid, required
      - `tmcBasicInfo` TmcBasicInfo: TMC related basic information.
        - `contractingTmc` CompanyRef, required: Basic information about a company.
          - `id` CompanyId, required: Company ID
            - `id` string, uuid, required
          - `name` string
          - `logo` Image: An image with meta data. Either the `data` or `url` property must be supplied to load the image.
            - `data` string, byte
            - `dimensions` Dimensions: Image dimensions ie width and height.
              - …
            - `url` string
            - `metadata` ImageMetadata: Metadata associated with an image.
              - …
        - `bookingTmc` CompanyRef, required: Basic information about a company.
          - `id` CompanyId, required: Company ID
            - `id` string, uuid, required
          - `name` string
          - `logo` Image: An image with meta data. Either the `data` or `url` property must be supplied to load the image.
            - `data` string, byte
            - `dimensions` Dimensions: Image dimensions ie width and height.
              - …
            - `url` string
            - `metadata` ImageMetadata: Metadata associated with an image.
              - …
    - `travelerInfo` union: The traveler identifiers. These can be either the Spotnana user IDs of the travelers or information regarding the adhoc travelers.
      - object: Wrapper over UserId object to be used as an identifier in a oneOf case
        - `userId` UserId: User identifier
          - `id` string, uuid, required
      - object: Wrapper over AdhocTravelerInfo object to be used as an identifier in a oneOf case.
        - `adhocTravelerInfo` AdhocTravelerInfo: Describes an adhoc traveler.
          - `registrarUserId` UserId: User identifier
            - `id` string, uuid, required
          - `externalId` string: External Id of user
  - `airWaiverExchangeInfo` AirWaiverExchangeInfo: Waiver information applicable to a PNR exchange, including active waiver codes and the search constraints they impose. Returned in the exchange-details response when a disruption waiver covers the PNR.
    - `activeWaiver` AirWaiverCodeSummary: Lightweight summary of one waiver code for display and ticketing.
      - `waiverCode` string: Airline waiver code or authorization number.
      - `name` string: Waiver display name.
    - `constraints` AirWaiverExchangeConstraints: Search-impacting constraints derived from waiver data. Boolean fields default to false (conservative — restrict the exchange).
      - `newTravelFrom` DateModel: Date in ISO 8601 standard.
        - `iso8601` string, required
      - `newTravelTo` DateModel: Date in ISO 8601 standard.
        - `iso8601` string, required
      - `issuingAirlineIataCode` string: Airline that issued the waiver. Search must be restricted to this carrier.
      - `originDestinationChangeAllowed` boolean: Whether origin/destination changes are allowed. Default false (locked).
      - `originDestinationChangeRadiusMiles` integer: Max radius for origin/destination change in miles. 0 means not applicable.
      - `cabinChangeAllowed` boolean: Whether cabin change is allowed. Default false (locked).
      - `refundEligible` boolean: Whether refund is available as an alternative to exchange.
    - `source` 'FLIGHT_STATS_EVENT': Source of the waiver data.

## Other responses

- `401`: Unauthorized
- `404`: The specified resource was not found.

## Changes

- **2026-10-15** `9f104b7247a3`: 2 info
  - added the optional property `ticketToExchangeInfos/items/userOrgId/tmcBasicInfo/bookingTmc/logo/metadata` to the response with the `200` status
  - added the optional property `ticketToExchangeInfos/items/userOrgId/tmcBasicInfo/contractingTmc/logo/metadata` to the response with the `200` status
- **2026-10-08** `c885010e2a01`: 1 warning, 1 info
  - added the new `SIXT` enum value to the `ticketToExchangeInfos/items/userOrgId/tmcInfo/secondaryServiceProviderTmcs/items/supplier` response property for the response status `200`
  - added the optional property `airWaiverExchangeInfo` to the response with the `200` status
- **2026-09-02** `2c817d657dcc`: 1 warning
  - added the new `HILTON` enum value to the `ticketToExchangeInfos/items/userOrgId/tmcInfo/secondaryServiceProviderTmcs/items/supplier` response property for the response status `200`
- **2026-08-25** `6b75a4202eeb`: 1 warning
  - added the new `AMADEUS_NDC` enum value to the `ticketToExchangeInfos/items/userOrgId/tmcInfo/secondaryServiceProviderTmcs/items/supplier` response property for the response status `200`

[Operation history](https://skmtc.dev/spotnana/apis/air-api/changes/v2/air/pnrs/:pnrId/exchange-details/get.md)

---

[API](https://skmtc.dev/spotnana/apis/air-api.md) - [All operations](https://skmtc.dev/spotnana/apis/air-api/llms.txt) - [OpenAPI document](https://skmtc.dev/spotnana/apis/air-api/revisions/33dcaecde45b?raw)
