Spotnana Service Charge API

The Service Charge API from Spotnana — 1 operation(s) for service charge.

OpenAPI Specification

spotnana-service-charge-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Air Service Charge 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: Service Charge
paths:
  /v2/service-charge/{entityType}/{entityId}/types/{type}/list:
    parameters:
    - name: entityType
      in: path
      description: Entity type for service charge
      required: true
      schema:
        $ref: '#/components/schemas/ServiceChargeEntityType'
        example: TRIP
    - name: entityId
      in: path
      description: Entity ID for service charge e.g. trip ID for entityType = TRIP
      required: true
      schema:
        type: string
        example: '1234567890'
    - name: type
      in: path
      description: Service charge type.
      required: true
      schema:
        $ref: '#/components/schemas/ServiceChargeType'
        example: TMC_CHARGE
    post:
      tags:
      - Service Charge
      summary: List service charges
      description: List service charges for a given entity
      operationId: listServiceCharges
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListServiceChargesRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListServiceChargesResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  responses:
    Forbidden:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: The specified resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  schemas:
    FailureReason:
      type: object
      title: FailureReason
      description: Contains the failure reason in case of any Failed Transaction
      properties:
        reasonCode:
          type: string
          description: Reason Code associated with the Failure
          enum:
          - PAYMENT_METHOD_MISSING
          - PAYMENT_GATEWAY_FAILURE
          example: PAYMENT_METHOD_MISSING
    PrimaryServiceProviderTmc:
      type: object
      title: PrimaryServiceProviderTmc
      description: Primary service provider TMC info
      required:
      - tmcId
      properties:
        tmcId:
          $ref: '#/components/schemas/CompanyId'
          description: Id of the service provider TMC.
    ServiceType:
      type: string
      title: ServiceType
      description: 'Type of service for service charge. ITINERARY_BOOKING: Service charge for travel booking. AGENT_CONTACT: Service charge for agent contact.

        '
      enum:
      - ITINERARY_BOOKING
      - AGENT_CONTACT
    AgentContactType:
      type: string
      title: Agent contact type
      description: Agent contact type
      enum:
      - PHONE
      - CHAT
      - EMAIL
    ServiceChargeType:
      type: string
      title: ServiceChargeType
      description: 'Type of service charge. TMC_CHARGE: Service charge for a service charged by the TMC.

        '
      enum:
      - TMC_CHARGE
    ServiceCharge:
      type: object
      title: ServiceCharge
      description: Service charge.
      required:
      - amount
      - taxes
      - totalAmount
      properties:
        amount:
          $ref: '#/components/schemas/Money'
          description: Service charge amount.
        taxes:
          type: array
          description: Applicable taxes.
          items:
            $ref: '#/components/schemas/TaxAmount'
        totalAmount:
          $ref: '#/components/schemas/Money'
          description: Total amount (including taxes).
        allowedFoP:
          type: array
          deprecated: true
          x-sunset: '2026-07-01'
          description: List of allowed payment methods for this charge.
          items:
            $ref: '#/components/schemas/PaymentMethod'
        feeInfo:
          $ref: '#/components/schemas/FeeInfo'
        waiveOffInfo:
          $ref: '#/components/schemas/AppliedWaiveOffInfo'
    Money:
      type: object
      title: Money
      description: 'Money object containing details such as the amount, the currency code, and the converted amount.

        '
      required:
      - amount
      - currencyCode
      properties:
        amount:
          type: number
          format: double
          description: The numeric value for the amount of money.
          example: 510
        currencyCode:
          type: string
          description: The 3-letter currency code for the money amount (defined using ISO 4217 standard).
          example: GBP
        convertedAmount:
          type: number
          format: double
          description: 'The converted currency and amount that has been converted (if a currency conversion has been requested).

            For example, if the call requests that money be sent in a specified currency (because the frontend requested

            the backend to send money in the user''s preferred currency).

            '
          example: 715.42
        convertedCurrency:
          type: string
          description: The 3-letter currency code for the converted currency (defined using ISO 4217 standard).
          example: USD
        otherCoinage:
          type: array
          title: OtherCoinage
          description: List of the dollar amount in other coinage systems like reward points, cryptocurrency etc.
          items:
            type: object
            properties:
              coinageCode:
                $ref: '#/components/schemas/PaymentMethod'
                description: Payment method
              amount:
                type: number
                format: double
                example: 1000
              conversionRate:
                type: number
                format: double
                description: 1 coin in this system equals to how many currency value
                example: 0.01
              preferredCurrencyConversionRate:
                type: number
                format: double
                description: 1 coin in this system equals to how many currency value
                example: 0.01
              otherCoinageMetadata:
                description: Metadata to store additional information related to the payment method
                discriminator:
                  propertyName: metadataType
                  mapping:
                    FlightPassPaymentMetadata: '#/components/schemas/FlightPassPaymentMetadataWrapper'
                oneOf:
                - $ref: '#/components/schemas/FlightPassPaymentMetadataWrapper'
    FlightPassTax:
      type: object
      title: FlightPassTax
      description: A single tax component of the flight pass fare.
      properties:
        code:
          type: string
          description: Tax code identifier (e.g. GST_HST, QST, OTHER).
          example: GST_HST
        amount:
          description: Tax amount.
          $ref: '#/components/schemas/Money'
    TokenizedExpiryWrapper:
      type: object
      title: TokenizedExpiryWrapper
      properties:
        tokenizedExpiry:
          $ref: '#/components/schemas/TokenizedExpiry'
    CompanyId:
      type: object
      title: CompanyId
      description: Company ID
      required:
      - id
      properties:
        id:
          type: string
          format: uuid
          example: f49d00fe-1eda-4304-ba79-a980f565281d
    PaymentTransaction:
      type: object
      title: PaymentTransaction
      description: Payment Transaction
      properties:
        gatewayIdentifier:
          description: Gateway Identifier
          $ref: '#/components/schemas/GatewayIdentifier'
        paymentReference:
          type: string
          description: payment reference
        networkTransactionId:
          type: string
          description: Network Transaction Id
        gatewayInfo:
          $ref: '#/components/schemas/GatewayInfo'
        failureReason:
          $ref: '#/components/schemas/FailureReason'
    UserId:
      type: object
      title: UserId
      description: User identifier
      required:
      - id
      properties:
        id:
          type: string
          format: uuid
    UAPassPlusMetadataWrapperExternal:
      type: object
      title: UAPassPlusMetadataResponseWrapper
      description: Wrapper for UAPassPlus response metadata
      required:
      - uaPassPlusMetadata
      properties:
        uaPassPlusMetadata:
          $ref: '#/components/schemas/UAPassPlusMetadataExternal'
    OrganizationId:
      type: object
      title: OrganizationId
      description: Organization id for traveler.
      required:
      - id
      properties:
        id:
          type: string
    TaxBreakdown:
      type: array
      items:
        $ref: '#/components/schemas/Tax'
    ErrorResponse:
      type: object
      properties:
        debugIdentifier:
          type: string
          description: Link to debug the error internally.
        errorMessages:
          type: array
          items:
            type: object
            properties:
              errorCode:
                type: string
                description: Error code to identify the specific errors.
              message:
                type: string
                description: Message containing details of error.
              errorParameters:
                type: array
                description: Error message parameters.
                items:
                  $ref: '#/components/schemas/ErrorParameter'
              errorDetail:
                type: string
                description: More details about the error.
    FailureDetails:
      type: object
      title: FailureDetails
      description: Failure details
      properties:
        failureCode:
          type: string
          description: failure code
          enum:
          - FAILURE_CODE_UNKNOWN
          - PAYMENT_METHOD_MISSING
          - PAYMENT_GATEWAY_FAILURE
        failureMessage:
          type: string
          description: failure message
    OtherFeeInfo:
      type: object
      title: OtherFeeInfo
      description: Other Fee Info
      required:
      - bookingFeeType
      - otherFeeType
      properties:
        bookingFeeType:
          type: string
          description: Type of the booking fee
          example: OTHER_FEE
        calculatedAmount:
          $ref: '#/components/schemas/Money'
        chargeProcessorInfo:
          $ref: '#/components/schemas/ChargeProcessorInfo'
        otherFeeType:
          $ref: '#/components/schemas/OtherFeeType'
        feeName:
          type: string
          description: Name of the fee to be charged.
          example: TMC Standard Fee
    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
    PaymentSourceType:
      type: string
      description: Type of Payment Source
      enum:
      - CARD
      - VIRTUAL_CARD
      - REWARDS_PROGRAM
      - DELAYED_INVOICING
      - CUSTOM_PAYMENT_METHOD
      - VENDOR_PROGRAM_PAYMENT
      - UNUSED_CREDIT
      - CASH
    CardCompany:
      type: string
      enum:
      - NONE
      - VISA
      - MASTERCARD
      - AMEX
      - DISCOVER
      - AIR_TRAVEL_UATP
      - CARTE_BLANCHE
      - DINERS_CLUB
      - JCB
      - BREX
      - UNION_PAY
      - EURO_CARD
      - ACCESS_CARD
      - ELO_CARD
      description: The issuing company of card
      example: VISA
    UAPassPlusMetadataExternal:
      type: object
      title: UAPassPlusMetadata
      description: Details for UAPassPlus Metadata.
      properties:
        uatpInfo:
          type: object
          title: uatpInfo
          description: UATP card information for UAPassPlus
    NonBillableReason:
      type: object
      title: NonBillableReason
      description: Reason for non-billable agent contact.
      required:
      - reasonCode
      properties:
        reasonCode:
          $ref: '#/components/schemas/NonBillableReasonCode'
          description: Reason code for non-billable agent contact.
          example: MINOR_REQUEST
        notes:
          type: string
          description: Notes for non-billable agent contact.
          example: Waived off
    ValueAddedServiceFeeType:
      type: string
      title: ValueAddedServiceFeeType
      description: Value added service fee type
      enum:
      - VIRTUAL_CARD_PAYMENT
      - PRICE_OPTIMIZATION
      - UNUSED_CREDIT_APPLICATION
      - MERCHANT_FEE
      example: VIRTUAL_CARD_PAYMENT
    Expiry:
      title: Expiry
      type: object
      description: Contains the expiry of a Card.
      required:
      - expiryMonth
      - expiryYear
      properties:
        expiryMonth:
          type: integer
          format: int32
          minimum: 1
          maximum: 12
          description: Expiry month
          example: 1
        expiryYear:
          type: integer
          format: int32
          description: Expiry year
          minimum: 2000
          example: 2010
    RuleBasedInfo:
      title: RuleBasedInfo
      type: object
      description: Rule based processor info
      required:
      - ruleName
      - chargeProcessorType
      properties:
        ruleName:
          type: string
          description: Rule name
          example: Rule1
        chargeProcessorType:
          type: string
          description: Charge processor type
          example: RULE_BASED_INFO
    CentralCardAccessLevel:
      title: CentralCardAccessLevel
      type: string
      description: Identifies at which level central card is applicable, for example organization or legal entity.
      enum:
      - UNKNOWN
      - ORGANIZATION
      - LEGAL_ENTITY
      - TMC
    VirtualCardVendorInfo:
      type: object
      title: VirtualCardVendorInfo
      description: Virtual card related information like vendor, cardId, card-pool id of vendor etc.
      required:
      - vendorCardId
      - virtualCardVendorCardPoolId
      properties:
        vendor:
          $ref: '#/components/schemas/VirtualCardVendor'
        vendorCardId:
          type: string
          description: Virtual card id.
          example: '68793680'
        virtualCardVendorCardPoolId:
          type: string
          description: Card pool id of virtual card vendor.
          example: '51907'
        confermaInfo:
          $ref: '#/components/schemas/ConfermaInfo'
    CardMetadata2:
      type: object
      title: CardMetadata
      description: Metadata for Card payment source.
      properties:
        card:
          $ref: '#/components/schemas/Card'
        accessType:
          $ref: '#/components/schemas/CreditCardAccess'
        isLodgeCard:
          type: boolean
          description: Whether the payment is made using a lodge card
          example: false
        bta:
          type: string
          description: Whether this is a BTA card. Possible values are 'Y' or 'N'. Relevant only for lodge cards.
          example: Y
    FormOfPayment:
      title: Form of Payment
      description: Information about form of payment to be used to charge customer
      type: object
      required:
      - type
      properties:
        type:
          type: string
          enum:
          - UNKNOWN
          - CARD
          - CASH
          - TFPAY
          - CHEQUE
          - BREX_POINTS
          - QANTAS_POINTS
          title: PaymentType
          description: Type of payment used
          example: CARD
          deprecated: true
          x-sunset: '2026-07-01'
        card:
          description: The payment card to be used to charge customer. This is only set if the payment type is 'CARD'
          $ref: '#/components/schemas/Card'
        additionalInfo:
          type: string
          description: Additional info to be added if payment type is 'UNKNOWN'.
        accessType:
          $ref: '#/components/schemas/CreditCardAccess'
        paymentMethod:
          $ref: '#/components/schemas/PaymentMethod'
          description: Payment method used to pay for this transaction
        paymentMetadata:
          $ref: '#/components/schemas/PaymentMetadata'
        paymentSourceType:
          $ref: '#/components/schemas/PaymentSourceType'
    ServiceChargeRecord:
      type: object
      title: ServiceChargeRecord
      description: Service charge record.
      required:
      - entity
      - serviceChargeType
      - serviceType
      - charge
      - transactionTime
      - paymentStatus
      properties:
        entity:
          $ref: '#/components/schemas/ServiceChargeEntity'
          description: Entity for service charge.
        tripId:
          type: string
          description: Trip ID (if applicable).
          example: '1234567890'
          deprecated: true
          x-sunset: '2026-07-01'
        serviceChargeType:
          $ref: '#/components/schemas/ServiceChargeType'
          description: Type of service charge.
          example: TMC_CHARGE
        serviceType:
          $ref: '#/components/schemas/ServiceType'
          description: Type of service.
          example: AGENT_CONTACT
        agentContact:
          $ref: '#/components/schemas/AgentContact'
          description: Agent contact details if serviceType is AGENT_CONTACT.
        chargeId:
          type: string
          description: Charge Id to uniquely identify service charge.
          example: e2c04834-92eb-4b62-9faa-eb73a70051d3
        charge:
          $ref: '#/components/schemas/ServiceCharge'
          description: Service charge.
        transactionTime:
          $ref: '#/components/schemas/DateTimeOffset'
          description: Transaction date and time.
        paymentStatus:
          $ref: '#/components/schemas/PaymentStatus'
          description: Payment status.
        userOrgId:
          $ref: '#/components/schemas/UserOrgId'
          description: User org details.
        legalEntityId:
          $ref: '#/components/schemas/LegalEntityId'
          description: The ID of the legal entity.
        bookingDetails:
          $ref: '#/components/schemas/BookingDetails'
          description: Booking details.
        fop:
          $ref: '#/components/schemas/FormOfPayment'
          description: Form of payment for the service charge.
        paymentTransaction:
          $ref: '#/components/schemas/PaymentTransaction'
          description: Payment transaction details.
        failureDetails:
          $ref: '#/components/schemas/FailureDetails'
          description: Failure details.
    FlightPassPaymentMetadata:
      type: object
      title: FlightPassPaymentMetadata
      description: Metadata specific to Flight Pass payment method in OtherCoinage.
      properties:
        flightPassNumber:
          type: string
          description: Flight pass number
          example: FP123456789
        flightPassAmounts:
          $ref: '#/components/schemas/FlightPassPaymentAmounts'
    CreditCardAccessType:
      title: CreditCardAccessType
      type: string
      description: Identifies the different ways the card can be used across an organization
      enum:
      - UNKNOWN_TYPE
      - CENTRALISED
      - INDIVIDUAL
      - PERSONAL
      - TMC
      - APPLICATION
      - ITINERARY
      - EVENTS
      - TRAVEL_ARRANGER_MANAGED
      - COMPANY_TRAVEL_ARRANGER_MANAGED
      - EVENT_TEMPLATE
      x-ignoreBreakingChanges:
      - CreditCardAccessType->EVENT_TEMPLATE
    Image:
      type: object
      title: Image
      description: An image with meta data. Either the `data` or `url` property must be supplied to load the image.
      properties:
        data:
          type: string
          format: byte
          example: 6935813e12584abda0e43d71cd2ea260
        dimensions:
          $ref: '#/components/schemas/Dimensions'
        url:
          type: string
          example: https://static.wixstatic.com/media/73f2e2_6935813e12584abda0e43d71cd2ea260~mv2.png/v1/fill/w_630,h_94,al_c,q_85,usm_0.66_1.00_0.01/Spotnana%403x.webp
    LegalEntityId:
      type: object
      title: LegalEntityId
      description: The ID of the legal entity.
      required:
      - id
      properties:
        id:
          type: string
          example: fc1ccbce-8413-4fe9-b233-a324dfbe7421
    FareAmount:
      type: object
      title: FareAmount
      description: Fare amount including base fare and tax.
      required:
      - base
      - tax
      properties:
        base:
          description: Base fare amount.
          $ref: '#/components/schemas/Money'
        tax:
          description: Tax amount.
          $ref: '#/components/schemas/Money'
        taxBreakdown:
          description: Breakdown of tax amounts.
          $ref: '#/components/schemas/TaxBreakdown'
    AppliedWaiveOffInfo:
      type: object
      title: Applied Waive-Off Information
      description: Information about TMC fee waivers applied by an agent during checkout.
      properties:
        waiveOffAmount:
          description: The amount of TMC fee that has been waived
          $ref: '#/components/schemas/FareAmount'
        waiveOffReason:
          description: The reason provided by the agent for waiving the fee
          $ref: '#/components/schemas/WaiveOffFeeReason'
    StripeInfo:
      title: StripeInfo
      type: object
      description: Stripe payment gateway information
      properties:
        accountId:
          type: string
          description: Stripe account id
          example: acct_1OAbc3AB5abcdDdA
        accountDisplayName:
          type: string
          description: Stripe account display name as seen on the stripe dashboard
          example: Abc Travel
        platformAccountGatewayId:
          type: string
          description: Gateway-id of platform account when this gateway is a connected account
          example: connect-platform:#
          readOnly: true
        address:
          description: Address for the given account
          $ref: '#/components/schemas/PostalAddress'
        taxId:
          type: string
          description: Tax id for account
          example: 89-189390
    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==
    ListServiceChargesRequest:
      type: object
      title: ListServiceChargesRequest
      description: Request for list service charges.
      properties:
        serviceType:
          $ref: '#/components/schemas/ServiceType'
          description: Type of service charge (Optional).
    TransactionFeeInfo:
      title: Transaction Fee Info
      type: object
      description: Transaction Fee Info
      required:
      - bookingFeeType
      properties:
        bookingFeeType:
          type: string
          example: TRANSACTION_FEE
        transactionFeeType:
          $ref: '#/components/schemas/ServiceFeeTransactionType'
        calculatedAmount:
          $ref: '#/components/schemas/Money'
        chargeProcessorInfo:
          $ref: '#/components/schemas/ChargeProcessorInfo'
    StripeInfoWrapper:
      type: object
      title: StripeInfoWrapper
      description: Wrapper for StripeInfo
      required:
      - stripeInfo
      properties:
        stripeInfo:
          $ref: '#/components/schemas/StripeInfo'
    PostalAddress:
      title: PostalAddress
      description: Postal Address Details
      type: object
      required:
      - addressLines
      - regionCode
      properties:
        addressLines:
          description: Address lines
          type: array
          items:
            type: string
            example: Golden Gate Bridge
        administrativeArea:
          type: string
          description: 'Code of administrative area. For example: DL for Delhi, India.

            Highest administrative subdivision which is used for postal

            addresses of a country or region.

            For example, this can be a state, a province, an oblast, or a prefecture.

            Specifically, for Spain this is the province and not the autonomous

            community (e.g. "Barcelona" and not "Catalonia").

            Many countries don''t use an administrative area in postal addresses. E.g.

            in Switzerland this should be left unpopulated.

            '
          example: CA
        administrativeAreaName:
          type: string
          description: "Name of administrative area. This is full name corresponding to administrativeArea. \nLike Delhi for DL area code. For some places, code and name maybe same as well like Tokyo.\n"
          example: California
        description:
          description: Address description
          type: string
          example: San Francisco Home
        isDefault:
          description: Whether this address is default address in case multiple addresses are specified.
          type: boolean
          example: true
        languageCode:
          description: "BCP-47 language code of the contents of this address (if known). This is often the UI \nlanguage of the input form or is expected to match one of the languages used in the \naddress' country/region, or their transliterated equivalents.\nThis can affect formatting in certain countries, but is not critical to the correctness \nof the data and will never affect any validation or other non-formatting related operations.\nExamples: \"zh-Hant\", \"ja\", \"ja-Latn\", \"en\".\n"
          type: string
          example: en
        locality:
          description: Generally refers to the city/town portion of the address.
          type: string
          example: San Francisco
        locationCode:
          description: IATA 3-letter location code. See https://www.iata.org/en/services/codes.
          type: string
          example: LAX
        organization:
          description: The name of the organization at the address.
          type: string
          example: Spotnana
        postalCode:
          description: Postal code of the address. This is a required field when setting for a user/legal entity/company etc.
          type: string
          example: '94130'
        continentCode:
          description: 2 letter continent code of the continent this address falls in.
          type: string
          example: AF
        recipients:
          description: The recipient at the address.
          type: array
          items:
            type: string
        regionCode:
          description: Region code of the country/region of the address.
          type: string
          example: US
        regionName:
          description: Region name of the country/region of the address.
          type: string
          example: America
        revision:
          type: integer
          format: int32
          example: 1
        sortingCode:
          description: 'Additional, country-specific, sorting code. This is not used

            in most regions. Where it is used, the value is either a string like

            "CEDEX", optionally followed by a number (e.g. "CEDEX 7"), or just a number

            alone, representing the "sector code" (Jamaica), "delivery area indicator"

            (Malawi) or "post office indicator" (e.g. Côte d''Ivoire).

            '
          type: string
          example: Jamaica
        sublocality:
          description: Sublocality of the address. This can be neighborhoods, boroughs, districts.
          type: string
        timezone:
          description: Time zone of the address.
          type: string
          example: America/Los_Angeles
        coordinates:
          description: Map coordinates of the address.
          $ref: '#/components/schemas/Latlng'
    ValueAddedServiceFeeInfo:
      type: object
      title: ValueAddedServiceFeeInfo
      description: Value Added Service Fee Info
      required:
      - bookingFeeType
      properties:
        bookingFeeType:
          type: string
          description: Type of the booking fee
          example: VALUE_ADDED_SERVICE_FEE
        calculatedAmount:
          $ref: '#/components/schemas/Money'
        chargeProcessorInfo:
          $ref: '#/components/schemas/ChargeProcessorInfo'
        valueAddedServiceFeeType:
          $ref: '#/components/schemas/ValueAddedServiceFeeType'
        feeName:
          type: string
          description: Name of the fee to be charged.
          example: Payment Admin Fee
    AgentContact:
      type: object
      title: AgentContact
      description: Details of agent contact event.
      required:
      - contactType
      - contactId
      - contactOp
      - billable
      properties:
        contactType:
          description: Mode of agent contact.
          $ref: '#/components/schemas/AgentContactType'
          example: PHONE
        contactId:
          type: string
          description: Unique ID for agent contact.
          example: '1234567890'
        contactOp:
          description: Operation that the agent performed.
          $ref: '#/components/schemas/AgentContactOp'
          example: AGENT_BOOKING
        agentId:
          $ref: '#/components/schemas/UserId'
          description: User ID of agent.
        billable:
          type: boolean
          description: Is the agent contact event billable?
          example: true
        pnrId:
          type: string
          description: PNR ID (if applicable).
          example: '1234567890'
        travelType:
          description: Travel type.
          $ref: '#/components/schemas/TravelType'
          example: AIR
        notes:
          type: string
          description: Agent notes.
          example: Requested by customer
        nonBillableReason:
          $ref: '#/components/schemas/NonBillableReason'
          description: Reason for non-billable agent contact
    GatewayInfo:
      type: object
      title: GatewayInfo
      description: Payment gateway information
      oneOf:
      - $ref: '#/components/schemas/StripeInfoWrapper'
    BookingDetails:
      type: object
      title: BookingDetails
      description: Booking information
      properties:
        pnrId:
          type: string
          description: PNR Id
        pnrVersion:
          type: integer
          format: int32
          description: Version number associated with the PNR
        tripUsageType:
          type: string
          description: Trip Usage Type
          enum:
          - TRIP_USAGE_TYPE_UNKNOWN
          - STANDARD
          - EVENT
        source:
          description: Third party source
          $ref: '#/components/schemas/ThirdPartySource'
        sourcePnrId:
          type: string
          description: Source PNR Id from thirdparty source
    DirectBillingWrapper2:
      type: object
      title: DirectBillingWrapper
      description: Wrapper for DirectBilling metadata
      required:
      - directBilling
      properties:
        directBilling:
          $ref: '#/components/schemas/DirectBilling2'
    CardExpiry:
      title: CardExpiry
      type: object
      description: Contains the expiry of a Card.
      oneOf:
      - $ref: '#/components/schemas/TokenizedExpiryWrapper'
      - $ref: '#/components/schemas/ExpiryWrapper'
    VendorProgramPaymentMetadata2:
      type: object
      title: VendorProgramPaymentMetadata
      description: Metadata related to vendor program payment method
      oneOf:
      - $ref: '#/components/schemas/DirectBillingWrapper2'
      - $ref: '#/components/schemas/UAPassPlusMetadataWrapperExternal'
    OrganizationAgencyId:
      type: object
      title: OrganizationAgencyId
      descripti

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