Spotnana Air API

APIs to perform search, checkout and book an air pnr

Operations 18

POST /v2/air/search-flights Get air itineraries #
POST /v2/air/flight-attributes Get flight attributes #
POST /v2/air/selected-itinerary Get selected itinerary #
GET /v2/air/airlines-info Get Airlines Information (Air) #
POST /v2/air/flight-checkout Get flight checkout details #
POST /v2/air/seat-map Get flight seat map #
POST /v2/air/initiate-booking Initiate booking #
POST /v2/air/revalidate-itinerary Validate air itinerary #
POST /v2/air/intermediate-revalidate-itinerary Validate air itinerary (interim) #
POST /v2/air/create-pnr Create air pnr #
POST /v2/air/cancel-pnr Cancel Air Pnr #
GET /v2/air/pnrs/{pnrId}/exchange-details Get PNR exchange details #
POST /v2/air/modify-search Modify Search #
POST /v2/air/modify-book Modify Book #
POST /v2/air/pnrs/{pnrId}/update Edit PNR #
GET /v2/air/special-service-requests Get Special Service Requests (SSR) #
GET /v2/air/special-service-requests/categories Get Special Service Requests (SSR) for a Category #
POST /v2/air/fare-rules/fetch Returns the Air Raw Fare Rules for a Segment or Pnr #

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-air-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-air-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Air 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: Air
  description: APIs to perform search, checkout and book an air pnr
