Spotnana Approval API

APIs to manage approvals.

OpenAPI Specification

spotnana-approval-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Air Approval 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: Approval
  description: APIs to manage approvals.
paths:
  /v3/approvals/approvers/{userId}/list:
    parameters:
    - name: userId
      in: path
      description: Identifier for the approver whose approval data is requested.
      required: true
      schema:
        type: string
        format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
    post:
      tags:
      - Approval
      summary: List approval data for an approver
      description: Retrieves the list of approval data associated with an approver.
      operationId: getApprovalUserApprovalDataList
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetApprovalDataV3Request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApprovalDataV3Response'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v3/approvals/companies/{companyId}/list:
    parameters:
    - name: companyId
      in: path
      description: Identifier for the company whose approvals are requested.
      required: true
      schema:
        type: string
        format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
    post:
      tags:
      - Approval
      summary: List approval data for a company
      description: Retrieves the list of approval data associated with a company.
      operationId: getCompanyApprovalDataList
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetApprovalDataV3Request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApprovalDataV3Response'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
components:
  schemas:
    OfficeIdWrapper:
      type: object
      title: OfficeIdWrapper
      properties:
        officeId:
          $ref: '#/components/schemas/OfficeId'
    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
    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
    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'
    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'
    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'
    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
    TaxBreakdown:
      type: array
      items:
        $ref: '#/components/schemas/Tax'
    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'
    ApprovalDetail:
      type: object
      title: ApprovalDetail
      description: Policy
      properties:
        originalApprovalType:
          $ref: '#/components/schemas/ApprovalType'
        appliedApprovalType:
          $ref: '#/components/schemas/ApprovalType'
    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
    KnownTravelerNumber:
      type: object
      title: KnownTravelerNumber
      description: Information about the Known Traveler Number (KTN).
      required:
      - number
      - issueCountry
      properties:
        number:
          type: string
          example: '12345'
          x-pii: IDENTIFIER
        issueCountry:
          type: string
          example: US
    PassengerCapacityAmenity:
      type: object
      title: PassengerCapacityAmenity
      description: Passenger capacity amenity properties.
      properties:
        displayText:
          type: string
          example: Standard passenger capacity
        passengerCapacityDescription:
          type: string
          example: Ticket sales are not limited for this flight
        passengerCapacityAttrDescription:
          type: string
          example: 'no'
    Tax:
      type: object
      title: Tax
      description: Tax details
      required:
      - amount
      properties:
        amount:
          $ref: '#/components/schemas/Money'
          description: Tax amount
        taxCode:
          type: string
          description: Tax code
          example: VAT
        percentage:
          type: number
          format: double
          description: Tax amount to total amount
          example: 9
    AirRestrictedFaresParamsWrapper:
      type: object
      title: AirRestrictedFaresParamsWrapper
      properties:
        airRestrictedFaresParams:
          $ref: '#/components/schemas/AirRestrictedFaresParams'
    AnswerPair:
      type: object
      properties:
        item:
          type: string
          description: The option selected from the list of available choices.
        value:
          type: string
          description: The additional input provided (by the user) while selecting one of the options.
        description:
          type: string
          description: Description of the selected option.
    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
    NumStopsPref:
      type: object
      title: NumStopsPref
      description: Preferred number of stops.
      required:
      - numOfStops
      properties:
        numOfStops:
          type: integer
          format: int64
          example: 34
    MaskAmenityWrapper:
      type: object
      title: MaskAmenityWrapper
      properties:
        maskAmenity:
          $ref: '#/components/schemas/MaskAmenity'
    PreferredLocationLabel:
      type: string
      title: PreferredLocationLabel
      description: The label of preferred airport or rail station.
      enum:
      - HOME
      - WORK
      - OTHER
      example: HOME
    POSInfo:
      type: object
      description: Point of sale information
      required:
      - source
      properties:
        source:
          description: The third party source for the point of sale
          $ref: '#/components/schemas/ThirdPartySource'
        posDescriptor:
          type: string
          description: The identifier for the point of sale. This would be the PCC for GDS bookings.
          example: 6CA4
    ItemType:
      type: string
      description: Type of payment item eligible for this fop rule
      enum:
      - SERVICE_FEE
      - TRAVEL_TICKET
      - SEAT
      - BAGGAGE
      - EARLY_BIRD
      example: SEAT
    EmailBucketType:
      type: string
      title: EmailBucketType
      description: Email bucket type.
      enum:
      - BOOKING_CONFIRMATIONS
      - BOOKING_CHANGES
      - FLIGHT_UPDATES
      - APPROVAL_REQUESTS
      - APPROVAL_UPDATES
      - REMINDERS
      - INVOICE_UPDATES
      x-ignoreBreakingChanges:
      - EmailBucketType->INVOICE_UPDATES
      example: BOOKING_CONFIRMATIONS
    PreferredRailStation:
      type: object
      title: PreferredRailStation
      description: Rail station preferred by traveler.
      required:
      - stationCode
      - label
      properties:
        stationName:
          type: string
          description: Rail station name.
          example: Chicago Union Station
        stationCode:
          type: string
          description: Rail station code.
          example: CHI
        cityName:
          type: string
          description: Name of city where the rail station is located.
          example: Chicago
        countryCode:
          type: string
          description: Alpha-2 country code where the rail station is located.
        label:
          $ref: '#/components/schemas/PreferredLocationLabel'
    LegalEntityId:
      type: object
      title: LegalEntityId
      description: The ID of the legal entity.
      required:
      - id
      properties:
        id:
          type: string
          example: fc1ccbce-8413-4fe9-b233-a324dfbe7421
    Variable:
      type: object
      title: Variable
      description: Variable defining the additional value to be sent along with custom field response.
      required:
      - type
      - name
      properties:
        type:
          type: string
          example: VARIABLE
          default: VARIABLE
        name:
          $ref: '#/components/schemas/VariableName'
    PnrSummary:
      type: object
      title: PnrSummary
      description: Basic PNR info
      required:
      - pnrId
      properties:
        pnrId:
          type: string
          description: Spotnana PNR Id
          example: '1234567890'
        sourcePnrId:
          type: string
          description: Source PNR Id
          example: QWERGF
        pnrStatus:
          $ref: '#/components/schemas/PnrStatus'
        pnrSummary:
          $ref: '#/components/schemas/PnrSummaryWrapper'
        userFacingStatus:
          $ref: '#/components/schemas/UserFacingStatus'
        tmcInfo:
          $ref: '#/components/schemas/TmcInfo'
        source:
          $ref: '#/components/schemas/ThirdPartySource'
          description: Source of the booking e.g. Sabre, NDC etc.
        travelers:
          type: array
          items:
            $ref: '#/components/schemas/Traveler'
        pnrType:
          $ref: '#/components/schemas/PnrType'
        approvalData:
          $ref: '#/components/schemas/ApprovalData'
        policyInfo:
          $ref: '#/components/schemas/PolicyDetail'
        additionalMetadata:
          type: object
          description: Any addtional metadata associated with the booking
          properties:
            airportInfo:
              type: array
              readOnly: true
              items:
                $ref: '#/components/schemas/AirportDetail'
        preBookAnswers:
          description: The per booking answers collected from the traveler during checkout.
          $ref: '#/components/schemas/PreBookAnswers'
        initialCustomFieldV3Responses:
          type: array
          description: List of all the Custom Fields responses captured while booking.
          items:
            $ref: '#/components/schemas/CustomFieldV3Response'
    Int32RangeWrapper:
      type: object
      title: Int32RangeWrapper
      properties:
        iRange:
          $ref: '#/components/schemas/Int32Range'
    HotelBrand:
      type: object
      title: HotelBrand
      description: The brand of hotel.
      properties:
        brandCode:
          type: string
          description: The code of hotel brand.
          example: HY
        brandName:
          type: string
          description: The name of hotel brand.
          example: Global Hytt Corp.
    FareComponent:
      type: string
      description: Fare component eligible for this fop rule
      enum:
      - BASE
      - TAX
      example: BASE
    PolicyTakeApprovalActionWrapper:
      type: object
      title: PolicyTakeApprovalActionWrapper
      properties:
        takeApproval:
          $ref: '#/components/schemas/PolicyTakeApprovalAction'
    FlightCommonWrapper:
      title: FlightCommonWrapper
      description: Wrapper of FlightCommon data to be used in oneOf.
      properties:
        flightData:
          $ref: '#/components/schemas/FlightCommon'
    Office:
      type: object
      title: Office
      description: Office details.
      required:
      - id
      - name
      properties:
        address:
          $ref: '#/components/schemas/PostalAddress'
        id:
          $ref: '#/components/schemas/OfficeId'
        name:
          type: string
          example: Office
        latlng:
          $ref: '#/components/schemas/Latlng'
        taxId:
          type: string
          example: '133232'
    TokenizedExpiry:
      title: TokenizedExpiry
      type: object
      description: Contains the tokenized expiry of a Card.
      required:
      - expiryMonth
      - expiryYear
      properties:
        expiryMonth:
          type: string
          description: Tokenized Expiry month
          example: KvAuPANQWCpjwRQxcC8EXg==
        expiryYear:
          type: string
          description: Tokenized Expiry year
          example: fPBm0OWrKwPyIrCVcbg4cA==
    RatingWrapper:
      type: object
      title: RatingWrapper
      properties:
        rating:
          type: number
          format: double
    PassportWrapper:
      type: object
      title: PassportWrapper
      properties:
        passport:
          $ref: '#/components/schemas/Passport'
    FlightDetail:
      type: object
      description: Describes the details of a flight segment (including the origin, destination, cabin, etc).
      required:
      - id
      - cabin
      properties:
        id:
          type: string
          description: The unique ID for this flight in the itinerary.
          example: flight_0
        flightData:
          $ref: '#/components/schemas/FlightData'
        cabin:
          description: The cabin type for this flight in the associated itinerary
          $ref: '#/components/schemas/Cabin'
        bookingCode:
          type: string
          description: The airline's one-letter code for the associated fare
          example: B
        seatAvailability:
          type: integer
          format: int32
          description: The availability of seats on this flight
          example: 9
        corpAccountCode:
          type: string
          description: The account code is used to get corporate negotiated price
          example: DFG
        carbonEmission:
          description: The CO2 emission details for this flight
          $ref: '#/components/schemas/CO2EmissionDetail'
        amenities:
          description: The amenities associated with the flight.
          type: array
          items:
            $ref: '#/components/schemas/AirAmenity'
        flightAttributes:
          description: The set of product attributes associated with the flight.
          type: array
          items:
            $ref: '#/components/schemas/FlightAttribute'
        fareBasisCode:
          description: The fare basis code contains information about the fare.
          type: string
          example: QUAJZNB3
    RailCard:
      type: object
      title: RailCard
      description: Rail card
      required:
      - name
      - spotnanaCode
      - vendor
      properties:
        cardNumber:
          type: string
          description: Number of card
        expiryDate:
          description: Expiry date of the Rail Card.
          $ref: '#/components/schemas/DateModel'
        name:
          type: string
          description: Name of the Rail Card.
          example: Veterans Railcard
        spotnanaCode:
          description: Unique Spotnana code/identifier for Rail Card.
          type: string
          example: VET
        vendor:
          type: string
          description: Vendor Name.
          example: ATOC
    CostCenterId:
      type: object
      title: Cost center id.
      required:
      - id
      properties:
        id:
          type: string
          example: 731ccbca-0415-6fe1-d235-c324dfbe7423
    TmcBasicInfo:
      type: object
      title: TmcBasicInfo
      description: TMC related basic information.
      required:
      - contractingTmc
      - bookingTmc
      properties:
        contractingTmc:
          $ref: '#/components/schemas/CompanyRef'
          description: Contracting TMC is the TMC the user/organization contracted.
        bookingTmc:
          $ref: '#/components/schemas/CompanyRef'
          description: Booking TMC is the TMC used for the bookings for the user/organization.
    PassengerCapacityAmenityWrapper:
      type: object
      title: PassengerCapacityAmenityWrapper
      properties:
        passengerCapacityAmenity:
          $ref: '#/components/schemas/PassengerCapacityAmenity'
    PreBookAnswers:
      type: object
      properties:
        answers:
          type: array
          items:
            $ref: '#/components/schemas/EntityAnswer'
        preBookQuestionResponseId:
          deprecated: true
          x-sunset: '2026-07-01'
          type: string
          description: The unique id sent back in the pre book questions API response
    FlightPassPaymentMetadataWrapper:
      type: object
      title: FlightPassPaymentMetadataWrapper
      description: Wrapper for Flight Pass payment metadata.
      required:
      - flightPassMetadata
      properties:
        metadataType:
          type: string
          description: Discriminator field for polymorphic deserialization
          example: FlightPassPaymentMetadata
          default: FlightPassPaymentMetadata
        flightPassMetadata:
          $ref: '#/components/schemas/FlightPassPaymentMetadata'
    SeatAmenityPref:
      type: object
      title: SeatAmenityPref
      description: Seat amenity preference.
      required:
      - seatAmenityTypes
      properties:
        seatAmenityTypes:
          type: array
          items:
            type: string
            enum:
            - UNKNOWN_AIR_SEAT_AMENITY_TYPE
            - FLAT_BED
            - WIFI
            - IN_SEAT_POWER
            example: WIFI
    EntityAnswer:
      type: object
      properties:
        entityId:
          type: string
          description: The unique ID for the question.
        userInput:
          type: string
          description: The text input given by user (if any).
        itemIds:
          type: array
          items:
            type: integer
            format: int32
          description: 'The id/enum value corresponding to the option chosen by the user as

            answer.

            '
        answers:
          type: array
          items:
            $ref: '#/components/schemas/AnswerPair'
        customFieldType:
          $ref: '#/components/schemas/CustomFieldType'
        questionDisplayText:
          type: string
          description: The question text to be displayed to the user.
        question:
          $ref: '#/components/schemas/Question'
    ApprovalTripIdFilter:
      type: object
      title: ApprovalTripIdFilter
      description: Trip IDs for the approval data list request.
      required:
      - filterType
      - tripIds
      properties:
        filterType:
          type: string
          example: TRIP_ID_FILTER
        tripIds:
          type: array
          description: Trip ID list
          items:
            type: string
            example: '6926658168'
    OptionSourceMetadata:
      type: object
      title: OptionSourceMetadata
      description: Metadata information for the option source.
      oneOf:
      - $ref: '#/components/schemas/CompanyConfigSourceWrapper'
    PnrTypeFilterV2:
      type: object
      title: PnrTypeFilterV2
      description: Booking/PNR type filter for the approval data list request.
      required:
      - filterType
      - pnrTypes
      properties:
        filterType:
          type: string
          example: PNR_TYPE_FILTER
        pnrTypes:
          type: array
          description: PNR type list
          items:
            $ref: '#/components/schemas/PnrType'
    ExpiryWrapper:
      type: object
      title: ExpiryWrapper
      properties:
        expiry:
          $ref: '#/components/schemas/Expiry'
    DoubleRange:
      type: object
      properties:
        min:
          type: number
          format: double
          description: Minimum value - inclusive.
        max:
          type: number
          format: double
          description: Maximum value - inclusive.
    MealPref:
      type: object
      title: MealPref
      description: Meal preferences.
      properties:
        exclMealPrefs:
          type: array
          items:
            $ref: '#/components/schemas/MealType'
        inclMealPrefs:
          type: array
          items:
            $ref: '#/components/schemas/MealType'
        specialMealDescription:
          type: string
          example: Veg only meal
    LengthWrapper:
      type: object
      title: LengthWrapper
      properties:
        length:
          $ref: '#/components/schemas/Length'
    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'
    MealType:
      type: string
      title: MealType
      description: Type of the meal
      enum:
      - UNKNOWN_MEAL
      - AVML
      - BBML
      - BLML
      - CHML
      - DBML
      - FPML
      - GFML
      - HFML
      - HNML
      - KSML
      - LCML
      - LFML
      - LPML
      - LSML
      - MOML
      - NLML
      - NSML
      - ORML
      - PFML
      - RVML
      - SFML
      - SPML
      - VGML
      - VJML
      - VLML
      - VOML
      example: VGML
    UserOrgIdListWrapper:
      type: object
      title: UserOrgIdListWrapper
      properties:
        userOrgIdList:
          type: array
          items:
            $ref: '#/components/schemas/UserOrgId'
    AirPref:
      type: object
      title: AirPref
      description: Travel preferences related to air travel.
      properties:
        airlinePrefs:
          type: array
          items:
            $ref: '#/components/schemas/AirlinePref'
        alliancePref:
          $ref: '#/components/schemas/AlliancePref'
        farePref:
          $ref: '#/components/schemas/FarePref'
        homeAirport:
          type: string
          example: NEW YORK
        mealPref:
          $ref: '#/components/schemas/MealPref'
        numStopPref:
          $ref: '#/components/schemas/NumStopsPref'
        seatAmenityPref:
          $ref: '#/components/schemas/SeatAmenityPref'
        seatLocationPrefs:
          type: array
          items:
            $ref: '#/components/schemas/SeatLocationPref'
        preferredAirports:
          type: array
          description: A list of user preferred airports.
          items:
            $ref: '#/components/schemas/PreferredAirport'
    WeightLimit:
      description: The weight limit of a baggage option.
      type: object
      properties:
        weight:
          description: The weight limit of a baggage option.
          type: number
          example: 32
        unit:
          description: The unit of measurement for the weight limit.
          type: string
          enum:
          - lb
          - kg
          example: kg
          x-ignoreBreakingChanges:
          - unit->KG
          - unit->LBS
    CreditCardAccess:
      type: object
      title: CreditCardAccess
      description: Access type for cards to check who in the organization has permission to use it
      required:
      - accessType
      - entityIds
      properties:
        accessType:
          $ref: '#/components/schemas/CreditCardAccessType'
        entityIds:
          type: array
          items:
            type: string
          description: Holds the ids for for all users who can access the card or organization id
        entities:
          type: array
          description: A list of cardAccessEntity consisting of central card access level if present and entity id.
          items:
            $ref: '#/components/schemas/CardAccessEntity'
    PaymentMethod:
      type: string
      description: Payment method
      enum:
      - PAYMENT_METHOD_UNKNOWN
      - CREDIT_CARD
      - BREX_POINTS
      - CASH
      - QANTAS_POINTS
      - VENDOR_PROGRAM_PAYMENT
      - DELAYED_INVOICING
      - FLIGHT_CREDITS
      - QANTAS_TRAVEL_FUND
      - CUSTOM_VIRTUAL_PAYMENT
      - FLIGHT_PASS
      - MISCELLANEOUS_CREDIT_ORDER
      - NO_PREPAYMENT
      x-ignoreBreakingChanges:
      - PaymentMethod->MISCELLANEOUS_CREDIT_ORDER
      - PaymentMethod->NO_PREPAYMENT
      example: BREX_POINTS
    SupplierType:
      type: string
      description: Supplier type like Sabre, TravelFusion etc.
      enum:
      - SABRE
      - AMADEUS
      - TRAVEL_FUSION
      - FARELOGIX_NDC
      - ATPCO_NDC
      - TRAINLINE
      - AVIA
      - QBR
      - BCD
      - QANTAS_HOTELS
      - SOUTHWEST
      - EXPEDIA
      - HOTEL_HUB
      - NDC
      - MARRIOTT
      - CLEARTRIP
      - KYTE
      - GROUNDSPAN
      - SABRE_NDC
      - BOOKING_COM
      - CARTRAWLER
      - PREMIER_INN
      - TRAVELODGE
      - ENTERPRISE
      - HYATT
      - NATIONAL
      - ALAMO
      - HERTZ
      - DOLLAR
      - THRIFTY
  

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