Fordefi Batch Transactions API

These endpoints allow you to manage batch transactions on the Fordefi platform. Batch transactions are currently supported only on Solana, for the purpose of supporting the `signAllTransactions` flow used by certain Solana DApps. Batch transactions undergo policy evaluation as a whole: the policy is applied to a “virtual transaction” whose list of instructions is the union of the instructions of the individual transactions in the batch, and whose balance changes are the aggregation of balance changes of the individual transactions.

OpenAPI Specification

fordefi-batch-transactions-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Fordefi Address Book Batch Transactions API
  version: 0.2.0
  description: These endpoints allow you to list the contacts in your address book.<br><br>To add/remove contacts, visit the Fordefi web console. See the <a href='https://docs.fordefi.com/user-guide/address-book'>user guide</a> for more info.
servers:
- url: https://api.fordefi.com/
  description: Production
security:
- bearerAuth: []
tags:
- name: Batch Transactions
  description: "These endpoints allow you to manage batch transactions on the Fordefi platform.\n        <br><br>\n        Batch transactions are currently supported only on Solana, for the purpose\n        of supporting the `signAllTransactions` flow used by certain Solana DApps.\n        Batch transactions undergo policy evaluation as a whole:  the policy is\n        applied to a “virtual transaction” whose list of instructions is the union\n        of the instructions of the individual transactions in the batch, and whose balance\n        changes are the aggregation of balance changes of the individual transactions."
paths:
  /api/v1/batch-transactions:
    post:
      tags:
      - Batch Transactions
      summary: Create Batch Transaction
      description: 'Create a batch of transactions.

        <br>

        Batch transactions are currently supported only on Solana.'
      operationId: create_batch_transaction_api_v1_batch_transactions_post
      parameters:
      - name: x-signature
        in: header
        required: false
        schema:
          description: Signature of the body. Base64 encoded string. If the request is made programatically by an API user, signing of the request is required and is intended to protect you from malicious backends. `x_signature` is valid for 120 seconds.
          title: X-Signature
          type: string
          example: SGVsbG8=
        description: Signature of the body. Base64 encoded string. If the request is made programatically by an API user, signing of the request is required and is intended to protect you from malicious backends. `x_signature` is valid for 120 seconds.
      - name: x-timestamp
        in: header
        required: false
        schema:
          description: Timestamp of the signature. Integer. Specify an Epoch date. If the request is made programatically by an API user, the timestamp of the request is required and is intended to protect you from replay attacks.
          title: X-Timestamp
          type: integer
        description: Timestamp of the signature. Integer. Specify an Epoch date. If the request is made programatically by an API user, the timestamp of the request is required and is intended to protect you from replay attacks.
      - name: x-idempotence-id
        in: header
        required: false
        schema:
          description: Optional idempotence ID of a transaction.
          title: X-Idempotence-Id
          type: string
          format: uuid
        description: Optional idempotence ID of a transaction.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBatchTransactionRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateBatchTransactionResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefinedPreconditionError_CreateTransactionErrorType_'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '500':
          description: Unexpected Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '401':
          description: Unauthorized User
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '403':
          description: Forbidden User
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '408':
          description: Request Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '429':
          description: Rate Limit Exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitError'
  /api/v1/batch-transactions/predict:
    post:
      tags:
      - Batch Transactions
      summary: Predict Batch Transaction
      description: 'Simulate the batch of transactions and show changes in

        token balances, in addition to the fee estimation

        <br>

        Batch transactions are currently supported only on Solana.'
      operationId: predict_batch_transaction_api_v1_batch_transactions_predict_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PredictBatchTransactionRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PredictBatchTransactionResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefinedPreconditionError_PredictTransactionErrorType_'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '500':
          description: Unexpected Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '401':
          description: Unauthorized User
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '403':
          description: Forbidden User
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '408':
          description: Request Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '429':
          description: Rate Limit Exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitError'
  /api/v1/batch-transactions/{batch_id}/abort:
    post:
      tags:
      - Batch Transactions
      summary: Abort Batch Transaction
      description: Abort a batch of transactions.
      operationId: abort_batch_transaction_api_v1_batch_transactions__batch_id__abort_post
      parameters:
      - name: batch_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          description: Transaction ID of the last transaction in the batch (for example, transaction 2/2 in the batch).ORValue of the `managed_transaction_data.batch_data.batch_id` field of any transaction in the batch.
          title: Batch Id
        description: Transaction ID of the last transaction in the batch (for example, transaction 2/2 in the batch).ORValue of the `managed_transaction_data.batch_data.batch_id` field of any transaction in the batch.
      responses:
        '204':
          description: Successful Response
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefinedPreconditionError_AbortTransactionErrorType_'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '500':
          description: Unexpected Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '401':
          description: Unauthorized User
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '403':
          description: Forbidden User
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '408':
          description: Request Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '429':
          description: Rate Limit Exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceError'
  /api/v1/batch-transactions/{batch_id}/approve:
    post:
      tags:
      - Batch Transactions
      summary: Approve Batch Transaction
      description: Approve a batch of transactions.
      operationId: approve_batch_transaction_api_v1_batch_transactions__batch_id__approve_post
      parameters:
      - name: batch_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          description: Transaction ID of the last transaction in the batch (for example, transaction 2/2 in the batch).ORValue of the `managed_transaction_data.batch_data.batch_id`field of any transaction in the batch.
          title: Batch Id
        description: Transaction ID of the last transaction in the batch (for example, transaction 2/2 in the batch).ORValue of the `managed_transaction_data.batch_data.batch_id`field of any transaction in the batch.
      responses:
        '204':
          description: Successful Response
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefinedPreconditionError_ApproveTransactionErrorType_'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '500':
          description: Unexpected Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '401':
          description: Unauthorized User
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '403':
          description: Forbidden User
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '408':
          description: Request Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseError'
        '429':
          description: Rate Limit Exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceError'
