Spotnana Trips API

APIs to manage trips.

OpenAPI Specification

spotnana-trips-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Air Trips 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: Trips
  description: APIs to manage trips.
paths:
  /v2/trips:
    post:
      tags:
      - Trips
      summary: Create trip
      description: "This endpoint creates a trip object. A trip is a container object for all related PNRs associated \nwith a trip.\n"
      operationId: createTrip
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTripRequest'
      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'
  /v2/trips/{tripId}:
    parameters:
    - name: tripId
      in: path
      description: Identifier for trip.
      required: true
      schema:
        type: string
      example: '2398199412'
    get:
      deprecated: true
      x-sunset: '2026-07-01'
      tags:
      - Trips
      summary: Get trip
      description: 'Retrieves trip info by ID.

        {% admonition type="warning" name="Deprecation notice" %}

        The **Get Trip** `/v2/trips/{tripId}` endpoint has been deprecated.

        Use the new **Get trip details** `/v3/trips/{tripId}/detail` endpoint instead.

        {% /admonition %}

        '
      operationId: readTrip
      x-draft: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BasicTripInfo'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
      - Trips
      summary: Update trip
      operationId: updateTrip
      description: This endpoint updates trip by ID.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateTripRequest'
      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}/detail:
    parameters:
    - name: tripId
      in: path
      description: Trip ID
      required: true
      schema:
        type: string
        example: '6926658168'
    - name: refreshType
      in: query
      description: Refresh Type
      schema:
        $ref: '#/components/schemas/RefreshType'
    - name: fetchMappedData
      in: query
      description: If true, fetch PNRs from already mapped data present in DB
      schema:
        type: boolean
        default: false
    get:
      tags:
      - Trips
      summary: Get trip details
      description: 'This endpoint gets trip details for a given trip ID.

        {% admonition type="info" %}

        **Note:** For air bookings made via Travelfusion (i.e., `pnrs.data.sourceInfo.bookingSource: TRAVEL_FUSION`)

        the `refundPolicy` and `exchangePolicy` fields will be empty.

        {% /admonition %}

        '
      operationId: getTripDetailsV3
      x-pii-supported: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TripV3DetailsResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/trips/{tripId}:
    parameters:
    - name: tripId
      in: path
      description: Trip ID
      required: true
      schema:
        type: string
        example: '6926658168'
    delete:
      tags:
      - Trips
      summary: Delete trip
      description: This endpoint deletes a trip by ID.
      operationId: deleteTrip
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteTripRequest'
      responses:
        '204':
          description: Deleted Successfully
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    post:
      tags:
      - Trips
      summary: Update trip details for trip Id
      operationId: updateTripV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateTripV3Request'
      responses:
        '200':
          description: OK
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/trips/users/{userId}/list:
    parameters:
    - name: userId
      in: path
      description: Identifier for the user whose trip summaries are requested.
      required: true
      schema:
        type: string
        format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
    post:
      tags:
      - Trips
      summary: List trip summaries for a user
      description: Retrieves the list of trip summaries associated with a user.
      operationId: getUserTripSummariesList
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetTripSummariesV3Request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTripSummariesV3Response'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v3/trips/companies/{companyId}/list:
    parameters:
    - name: companyId
      in: path
      description: Identifier for the company whose trip summaries are requested.
      required: true
      schema:
        type: string
        format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
    post:
      tags:
      - Trips
      summary: List trip summaries for a company
      description: Retrieves the list of trip summaries associated with a company.
      operationId: getCompanyTripSummariesList
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetTripSummariesV3Request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTripSummariesV3Response'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/list-organisation-trips:
    post:
      deprecated: true
      x-sunset: '2026-07-01'
      tags:
      - Trips
      summary: List trips
      description: 'Retrieves the list of trips associated with an organization.

        {% admonition type="warning" name="Deprecation notice" %}

        The **List Trips** `/v2/list-organisation-trips` endpoint has been deprecated.

        Use the new **List trip summaries for a company** `/v3/trips/companies/{companyId}/list` endpoint instead.

        {% /admonition %}

        '
      operationId: listOrganisationTrips
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListOrganisationTripsRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListOrganisationTripsResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/trips/arrangers/{arrangerId}/list:
    parameters:
    - name: arrangerId
      in: path
      description: Identifier for the arranger whose managed travelers trip summaries are requested.
      required: true
      schema:
        type: string
        format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
    post:
      tags:
      - Trips
      summary: List trip summaries for travelers managed by an arranger
      description: 'Retrieves the list of trip summaries for all travelers managed by a specific arranger.

        This endpoint can be used for arrangers whose role types are `COMPANY_TRAVEL_ARRANGER` or `TRAVEL_ARRANGER`.

        '
      operationId: getArrangerManagedTripSummariesList
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetTripSummariesV3Request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTripSummariesV3Response'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/trips/{tripId}/booker-email/{bookerEmailId}/partner-info:
    parameters:
    - name: tripId
      in: path
      description: Identifier for trip.
      required: true
      schema:
        type: string
      example: '2398199412'
    - name: bookerEmailId
      in: path
      description: Booker Email Id for whom budget info will be fetched.
      required: true
      schema:
        type: string
      example: akanksha@spotnana.com
    - name: revealReason
      in: query
      description: Reason for revealing the budget card information.
      required: false
      schema:
        type: string
      example: Purchase a Flight
    get:
      tags:
      - Trips
      summary: Get trip partner info
      description: This endpoint provides info related to partner for the trip.
      operationId: fetchTripPartnerInfo
      x-draft: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TripPartnerInfoResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    RequestedByDetails:
      title: RequestedByDetails
      type: object
      description: Information about the requester of the trip.
      required:
      - pnrRequestedBy
      properties:
        pnrRequestedBy:
          type: string
          description: Name of the requester
          example: Peter
          x-pii: SENSITIVE
        requestedByUserOrgId:
          $ref: '#/components/schemas/UserOrgId'
    CancellationRequestStatus:
      type: string
      description: 'Status of in progress cancellation request

        CANCELLATION_IN_PROGRESS - Cancellation request is in progress via OBT

        CANCELLATION_BY_AGENT_REQUESTED - Cancellation request is in progress via agent

        '
      enum:
      - CANCELLATION_IN_PROGRESS
      - CANCELLATION_BY_AGENT_REQUESTED
      example: CANCELLATION_IN_PROGRESS
    OfficeIdWrapper:
      type: object
      title: OfficeIdWrapper
      properties:
        officeId:
          $ref: '#/components/schemas/OfficeId'
    EventUserRsvp:
      title: EventUserRsvp
      type: object
      description: User rsvp for the event
      properties:
        userId:
          $ref: '#/components/schemas/UserId'
        eventRsvpState:
          $ref: '#/components/schemas/EventRsvpState'
        eventRsvpResponse:
          $ref: '#/components/schemas/EventRsvpResponse'
        invitedAt:
          $ref: '#/components/schemas/DateTimeOffset'
        airBookingStatus:
          $ref: '#/components/schemas/BookingStatusType'
        railBookingStatus:
          $ref: '#/components/schemas/BookingStatusType'
        carBookingStatus:
          $ref: '#/components/schemas/BookingStatusType'
        hotelBookingStatus:
          $ref: '#/components/schemas/BookingStatusType'
    AirConditioning:
      type: string
      title: AirConditioning
      description: Whether air conditioning is available.
      enum:
      - UNKNOWN_AC
      - AC_AVAILABLE
      - AC_NOT_AVAILABLE
      example: AC_AVAILABLE
    AncillaryLegIndex:
      type: integer
      description: 'Index of leg to which this ancillary belongs. If an ancillary belongs to all legs,

        this index should be set to -1

        '
      format: int32
      example: 0
      minimum: -1
    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
    CancellationPolicy3:
      type: object
      title: CancellationPolicy
      description: Cancellation policy info.
      required:
      - policy
      properties:
        policy:
          type: string
          description: Indicates whether the booking is refundable or not.
          enum:
          - UNKNOWN
          - NON_REFUNDABLE
          - FREE_CANCELLATION_UNTIL
          - PARTIALLY_REFUNDABLE
          example: NON_REFUNDABLE
        deadline:
          $ref: '#/components/schemas/DateTimeLocal'
          description: 'The local date and time of the final deadline for cancellation, if policy type is

            FREE_CANCELLATION_UNTIL or PARTIALLY_REFUNDABLE.

            '
        deadlineUtc:
          $ref: '#/components/schemas/DateTimeOffset'
          description: 'The UTC date and time of the final deadline for cancellation, if policy type is

            FREE_CANCELLATION_UNTIL or PARTIALLY_REFUNDABLE.

            '
        durationBeforeArrivalDeadline:
          $ref: '#/components/schemas/Duration'
          description: 'The duration before arrival of the final deadline for cancellation, if policy type is

            `FREE_CANCELLATION_UNTIL` or `PARTIALLY_REFUNDABLE`.

            '
        amount:
          $ref: '#/components/schemas/Money'
        currentlyRefundable:
          type: string
          description: 'Refundable status that is currently applicable in the hotel timezone.

            FALSE even if it is partially refundable.

            '
          enum:
          - 'TRUE'
          - 'FALSE'
        cancellableStatus:
          type: string
          description: 'Whether the booking can be cancelled.

            UNSPECIFIED and CANCELLABLE are treated as cancellable.

            Some suppliers (e.g. Premier Inn) block cancellation on non-refundable rates.

            '
          enum:
          - CANCELLABLE_STATUS_UNSPECIFIED
          - CANCELLABLE
          - NOT_CANCELLABLE
    PaginationResponseParams:
      type: object
      title: PaginationResponseParams
      description: Pagination parameters for response.
      required:
      - numResults
      - numPages
      properties:
        numResults:
          type: integer
          format: int32
          description: Total number of results in the paginated list.
        numPages:
          type: integer
          format: int32
          description: Total number of pages in the paginated list.
    PolicyPreventBookingAction:
      type: object
      title: PolicyPreventBookingAction
      description: Whether to allow booking if a rule is violated.
      properties:
        prevent:
          type: boolean
          description: True if booking is to be blocked if rule is violated, else false
        reason:
          type: string
          description: Reason describing why was that specific itinerary not allowed to book.
    CustomFieldMatchConditions:
      type: object
      title: CustomFieldMatchConditions
      description: Conditions to select the custom field for given context.
      properties:
        travelerConditions:
          $ref: '#/components/schemas/TravelerMatchConditions'
        travelTypes:
          type: array
          description: Travel types to match.
          items:
            $ref: '#/components/schemas/TravelType'
        travelRegionTypes:
          type: array
          description: Travel region types to match.
          items:
            $ref: '#/components/schemas/TravelRegionType'
        tripUsageTypes:
          type: array
          description: Trip usage types to match. If empty, all trip usage types will be matched.
          items:
            $ref: '#/components/schemas/TripUsageType'
    BeverageAmenity:
      type: object
      title: BeverageAmenity
      description: Beverage amenity option properties.
      properties:
        displayText:
          type: string
          example: Premium alcohol beverages provided
        beverageType:
          type: string
          example: premium alcoholic
        alcoholCost:
          type: string
          example: free
    LimoItem:
      type: object
      title: LimoItem
      description: This describes the limoItem related to a particular itemGroup.
      required:
      - itemType
      properties:
        itemType:
          type: string
        pickupDateTime:
          description: Check in date time.
          $ref: '#/components/schemas/DateTimeLocal'
        dropOffDateTime:
          description: Check out date time.
          $ref: '#/components/schemas/DateTimeLocal'
        pickupLocation:
          description: Pick up location.
          $ref: '#/components/schemas/CarLocation'
        dropOffLocation:
          description: Drop off location.
          $ref: '#/components/schemas/CarLocation'
        limoType:
          description: Car specific details.
          $ref: '#/components/schemas/LimoType'
    AdditionalInfo:
      type: object
      title: AdditionalInfo
      description: Additional data need to be sent along with the custom field response.
      discriminator:
        propertyName: type
        mapping:
          VARIABLE: '#/components/schemas/Variable'
          EXPRESSION: '#/components/schemas/Expression'
      oneOf:
      - $ref: '#/components/schemas/Variable'
      - $ref: '#/components/schemas/Expression'
    AirlineInfo:
      title: AirlineInfo
      type: object
      required:
      - airlineCode
      - airlineName
      properties:
        airlineCode:
          type: string
          description: IATA code for airline.
          example: AA
        airlineName:
          type: string
          description: Airline name
          example: American Airlines
    VendorProgramType:
      type: string
      description: The type of the vendor program
      enum:
      - UA_PASS_PLUS
      - GENERIC_PROGRAM_TYPE
    TripMetadata:
      title: TripMetadata
      description: Metadata for the trip
      type: object
      properties:
        hasTripOverride:
          type: boolean
          description: Indicates if the trip has any profile overrides.
          example: true
        preferredCurrency:
          type: string
          description: The currency to be used for the trip.
          example: USD
        tripContacts:
          type: array
          items:
            $ref: '#/components/schemas/TripContact'
        tripCommunicationPreferences:
          $ref: '#/components/schemas/TripCommunicationPreferences'
    Summary:
      type: object
      title: Summary
      properties:
        headline:
          type: string
          description: Summary headline
        summaryDescription:
          type: string
          description: Summary description
    DoubleRangeWrapper:
      type: object
      title: DoubleRangeWrapper
      properties:
        dRange:
          $ref: '#/components/schemas/DoubleRange'
    CarPref:
      type: object
      title: CarPref
      description: Travel preferences related to car.
      properties:
        vendors:
          type: array
          description: A list of car vendors.
          items:
            $ref: '#/components/schemas/CarVendor'
        carTypes:
          type: array
          description: A list of types of car.
          items:
            $ref: '#/components/schemas/CarType'
        engineTypes:
          type: array
          description: A list of types of engine.
          items:
            $ref: '#/components/schemas/EngineType'
        transmissionTypes:
          type: array
          description: A list of types of transmission.
          items:
            $ref: '#/components/schemas/TransmissionSearchFilter'
        conditionalRates:
          type: array
          description: A list of conditional rates for rail.
          items:
            $ref: '#/components/schemas/ConditionalRate'
    ThirdPartyHotelCode:
      title: ThirdPartyHotelCode
      type: object
      required:
      - hotelCode
      - hotelCodeType
      properties:
        hotelCode:
          type: string
          description: Third party hotel code.
        hotelCodeType:
          type: string
          description: Type of the third party.
          enum:
          - SABRE_CSL
          - SABRE_TN
          - EXPEDIA_RAPID
          - MARRIOTT
          - GIATA
          - BCD
    FareRules:
      type: object
      description: The rules and restrictions associated with the fare.
      properties:
        baggagePolicy:
          $ref: '#/components/schemas/BaggagePolicy'
        cancellationPolicy:
          $ref: '#/components/schemas/CancellationPolicy2'
        postDepartureCancellationPolicy:
          description: Information about the post departure cancellation policy.
          $ref: '#/components/schemas/CancellationPolicy2'
        exchangePolicy:
          $ref: '#/components/schemas/ExchangePolicy'
        postDepartureExchangePolicy:
          description: Information about the post departure exchange policy.
          $ref: '#/components/schemas/ExchangePolicy'
        seatSelectionPolicy:
          $ref: '#/components/schemas/SeatSelectionRule'
        boardingPolicy:
          $ref: '#/components/schemas/BoardingPolicy'
        checkInPolicy:
          $ref: '#/components/schemas/CheckInPolicy'
        loungePolicy:
          $ref: '#/components/schemas/LoungePolicy'
        seatType:
          $ref: '#/components/schemas/SeatTypeInfo'
    CarSearchInfo:
      title: CarSearchInfo
      type: object
      description: Car search information
      required:
      - pickup
      - dropOff
      properties:
        pickup:
          $ref: '#/components/schemas/SearchParams'
        dropOff:
          $ref: '#/components/schemas/SearchParams'
        renterAge:
          type: integer
          description: Age of the renter
          example: 30
        citizenCountryCode:
          type: string
          description: Citizen code of the renter
          example: US
        pickupCountryCode:
          type: string
          description: Country code of the pick up location
          example: US
        loyaltyCode:
          type: array
          description: Loyalty codes to be applied
          items:
            $ref: '#/components/schemas/CarLoyaltyCode'
    HotelRateType:
      type: string
      title: HotelRate Type
      enum:
      - PUBLISHED
      - CORPORATE
      - SPOTNANA
      - REGULAR
      - AAA
      - AARP
      - SENIOR_CITIZEN
      - GOVERNMENT
      - MILITARY
      - MEMBERSHIP
      - BEST_AVAILABLE_RATE
      - TMC
    HotelRoomMeal:
      type: object
      title: HotelRoomMeal
      description: Meal details for the room.
      required:
      - mealPlan
      properties:
        mealsIncluded:
          type: array
          items:
            $ref: '#/components/schemas/HotelRoomMealsIncluded'
        mealPlan:
          $ref: '#/components/schemas/HotelRoomMealType'
          description: Meal type added with the room booked.
    TicketIncompleteReason:
      type: string
      description: Reason for ticket being incomplete
      enum:
      - UNKNOWN_REASON
      - SYS_TICKET
      - MISSING_MARKUP_INFO
      - DISABLED_PCC
      - MISSING_REFUND_INFO
      example: SYS_TICKET
    UnusedCreditFop:
      type: object
      title: UnusedCreditFop
      description: Form of payment information associated with an unused credit.
      properties:
        paymentMethod:
          $ref: '#/components/schemas/PaymentMethod'
          description: Payment method used for the original booking.
        paymentSourceType:
          $ref: '#/components/schemas/PaymentSourceType'
          description: Type of payment source used.
        card:
          $ref: '#/components/schemas/Card'
          description: Card information if the payment source type is a card.
    CovidTestingAmenity:
      type: object
      title: CovidTestingAmenity
      description: Covid testing amenity properties.
      properties:
        displayText:
          type: string
          example: No COVID-19 test required
        covidTestingDescription:
          type: string
          example: A negative COVID-19 test is not required for this flight; check with the airline for possible destination requirements or other restrictions.
        covidTestingAttrDescription:
          type: string
    InvoiceDocumentType:
      title: InvoiceDocumentType
      description: Type of document generated for an invoice.
      type: string
      enum:
      - INVOICE
      - RECEIPT
      example: INVOICE
    OrgTripInfo:
      title: OrgTripInfo
      description: Trips and PNRs of a particular organistion
      type: object
      required:
      - tripId
      - pnrInfos
      properties:
        tripId:
          type: string
          description: Spotnana trip ID
          example: '6926658168'
        pnrInfos:
          type: array
          description: Pnr Info for the organisation trips
          items:
            $ref: '#/components/schemas/PnrInfo'
        tripName:
          type: string
          description: Trip Name
          example: SFO - DEL Meeting
        tripDescription:
          type: string
          description: Trip Description
          example: SFO-DEL 22-04-2022
        applicationId:
          type: string
          format: uuid
          description: Application used while creating trip.
    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'
    LimoVendorInfo:
      type: object
      title: LimoVendorInfo
      description: Information about limo vendor.
      required:
      - name
      properties:
        code:
          type: string
          description: Vendor code
          example: ZE
        name:
          type: string
          description: Vendor name
          example: HERTZ
        email:
          type: string
          description: Vendor Email
          example: mail@mail.com
    FlightSeatStatus:
      type: string
      description: Status of assigned seat.
      enum:
      - CONFIRMED
      - PENDING
      - UNKNOWN
      - CANCELLED
      example: CONFIRMED
    TaxBreakdown:
      type: array
      items:
        $ref: '#/components/schemas/Tax'
    SuspendReason:
      type: string
      description: Reason for suspending the pnr
      enum:
      - AIR_PRICE_OPTIMIZATION
      - EXCHANGE
      - GDS_EXCHANGE
      example: AIR_PRICE_OPTIMIZATION
    ScheduleChangeRefundInfo:
      type: object
      title: ScheduleChangeRefundInfo
      description: Refund information if applicable for this ticket
      properties:
        isRefundAllowed:
          type: boolean
          description: Whether refund is allowed if user denies schedule change/cancels the flight
        refundWaiverCode:
          type: string
          description: Waiver code for refund if applicable
        exchangeWaiverCode:
          type: string
          description: Waiver code for exchange if available
    CancellationPolicy1:
      type: object
      title: CancellationPolicy
      properties:
        cancellationPolicy:
          $ref: '#/components/schemas/AirPolicy'
    PercentageWrapper:
      type: object
      title: PercentageWrapper
      properties:
        percentage:
          type: number
          format: double
    CompanyConfigSourceWrapper:
      type: object
      title: CompanyConfigSourceWrapper
      description: Wrapper for option source company config.
      properties:
        companyConfig:
          $ref: '#/components/schemas/CompanyConfigSource'
    TravelerInfo:
      title: TravelerInfo
      type: object
      description: Traveler air booking info
      required:
      - travelerIdx
      - booking
      properties:
        airVendorCancellationInfo:
          $ref: '#/components/schemas/AirVendorCancellationInfo'
        createdMcos:
          type: array
          description: Created Mcos
          items:
            $ref: '#/components/schemas/CreatedMco'
        travelerIdx:
          type: integer
          description: Index of traveler in travelers list to which this info belongs
          format: int32
          example: 0
          minimum: 0
        userId:
          $ref: '#/components/schemas/UserId'
          description: User ID of traveler to which this TravelerInfo object belongs
        paxType:
          $ref: '#/components/schemas/PassengerType'
        paxCurrentAge:
          $ref: '#/components/schemas/PassengerAge'
          description: Current age of the passenger.
          x-pii: SENSITIVE
        tickets:
          type: array
          description: Tickets belonging to this traveler
          items:
            $ref: '#/components/schemas/Ticket'
        boardingPass:
          type: array
          description: Boarding pass details.
          items:
            $ref: '#/components/schemas/BoardingPass'
        booking:
          description: Info about items booked for this traveler eg. flights, seats, etc.
          $ref: '#/components/schemas/Booking'
        appliedCredits:
          type: array
          description: Information about credit redeemed in booking.
          items:
            $ref: '#/components/schemas/AppliedCreditInfo'
        specialServiceRequestInfos:
          type: array
          description: List of all the Special Service Requests associated with the traveler.
          items:
            $ref: '#/components/schemas/SpecialServiceRequestInfoDetail'
        lastConfirmedTickets:
          type: array
          description: List of tickets from last confirmed version. These will only be set for cancelled PNRs.
          items:
            $ref: '#/components/schemas/Ticket'
        nameNumber:
          type: str

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