Spotnana Trip PNRs API

APIs to manage PNRs within trips.

Operations 12

POST /v3/trips/{tripId}/pnrs Create PNR #
GET /v3/trips/{tripId}/pnrs/{pnrId} Get PNR #
PUT /v3/trips/{tripId}/pnrs/{pnrId} Update PNR #
POST /v3/trips/{tripId}/pnrs/{pnrId}/remarks Add Remark #
POST /v3/trips/{tripId}/pnrs/{pnrId}/finalize Finalize the given pnr. #
POST /v3/trips/{tripId}/pnrs/{pnrId}/suspend Suspend the given pnr. #
POST /v3/trips/{tripId}/pnrs/{pnrId}/cancel Cancel PNR #
GET /v2/trips/{tripId}/pnrs/{pnrId}/cancellation-details Get cancellation details #
POST /v2/trips/{tripId}/pnrs/{pnrId}/download-invoice Download PNR invoice #
POST /v2/pnrs/{pnrId}/process-approval Process the PNR approval #
GET /v2/pnrs Get PNR by external Id #
GET /v2/pnrs/search Find Pnr details like BookingId and TripId #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/spotnana-trip-pnrs-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

spotnana-trip-pnrs-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Air Trip PNRs API
  version: v2
  description: APIs to perform search, checkout and book an air pnr
servers:
- url: https://api-ext-sboxmeta.partners.spotnana.com
  description: Sandbox URL
security:
- Bearer: []
tags:
- name: Trip PNRs
  description: APIs to manage PNRs within trips.
  x-displayName: PNRs
paths:
  /v3/trips/{tripId}/pnrs:
    parameters:
    - name: tripId
      in: path
      description: Trip ID
      required: true
      schema:
        type: string
        example: '6926658168'
    post:
      tags:
      - Trip PNRs
      summary: Create PNR
      description: 'Create a new Passenger Name Record (PNR). A PNR represents a booking (air, hotel, rail, or car) made on the Spotnana platform.

        You can also use this endpoint to import bookings made from external sources into the Spotnana platform.

        '
      operationId: createPnrV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PnrData'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityNonUUIDId'
                example:
                  id: 1234567890
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v3/trips/{tripId}/pnrs/{pnrId}:
    parameters:
    - name: tripId
      in: path
      description: Trip ID
      required: true
      schema:
        type: string
        example: '6926658168'
    - name: pnrId
      in: path
      description: Pnr Id
      required: true
      schema:
        type: string
        example: '6926658168'
    get:
      tags:
      - Trip PNRs
      summary: Get PNR
      description: This endpoint gets PNR for a given trip ID and PNR ID.
      operationId: getPnrV3
      x-pii-supported: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PnrData'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
      - Trip PNRs
      summary: Update PNR
      description: This endpoint updates PNR by ID.
      operationId: updatePnrV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PnrData'
      responses:
        '204':
          description: Updated Successfully
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/trips/{tripId}/pnrs/{pnrId}/remarks:
    parameters:
    - name: tripId
      in: path
      description: Trip ID
      required: true
      schema:
        type: string
        example: 6926658168
    - name: pnrId
      in: path
      description: PNR ID
      required: true
      schema:
        type: string
        example: 6926658168
    post:
      tags:
      - Trip PNRs
      summary: Add Remark
      description: This endpoint provided adding third party remarks to the given PNR.
      operationId: addRemarkV3
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddRemarksRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddRemarksResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/trips/{tripId}/pnrs/{pnrId}/finalize:
    parameters:
    - name: tripId
      in: path
      description: Trip Id
      required: true
      schema:
        type: string
        example: '6926658168'
    - name: pnrId
      in: path
      description: Pnr Id
      required: true
      schema:
        type: string
        example: '6926658168'
    post:
      tags:
      - Trip PNRs
      summary: Finalize the given pnr.
      description: This endpoint changes the metadata of PNR to finalized and triggers supplier actions if required.
      operationId: finalizePnr
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FinalizeRequest'
      responses:
        '200':
          description: OK
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/trips/{tripId}/pnrs/{pnrId}/suspend:
    parameters:
    - name: tripId
      in: path
      description: Trip Id
      required: true
      schema:
        type: string
        example: '6926658168'
    - name: pnrId
      in: path
      description: Pnr Id
      required: true
      schema:
        type: string
        example: '6926658168'
    post:
      tags:
      - Trip PNRs
      summary: Suspend the given pnr.
      description: 'This endpoint suspends the PNR, transitioning it into a read-only state.

        Once suspended, updates via OBT will be restricted.

        This API serves various use cases, such as price optimization and rebooking.

        '
      operationId: suspendPnr
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SuspendRequest'
      responses:
        '200':
          description: OK
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/trips/{tripId}/pnrs/{pnrId}/cancel:
    parameters:
    - name: tripId
      in: path
      description: Trip ID
      required: true
      schema:
        type: string
        example: 6926658168
    - name: pnrId
      in: path
      description: PNR ID
      required: true
      schema:
        type: string
        example: 6926658168
    post:
      tags:
      - Trip PNRs
      summary: Cancel PNR
      description: This endpoint cancels PNR or part of PNR object.In case of partial PNR cancel we can cancel journey/ticket.
      operationId: cancelPnrV3
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PnrCancelRequest'
      responses:
        '200':
          description: OK
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/trips/{tripId}/pnrs/{pnrId}/cancellation-details:
    parameters:
    - name: tripId
      in: path
      description: Trip ID.
      required: true
      schema:
        type: string
        example: '1234567890'
    - name: pnrId
      in: path
      description: PNR ID.
      required: true
      schema:
        type: string
        example: '6926658168'
    get:
      tags:
      - Trip PNRs
      summary: Get cancellation details
      description: This endpoint gets cancellation details for a given trip ID and PNR ID.
      operationId: getCancellationDetails
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PnrCancellationDetails'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/trips/{tripId}/pnrs/{pnrId}/download-invoice:
    parameters:
    - name: tripId
      in: path
      description: Trip Id
      required: true
      schema:
        type: string
        example: '6926658168'
    - name: pnrId
      in: path
      description: Pnr Id
      required: true
      schema:
        type: string
        example: '2643222286'
    post:
      tags:
      - Trip PNRs
      summary: Download PNR invoice
      description: This endpoint downloads invoice on demand for a given trip ID and PNR ID.
      operationId: downloadInvoice
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DownloadInvoiceResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/pnrs/{pnrId}/process-approval:
    parameters:
    - name: pnrId
      in: path
      description: Pnr Id
      required: true
      schema:
        type: string
      example: '6926658168'
    post:
      tags:
      - Trip PNRs
      summary: Process the PNR approval
      description: Approve or decline a PNR.
      operationId: processPnrApproval
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProcessPnrApprovalRequest'
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/pnrs:
    parameters:
    - name: externalId
      in: query
      description: External ID
      required: true
      schema:
        type: string
      example: external-pnr-id
    get:
      tags:
      - Trip PNRs
      summary: Get PNR by external Id
      description: This endpoint gets PNR Id and Trip Id for a given external Id.
      operationId: getPnrByExternalId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PnrResponseOnExternalId'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/pnrs/search:
    parameters:
    - name: searchText
      in: query
      description: The Source Pnr or Ticket Number or Vendor Confirmation to be searched
      required: true
      schema:
        type: string
        example: MDIB5C
    - name: inputType
      in: query
      description: The type of Search text,i.e, SOURCE_PNR or TICKET_NUMBER or VENDOR_CONFIRMATION
      required: true
      schema:
        type: string
        enum:
        - SOURCE_PNR
        - TICKET_NUMBER
        - VENDOR_CONFIRMATION
        example: SOURCE_PNR
    get:
      tags:
      - Trip PNRs
      summary: Find Pnr details like BookingId and TripId
      description: This API gets Pnr details for a given Source Pnr/ Ticket Number/ Vendor Confirmation.
      operationId: pnrSearch
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PnrSearchResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    AppliedWaiveOffInfo:
      type: object
      title: Applied Waive-Off Information
      description: Information about TMC fee waivers applied by an agent during checkout.
      properties:
        waiveOffAmount:
          description: The amount of TMC fee that has been waived
          $ref: '#/components/schemas/FareAmount'
        waiveOffReason:
          description: The reason provided by the agent for waiving the fee
          $ref: '#/components/schemas/WaiveOffFeeReason'
    Department:
      type: object
      title: Department
      description: Department details.
      required:
      - id
      - name
      properties:
        id:
          $ref: '#/components/schemas/DepartmentId'
        name:
          type: string
          example: IT Department
        externalId:
          type: string
          description: External id of the department
          example: department-ext-id
        employeeCount:
          type: integer
          format: int32
          description: Count of employees in the department
          example: 57
    TransactionFareType:
      type: string
      description: type of the fare in this transaction.
      enum:
      - BASE_AMOUNT
      - OTHER_FEE_AND_TAXES
      - PENALTY
      - OB_FEES
      - DESTINATION_FEES
      - TOTAL
      - VAT
      - DROP_OFF_CHARGE
      - HST
      - QST
      - GST
      - CHARGE_BASE
      - CHARGE_TOTAL
      - SUB_TOTAL
      - OB_FEES_GST
      - FORFEITED_AMOUNT
      - PENALTY_GST
      - PENALTY_QST
      - PENALTY_HST
      x-ignoreBreakingChanges:
      - TransactionFareType->FLIGHT_PASS_ADDITIONAL_BASE
      example: BASE_AMOUNT
    NameSuffix:
      title: NameSuffix
      description: Suffix for name
      type: string
      enum:
      - NAME_SUFFIX_UNKNOWN
      - SR
      - JR
      - MD
      - PHD
      - II
      - III
      - IV
      - DO
      - ATTY
      - V
      - VI
      - ESQ
      - DC
      - DDS
      - VM
      - JD
      - SECOND
      - THIRD
      example: SR
    InlineQCInfo:
      description: A list of failed inline QC rules
      type: array
      items:
        $ref: '#/components/schemas/QcRuleType'
    RailCancellationDetails:
      type: object
      title: RailCancellationDetails
      description: Cancellation details for rail booking.
      properties:
        refundOptions:
          type: array
          description: Refund options for this booking.
          items:
            $ref: '#/components/schemas/RailRefundOption'
    AgentAssistedTripFeeInfo:
      title: Agent Assisted Trip Fee Info
      type: object
      description: Trip Fees when Agent is booking for Traveler.
      required:
      - agentFeeType
      properties:
        agentFeeType:
          type: string
          example: AGENT_ASSISTED_TRIP_FEE
        calculatedAmount:
          $ref: '#/components/schemas/Money'
        chargeProcessorInfo:
          $ref: '#/components/schemas/ChargeProcessorInfo'
    ThirdPartyPnrRemark:
      title: ThirdPartyPnrRemark
      description: Third party remarks to the given PNR
      oneOf:
      - $ref: '#/components/schemas/SabrePnrRemarkWrapper'
    RailItem:
      type: object
      title: RailItem
      description: This describes the railItem related to a particular itemGroup.
      required:
      - itemType
      properties:
        itemType:
          type: string
        legInfos:
          type: array
          items:
            $ref: '#/components/schemas/LegInfoRail'
        ancillaries:
          type: array
          items:
            $ref: '#/components/schemas/RailAncillary'
    SeatPref:
      type: object
      title: SeatPref
      description: Preference about seat of rail.
      properties:
        hasAccessibility:
          type: boolean
          description: Whether or not requires assistance for disability.
          default: false
          example: false
        seatTypes:
          type: array
          items:
            $ref: '#/components/schemas/SeatPrefType'
        seatLocations:
          type: array
          items:
            $ref: '#/components/schemas/SeatPrefLocation'
        deckLevels:
          type: array
          items:
            $ref: '#/components/schemas/DeckLevel'
        seatDirections:
          type: array
          items:
            $ref: '#/components/schemas/SeatPrefDirection'
    CompanyConfigSourceWrapper:
      type: object
      title: CompanyConfigSourceWrapper
      description: Wrapper for option source company config.
      properties:
        companyConfig:
          $ref: '#/components/schemas/CompanyConfigSource'
    CardMetadata2:
      type: object
      title: CardMetadata
      description: Metadata for Card payment source.
      properties:
        card:
          $ref: '#/components/schemas/Card'
        accessType:
          $ref: '#/components/schemas/CreditCardAccess'
        isLodgeCard:
          type: boolean
          description: Whether the payment is made using a lodge card
          example: false
        bta:
          type: string
          description: Whether this is a BTA card. Possible values are 'Y' or 'N'. Relevant only for lodge cards.
          example: Y
    Preference:
      title: Preference
      type: object
      required:
      - preferredType
      properties:
        preferredType:
          $ref: '#/components/schemas/PreferredType'
        blockedReason:
          type: string
          description: Reason for blocking the leg, hotel or car.
        label:
          type: string
          description: The label assigned to a specific tier of preference.
    AircraftAmenity:
      type: object
      title: AircraftAmenity
      description: Aircraft Amenity properties
      properties:
        displayText:
          type: string
          example: 789 (widebody)
        aircraftType:
          type: string
          example: widebody
        aircraftModel:
          type: string
          example: '787'
    Transmission:
      type: string
      title: Transmission
      description: Transmission types.
      enum:
      - UNKNOWN_TRANSMISSION
      - MANUAL_UNSPECIFIED_DRIVE
      - MANUAL_4WD
      - MANUAL_AWD
      - AUTO_UNSPECIFIED_DRIVE
      - AUTO_4WD
      - AUTO_AWD
      x-enum-varnames:
      - UNKNOWN_TRANSMISSION
      - MANUAL_UNSPECIFIED_DRIVE
      - MANUAL_4WD
      - MANUAL_AWD
      - AUTO_UNSPECIFIED_DRIVE
      - AUTO_4WD
      - AUTO_AWD
      example: MANUAL_4WD
    HotelNightlyRate:
      title: HotelNightlyRate
      description: Contains nightly rate for the relevant hotel.
      properties:
        total:
          description: Nightly total rate.
          $ref: '#/components/schemas/Money'
        base:
          description: Nightly base rate.
          $ref: '#/components/schemas/Money'
        tax:
          description: Nightly tax rate.
          $ref: '#/components/schemas/Money'
    HotelAmenities:
      title: HotelAmenities
      type: object
      description: Type of hotel amenity
      properties:
        type:
          $ref: '#/components/schemas/HotelAmenityType'
        additionalInfo:
          type: string
          description: Amenity description
          example: Complimentary in-room coffee or tea
        complimentary:
          type: boolean
          description: Is Amenity complimentary
          example: true
    ServiceFee:
      title: ServiceFee
      description: Service Fee on the booking
      type: object
      required:
      - fare
      - ticketNumber
      - status
      properties:
        fare:
          $ref: '#/components/schemas/FareAmount'
          description: Amount charged for the service fee
        taxes:
          type: array
          description: List of applicable taxes
          items:
            $ref: '#/components/schemas/TaxAmount'
        ticketNumber:
          type: string
          description: Ticket Number
        status:
          type: string
          description: Status for the associated ticket
          enum:
          - ISSUED
          - VOIDED
          - PENDING
          - DELAYED_INVOICE
          - FAILED
          - NO_CHARGE
          - UNKNOWN
          - WAIVED_OFF
          example: ISSUED
        fop:
          $ref: '#/components/schemas/FormOfPayment'
          description: Form of payment for the above amount
        visibleToTraveler:
          type: boolean
          description: Show/hide service fee to traveler
          example: true
        paymentTransactionInfo:
          $ref: '#/components/schemas/PaymentTransactionInfo'
        tags:
          type: array
          description: List of key-value pairs for storing some tags related to service-fee.
          items:
            $ref: '#/components/schemas/KeyValue'
        feeInfo:
          $ref: '#/components/schemas/FeeInfo'
        waiveOffInfo:
          $ref: '#/components/schemas/AppliedWaiveOffInfo'
        chargeId:
          type: string
          description: Unique identifier for the charge associated with this service fee.
    CustomField:
      type: object
      title: CustomField
      description: The custom field containing type, externalId and description
      required:
      - id
      - type
      - description
      properties:
        id:
          type: string
          description: Meeting id or budget id based on custom field type.
        type:
          $ref: '#/components/schemas/CustomFieldType'
        description:
          type: string
          description: Description of the custom Field
          example: GLOBAL OFFSITE 2022
    DepartmentId:
      type: object
      title: DepartmentId
      description: Department id.
      required:
      - id
      properties:
        id:
          type: string
          example: 631ccbcf-9414-5fe0-c234-b324dfbe7422
    DisabledReason:
      type: string
      description: Reason why the trip is disabled if applicable.
      enum:
      - MAX_BOOKINGS_EXCEEDED
      - TRIP_EXPIRED
    FlightUpdates:
      type: object
      title: FlightUpdates
      description: Flight alerts like departure datetime change, gate change, etc.
      properties:
        previousDepartureDateTime:
          description: Departure date time before this alert
          $ref: '#/components/schemas/DateTimeLocal'
        previousArrivalDateTime:
          description: Arrival date time before this alert
          $ref: '#/components/schemas/DateTimeLocal'
        previousDepartureGate:
          description: Departure gate before this alert
          $ref: '#/components/schemas/Gate'
        previousArrivalGate:
          description: Arrival gate before this alert
          $ref: '#/components/schemas/Gate'
    AdhocUserInfo:
      type: object
      title: AdhocUserInfo
      description: Basic information related to ad-hoc traveler profile.
      required:
      - profileOwner
      properties:
        profileOwner:
          $ref: '#/components/schemas/ProfileOwner'
        isSaved:
          type: boolean
          description: "A boolean flag to show if ad-hoc traveler is visible in search. While updating the user \nif client tries to update this field, it will throw exception.\n"
          default: false
    TravelRegionType:
      type: string
      title: TravelRegionType
      description: Travel region Type
      enum:
      - DOMESTIC
      - INTERNATIONAL
      example: DOMESTIC
    DirectBillingWrapper2:
      type: object
      title: DirectBillingWrapper
      description: Wrapper for DirectBilling metadata
      required:
      - directBilling
      properties:
        directBilling:
          $ref: '#/components/schemas/DirectBilling2'
    BagWeightLimit:
      type: object
      description: This contains weight limit details of bag
      properties:
        weightLimit:
          type: array
          description: Weight limit in different units
          items:
            $ref: '#/components/schemas/WeightLimit'
        applicability:
          $ref: '#/components/schemas/BagPolicyApplicability'
    SeatTypePolicy:
      type: object
      title: SeatTypePolicy
      properties:
        seatTypePolicy:
          $ref: '#/components/schemas/AirPolicy'
    BuyerInfo:
      type: object
      title: BuyerInfo
      description: Buyer of items mentioned in the invoice.
      required:
      - name
      - address
      properties:
        name:
          description: Name of buyer, usually a traveler.
          type: string
          example: John Doe
          x-pii: SENSITIVE
        address:
          description: Address of buyer. Could be office, legal entity or org address.
          type: string
          example: '115 Broadway Suite 04-101,

            New York, NY 10006'
          x-pii: SENSITIVE
        taxId:
          description: Tax number for the seller, for ex GSTN in India
          type: string
          example: TXG239023092
          deprecated: true
          x-sunset: '2026-07-01'
        idInfo:
          type: array
          description: The seller ID information.
          items:
            $ref: '#/components/schemas/IdInfo'
    SourceInfo:
      title: SourceInfo
      description: Information about the source of booking
      type: object
      required:
      - bookingSource
      properties:
        sourcePnrId:
          type: string
          description: The source PNR ID
          example: AEDAVF
        bookingSource:
          type: string
          description: The source of booking
          example: United.com
        thirdParty:
          type: string
          description: The known third party source of the booking.
          example: United.com
          readOnly: true
        bookingDateTime:
          description: Booking date time of the PNR
          $ref: '#/components/schemas/DateTimeOffset'
        posDescriptor:
          type: string
          description: Point of sale descriptor for this pnr from source
          example: LA5K
        iataNumber:
          type: string
          description: IATA number associated with this pnr
          example: '426666'
    RateMetadata:
      type: object
      description: Price Summary
      properties:
        negotiatedRateType:
          type: string
          enum:
          - NONE
          - CORPORATE_RATE
          - AGENCY_RATE
          example: CORPORATE_RATE
        publishedRate:
          $ref: '#/components/schemas/FareAmount'
          description: the non negotiated rate or the market rate.
        tmcNegotiatedRate:
          $ref: '#/components/schemas/FareAmount'
          description: the tmc negotiated rate.
        corporateNegotiatedRate:
          $ref: '#/components/schemas/FareAmount'
          description: the corporate negotiated rate.
    LegalEntityIdListWrapper:
      type: object
      title: LegalEntityIdListWrapper
      properties:
        legalEntityIdList:
          type: array
          items:
            $ref: '#/components/schemas/LegalEntityId'
    DateTimeOffset:
      title: DateTimeOffset
      description: ISO8601 UTC Date Time
      type: object
      required:
      - iso8601
      properties:
        iso8601:
          type: string
          pattern: ^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-4]):([0-5][0-9])(:([0-5][0-9]))?(Z|([+-](0[0-9]|1[0-4]):([0-5][0-9])))$
          example: 2017-07-21T17:32Z
    VirtualCardInfo:
      type: object
      title: VirtualCardInfo
      description: Virtual card information like maximum deployment amount, valid date range.
      properties:
        amount:
          description: Virtual card deployment amount. This amount will drive the maximum authorisation value permitted on the virtual card.
          $ref: '#/components/schemas/Money'
        dateRange:
          description: Date range within which the virtual card can be charged.
          $ref: '#/components/schemas/DateRange'
    SuspendReason:
      type: string
      description: Reason for suspending the pnr
      enum:
      - AIR_PRICE_OPTIMIZATION
      - EXCHANGE
      - GDS_EXCHANGE
      example: AIR_PRICE_OPTIMIZATION
    SeatSelectionPolicy:
      type: object
      title: SeatSelectionPolicy
      properties:
        seatSelectionPolicy:
          $ref: '#/components/schemas/AirPolicy'
    EntityMetadata:
      title: EntityMetadata
      description: Metadata for associated entity of document.
      type: object
      oneOf:
      - $ref: '#/components/schemas/PnrMetadataWrapper'
      - $ref: '#/components/schemas/EventMetadataWrapper'
    SavingsFare:
      title: SavingsFare
      description: Total savings present.
      required:
      - fareAmount
      properties:
        fareAmount:
          $ref: '#/components/schemas/FareAmount'
          description: Amount saved with base and tax breakup.
        isTaxIncluded:
          type: boolean
          default: false
    TransactionFareDetail:
      type: object
      title: TransactionFareDetail
      description: Detailed transaction fare information for email display.
      properties:
        chargeCode:
          $ref: '#/components/schemas/ChargeCode'
          description: Type of charge.
        amount:
          $ref: '#/components/schemas/Money'
          description: Primary amount for this fare.
        chargeName:
          type: string
          description: Display name for the charge.
          example: Base
        isInformational:
          type: boolean
          description: Whether this is informational only (e.g., subtotal - derived value with no standalone identity).
          example: false
        taxDefinitions:
          type: array
          description: Tax definitions associated with this fare.
          items:
            $ref: '#/components/schemas/TaxDefinitionCharge'
        additionalAmounts:
          type: array
          description: Additional amounts for multi-currency scenarios (e.g., USD + Flight Pass).
          items:
            $ref: '#/components/schemas/Money'
        sortPriority:
          type: integer
          format: int32
          description: Sort priority for display ordering (determines which charge codes appear first).
          example: 1
        total:
          $ref: '#/components/schemas/FareTotal'
          description: Computed total with coinage relation.
    WaiveOffFeeReason:
      type: object
      title: WaiveOffFeeReason
      description: Fee waive off reason info.
      properties:
        reasonCode:
          type: string
          description: Fee waive off reason code.
          example: WA05
        reason:
          type: string
          description: Fee waive off reason description.
          example: Customer goodwill
    ServiceFeeTransactionType:
      type: string
      title: ServiceFeeTransactionType
      description: Transaction type for service fee
      enum:
      - TRANSACTION_TYPE_BOOKING
      - TRANSACTION_TYPE_MODIFICATION
      - TRANSACTION_TYPE_CANCELLATION
      - TRANSACTION_TYPE_AGENT_CONTACT
      x-ignoreBreakingChanges:
      - ServiceFeeTransactionType->TRANSACTION_TYPE_AGENT_CONTACT
    UserOrgId:
      type: object
      title: UserOrgId
      description: User and user's organization information.
      required:
      - userId
      - organizationId
      properties:
        organizationAgencyId:
          $ref: '#/components/schemas/OrganizationAgencyId'
        organizationId:
          $ref: '#/components/schemas/OrganizationId'
        userId:
          $ref: '#/components/schemas/UserId'
        tmcInfo:
          $ref: '#/components/schemas/TmcInfo'
          deprecated: true
          x-sunset: '2026-07-01'
        tmcBasicInfo:
          $ref: '#/components/schemas/TmcBasicInfo'
    IntListWrapper:
      type: object
      title: IntListWrapper
      properties:
        iList:
          type: array
          items:
            type: integer
            format: int32
    HotelAdditionalDetailType:
      title: HotelAdditionalDetailType
      type: string
      enum:
      - ADDITIONAL_DETAIL_TYPE_UNKNOWN
      - RATE_DESCRIPTION
      - PROPERTY_DESCRIPTION
      - PROPERTY_LOCATION
      - ROOM_INFORMATION
      - GUARANTEE_INFORMATION
      - DEPOSIT_INFORMATION
      - CANCELLATION_INFORMATION
      - CHECK_IN_CHECK_OUT_INFORMATION
      - EXTRA_CHARGE_INFORMATION
      - TAX_INFORMATION
      - SERVICE_CHARGE_INFORMATION
      - PACKAGE_INFORMATION
      - COMMISSION_INFORMATION
      - MISCELLANEOUS_INFORMATION
      - PROMOTIONAL_INFORMATION
      - INCLUSION_INFORMATION
      - AMENITY_INFORMATION
      - LATE_ARRIVAL_INFORMATION
      - LATE_DEPARTURE_INFORMATION
      - ADVANCED_BOOKING_INFORMATION
      - EXTRA_PERSON_INFORMATION
      - AREAS_SERVED
      - ONSITE_FACILITIES_INFORMATION
      - OFFSITE_FACILITI

# --- truncated at 32 KB (461 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/spotnana/refs/heads/main/openapi/spotnana-trip-pnrs-api-openapi.yml