components:
  schemas:
    SolanaPriorityFeeRequest:
      properties:
        type:
          type: string
          const: priority
          title: Type
        priority_level:
          $ref: '#/components/schemas/FeePriorityLevelRequest'
          description: 'Using the Fee Priority option, you allocate the range of fee you are willing to add: low, medium, or high. Fordefi then does its best to achieve success, based on these parameters.'
      type: object
      required:
      - type
      - priority_level
      title: SolanaPriorityFeeRequest
    StacksAssetIdentifier:
      properties:
        type:
          type: string
          const: stacks
          title: Type
          description: Stacks asset identifier type.
        details:
          oneOf:
          - $ref: '#/components/schemas/StacksNativeAssetIdentifierRequest'
          - $ref: '#/components/schemas/StacksSip10AssetIdentifierRequest'
          discriminator:
            propertyName: type
            mapping:
              native: '#/components/schemas/StacksNativeAssetIdentifierRequest'
              sip10: '#/components/schemas/StacksSip10AssetIdentifierRequest'
        chain:
          $ref: '#/components/schemas/EnrichedStacksChain'
      type: object
      required:
      - type
      - details
      - chain
      title: StacksAssetIdentifier
    EnrichedUtxoChain:
      properties:
        chain_type:
          type: string
          const: utxo
          title: Chain Type
          description: The type of the chain.
        unique_id:
          $ref: '#/components/schemas/UtxoChainUniqueId'
          description: The UTXO chain unique ID.
        name:
          type: string
          minLength: 1
          title: Name
          description: The full blockchain name.
        native_currency_symbol:
          type: string
          minLength: 1
          title: Native Currency Symbol
          description: The native currency symbol.
          example: ETH
        native_currency_name:
          type: string
          minLength: 1
          title: Native Currency Name
          description: The native currency name.
          example: Ether
        blockchain_explorer:
          $ref: '#/components/schemas/BlockchainExplorer'
        logo_url:
          type: string
          maxLength: 2083
          minLength: 1
          format: uri
          title: Logo Url
          description: The logo URL of the chain.
        is_testnet:
          type: boolean
          title: Is Testnet
          description: Whether the chain is on a testnet.
        is_enabled:
          type: boolean
          title: Is Enabled
          description: Whether the chain is enabled.
      type: object
      required:
      - chain_type
      - unique_id
      - name
      - native_currency_symbol
      - native_currency_name
      - logo_url
      - is_testnet
      - is_enabled
      title: EnrichedUtxoChain
    EnrichedUtxoAddress:
      properties:
        vault:
          description: The vault corresponding to this address.
          $ref: '#/components/schemas/VaultRef'
        explorer_url:
          title: Explorer Url
          description: The URL of a blockchain explorer that provides real-time information about the address.
          type: string
          maxLength: 2083
          minLength: 1
          format: uri
        contact:
          description: The contact details of this address.
          $ref: '#/components/schemas/ContactRef'
        type:
          type: string
          const: utxo
          title: Type
        address:
          $ref: '#/components/schemas/UtxoAddress'
          description: The UTXO address.
        vault_address:
          description: The vault address corresponding to this address.
          $ref: '#/components/schemas/VaultAddressRef'
      type: object
      required:
      - type
      - address
      title: EnrichedUtxoAddress
    SolanaTokenTransferDetails:
      properties:
        type:
          type: string
          const: token_transfer
          title: Type
          description: 'A transaction involving the transfer of native currency from one address to another. '
        sender:
          $ref: '#/components/schemas/EnrichedSolanaAddress'
          description: The sender of the tokens.
        recipient:
          $ref: '#/components/schemas/EnrichedSolanaAddress'
          description: The recipient of the tokens.
        is_internal:
          title: Is Internal
          description: Is this transfer an internal transfer between two vaults. None if the transaction is incoming.
          type: boolean
      type: object
      required:
      - type
      - sender
      - recipient
      title: SolanaTokenTransferDetails
    SolanaCustomFeeRequest:
      properties:
        type:
          type: string
          const: custom
          title: Type
        priority_fee:
          title: Priority Fee
          description: The priority fee to use in the transaction (In lamports).
          type: string
          pattern: ^0*[1-9]\d*$
          example: '1000000000000000000'
        unit_price:
          title: Unit Price
          description: The unit price to use in the transaction (In microlamports).
          type: string
          pattern: ^\d+$
          example: '1000000000000000000'
      type: object
      required:
      - type
      title: SolanaCustomFeeRequest
    TronChain:
      properties:
        chain_type:
          type: string
          const: tron
          title: Chain Type
          description: The type of the chain.
        unique_id:
          $ref: '#/components/schemas/TronChainUniqueId'
          description: The type of the Tron-based chain.
      type: object
      required:
      - chain_type
      - unique_id
      title: TronChain
    PrioritySolanaSuggestedFees:
      properties:
        type:
          type: string
          const: solana
          title: Type
          description: The type of the chain.
        chain_unique_id:
          $ref: '#/components/schemas/SolanaChainUniqueId'
          description: The Solana chain unique id.
        base_fee:
          type: string
          pattern: ^\d+$
          title: Base Fee
          description: The base fee paid for the signatures in the transaction, denominated in lamports.
          example: '1000000000000000000'
        low:
          type: string
          pattern: ^\d+$
          title: Low
          description: The low suggested fee per byte, denominated in lamports.
          example: '1000000000000000000'
        medium:
          type: string
          pattern: ^\d+$
          title: Medium
          description: The medium suggested fee per byte, denominated in lamports.
          example: '1000000000000000000'
        high:
          type: string
          pattern: ^\d+$
          title: High
          description: The high suggested fee per byte, denominated in lamports.
          example: '1000000000000000000'
        fee_type:
          type: string
          const: priority_fee
          title: Fee Type
          description: The type of the fee.
        unit_prices:
          $ref: '#/components/schemas/SolanaUnitPrices'
          description: The unit prices for the suggested fees.
      type: object
      required:
      - type
      - chain_unique_id
      - base_fee
      - low
      - medium
      - high
      - fee_type
      - unit_prices
      title: PrioritySolanaSuggestedFees
    SolanaMessageVersion:
      type: string
      enum:
      - legacy
      - v0
      title: SolanaMessageVersion
    SolanaTransactionSignaturesRequest:
      properties:
        data:
          title: Data
          description: Signature on the data, encoded in base64 format.
          type: string
          example: SGVsbG8=
      type: object
      title: SolanaTransactionSignaturesRequest
    TronChainUniqueId:
      type: string
      enum:
      - tron_mainnet
      - tron_shasta
      title: TronChainUniqueId
    RiskRating:
      type: string
      enum:
      - low
      - medium
      - high
      - severe
      title: RiskRating
    DlcDataResponse:
      properties:
        dlc_transaction_type:
          $ref: '#/components/schemas/UtxoDlcTransactionType'
        funding_transaction_id:
          type: string
          format: uuid
          title: Funding Transaction Id
        refund_transaction_id:
          type: string
          format: uuid
          title: Refund Transaction Id
        cet_transaction_ids:
          items:
            type: string
            format: uuid
          type: array
          title: Cet Transaction Ids
        adaptor_point:
          title: Adaptor Point
          type: string
          pattern: ^0[xX][a-fA-F0-9]+$
      type: object
      required:
      - dlc_transaction_type
      - funding_transaction_id
      - refund_transaction_id
      - cet_transaction_ids
      title: DlcDataResponse
    StarknetChainUniqueId:
      type: string
      enum:
      - starknet_mainnet
      title: StarknetChainUniqueId
    StacksAddressBookContactAddressRef:
      properties:
        chain_type:
          type: string
          const: stacks
          title: Chain Type
          description: The type of the chain.
        address:
          type: string
          maxLength: 171
          pattern: ^S[0-9A-Za-z._-]+$
          title: Address
          description: The address on the Stacks chain.
          example: SP3J4NWQXC312DK0GXVRZKSRFBZG8S5FG1D2160E9
        chains:
          items:
            $ref: '#/components/schemas/StacksChain'
          type: array
          title: Chains
          description: The chains the contact belongs to.
        memo:
          title: Memo
          description: Memo is an additional address feature used for identifying a recipient.
          type: string
      type: object
      required:
      - chain_type
      - address
      - chains
      title: StacksAddressBookContactAddressRef
    DefinedPreconditionError_ApproveTransactionErrorType_:
      properties:
        title:
          type: string
          title: Title
          description: Human-readable error message.
        detail:
          type: string
          title: Detail
          description: Detailed error message.
        full_detail:
          title: Full Detail
          description: Full error message with additional details, if available.
          type: string
        request_id:
          title: Request Id
          description: Request ID - for debugging purposes.
          type: string
        system_error_code:
          title: System Error Code
          description: An additional system error code in Fordefi.
          type: string
        error_type:
          $ref: '#/components/schemas/ApproveTransactionErrorType'
      type: object
      required:
      - title
      - detail
      title: DefinedPreconditionError[ApproveTransactionErrorType]
    CreateBatchTransactionInstanceDetails:
      properties:
        version:
          $ref: '#/components/schemas/SolanaMessageVersion'
          description: The version of the transaction message.
        instructions:
          items:
            $ref: '#/components/schemas/SolanaCompiledInstructionRequest'
          type: array
          minItems: 1
          title: Instructions
          description: The instructions of the transaction.
        accounts:
          items:
            $ref: '#/components/schemas/SolanaTransactionAccountRequest'
          type: array
          minItems: 1
          title: Accounts
          description: Accounts used in the transaction.
        address_table_lookups:
          title: Address Table Lookups
          description: Lookup tables of accounts used in the transaction.
          items:
            $ref: '#/components/schemas/SolanaMessageAddressTableLookupRequest'
          type: array
        signatures:
          title: Signatures
          description: Any partial signatures on the transaction.
          items:
            $ref: '#/components/schemas/SolanaTransactionSignaturesRequest'
          type: array
        recent_blockhash:
          title: Recent Blockhash
          description: The transaction nonce (a recently processed blockhash).
          type: string
          maxLength: 44
          minLength: 32
          pattern: ^[a-km-zA-HJ-NP-Z1-9]+$
          example: 4sGjMW1sUnHzSxGspuhpqLDx6wiyjNtZAMdL4VZHirAn
      type: object
      required:
      - version
      - instructions
      - accounts
      - address_table_lookups
      title: CreateBatchTransactionInstanceDetails
    TonNativeAssetIdentifierRequest:
      properties:
        type:
          type: string
          const: native
          title: Type
          description: TON asset identifier type.
        chain:
          $ref: '#/components/schemas/TonChainUniqueId'
          description: The details of the chain of the native asset.
      type: object
      required:
      - type
      - chain
      title: TonNativeAssetIdentifierRequest
    SuiAddressBookContactAddressRef:
      properties:
        chain_type:
          type: string
          const: sui
          title: Chain Type
          description: The type of the chain.
        address:
          type: string
          maxLength: 66
          minLength: 66
          pattern: ^0[xX][a-fA-F0-9]+$
          title: Address
          description: The address on the Sui chain.
          example: '0x3300c18e7b931bdfc73dccf3e2d043ad1c9d120c777fff5aeeb9956224e5247a'
        chains:
          items:
            $ref: '#/components/schemas/SuiChain'
          type: array
          title: Chains
          description: The chains the contact belongs to.
      type: object
      required:
      - chain_type
      - address
      - chains
      title: SuiAddressBookContactAddressRef
    ChainalysisAlert:
      properties:
        category:
          $ref: '#/components/schemas/Category'
          description: The category of the AML rule.
        risk_rating:
          $ref: '#/components/schemas/RiskRating'
          description: Defines the alert's risk as SEVERE, HIGH, MEDIUM, or LOW.
        exposure_type:
          $ref: '#/components/schemas/ExposureType'
          description: Defines the exposure direction as DIRECT. Currently, we don't provide indirect exposure for withdrawal attempt alerts.
        service:
          title: Service
          description: The name of the service as defined by Chainalysis. If null returns, Chainalysis has not yet identified the service's name.
          type: string
      type: object
      required:
      - category
      - risk_rating
      - exposure_type
      title: ChainalysisAlert
    StarknetErc20AssetIdentifierRequest:
      properties:
        type:
          type: string
          const: erc20
          title: Type
          description: Erc20 asset identifier type.
        erc20:
          $ref: '#/components/schemas/StarknetAddressRequest'
          description: The Erc20 details.
      type: object
      required:
      - type
      - erc20
      title: StarknetErc20AssetIdentifierRequest
    UtxoDlcTransactionType:
      type: string
      enum:
      - FUNDING_TRANSACTION
      - REFUND_TRANSACTION
      - CET_TRANSACTION
      title: UtxoDlcTransactionType
    TronTrc20AssetIdentifierRequest:
      properties:
        type:
          type: string
          const: trc20
          title: Type
          description: Trc20 asset identifier type.
        trc20:
          $ref: '#/components/schemas/TronAddressRequest'
          description: The Trc20 details.
      type: object
      required:
      - type
      - trc20
      title: TronTrc20AssetIdentifierRequest
    ApprovalRequestState:
      type: string
      enum:
      - created
      - approved
      - insufficient_approvers
      - auto_approved
      - failed
      title: ApprovalRequestState
      description: Represents the whole approval request state
    PredictTransactionErrorType:
      type: string
      enum:
      - vault_not_found
      - invalid_evm_message
      - invalid_evm_transaction_data
      - reverted_transaction
      - transaction_to_non_contract
      - vault_type_mismatch
      - dust_not_allowed
      - insecure_key_derivation
      - missing_secret_key_or_recent_blockhash
      - missing_secret_key_or_signature
      - revoke_allowance_gas_limit_too_high
      - priority_fee_already_set
      - quote_not_found
      - transaction_uses_secure_node
      title: PredictTransactionErrorType
    SolanaUnitPrices:
      properties:
        limit:
          type: string
          pattern: ^\d+$
          title: Limit
          description: The compute unit limit.
          example: '1000000000000000000'
        low:
          type: string
          pattern: ^\d+$
          title: Low
          description: The low suggested fee per byte, denominated in microlamports.
          example: '1000000000000000000'
        medium:
          type: string
          pattern: ^\d+$
          title: Medium
          description: The medium suggested fee per byte, denominated in microlamports.
          example: '1000000000000000000'
        high:
          type: string
          pattern: ^\d+$
          title: High
          description: The high suggested fee per byte, denominated in microlamports.
          example: '1000000000000000000'
      type: object
      required:
      - limit
      - low
      - medium
      - high
      title: SolanaUnitPrices
    JitoSolanaSuggestedFees:
      properties:
        type:
          type: string
          const: solana
          title: Type
          description: The type of the chain.
        chain_unique_id:
          $ref: '#/components/schemas/SolanaChainUniqueId'
          description: The Solana chain unique id.
        base_fee:
          type: string
          pattern: ^\d+$
          title: Base Fee
          description: The base fee paid for the signatures in the transaction, denominated in lamports.
          example: '1000000000000000000'
        low:
          type: string
          pattern: ^\d+$
          title: Low
          description: The low suggested fee per byte, denominated in lamports.
          example: '1000000000000000000'
        medium:
          type: string
          pattern: ^\d+$
          title: Medium
          description: The medium suggested fee per byte, denominated in lamports.
          example: '1000000000000000000'
        high:
          type: string
          pattern: ^\d+$
          title: High
          description: The high suggested fee per byte, denominated in lamports.
          example: '1000000000000000000'
        fee_type:
          type: string
          const: jito
          title: Fee Type
          description: The type of the fee.
      type: object
      required:
      - type
      - chain_unique_id
      - base_fee
      - low
      - medium
      - high
      - fee_type
      title: JitoSolanaSuggestedFees
    ExchangeChainUniqueId:
      type: string
      enum:
      - exchange_binance
      - exchange_bybit
      - exchange_coinbase_international
      - exchange_coinbase_us
      - exchange_okx
      - exchange_kraken
      title: ExchangeChainUniqueId
    PolicyMatch:
      properties:
        is_default:
          type: boolean
          title: Is Default
          description: '`True` if this is the default rule, `False` otherwise.'
        rule_id:
          type: string
          format: uuid
          title: Rule Id
          description: The unique identifier of the rule.
        rule_name:
          type: string
          title: Rule Name
          description: The name of the rule.
        action_type:
          $ref: '#/components/schemas/TransactionPolicyMatchActionType'
          description: 'The action taken in the event of a policy match. Can be: <ul><li> Allow automatically<li> Block<li> Require express approval</ul>'
      type: object
      required:
      - is_default
      - rule_id
      - rule_name
      - action_type
      title: PolicyMatch
    ArchAddressBookContactAddressRef:
      properties:
        chain_type:
          type: string
          const: arch
          title: Chain Type
          description: The type of the chain.
        address:
          type: string
          maxLength: 44
          minLength: 32
          pattern: ^[a-km-zA-HJ-NP-Z1-9]+$
          title: Address
          description: The address on the Arch chain.
          example: 4fYNw3dojWmQ4dXtSGE9epjRGy9pFSx62YypT7avPYvA
        chains:
          items:
            $ref: '#/components/schemas/ArchChain'
          type: array
          title: Chains
          description: The chains the contact belongs to.
      type: object
      required:
      - chain_type
      - address
      - chains
      title: ArchAddressBookContactAddressRef
    UtxoAddressBookContactAddressRef:
      properties:
        chain_type:
          type: string
          const: utx

# --- truncated at 32 KB (234 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/fordefi/refs/heads/main/openapi/fordefi-batch-transactions-api-openapi.yml