DFlow swap API

Swap API endpoints

OpenAPI Specification

dflow-swap-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: DFlow Aggregator admin swap API
  description: DFlow Aggregator API
  license:
    name: BUSL-1.1
  version: 0.1.0
servers:
- url: https://quote-api.dflow.net
security:
- api_key: []
tags:
- name: swap
  description: Swap API endpoints
paths:
  /priority-fees:
    get:
      tags:
      - swap
      summary: Returns the latest global priority fee estimates for each priority level
      operationId: priority_fees_handler
      responses:
        '200':
          description: Priority fee estimates
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PriorityFeesResponse'
  /priority-fees/stream:
    get:
      tags:
      - swap
      summary: Streams priority fee estimate updates over a WebSocket connection
      operationId: priority_fee_stream_handler
      responses:
        '101':
          description: WebSocket upgrade
  /quote:
    get:
      tags:
      - swap
      summary: Returns a quote for an imperative swap
      operationId: quote_handler
      parameters:
      - name: inputMint
        in: query
        description: Base58-encoded input mint address
        required: true
        schema:
          type: string
      - name: outputMint
        in: query
        description: Base58-encoded output mint address
        required: true
        schema:
          type: string
      - name: amount
        in: query
        description: Input amount as a scaled integer. For example, 1 SOL is 1000000000.
        required: true
        schema:
          type: integer
          format: int64
          minimum: 0
      - name: slippageBps
        in: query
        description: "Max allowed slippage for the swap. Allowed values are:\n- a u16 which specifies the maximum allowed slippage in basis points\n- the string value \"auto\", where the server determines the maximum allowed slippage\n  automatically"
        required: false
        schema:
          $ref: '#/components/schemas/SlippageTolerance'
      - name: priceImpactTolerancePct
        in: query
        description: 'If specified, the API will return an error if the price impact of the route is greater than

          the specified percentage. If unspecified, the server will determine the threshold. For

          example, 10 is 10% and 100 is 100%.'
        required: false
        schema:
          type: integer
          format: int32
          minimum: 0
      - name: dexes
        in: query
        description: Comma-separated list of DEXes to include. If not specified, all DEXes will be included.
        required: false
        schema:
          type: string
      - name: excludeDexes
        in: query
        description: Comma-separated list of DEXes to exclude. If not specified, all DEXes will be included.
        required: false
        schema:
          type: string
      - name: platformFeeBps
        in: query
        description: 'Optional platform fee in basis points. This should only be nonzero if the swap will collect

          the platform fee. The swap must specify a valid fee account and that fee account must be

          able to collect the fee mint at execution time.'
        required: false
        schema:
          type: integer
          format: int32
          minimum: 0
      - name: platformFeeMode
        in: query
        description: Optional platform fee mode. If not specified, the default is `outputMint`.
        required: false
        schema:
          $ref: '#/components/schemas/PlatformFeeMode'
      - name: sponsoredSwap
        in: query
        description: 'This should be specified as true if and only if the quote will be used for a sponsored swap.

          If true, then the quote will account for any additional token 2022 transfer fees that apply

          to the input and output mints for a sponsored swap.'
        required: false
        schema:
          type: boolean
      - name: sponsorExec
        in: query
        description: 'The execution mode that will be used for the sponsored swap. This parameter is only relevant

          when `sponsoredSwap` is true. True indicates that the sponsor will be the executor of the

          swap. False indicates that the user will be the executor of the swap. Default is true.'
        required: false
        schema:
          type: boolean
      - name: destinationSwap
        in: query
        description: 'This should be specified as true if and only if the quote will be used for a destination

          token account swap. If true, then the quote will account for any additional token 2022

          transfer fees that apply to the output mint for a destination token account swap.'
        required: false
        schema:
          type: boolean
      - name: onlyDirectRoutes
        in: query
        description: If true, only use single-leg routes
        required: false
        schema:
          type: boolean
      - name: maxRouteLength
        in: query
        description: 'If specified, the route will be limited to the specified number of legs. Ignored if

          `only_direct_routes` is true.'
        required: false
        schema:
          type: integer
          format: int32
          minimum: 0
      - name: onlyJitRoutes
        in: query
        description: If true, only use JIT routes. Every leg in the route will use the JIT router.
        required: false
        schema:
          type: boolean
      - name: forJitoBundle
        in: query
        description: 'If true, only use routes that are compatible with Jito bundles. This should only be

          specified as true if the swap will be executed in a Jito bundle. Default is false.'
        required: false
        schema:
          type: boolean
      - name: skipPumpfunCashbackClaim
        in: query
        description: 'If true, Pump.fun cashback will not be claimed for cashback-eligible coins. When set, sell

          quotes include the full creator fee, and execution skips Pump.fun cashback claiming. Default

          is false. Cannot be used with sponsor-executed swaps (`sponsorExec` is true or defaulted to

          true).'
        required: false
        schema:
          type: boolean
      responses:
        '200':
          description: Imperative swap quote
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteBadRequestResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteInternalServerErrorResponse'
        '503':
          description: Service unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteServiceUnavailableResponse'
  /swap:
    post:
      tags:
      - swap
      summary: Returns an imperative swap transaction for the given quote
      operationId: swap_handler
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SwapRequest'
        required: true
      responses:
        '200':
          description: Imperative swap transaction
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SwapResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SwapBadRequestResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SwapInternalServerErrorResponse'
  /swap-instructions:
    post:
      tags:
      - swap
      summary: Returns an imperative swap transaction for the given quote
      operationId: swap_instructions_handler
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SwapRequest'
        required: true
      responses:
        '200':
          description: Imperative swap transaction
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SwapInstructionsResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SwapBadRequestResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SwapInternalServerErrorResponse'
components:
  schemas:
    PriorityLevel:
      type: string
      enum:
      - medium
      - high
      - veryHigh
    QuoteServiceUnavailableCode:
      type: string
      enum:
      - amm_map_not_initialized
      - amm_map_lagging
    DynamicRoutePlanLeg:
      type: object
      required:
      - venue
      - marketKey
      - data
      - inputMint
      - outputMint
      - inAmount
      - outAmount
      - inputMintDecimals
      - outputMintDecimals
      properties:
        data:
          type: string
          description: Data for the leg
        inAmount:
          type: string
          description: Maximum input amount for the leg as a scaled integer. For example, 1 SOL is 1000000000.
        inputMint:
          type: string
          description: Base58-encoded input mint address
        inputMintDecimals:
          type: integer
          format: int32
          description: Decimals for the input mint
          minimum: 0
        marketKey:
          type: string
          description: Key identifying the market on the venue
        outAmount:
          type: string
          description: Expected output amount for the leg as a scaled integer. For example, 1 SOL is 1000000000.
        outputMint:
          type: string
          description: Base58-encoded output mint address
        outputMintDecimals:
          type: integer
          format: int32
          description: Decimals for the output mint
          minimum: 0
        venue:
          type: string
          description: Venue for the leg
    PrioritizationFeeLamports:
      oneOf:
      - type: object
        description: A multiplier applied to the automatically-determined fee. The total is capped at 0.005 SOL.
        required:
        - autoMultiplier
        properties:
          autoMultiplier:
            type: integer
            format: int32
            description: A multiplier applied to the automatically-determined fee. The total is capped at 0.005 SOL.
            minimum: 0
      - type: object
        description: A variable prioritization fee determined by the server based on the specified priority level
        required:
        - priorityLevelWithMaxLamports
        properties:
          priorityLevelWithMaxLamports:
            type: object
            description: A variable prioritization fee determined by the server based on the specified priority level
            required:
            - priorityLevel
            - maxLamports
            properties:
              maxLamports:
                type: integer
                format: int32
                description: Maximum lamports to cap the prioritization fee determined by the server
                minimum: 0
              priorityLevel:
                $ref: '#/components/schemas/PriorityLevel'
                description: Priority level for the prioritization fee
      - type: string
        description: A variable prioritization fee determined by the server. The total is capped at 0.005 SOL.
        enum:
        - auto
      - type: object
        description: A fixed prioritization fee in lamports
        required:
        - lamports
        properties:
          lamports:
            type: integer
            format: int32
            description: A fixed prioritization fee in lamports
            minimum: 0
      - type: string
        description: Prioritization fee should be left unspecified
        enum:
        - disabled
    AccountMetaResponse:
      type: object
      required:
      - pubkey
      - isSigner
      - isWritable
      properties:
        isSigner:
          type: boolean
          description: Is the account a signer?
        isWritable:
          type: boolean
          description: Is the account writable?
        pubkey:
          type: string
          description: Pubkey of the account
    CreateFeeAccountParams:
      type: object
      required:
      - referralAccount
      properties:
        referralAccount:
          type: string
          description: Base58-encoded address of the referral account associated with the fee account
    IncludeJitoSandwichMitigationAccount:
      oneOf:
      - type: boolean
      - type: string
    PrioritizationType:
      oneOf:
      - type: object
        description: Prioritization fee specified via the compute budget program
        required:
        - computeBudget
        properties:
          computeBudget:
            type: object
            description: Prioritization fee specified via the compute budget program
            required:
            - microLamports
            properties:
              estimatedMicroLamports:
                type:
                - integer
                - 'null'
                format: int64
                description: Compute unit price estimated by the server for the transaction
                minimum: 0
              microLamports:
                type: integer
                format: int64
                description: Compute unit price assigned to the transaction
                minimum: 0
    InstructionResponse:
      type: object
      required:
      - programId
      - accounts
      - data
      properties:
        accounts:
          type: array
          items:
            $ref: '#/components/schemas/AccountMetaResponse'
          description: Metadata describing accounts that should be passed to the program.
        data:
          type: string
          description: Opaque data passed to the program for its own interpretation.
        programId:
          type: string
          description: Pubkey of the program that executes this instruction.
    SwapInternalServerErrorResponse:
      type: object
      required:
      - msg
      - code
      properties:
        code:
          $ref: '#/components/schemas/SwapInternalServerErrorCode'
        msg:
          type: string
      example:
        code: <enum<string>>
        msg: <string>
    QuoteServiceUnavailableResponse:
      type: object
      required:
      - msg
      - code
      properties:
        code:
          $ref: '#/components/schemas/QuoteServiceUnavailableCode'
        msg:
          type: string
      example:
        code: <enum<string>>
        msg: <string>
    SlippageTolerance:
      oneOf:
      - type: integer
        format: int32
        description: Slippage tolerance specified in basis points
        minimum: 0
      - type: string
        description: Slippage tolerance will be determined by the server
        enum:
        - auto
    SwapRequest:
      type: object
      required:
      - userPublicKey
      - quoteResponse
      properties:
        computeUnitPriceMicroLamports:
          type: integer
          format: int64
          description: Compute unit price in micro-lamports. Mutually exclusive with `prioritizationFeeLamports`.
          minimum: 0
        createFeeAccount:
          $ref: '#/components/schemas/CreateFeeAccountParams'
          description: 'If the fee account isn''t a referral token account derived from the seeds

            `["referral_ata", referral_account, mint]` and the Referral program ID

            `REFER4ZgmyYx9c6He5XfaTMiGfdLwRnkV4RPp9t9iF3`, this should be unspecified. If specified, the

            transaction will create the `fee_account` if it doesn''t already exist. The user pays for the

            creation of the fee account. Ignored if `fee_account` is unspecified.'
        destinationTokenAccount:
          $ref: '#/components/schemas/DestinationTokenAccountParam'
          description: "The account that will receive the output token. If not specified, the user's associated\ntoken account for the output mint will be used. Allowed values are:\n- A base58-encoded address, which specifies the address of the destination token account or,\n  if the output is native SOL, the destination wallet. If the output isn't native SOL, the\n  specified account must exist before the swap executes, or else the swap will fail.\n- An object which specifies the owner of the destination token account. In this case, the\n  owner's associated token account for the output mint will be used as the destination token\n  account. Note that this cannot be used if the output is native SOL. The object contains\n  the following:\n    - `associatedTokenAccount` - object\n        - `owner` - base58-encoded address of the owner of the destination token account"
        dynamicComputeUnitLimit:
          type: boolean
          description: 'If true, the server will simulate the transaction to determine its compute unit limit. If

            unspecified or false, the transaction will use the default compute unit limit.'
        feeAccount:
          type: string
          description: 'Base58-encoded address of the token account that will receive the platform fee if a platform

            fee applies to the swap. If specified, this account''s mint must match the fee mint for the

            swap.'
        includeJitoSandwichMitigationAccount:
          $ref: '#/components/schemas/IncludeJitoSandwichMitigationAccount'
          description: 'If specified, the transaction will include a Jito sandwich mitigation account in the swap

            instruction. Allowed values are:

            - `true` - uses the default Jito sandwich mitigation account

            - `false` - does not include the account

            - A base58-encoded account address - uses the specified account


            If unspecified, the account is not included.

            See https://docs.jito.wtf/lowlatencytxnsend/#sandwich-mitigation for more details.'
        outputCloseAuthority:
          type: string
          description: 'Base58-encoded address of the close authority to assign to the output token account. If

            specified, the swap instruction will idempotently initialize the output token account and

            set its close authority to the specified address. The action is a no-op if the output

            token account already exists at execution time.


            Cannot be used when the output mint is SOL (wrapped or native). Cannot be used with

            `destinationTokenAccount`.'
        perLegSlippage:
          type: boolean
          description: 'If true or unspecified, per-leg slippage checks are enabled. If false, per-leg slippage

            checks are disabled.'
        positiveSlippage:
          $ref: '#/components/schemas/PositiveSlippageParams'
          description: 'Positive slippage fee parameters. If specified, then the swap will pay some or all positive

            slippage to the specified account.'
        prioritizationFeeLamports:
          $ref: '#/components/schemas/PrioritizationFeeLamports'
          description: "Prioritization fee in lamports. Mutually exclusive with `computeUnitPriceMicroLamports`.\nIf both `computeUnitPriceMicroLamports` and `prioritizationFeeLamports` are unspecified, the\ndefault of `prioritizationFeeLamports=\"auto\"` will be used.\nAllowed values are:\n- a u32 which specifies the lamports\n- the string value \"auto\", where the server determines the fee automatically, capped at\n  0.005 SOL\n- the string value \"disabled\", where the server leaves the prioritization fee unspecified\n- an object containing the following\n    - `priorityLevelWithMaxLamports` - object\n        - `priorityLevel` - string, either `medium`, `high`, or `veryHigh`\n        - `maxLamports` - integer, a cap on the prioritization fee\n- an object containing the following\n    - `autoMultiplier` - a u32 which specifies how much to multiply the automatically\n      determined fee by. The total prioritization fee will be capped at 0.005 SOL."
        quoteResponse:
          $ref: '#/components/schemas/QuoteResponse'
          description: The response from the quote endpoint
        sponsor:
          type: string
          description: 'Base58-encoded address of the sponsor''s wallet. If specified, the sponsor will pay the

            transaction fee and for token account creation, and both the user and the sponsor must sign

            the swap transaction. This can be used to implement gasless swaps.'
        sponsorExec:
          type: boolean
          description: 'If true, the sponsor will be the executor of the swap for sponsored swaps. If false, the

            user will be the executor of the swap for sponsored swaps. Default is true.'
        userPublicKey:
          type: string
          description: Base58-encoded address of the swapper's wallet
        wrapAndUnwrapSol:
          type: boolean
          description: If false, the transaction will use wrapped SOL
    QuoteBadRequestResponse:
      type: object
      required:
      - msg
      - code
      properties:
        code:
          $ref: '#/components/schemas/QuoteBadRequestCode'
        contextSlot:
          type:
          - integer
          - 'null'
          format: int64
          minimum: 0
        msg:
          type: string
        routingSlot:
          type:
          - integer
          - 'null'
          format: int64
          minimum: 0
      example:
        code: <enum<string>>
        msg: <string>
    SwapInstructionsResponse:
      type: object
      required:
      - computeBudgetInstructions
      - setupInstructions
      - swapInstruction
      - cleanupInstructions
      - otherInstructions
      - addressLookupTableAddresses
      - prioritizationFeeLamports
      - computeUnitLimit
      - blockhashWithMetadata
      properties:
        addressLookupTableAddresses:
          type: array
          items:
            type: string
          description: The lookup table addresses
        blockhashWithMetadata:
          $ref: '#/components/schemas/BlockhashWithMetadata'
          description: A blockhash that can be used to construct the transaction
        cleanupInstructions:
          type: array
          items:
            $ref: '#/components/schemas/InstructionResponse'
          description: Instructions that should be included after the swap instruction
        computeBudgetInstructions:
          type: array
          items:
            $ref: '#/components/schemas/InstructionResponse'
          description: Instructions that determine the compute budget and prioritization fee for the transaction
        computeUnitLimit:
          type: integer
          format: int32
          description: Compute unit limit assigned to the transaction
          minimum: 0
        otherInstructions:
          type: array
          items:
            $ref: '#/components/schemas/InstructionResponse'
          description: 'Other instructions that should be included in the transaction. The indices of these

            instructions in the transaction are not important.'
        prioritizationFeeLamports:
          type: integer
          format: int64
          description: Prioritization fee in lamports
          minimum: 0
        prioritizationType:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/PrioritizationType'
            description: Prioritization fee type for the transaction
        setupInstructions:
          type: array
          items:
            $ref: '#/components/schemas/InstructionResponse'
          description: Instructions that should be included before the swap instruction
        swapInstruction:
          $ref: '#/components/schemas/InstructionResponse'
          description: The instruction that performs the swap
    SwapResponse:
      type: object
      required:
      - swapTransaction
      - lastValidBlockHeight
      - prioritizationFeeLamports
      - computeUnitLimit
      properties:
        computeUnitLimit:
          type: integer
          format: int32
          description: Compute unit limit assigned to the transaction
          minimum: 0
        lastValidBlockHeight:
          type: integer
          format: int64
          description: The last block height at which the transaction is valid
          minimum: 0
        prioritizationFeeLamports:
          type: integer
          format: int64
          description: Prioritization fee in lamports
          minimum: 0
        prioritizationType:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/PrioritizationType'
            description: Prioritization fee type for the transaction
        swapTransaction:
          type: string
          description: Base64-encoded swap transaction. The user must sign before sending it to Solana.
    SwapInternalServerErrorCode:
      type: string
      enum:
      - failed_to_compute_swap
    RoutePlanLeg:
      oneOf:
      - $ref: '#/components/schemas/DynamicRoutePlanLeg'
      - $ref: '#/components/schemas/SingleMarketRoutePlanLeg'
    QuoteBadRequestCode:
      type: string
      enum:
      - requested_input_amount_is_zero
      - invalid_input_mint
      - invalid_output_mint
      - same_input_and_output_mint
      - invalid_slippage_bps
      - invalid_platform_fee_bps
      - invalid_dex
      - invalid_max_route_length_for_jit_route
      - cannot_exclude_jit_router_for_jit_route
      - route_not_found
      - use_order_endpoint_for_prediction_markets
      - price_impact_too_high
      - invalid_price_impact_tolerance_pct
    QuoteInternalServerErrorCode:
      type: string
      enum:
      - failed_to_compute_route
    BlockhashWithMetadata:
      type: object
      required:
      - blockhash
      - lastValidBlockHeight
      properties:
        blockhash:
          type: string
          description: Base58-encoded blockhash
        lastValidBlockHeight:
          type: integer
          format: int64
          description: The last block height at which a transaction that uses the blockhash is valid
          minimum: 0
    SwapBadRequestResponse:
      type: object
      required:
      - msg
      - code
      properties:
        code:
          $ref: '#/components/schemas/SwapBadRequestCode'
        msg:
          type: string
      example:
        code: <enum<string>>
        msg: <string>
    PlatformFeeMode:
      type: string
      enum:
      - outputMint
      - inputMint
    PriorityFeesResponse:
      type: object
      description: Global priority fee estimates (in micro-lamports per compute unit) for each priority level.
      required:
      - mediumMicroLamports
      - highMicroLamports
      - veryHighMicroLamports
      properties:
        highMicroLamports:
          type: integer
          format: int64
          description: Estimated micro-lamports per compute unit for the high priority level
          minimum: 0
        mediumMicroLamports:
          type: integer
          format: int64
          description: Estimated micro-lamports per compute unit for the medium priority level
          minimum: 0
        veryHighMicroLamports:
          type: integer
          format: int64
          description: Estimated micro-lamports per compute unit for the very high priority level
          minimum: 0
    QuoteInternalServerErrorResponse:
      type: object
      required:
      - msg
      - code
      properties:
        code:
          $ref: '#/components/schemas/QuoteInternalServerErrorCode'
        contextSlot:
          type:
          - integer
          - 'null'
          format: int64
          minimum: 0
        msg:
          type: string
        routingSlot:
          type:
          - integer
          - 'null'
          format: int64
          minimum: 0
      example:
        code: <enum<string>>
        msg: <string>
    PositiveSlippageParams:
      type: object
      required:
      - limitPct
      properties:
        feeAccount:
          type: string
          description: 'Base58-encoded address of the token account that will receive the positive slippage fee.

            This must be a token account for the output mint, regardless of the platform fee mode. If at

            swap execution time this account can''t receive the positive slippage fee, then the positive

            slippage fee transfer is skipped. If the platform fee mode is `outputMint` and the platform

            fee account is specified, then this must be unspecified (in which case the platform fee

            account will be used) or match the platform fee account. Otherwise, this must be specified.'
        limitPct:
          type: integer
          format: int32
          description: 'Limit on the positive slippage fee in percent. The positive slippage fee is limited to the

            lesser of (1) the excess actual out amount above the quoted amount and (2) this percentage

            of the actual out amount after platform fee.'
          minimum: 0
    SwapBadRequestCode:
      type: string
      enum:
      - invalid_out_amount
      - invalid_user_public_key
      - invalid_sponsor
      - sponsored_swap_cannot_create_fee_account
      - invalid_platform_fee_amount
      - invalid_fee_account
      - invalid_positive_slippage_fee_account
      - invalid_referral_account
      - invalid_destination_token_account
      - invalid_destination_token_account_for_native_sol
      - invalid_output_close_authority
      - output_close_authority_with_native_sol_output
      - output_close_authority_with_destination_token_account
      - both_priority_fee_params_specified
      - route_is_empty
      - route_too_long
      - invalid_route_plan_leg
      - invalid_jito_sandwich_mitigation_account
      - skip_pumpfun_cashback_claim_with_sponsor_executor
    SingleMarketRoutePlanLeg:
      type: object
      required:
      - venue
      - marketKey
      - inputMint
      - outputMint
      - inAmount
      - outAmount
      - inputMintDecimals
      - outputMintDecimals
      properties:
        inAmount:
          type: string
          description: Maximum input amount for the leg as a scaled integer. For example, 1 SOL is 1000000000.
        inputMint:
          type: string
          description: Base58-encoded input mint address
        inputMintDecimals:
          type: integer
          format: int32
          description: Decimals for the input mint
          minimum: 0
        marketKey:
          type: string
          description: Key identifying the market on the venue
        outAmount:
          type: string
          description: Expected output amount for the leg as a scaled integer. For example, 1 SOL is 1000000000.
        outputMint:
          type: string
          description: Base58-encoded output mint address
        outputMintDecimals:
          type: integer
          format: int32
          description: Decimals for the output mint
          minimum: 0
        venue:
          type: string
          description: Venue for the leg
    DestinationTokenAccountParam:
      oneOf:
      - type: object
        description: 'Use the specified owner''s associated token account for the output mint as the destination

          token account. If the destination token account is uninitialized at swap execution time, the

          swap will create it. This cannot be used if the output is native SOL.'
        required:
        - associatedTokenAccount
        properties:
          associatedTokenAccount:
            type: object
            description: 'Use the specified owner''s associated token account for the output mint as the destination

              token account. If the destination token account is uninitialized at swap execution time, the

              swap will create it. This cannot be used if the output is native SOL.'
            required:
            - owner
            properties:
              owner:
                type: string
                description: Base58-encoded address of the owner of the destination token account
      - type: object
        description: 'Use the specified base58-encoded address as the de

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