# Get PNR exchange details

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

Endpoint: GET /v2/air/pnrs/{pnrId}/exchange-details
Version: v2
Security: Bearer

## Security:

  - `Bearer` (unknown)
    http bearer

## Path parameters:

  - `pnrId` (string, required)
    Spotnana PNR ID.

## Response 200:

  - `200` (unknown)
    OK

## Response 200 fields (application/json):

  - `pnrId` (string, required)
    PNR ID for the booking.
    Example: 1234567890

  - `ticketToExchangeInfos` (array)
    List of tickets and their exchange info.

  - `ticketToExchangeInfos.ticketNumber` (string)
    Ticket number. For non-ticketed PNRs, this field will not be present.
    Example: 0111234567890

  - `ticketToExchangeInfos.exchangeState` (string)
    Current exchange state of the ticket:
- EXCHANGEABLE_BY_OBT: Exchange possible via API.
- EXCHANGEABLE_BY_SUPPORT: Exchange possible via agent support.
    Enum: "EXCHANGEABLE_BY_OBT", "EXCHANGEABLE_BY_SUPPORT"

  - `ticketToExchangeInfos.isRefundable` (boolean)
    A flag to indicate if ticket is refundable or not.
    Example: false

  - `ticketToExchangeInfos.exchangeNotSupportedReasons` (array)
    Reasons why exchange is not supported via OBT.

  - `ticketToExchangeInfos.supplierPreferredEnabledFields` (object)
    Contains the information of the options that are allowed to exchange.

  - `ticketToExchangeInfos.supplierPreferredEnabledFields.travelDate` (boolean)
    If true it means Airline allows to change the date.

  - `ticketToExchangeInfos.supplierPreferredEnabledFields.route` (boolean)
    If true it means Airline allows to change the route.

  - `ticketToExchangeInfos.supplierPreferredEnabledFields.addLeg` (boolean)
    If true it means Airline allows to add new leg to the existing itinerary.

  - `ticketToExchangeInfos.supplierPreferredEnabledFields.removeLeg` (boolean)
    If true it means Airline allows to remove leg from the existing itinerary.

  - `ticketToExchangeInfos.supplierPreferredEnabledFields.modifyPartialItinerary` (boolean)
    If true it means Airline allows to modify partial itinerary.

  - `ticketToExchangeInfos.supplierPreferredEnabledFields.sameEndpointRestriction` (boolean)
    If true it means Airline allows to change the endpoint across legs for the return itinerary.

  - `ticketToExchangeInfos.userOrgId` (object)
    User and user's organization information.

  - `ticketToExchangeInfos.userOrgId.organizationAgencyId` (object)
    Agency id for the organization.

  - `ticketToExchangeInfos.userOrgId.organizationAgencyId.id` (string, required)

  - `ticketToExchangeInfos.userOrgId.organizationId` (object, required)
    Organization id for traveler.

  - `ticketToExchangeInfos.userOrgId.organizationId.id` (string, required)

  - `ticketToExchangeInfos.userOrgId.userId` (object, required)
    User identifier

  - `ticketToExchangeInfos.userOrgId.userId.id` (string, required)

  - `ticketToExchangeInfos.userOrgId.tmcInfo` (object)
    TMC config information.

  - `ticketToExchangeInfos.userOrgId.tmcInfo.id` (object, required)
    Company ID

  - `ticketToExchangeInfos.userOrgId.tmcInfo.id.id` (string, required)
    Example: f49d00fe-1eda-4304-ba79-a980f565281d

  - `ticketToExchangeInfos.userOrgId.tmcInfo.primaryServiceProviderTmc` (object, required)
    Primary service provider TMC info

  - `ticketToExchangeInfos.userOrgId.tmcInfo.secondaryServiceProviderTmcs` (array)
    Secondary service provider TMCs for the TMC.

  - `ticketToExchangeInfos.userOrgId.tmcInfo.secondaryServiceProviderTmcs.supplier` (string, required)
    Supplier type like Sabre, TravelFusion etc.
    Enum: "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"

  - `ticketToExchangeInfos.userOrgId.tmcInfo.secondaryServiceProviderTmcs.travelType` (string, required)
    Travel Type
    Enum: "AIR", "HOTEL", "CAR", "RAIL", "LIMO", "MISC", "ALL"

  - `ticketToExchangeInfos.userOrgId.tmcBasicInfo` (object)
    TMC related basic information.

  - `ticketToExchangeInfos.userOrgId.tmcBasicInfo.contractingTmc` (object, required)
    Basic information about a company.

  - `ticketToExchangeInfos.userOrgId.tmcBasicInfo.contractingTmc.name` (string)

  - `ticketToExchangeInfos.userOrgId.tmcBasicInfo.contractingTmc.logo` (object)
    An image with meta data. Either the `data` or `url` property must be supplied to load the image.

  - `ticketToExchangeInfos.userOrgId.tmcBasicInfo.contractingTmc.logo.data` (string)
    Example: 6935813e12584abda0e43d71cd2ea260

  - `ticketToExchangeInfos.userOrgId.tmcBasicInfo.contractingTmc.logo.dimensions` (object)
    Image dimensions ie width and height.

  - `ticketToExchangeInfos.userOrgId.tmcBasicInfo.contractingTmc.logo.dimensions.height` (integer)
    Example: 120

  - `ticketToExchangeInfos.userOrgId.tmcBasicInfo.contractingTmc.logo.dimensions.width` (integer)
    Example: 240

  - `ticketToExchangeInfos.userOrgId.tmcBasicInfo.contractingTmc.logo.url` (string)
    Example: https://static.wixstatic.com/media/73f2e2_6935813e12584abda0e43d71cd2ea260~mv2.png/v1/fill/w_630,h_94,al_c,q_85,usm_0.66_1.00_0.01/Spotnana%403x.webp

  - `ticketToExchangeInfos.userOrgId.tmcBasicInfo.contractingTmc.logo.metadata` (object)
    Metadata associated with an image.

  - `ticketToExchangeInfos.userOrgId.tmcBasicInfo.contractingTmc.logo.metadata.variant` (string)
    Image variant.
    Enum: "LIGHT", "DARK"

  - `ticketToExchangeInfos.travelerInfo` (object)
    The traveler identifiers. These can be either the Spotnana user IDs of the travelers or information regarding
