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:
- Execution overridden parameters
- Configuration parameters
- 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:
- Conversion Operation - Setup a workflow for asset conversion operations.
- Transfer Operation - Setup a workflow to create transfers between accounts or entities.
- 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
orDISBURSEMENT
)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 convertaccountId
: string - The source account's Fireblocks IDsrcAssetId
: 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 transferassetId
: string - The asset to transfer (for example:USDC
)source
: object - The transfer's sourceaccountId
: string - The source account's Fireblocks IDtype
: string - The source type (for example: VAULT_ACCOUNT)
destination
: object - The transfer's destination
One of:- Account:
accountId
: string - The source account's Fireblocks IDtype
: string - The source type (for example: VAULT_ACCOUNT)
- One Time Address Account:
oneTimeAddress
: string - The destination's wallet addresstag
: string - Destination's Tag/Memo for Tag/Memo supporting assets (XRP for example)
- Account:
Disbursement:
paymentAccount
: object - The source account for the disbursementaccountId
: string - The source account's Fireblocks IDaccountType
: 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 IDtype
: string - The source type (for example: VAULT_ACCOUNT)
- One Time Address Account:
oneTimeAddress
: string - The destination's wallet addresstag
: string - Destination's Tag/Memo for Tag/Memo supporting assets (XRP for example)
- Account:
assetId
: string - The asset to disburse (for exampleUSDC
)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 IDtype
: string - The source type (for example: VAULT_ACCOUNT)
- One Time Address Account:
oneTimeAddress
: string - The destination's wallet addresstag
: string - Destination's Tag/Memo for Tag/Memo supporting assets (XRP for example)
assetId
: string - The asset to disburse (for exampleUSDC
)percentage
: string - The percentage of the amount to disburse (for example:20
for 20%)
- Account:
- Disbursement Amount Instruction - an instruction based on an amount: