Workflow Data Objects

Parameters for operations can be derived from three sources:

  • User-provided input parameters when creating a WC
  • User-provided or overridden input parameters when creating a WE
  • Output parameters streaming from the previous operation (if they exist), which become input parameters to the next operation

Most of the operation parameters are supplied when creating a WC. During WE creation, some or all of the parameters provided by the WC can be overridden. Additional parameters are sometimes required for the WE.

Since an operation can receive its parameter values from multiple sources, the sources may contain conflicting values. To address this issue, we define a strict order of precedence for all possible sources.

The WEO merges the parameters according to the following priority:

  1. Execution overridden parameters
  2. Configuration parameters
  3. Previous operation parameters

Finally, the parameters are sent as the input source for the next operation in the flow.

Workflow Configuration Parameters

The Create Workflow Configuration endpoint is a key component of our API, designed to help you define and manage workflow configurations for various operations. This structure includes several parameters that allow for detailed and customizable workflow setups.

📘

Check out the full API Specification here


Parameters Overview:

configName

  • Type: string
  • Description: The name of the workflow configuration.

preScreening

  • Type: object
  • Description: Has a boolean property enabled indicating if the defined AML pre-screening check needs to be performed before the workflow execution.

configOperations

  • Type: array - schema definition
  • Description: A list of operations that make up the workflow.
    Each operation is defined in detail, specifying the type and parameters of the operation.
    See the different operation types below.

externalCorrelationData

  • Type: object - schema definition
  • Description: Additional data used for correlating the workflow with external systems or identifiers.



Operation Types

The configOperations array parameter can include various types of operations.
Each operation type has its specific parameters and required fields:

  1. Conversion Operation - Setup a workflow for asset conversion operations.
  2. Transfer Operation - Setup a workflow to create transfers between accounts or entities.
  3. Disbursement Operation - Setup a workflow to disburse funds to multiple recipients or accounts.

Any operation should be provided with the following key properties:

  • type: A string that specifies the type of the operation (CONVERSION, TRANSFER or DISBURSEMENT)
  • params: An object that details the parameters for the operation.

Parameters per Operation Type:

Each operation type should be provided with a params object. The properties of the params object change based on the operation type.

Here's a summary of all properties per operation type:

Conversion:

  • amount: string - The amount to convert
  • accountId: string - The source account's Fireblocks ID
  • srcAssetId: string - The asset to convert from (for example: ETH)
  • destAssetId: string - The asset to convert to (for example: USDC)
  • slippageBasisPoints: integer - Conversion's slippage tolerance

Transfer:

  • amount: string - The amount to transfer
  • assetId: string - The asset to transfer (for example: USDC)
  • source: object - The transfer's source
    • accountId: string - The source account's Fireblocks ID
    • type: string - The source type (for example: VAULT_ACCOUNT)
  • destination: object - The transfer's destination
    One of:
    • Account:
      • accountId: string - The source account's Fireblocks ID
      • type: string - The source type (for example: VAULT_ACCOUNT)
    • One Time Address Account:
      • oneTimeAddress: string - The destination's wallet address
      • tag: string - Destination's Tag/Memo for Tag/Memo supporting assets (XRP for example)

Disbursement:

  • paymentAccount: object - The source account for the disbursement
    • accountId: string - The source account's Fireblocks ID
    • accountType: string - The source type (for example: VAULT_ACCOUNT)
  • instructionSet: array - Set of instructions for the disbursement
    One of:
    • Disbursement Amount Instruction - an instruction based on an amount:
      • payeeAccount: object - Payee details
        One of:
        • Account:
          • accountId: string - The source account's Fireblocks ID
          • type: string - The source type (for example: VAULT_ACCOUNT)
        • One Time Address Account:
          • oneTimeAddress: string - The destination's wallet address
          • tag: string - Destination's Tag/Memo for Tag/Memo supporting assets (XRP for example)
      • assetId: string - The asset to disburse (for example USDC)
      • amount: string - The amount to disburse
    • Disbursement Percentage Instruction - an instruction based on a percentage:
      • payeeAccount: object - Payee details
        One of:
        • Account:
          • accountId: string - The source account's Fireblocks ID
          • type: string - The source type (for example: VAULT_ACCOUNT)
        • One Time Address Account:
          • oneTimeAddress: string - The destination's wallet address
          • tag: string - Destination's Tag/Memo for Tag/Memo supporting assets (XRP for example)
        • assetId: string - The asset to disburse (for example USDC)
        • percentage: string - The percentage of the amount to disburse (for example: 20 for 20%)