paths:
  /v2/air/search-flights:
    post:
      tags:
      - Air
      summary: Get air itineraries
      description: Get Air Itineraries available for the given search parameters
      operationId: airSearch
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AirSearchRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AirSearchResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/air/flight-attributes:
    post:
      tags:
      - Air
      summary: Get flight attributes
      description: "Get Flight attributes, amenities and fare rules for the given search response id. \nReturns the full air search response along with attribute details.\n"
      operationId: airAttributes
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AirAttributesRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AirSearchResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/air/selected-itinerary:
    post:
      tags:
      - Air
      summary: Get selected itinerary
      description: Get the selected itinerary for the traveler in the search and checkout flow.
      operationId: airSelectedItinerary
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AirSelectedItineraryRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AirSelectedItineraryResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/air/airlines-info:
    parameters:
    - name: includeInactive
      in: query
      description: Include Airlines with inactive status along with active.
      required: true
      schema:
        type: boolean
    get:
      tags:
      - Air
      summary: Get Airlines Information (Air)
      description: Returns airlines information for active marked airlines.
      operationId: getAirlinesInformation
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AirlineInfoResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/air/flight-checkout:
    post:
      tags:
      - Air
      summary: Get flight checkout details
      description: Get the flight checkout details associated with the selected itinerary.
      operationId: airFlightCheckout
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AirCheckoutRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AirCheckoutResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/air/seat-map:
    post:
      tags:
      - Air
      summary: Get flight seat map
      description: Get seat map for the flights in the given itinerary.
      operationId: airSeatMap
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AirSeatMapRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AirSeatMapResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/air/initiate-booking:
    post:
      tags:
      - Air
      summary: Initiate booking
      description: "Initiates a new air booking for the trip. \nThe `identityDocs` field supports the following traveler identity documents: \nPassport, National ID, Known Traveler Number (KTN), redress number, and immigration documents. \nThe traveler can choose one among the list of identity documents available and provide its information during checkout.\n"
      operationId: airInitiateBooking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AirInitiateBookingRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AirInitiateBookingResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/air/revalidate-itinerary:
    post:
      tags:
      - Air
      summary: Validate air itinerary
      description: Validates the air itinerary for availability and pricing
      operationId: airRevalidateItinerary
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AirRevalidateItineraryRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AirRevalidateItineraryResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/air/intermediate-revalidate-itinerary:
    post:
      tags:
      - Air
      summary: Validate air itinerary (interim)
      description: Validates an itinerary at any interim stage of air booking workflow and allows you to keep track of fare details before proceeding to checkout. Using this endpoint is optional. It requires a `searchId` and the `itineraryId` to obtain the latest fare details of the selected itinerary. The `travelerType` field in this endpoint response currently only accepts `ADULT`, `CHILD` and `INFANT`.
      operationId: airIntermediateRevalidateItinerary
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AirIntermediateRevalidateItineraryRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AirRevalidateItineraryResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/air/create-pnr:
    post:
      tags:
      - Air
      summary: Create air pnr
      description: Creates a new air booking with the given itinerary
      operationId: airCreatePnr
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AirCreatePnrRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AirCreatePnrResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/air/cancel-pnr:
    post:
      tags:
      - Air
      summary: Cancel Air Pnr
      description: Cancel the air pnr and issues applicable refunds
      operationId: airCancelPnr
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AirCancelPnrRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AirCancelPnrResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/air/pnrs/{pnrId}/exchange-details:
    parameters:
    - name: pnrId
      in: path
      description: Spotnana PNR ID.
      required: true
      schema:
        type: string
        example: '6926658168'
    get:
      tags:
      - Air
      summary: Get PNR exchange details
      description: 'This endpoint gets exchange details of all the tickets present in the given PNR ID of the

        given trip ID.

        '
      operationId: getAirPnrExchangeDetails
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AirPnrExchangeDetailsResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/air/modify-search:
    post:
      tags:
      - Air
      summary: Modify Search
      description: Get Air Itineraries available for exchange/modification/deletion against current pnr.
      operationId: airModifySearchV2
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AirModifySearchRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AirSearchResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/air/modify-book:
    post:
      tags:
      - Air
      summary: Modify Book
      description: Book[cancel] new[existing] legs into an existing pnr using the selected rate option from airModifySearch operation.
      operationId: airModifyBookV2
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AirModifyBookingRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AirModifyBookingResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/air/pnrs/{pnrId}/update:
    post:
      tags:
      - Air
      summary: Edit PNR
      description: "Edit specific traveler information in an existing PNR.\nThis API allows you to edit and modify Special Service Requests (SSR), \nseat selection, loyalty number, ancillaries, redress number, Known Traveler Number (KTN), \ncheck-in preferences, and Other Service Information (OSI).\n"
      operationId: airPnrEdit
      parameters:
      - in: path
        name: pnrId
        description: PNR ID created by Spotnana for the booking.
        required: true
        schema:
          type: string
        example: '1213124111'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AirEditPnrRequest'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AirEditPnrResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/air/special-service-requests:
    get:
      tags:
      - Air
      summary: Get Special Service Requests (SSR)
      description: "Returns the list of all Special Service Requests (SSR) supported by Spotnana.\nThis API doesn't require a request payload or a query parameter.\nYou can use this endpoint anytime during the air booking or exchange workflow \nto view the list of SSRs currently supported by Spotnana.\n"
      operationId: getSpecialServiceRequests
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SpecialServiceRequestsResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/air/special-service-requests/categories:
    get:
      tags:
      - Air
      summary: Get Special Service Requests (SSR) for a Category
      description: "Returns the list of Special Service Requests (SSR) for a selected category.\nEvery `category` type can contain multiple service requests.\nFor example, the `category: MEAL` includes service requests such as a vegetarian meal, baby/infant meal, \ngluten free meal, and so on. These service requests are displayed as `subCategory` fields within the `category: MEAL`. \nTo learn more about a selected category such as its `subCategory` values, category code, and other relevant\ninformation, run this API using the `category` type as the query parameter.\n"
      operationId: getSpecialServiceRequestsFilterByCategory
      parameters:
      - name: category
        in: query
        description: The category type of a Special Service Request (SSR).
        required: true
        schema:
          type: string
          description: Category details of the Special Service Request (SSR).
          enum:
          - BASSINET
          - SPECIAL_ASSISTANCE_WHEELCHAIR
          - BAGGAGE
          - UNACCOMPANIED_MINOR
          - PETS
          - MEET_AND_ASSIST
          - OTHERS
          - MEAL
          - SPECIAL_ASSISTANCE_DISABILITY
          example: SPECIAL_ASSISTANCE_WHEELCHAIR
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SpecialServiceRequestsResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/air/fare-rules/fetch:
    post:
      tags:
      - Air
      summary: Returns the Air Raw Fare Rules for a Segment or Pnr
      operationId: fetchAirFareRules
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FetchAirFareRuleRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FetchAirFareRuleResponse'
        '204':
          description: No Content
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    CabinViewFareCategory:
      type: string
      enum:
      - UNKNOWN_CABIN_CATEGORY
      - BASIC
      - ECONOMY
      - PREMIUM_ECONOMY
      - ECONOMY_PLUS
      - BUSINESS
      - FIRST
      default: UNKNOWN_CABIN_CATEGORY
    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
    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
    AncillaryOption:
      type: object
      title: AncillaryOption
      description: Details of a single ancillary option
      required:
      - status
      - fare
      - flightIds
      - ancillaryId
      properties:
        travelerId:
          description: Traveler ID to which this ancillary applies.
          $ref: '#/components/schemas/UserId'
        status:
          type: string
          description: Ancillary status (purchased, eligible for purchase, not applicable, etc.).
          enum:
          - ELIGIBLE
          - NOT_APPLICABLE
          - PURCHASED
          example: ELIGIBLE
        fare:
          description: The fare for this ancillary.
          $ref: '#/components/schemas/Money'
        flightIds:
          type: array
          description: ID of the flights on which this ancillary applies.
          minItems: 1
          items:
            type: string
            example: flight_0
        ancillaryId:
          type: string
          description: Unique ID for purchasing this ancillary.
          example: ancillary_0
    ThirdPartyPnrRemark:
      title: ThirdPartyPnrRemark
      description: Third party remarks to the given PNR
      oneOf:
      - $ref: '#/components/schemas/SabrePnrRemarkWrapper'
    MerchantFeeInfo:
      title: MerchantFeeInfo
      description: Describes the merchant fee applicable on the itinerary.
      required:
      - amount
      properties:
        amount:
          $ref: '#/components/schemas/FareAmount'
    CompanyConfigSourceWrapper:
      type: object
      title: CompanyConfigSourceWrapper
      description: Wrapper for option source company config.
      properties:
        companyConfig:
          $ref: '#/components/schemas/CompanyConfigSource'
    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'
    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'
    FareAttributes:
      type: object
      description: The rules and attributes related to the fare.
      properties:
        isVoidable:
          type: boolean
          description: Designates whether the fare is voidable or not.
        holdDeadline:
          description: Designates the dateTime until which the fare will be held (when a traveler places a hold on the fare).
          $ref: '#/components/schemas/DateTimeLocal'
        isNonVerifiedExchangeOffer:
          type: boolean
          description: "Designates whether the fare is a non-verified exchange offer. For these fares, the \nexchange price guarantee is not provided by the supplier.\n"
    DepartmentId:
      type: object
      title: DepartmentId
      description: Department id.
      required:
      - id
      properties:
        id:
          type: string
          example: 631ccbcf-9414-5fe0-c234-b324dfbe7422
    TravelRegionType:
      type: string
      title: TravelRegionType
      description: Travel region Type
      enum:
      - DOMESTIC
      - INTERNATIONAL
      example: DOMESTIC
    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'
    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
    BoardingPolicy:
      type: object
      description: Priority boarding information.
      required:
      - description
      properties:
        description:
          type: string
          description: Text describing the priority boarding policy.
          example: Priority boarding provided for free
    LegalEntityIdListWrapper:
      type: object
      title: LegalEntityIdListWrapper
      properties:
        legalEntityIdList:
          type: array
          items:
            $ref: '#/components/schemas/LegalEntityId'
    InitiateBookingWorkflowIds:
      type: object
      description: The set of unique response ids associated with initiate booking workflow.
      properties:
        checkoutResponseId:
          type: string
          description: ID sent by the backend in the air checkout response.
        seatMapResponseId:
          type: string
          description: ID sent by the backend in the air seat map response.
    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
    PaymentSplitCriterion:
      type: object
      description: The criterion for the payment split.
      properties:
        accessType:
          description: Access Type of the Payment Sources applicable for a portion of payment.
          $ref: '#/components/schemas/AccessType'
    LegDepartureArrivalTimeRangeFilter:
      type: object
      description: 'Provides information on how to filter the range of leg departure and arrival times (e.g. departing between

        6 a.m.- 11 a.m. and arriving between 11 a.m. - 4 p.m.).

        '
      properties:
        legIndex:
          type: integer
          format: int32
        departure:
          $ref: '#/components/schemas/TimeRange'
        arrival:
          $ref: '#/components/schemas/TimeRange'
    UnusablePaymentSource:
      type: object
      title: UnusablePaymentSource
      description: The payment sources which are not usable for the payment rule
      required:
      - id
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier identifying this payment source
          example: f49d00fe-1eda-4304-ba79-a980f565281d
        reason:
          $ref: '#/components/schemas/UnusableReason'
    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
    MoneyRange:
      type: object
      properties:
        min:
          $ref: '#/components/schemas/Money'
          description: Minimum value - inclusive.
        max:
          $ref: '#/components/schemas/Money'
          description: Maximum value - inclusive.
    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
    AirCancelPnrRequest:
      type: object
      required:
      - pnrId
      - optionId
      properties:
        pnrId:
          type: string
          description: The spotnana assigned unique PNR id of the booking.
          example: '1234567819'
        optionId:
          type: string
          description: 'Cancellation option id chosen by the traveler prior to cancelling the booking. The

            trip->cancellation-details API returns a bunch of options like whether the traveler

            wants to keep the ticket as unused or get the refunds with applicable penalties.

            '
          example: OPTION123
        cancellationOverride:
          description: Cancellation info override details, like cancellation penalty, waiver code, etc.
          $ref: '#/components/schemas/CancellationOverride'
        customFieldV3Responses:
          type: array
          description: Custom field responses for the booking.
          items:
            $ref: '#/components/schemas/CustomFieldV3Response'
        postPaymentVerificationInfo:
          $ref: '#/components/schemas/PostPaymentVerificationInfo'
        bookingPaymentDetails:
          $ref: '#/components/schemas/BookingPaymentDetails'
        manualRemarks:
          type: array
          description: Remarks from the frontend to be added to the PNR during creation.
          items:
            $ref: '#/components/schemas/ThirdPartyPnrRemark'
    FlightNumberFilter:
      type: object
      description: Filters itineraries where the flight number matches that of either the marketing or operating carrier.
      properties:
        flightNumber:
          $ref: '#/components/schemas/FlightNumber'
    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.
    LegalEntityId:
      type: object
      title: LegalEntityId
      description: The ID of the legal entity.
      required:
      - id
      properties:
        id:
          type: string
          example: fc1ccbce-8413-4fe9-b233-a324dfbe7421
    SimpleBag:
      type: object
      description: Describes a simple bag with a given weight and fare amount.
      properties:
        weightLimit:
          $ref: '#/components/schemas/WeightLimit'
        bagFareInfo:
          $ref: '#/components/schemas/BagFareInfo'
    AirExchangeAvailableOptions:
      type: object
      title: AirExchangeAvailableOptions
      description: Contains the information of the options that are allowed to exchange.
      properties:
        travelDate:
          type: boolean
          description: If true it means Airline allows to change the date.
        route:
          type: boolean
          description: If true it means Airline allows to change the route.
        addLeg:
          type: boolean
          description: If true it means Airline allows to add new leg to the existing itinerary.
        removeLeg:
          type: boolean
          description: If true it means Airline allows to remove leg from the existing itinerary.
        modifyPartialItinerary:
          type: boolean
          description: If true it means Airline allows to modify partial itinerary.
        sameEndpointRestriction:
          type: boolean
          description: If true it means Airline allows to change the endpoint across legs for the return itinerary.
    PostStripeVerificationInfoWrapper:
      type: object
      title: PostStripeVerificationInfoWrapper
      description: Wrapper for post stripe verification info object.
      properties:
        postStripeVerificationInfo:
          $ref: '#/components/schemas/PostStripeVerificationInfo'
    Credit:
      type: object
      title: Credit
      required:
      - ticketNumber
      - ticketType
      - sourcePnr
      - totalFare
      - passengerName
      - segmentsAvailable
      - type
      - airlineInfo
      - traveler
      - source
      - unusedCreditPcc
      - pnrOwningPcc
      properties:
        type:
          type: string
          description: Payment source type. Should be set to CREDIT for unused credit details.
        pnrOwningPcc:
          type: string
          description: PCC the PNR was created on.
        unusedCreditPcc:
          type: string
          description: PCC the credit was issued on.
        departureCountry:
          type: string
          description: 3 letter country code of the departure country associated with the original ticket.
          example: USA
        arrivalCountry:
          type: string
          description: 3 letter country code of the arrival country associated with the original ticket.
          example: USA
        ticketType:
          type: string
          description: Type of credit.
          enum:
          - TICKET_TYPE_UNKNOWN
          - ETICKET
          - MCO
        departureDate:
          description: Date for the departure of the first flight associated with the unused credit.
          $ref: '#/components/schemas/DateTimeOffset'
        segmentsAvailable:
          type: string
          description: Whether all segments are unused or some have already been used.
          enum:
          - UNKNOWN
          - ALL_OPEN
          - PARTIAL
          - OTHER
        traveler:
          description: Information about the traveler for which the credit should be redeemed.
          $ref: '#/components/schemas/AirRequestTravelerInfo'
        passengerName:
          description: Name of the passenger associated with the credit.
          $ref: '#/components/schemas/Name'
        airlineInfo:
          description: Airline info with airline name and code
          $ref: '#/components/schemas/AirlineInfo'
   

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