the adhoc travelers.

  - `ticketToExchangeInfos.travelerInfo.adhocTravelerInfo` (object)
    Describes an adhoc traveler.

  - `ticketToExchangeInfos.travelerInfo.adhocTravelerInfo.externalId` (string)
    External Id of user
    Example: qwert123

  - `airWaiverExchangeInfo` (object)
    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.

  - `airWaiverExchangeInfo.activeWaiver` (object)
    Lightweight summary of one waiver code for display and ticketing.

  - `airWaiverExchangeInfo.activeWaiver.waiverCode` (string)
    Airline waiver code or authorization number.
    Example: 06SEP26A

  - `airWaiverExchangeInfo.activeWaiver.name` (string)
    Waiver display name.
    Example: Miami Operational Disruption

  - `airWaiverExchangeInfo.constraints` (object)
    Search-impacting constraints derived from waiver data.
Boolean fields default to false (conservative — restrict the exchange).

  - `airWaiverExchangeInfo.constraints.newTravelFrom` (object)
    Date in ISO 8601 standard.

  - `airWaiverExchangeInfo.constraints.newTravelFrom.iso8601` (string, required)
    Example: 2017-07-21

  - `airWaiverExchangeInfo.constraints.issuingAirlineIataCode` (string)
    Airline that issued the waiver. Search must be restricted to this carrier.
    Example: AA

  - `airWaiverExchangeInfo.constraints.originDestinationChangeAllowed` (boolean)
    Whether origin/destination changes are allowed. Default false (locked).

  - `airWaiverExchangeInfo.constraints.originDestinationChangeRadiusMiles` (integer)
    Max radius for origin/destination change in miles. 0 means not applicable.

  - `airWaiverExchangeInfo.constraints.cabinChangeAllowed` (boolean)
    Whether cabin change is allowed. Default false (locked).

  - `airWaiverExchangeInfo.constraints.refundEligible` (boolean)
    Whether refund is available as an alternative to exchange.

  - `airWaiverExchangeInfo.source` (string)
    Source of the waiver data.
    Enum: "FLIGHT_STATS_EVENT"

## 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 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.

