fireblocks Payments - Flows API

The Payments - Flows API from fireblocks — 5 operation(s) for payments - flows.

OpenAPI Specification

fireblocks-payments-flows-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Fireblocks Blockchains and Assets Approval Requests Payments - Flows API
  description: 'Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain.


    - Visit our website for more information: [Fireblocks Website](https://fireblocks.com)

    - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)

    '
  version: 1.8.0
  contact:
    email: developers@fireblocks.com
servers:
- url: https://api.fireblocks.io/v1
  description: Fireblocks Production Environment Base URL
- url: https://sandbox-api.fireblocks.io/v1
  description: Fireblocks Sandbox Environment Base URL
security: []
tags:
- name: Payments - Flows
paths:
  /payments/workflow_config:
    post:
      x-internal: true
      tags:
      - Payments - Flows
      description: 'Generate a new configuration ID to be used for initiating executions in subsequent phases. This configuration should include the operations you intend to incorporate into the workflow, such as TRANSFER, CONVERT, and DISBURSE, in addition to your pre-screening preferences, which are disabled by default.

        Learn more about Fireblocks Payments - Flows in the following [guide](https://developers.fireblocks.com/docs/payment-flows-copy).

        </br>Endpoint Permission: Admin, Non-Signing Admin.'
      summary: Create payment flow configuration
      parameters:
      - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateWorkflowConfigurationRequest'
      responses:
        '202':
          description: Configuration is being generated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowConfiguration'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      operationId: createFlowConfiguration
  /payments/workflow_config/{configId}:
    get:
      x-internal: true
      tags:
      - Payments - Flows
      description: 'Retrieve a previously created workflow configuration using the specified "configId".

        </br>Endpoint Permission: Admin, Non-Signing Admin.'
      summary: Retrieve workflow configuration
      parameters:
      - name: configId
        in: path
        schema:
          type: string
          description: The created configuration unique identifier
          example: 98822424-15ad-498c-9ef4-19c7430b4b6e
        required: true
      responses:
        '200':
          description: Returns a workflow configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowConfiguration'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      operationId: getFlowConfiguration
    delete:
      x-internal: true
      tags:
      - Payments - Flows
      description: 'Delete a configuration using the specified "configId".

        </br>Endpoint Permission: Admin, Non-Signing Admin.'
      summary: Delete workflow configuration
      parameters:
      - name: configId
        in: path
        schema:
          type: string
          description: The created configuration unique identifier
          example: 98822424-15ad-498c-9ef4-19c7430b4b6e
        required: true
      responses:
        '200':
          description: The specified configuration has been deleted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowConfigurationId'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      operationId: deleteFlowConfiguration
  /payments/workflow_execution:
    post:
      x-internal: true
      tags:
      - Payments - Flows
      description: 'Validate the "workflow-config" previously created by utilizing the unique "configId". This step requires the mandatory field amount, and allows for modifications to other fields defined via the "workflow-config" endpoint, including pre-screening preferences. A response containing the "workflowExecutionId" and detailing the validation status will be provided. Execution is ready when the "workflow-execution" status is READY_FOR_LAUNCH, at which point it can be initiated with "POST /workflow-execution/{workflowExecutionId}/actions/execute".

        Learn more about Fireblocks Payments - Flows in the following [guide](https://developers.fireblocks.com/docs/payment-flows-copy).

        </br>Endpoint Permission: Admin, Non-Signing Admin.'
      summary: Create workflow execution
      parameters:
      - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateWorkflowExecutionRequest'
      responses:
        '200':
          description: Workflow execution entity has been created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowExecution'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      operationId: createFlowExecution
  /payments/workflow_execution/{workflowExecutionId}:
    get:
      x-internal: true
      tags:
      - Payments - Flows
      description: 'Retrieve details of a previously initiated workflow execution by specifying the "workflowExecutionId"

        </br>Endpoint Permission: Admin, Non-Signing Admin.'
      summary: Get workflow execution details
      parameters:
      - name: workflowExecutionId
        in: path
        schema:
          type: string
        required: true
      responses:
        '200':
          description: Returns workflow execution by id with preview info
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowExecution'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      operationId: getFlowExecution
  /payments/workflow_execution/{workflowExecutionId}/actions/execute:
    post:
      x-internal: true
      tags:
      - Payments - Flows
      description: 'Launch the execution of a pre-configured workflow, identified by "workflowExecutionId", once it reaches the READY_FOR_LAUNCH state. The workflow undergoes several phases during execution - EXECUTION_IN_PROGRESS - Marks the start of the workflow execution. EXECUTION_COMPLETED or EXECUTION_FAILED - Indicates the execution has reached a final state.

        </br>Endpoint Permission: Admin, Non-Signing Admin.'
      summary: Execute the payments workflow
      parameters:
      - name: workflowExecutionId
        in: path
        schema:
          type: string
        required: true
      - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: Workflow execution has been executed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowExecution'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      operationId: launchFlowExecution
components:
  schemas:
    ScreeningVerdict:
      type: object
      properties:
        verdict:
          type: string
          enum:
          - PASSED
          - PASSED_WITH_ALERT
          - REJECTED
          - FAILED
          - BYPASSED
        executionOperationId:
          type: string
        account:
          $ref: '#/components/schemas/Destination'
        assetId:
          type: string
        amount:
          type: string
        matchedRule:
          type: object
          properties:
            action:
              type: string
            category:
              type: array
              items:
                type: string
      required:
      - executionOperationId
      - account
      - verdict
      - assetId
      - amount
    AccountType:
      type: string
      description: Account type
      enum:
      - EXCHANGE_ACCOUNT
      - UNMANAGED_WALLET
      - VAULT_ACCOUNT
      - NETWORK_CONNECTION
      - FIAT_ACCOUNT
    CreateWorkflowExecutionRequest:
      type: object
      x-internal: true
      properties:
        configId:
          description: The created configuration unique identifier
          example: 98822424-15ad-498c-9ef4-19c7430b4b6e
          type: string
        preScreening:
          $ref: '#/components/schemas/PreScreening'
        params:
          type: array
          items:
            anyOf:
            - $ref: '#/components/schemas/ConversionOperationExecutionParams'
            - $ref: '#/components/schemas/TransferOperationExecutionParams'
            - $ref: '#/components/schemas/DisbursementOperationExecutionParams'
        externalCorrelationData:
          $ref: '#/components/schemas/CorrelationData'
      required:
      - configId
      - params
    TransferValidationFailure:
      type: object
      properties:
        reason:
          type: string
          enum:
          - ACCOUNT_NOT_FOUND
          - ACCOUNT_TYPE_NOT_SUPPORTED
          - INSUFFICIENT_BALANCE
          - ASSET_NOT_FOUND
          - ASSETS_CONTINUITY_MISMATCH
          - EXCHANGE_BASKETS_MISMATCH
          - ACCOUNTS_CONTINUITY_MISMATCH
          - ONE_TIME_ADDRESS_CONTINUITY_NOT_ALLOWED
          - EQUAL_ACCOUNTS_NOT_ALLOWED
          - EQUAL_ASSETS_NOT_ALLOWED
          - INVALID_AMOUNT
          - UNMANAGED_WALLET_AS_SOURCE_NOT_ALLOWED
          - MANAGED_OPERATION_PARAMS_INVALID_SCHEMA
        data:
          type: object
          additionalProperties: true
      required:
      - reason
    WorkflowConfigurationSnapshot:
      type: object
      x-internal: true
      properties:
        configId:
          type: string
          description: Configuration unique identifier
          example: 98822424-15ad-498c-9ef4-19c7430b4b6e
        configName:
          type: string
          description: You configuration name
          example: my_config_name
        createdAt:
          description: Create at timestamp
          example: 1717325386
          type: number
        configOperations:
          type: array
          items:
            $ref: '#/components/schemas/ConfigOperationSnapshot'
        externalCorrelationData:
          $ref: '#/components/schemas/CorrelationData'
      required:
      - configId
      - configName
      - configOperations
      - createdAt
    ExecutionDisbursementOperation:
      type: object
      properties:
        operationId:
          type: string
          description: Configuration unique identifier
          example: 98822424-15ad-498c-9ef4-19c7430b4b6e
        status:
          $ref: '#/components/schemas/ExecutionOperationStatus'
        validationFailure:
          $ref: '#/components/schemas/DisbursementValidationFailure'
        operationType:
          $ref: '#/components/schemas/DisbursementOperationType'
        preview:
          $ref: '#/components/schemas/DisbursementOperationPreview'
        execution:
          $ref: '#/components/schemas/DisbursementOperationExecution'
      required:
      - operationId
      - status
      - operationType
    Account:
      type: object
      properties:
        accountId:
          description: The unique ID of the account
          type: string
          example: '0'
        accountType:
          $ref: '#/components/schemas/AccountType'
      required:
      - accountId
      - accountType
    ConversionOperationExecutionParams:
      type: object
      properties:
        configOperationId:
          type: string
        executionParams:
          type: object
          properties:
            amount:
              type: string
            accountId:
              type: string
            srcAssetId:
              type: string
            destAssetId:
              type: string
            slippageBasisPoints:
              type: integer
              minimum: 0
              maximum: 10000
      required:
      - configOperationId
    DisbursementConfigOperation:
      type: object
      properties:
        operationId:
          type: string
        type:
          $ref: '#/components/schemas/DisbursementOperationType'
        params:
          $ref: '#/components/schemas/DisbursementOperationConfigParams'
        status:
          $ref: '#/components/schemas/ConfigOperationStatus'
        validationFailure:
          $ref: '#/components/schemas/DisbursementValidationFailure'
      required:
      - operationId
      - type
      - params
      - status
    ConfigConversionOperationSnapshot:
      type: object
      properties:
        operationId:
          type: string
        type:
          $ref: '#/components/schemas/ConversionOperationType'
        params:
          $ref: '#/components/schemas/ConversionOperationConfigParams'
      required:
      - operationId
      - type
      - params
    ConfigOperation:
      oneOf:
      - $ref: '#/components/schemas/ConversionConfigOperation'
      - $ref: '#/components/schemas/TransferConfigOperation'
      - $ref: '#/components/schemas/DisbursementConfigOperation'
    ExecutionOperationStatus:
      type: string
      enum:
      - PENDING
      - VALIDATION_IN_PROGRESS
      - VALIDATION_FAILED
      - VALIDATION_COMPLETED
      - PREVIEW_REQUESTED
      - PREVIEW_IN_PROGRESS
      - PREVIEW_FAILED
      - READY_FOR_LAUNCH
      - EXECUTION_REQUESTED
      - EXECUTION_IN_PROGRESS
      - EXECUTION_COMPLETED
      - EXECUTION_FAILED
    ConversionOperationExecution:
      type: object
      properties:
        input:
          $ref: '#/components/schemas/ConversionOperationConfigParams'
        output:
          $ref: '#/components/schemas/ConversionOperationExecutionOutput'
        startedAt:
          type: number
        finishedAt:
          type: number
        failure:
          $ref: '#/components/schemas/ConversionOperationFailure'
      required:
      - input
      - startedAt
    CreateDisbursementConfigOperationRequest:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/DisbursementOperationType'
        params:
          $ref: '#/components/schemas/DisbursementOperationConfigParams'
      required:
      - type
      - params
    ExecutionScreeningOperation:
      type: object
      properties:
        operationId:
          type: string
          description: Operation unique identifier
          example: 1cbf5105-b462-4c0b-83ca-d805251835e9
        status:
          $ref: '#/components/schemas/ExecutionOperationStatus'
        operationType:
          $ref: '#/components/schemas/ScreeningOperationType'
        validationFailure:
          $ref: '#/components/schemas/ScreeningValidationFailure'
        execution:
          $ref: '#/components/schemas/ScreeningOperationExecution'
      required:
      - operationId
      - status
      - operationType
    OneTimeAddressAccount:
      type: object
      description: Non whitelisted destination address
      properties:
        oneTimeAddress:
          description: The destination address
          type: string
          example: '0xb794f5ea0ba39494ce839613fffba74279579268'
        tag:
          type: string
          description: required For Tag/Memo based assets only
          example: '123456'
      required:
      - oneTimeAddress
    CreateWorkflowConfigurationRequest:
      type: object
      x-internal: true
      properties:
        configName:
          description: Your configuration name
          type: string
          example: my_config_name
        preScreening:
          $ref: '#/components/schemas/PreScreening'
        configOperations:
          type: array
          items:
            $ref: '#/components/schemas/CreateConfigOperationRequest'
        externalCorrelationData:
          $ref: '#/components/schemas/CorrelationData'
      required:
      - configName
      - configOperations
    DisbursementOperationInput:
      type: object
      properties:
        amount:
          type: string
        paymentAccount:
          $ref: '#/components/schemas/Account'
        instructionSet:
          type: array
          items:
            $ref: '#/components/schemas/DisbursementInstruction'
      required:
      - paymentAccount
      - instructionSet
    ConversionOperationType:
      type: string
      description: Conversion Operation Type
      enum:
      - CONVERSION
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
              enum:
              - INTERNAL
              - AUTHENTICATION
              - AUTHORIZATION
              - VALIDATION
              - NOT_FOUND
              - UNPROCESSABLE_ENTITY
              - FORBIDDEN
            message:
              type: string
          required:
          - type
          - message
      required:
      - error
    DisbursementPercentageInstruction:
      type: object
      properties:
        payeeAccount:
          $ref: '#/components/schemas/Destination'
        assetId:
          type: string
          description: The asset ID to disburse
          example: ETH
        percentage:
          description: The percentage of the asset's balance to disburse (i.e. '20' for 20% )
          type: string
          example: '20'
      required:
      - payeeAccount
      - assetId
      - percentage
    DisbursementOperationExecutionParams:
      type: object
      properties:
        configOperationId:
          type: string
        executionParams:
          type: object
          properties:
            amount:
              type: string
            paymentAccount:
              $ref: '#/components/schemas/Account'
            instructionSet:
              type: array
              items:
                $ref: '#/components/schemas/DisbursementInstruction'
      required:
      - configOperationId
    TransferOperationType:
      type: string
      description: Transfer operation type
      enum:
      - TRANSFER
    ConversionOperationConfigParams:
      type: object
      properties:
        amount:
          description: The amount to convert
          type: string
          example: '10'
        accountId:
          description: Source account ID
          example: '0'
          type: string
        srcAssetId:
          description: The asset ID to convert
          type: string
          example: ETH
        destAssetId:
          description: The asset ID to get as a result of the conversion
          type: string
          example: USDC
        slippageBasisPoints:
          type: integer
          description: Slippage tolerance (basis points)
          minimum: 0
          maximum: 10000
          example: 100
      required:
      - destAssetId
    TransferOperationExecution:
      type: object
      properties:
        input:
          $ref: '#/components/schemas/TransferOperationConfigParams'
        output:
          $ref: '#/components/schemas/TransferOperationExecutionOutput'
        txId:
          type: string
        startedAt:
          type: number
        finishedAt:
          type: number
        failure:
          $ref: '#/components/schemas/TransferOperationFailure'
      required:
      - input
      - startedAt
    TransferOperationConfigParams:
      type: object
      properties:
        amount:
          description: The amount to transfer
          type: string
          example: '12'
        assetId:
          type: string
          description: The assed ID to transfer
          example: ETH
        source:
          $ref: '#/components/schemas/Account'
        destination:
          $ref: '#/components/schemas/Destination'
      required:
      - destination
    DisbursementOperationPreviewOutput:
      type: object
      properties:
        instructionSet:
          type: array
          items:
            allOf:
            - $ref: '#/components/schemas/DisbursementInstructionOutput'
            - type: object
              properties:
                timeSeconds:
                  type: number
              required:
              - timeSeconds
      required:
      - instructionSet
    TransferConfigOperation:
      type: object
      properties:
        operationId:
          type: string
        type:
          $ref: '#/components/schemas/TransferOperationType'
        params:
          $ref: '#/components/schemas/TransferOperationConfigParams'
        status:
          $ref: '#/components/schemas/ConfigOperationStatus'
        validationFailure:
          $ref: '#/components/schemas/TransferValidationFailure'
      required:
      - operationId
      - type
      - params
      - status
    ConfigTransferOperationSnapshot:
      type: object
      properties:
        operationId:
          type: string
        type:
          $ref: '#/components/schemas/TransferOperationType'
        params:
          $ref: '#/components/schemas/TransferOperationConfigParams'
      required:
      - operationId
      - type
      - params
    ScreeningValidationFailure:
      type: object
      properties:
        reason:
          type: string
          enum:
          - SCREENING_DISABLED_IN_TENANT
        data:
          type: object
          additionalProperties: {}
      required:
      - reason
    DisbursementOperationExecution:
      type: object
      properties:
        input:
          $ref: '#/components/schemas/DisbursementOperationInput'
        output:
          $ref: '#/components/schemas/DisbursementOperationExecutionOutput'
        payoutId:
          type: string
        startedAt:
          type: number
        finishedAt:
          type: number
        failure:
          $ref: '#/components/schemas/OperationExecutionFailure'
      required:
      - input
      - startedAt
    OperationExecutionFailure:
      type: object
      properties:
        reason:
          type: string
        data:
          type: object
          additionalProperties: {}
      required:
      - reason
    DisbursementOperationPreview:
      type: object
      properties:
        input:
          $ref: '#/components/schemas/DisbursementOperationInput'
        output:
          $ref: '#/components/schemas/DisbursementOperationPreviewOutput'
        failure:
          $ref: '#/components/schemas/OperationExecutionFailure'
      required:
      - input
    PreScreening:
      type: object
      description: Should the configured AML pre-screening policy be enabled or not
      properties:
        enabled:
          type: boolean
      required:
      - enabled
    TransferOperationExecutionParams:
      type: object
      properties:
        configOperationId:
          type: string
        executionParams:
          type: object
          properties:
            amount:
              type: string
            assetId:
              type: string
            source:
              $ref: '#/components/schemas/Account'
            destination:
              $ref: '#/components/schemas/Destination'
      required:
      - configOperationId
    AssetAmount:
      type: object
      properties:
        amount:
          type: string
        assetId:
          type: string
      required:
      - amount
      - assetId
    DisbursementOperationType:
      type: string
      description: Disbursment operation type
      enum:
      - DISBURSEMENT
    ConfigOperationStatus:
      type: string
      enum:
      - PENDING
      - VALIDATION_IN_PROGRESS
      - READY_FOR_EXECUTION
      - VALIDATION_FAILED
    ConversionOperationPreviewOutput:
      type: object
      properties:
        amount:
          $ref: '#/components/schemas/AssetAmount'
        fee:
          $ref: '#/components/schemas/AssetAmount'
        conversionRate:
          type: string
        timeSeconds:
          type: number
      required:
      - amount
      - fee
      - conversionRate
      - timeSeconds
    Destination:
      oneOf:
      - $ref: '#/components/schemas/Account'
      - $ref: '#/components/schemas/OneTimeAddressAccount'
    CorrelationData:
      x-internal: true
      oneOf:
      - type: object
        additionalProperties:
          type: string
      - type: string
    ConversionOperationExecutionOutput:
      type: object
      properties:
        amount:
          $ref: '#/components/schemas/AssetAmount'
        fee:
          $ref: '#/components/schemas/AssetAmount'
        conversionRate:
          type: string
      required:
      - amount
      - fee
      - conversionRate
    TransferOperationPreviewOutput:
      type: object
      properties:
        amount:
          $ref: '#/components/schemas/AssetAmount'
        fee:
          $ref: '#/components/schemas/AssetAmount'
        isSignRequired:
          type: boolean
        timeSeconds:
          type: number
      required:
      - amount
      - fee
      - isSignRequired
      - timeSeconds
    DisbursementValidationFailure:
      type: object
      properties:
        reason:
          type: string
          enum:
          - ACCOUNT_NOT_FOUND
          - ACCOUNT_TYPE_NOT_SUPPORTED
          - INSUFFICIENT_BALANCE
          - ASSET_NOT_FOUND
          - ASSETS_CONTINUITY_MISMATCH
          - EXCHANGE_BASKETS_MISMATCH
          - ACCOUNTS_CONTINUITY_MISMATCH
          - ONE_TIME_ADDRESS_CONTINUITY_NOT_ALLOWED
          - EQUAL_ACCOUNTS_NOT_ALLOWED
          - EQUAL_ASSETS_NOT_ALLOWED
          - INVALID_AMOUNT
          - UNMANAGED_WALLET_AS_SOURCE_NOT_ALLOWED
          - MANAGED_OPERATION_PARAMS_INVALID_SCHEMA
          - INSTRUCTIONS_EXCEED_HUNDRED_PERCENT
          - INSTRUCTIONS_ARRAY_EMPTY
        data:
          type: object
          additionalProperties: {}
      required:
      - reason
    ScreeningOperationFailure:
      type: object
      properties:
        reason:
          type: string
          enum:
          - AML_PROCESS_FAILED
          - SCREENING_REJECTED
        data:
          $ref: '#/components/schemas/ScreeningOperationExecutionOutput'
      required:
      - reason
    ExecutionTransferOperation:
      type: object
      properties:
        operationId:
          type: string
          example: 1cbf5105-b462-4c0b-83ca-d805251835e9
          description: Operation unique identifier
        status:
          $ref: '#/components/schemas/ExecutionOperationStatus'
        validationFailure:
          $ref: '#/components/schemas/TransferValidationFailure'
        operationType:
          $ref: '#/components/schemas/TransferOperationType'
        preview:
          $ref: '#/components/schemas/TransferOperationPreview'
        execution:
          $ref: '#/components/schemas/TransferOperationExecution'
      required:
      - operationId
      - status
      - operationType
    TransferOperationExecutionOutput:
      type: object
      properties:
        amount:
          $ref: '#/components/schemas/AssetAmount'
        fee:
          $ref: '#/components/schemas/AssetAmount'
      required:
      - amount
      - fee
    TransferOperationPreview:
      type: object
      properties:
        input:
          $ref: '#/components/schemas/TransferOperationConfigParams'
        output:
          $ref: '#/components/schemas/TransferOperationPreviewOutput'
        failure:
          $ref: '#/components/schemas/TransferOperationFailure'
      required:
      - input
    ConfigDisbursementOperationSnapshot:
      type: object
      properties:
        operationId:
          type: string
        type:
          $ref: '#/components/schemas/DisbursementOperationType'
        params:
          $ref: '#/components/schemas/DisbursementOperationConfigParams'
      required:
      - operationId
      - type
      - params
    ConfigOperationSnapshot:
      oneOf:
      - $ref: '#/components/schemas/ConfigConversionOperationSnapshot'
      - $ref: '#/components/schemas/ConfigTransferOperationSnapshot'
      - $ref: '#/components/schemas/ConfigDisbursementOperationSnapshot'
    ScreeningOperationType:
      type: string
      enum:
      - SCREENING
    TransferOperationFailure:
      type: object
      properties:
        reason:
          type: string
          enum:
          - INVALID_AMOUNT
          - SUBMISSION_FAILED
          - TRANSACTION_FAILED
        data:
          type: object
          properties:
            txId:
              type: string
            txStatus:
              type: string
            txSubStatus:
              type: string
          required:
          - txId
          - txStatus
      required:
      - reason
    ConversionOperationFailure:
      type: object
      properties:
        reason:
          type: string
          enum:
          - INVALID_AMOUNT
          - SLIPPAGE_EXCEEDED
          - AMOUNT_TOO_SMALL
          - INSUFFICIENT_FUNDS
        data:
          type: object
          additionalProperties: {}
      required:
      - reason
    CreateConfigOperationRequest:
      oneOf:
      - $ref: '#/components/schemas/CreateConversionConfigOperationRequest'
      - $ref: '#/components/schemas/CreateTransferConfigOperationRequest'
      - $ref: '#/components/schemas/CreateDisbursementConfigOperationRequest'
    DisbursementInstructionOutput:
      type: object
      properties:
        amount:
          $ref: '#/components/schemas/AssetAmount'
        fee:
          $ref: '#/components/schemas/AssetAmount'
        payeeAccount:
          $ref: '#/components/schemas/Destination'
      required:
      - amount
      - fee
      - payeeAccount
    WorkflowExecution:
      type: object
      x-internal: true
      properties:
        executionId:
          description: Execution unique identifier
          type: string
          example: 507f6867-d76b-4cd6-92c8-cf84536be0b6
        preScreening:
          $ref: '#/components/schemas/PreScreening'
        configSnapshot:
          $ref: '#/components/schemas/WorkflowConfigurationSnapshot'
        executionOperations:
          type: array
          items:
            $ref: '#/components/schemas/WorkflowExecutionOperation'
        status:
          type: string
          enum:
          - PENDING
          - VALIDATION_IN_PROGRESS
          - VALIDATION_FAILED
          - VALIDATION_COMPLETED
          - PREVIEW_IN_PROGRESS
          - PREVIEW_FAILED
          - READY_FOR_LAUNCH
          - EXECUTION_IN_PROGRESS
          - EXECUTION_COMPLETED
          - EXECUTION_FAILED
        triggeredBy:
          type: string
        triggeredAt:
          type: number
        finishedAt:
          type: number
        externalCorrelationData:
          $ref: '#/compone

# --- truncated at 32 KB (39 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/fireblocks/refs/heads/main/openapi/fireblocks-payments-flows-api-openapi.yml