FireblocksSdk.Api.TravelRule (FireblocksSdk v0.2.1)

Copy Markdown View Source

Fireblocks Travel Rule API.

Covers VASP discovery, transaction validation, vault VASP assignment, and TRUST network proof-of-address workflows under the Travel Rule tag (/v1/screening/travel_rule).

Summary

Functions

Creates a TRUST-compatible proof-of-address signature for a vault account.

Retrieves the TRUST-compatible encoded signature for proof of address.

Returns information about a specific VASP identified by its DID.

Returns the VASP DID assigned to the vault, or an empty string if none is assigned.

Returns a paginated list of VASPs from the Notabene VASP directory.

Assigns or removes the VASP DID for a vault account.

Updates a VASP's pii_didkey in the workspace.

Validates a full Travel Rule transaction with IVMS101 PII.

Validates a Travel Rule transaction (basic form).

Functions

create_trust_proof_of_address(params, idempotency_key \\ "")

@spec create_trust_proof_of_address(
  keyword(),
  String.t()
) :: map()

Creates a TRUST-compatible proof-of-address signature for a vault account.

Generates an encoded signature by signing a TRUST-formatted message with the private key held in the specified vault account. The resulting signature should be submitted directly to the TRUST network for address-ownership verification.

  • idempotency_key: Optional idempotency key (Idempotency-Key header).

Options:

  • :vaultAccountId (String.t/0) - Required. The vault account ID whose address will be proved

  • :asset (String.t/0) - Required. Asset identifier for the address being proved, e.g. "BTC", "ETH"

  • :prefix (String.t/0) - Required. Prefix prepended to the message before signing, as required by TRUST

  • :trustUuid (String.t/0) - Required. UUID obtained from the TRUST network via the CreateAddressOwnership flow

get_trust_proof_of_address(transaction_id)

@spec get_trust_proof_of_address(String.t()) :: map()

Retrieves the TRUST-compatible encoded signature for proof of address.

Send this directly to TRUST for verification.

  • transaction_id: The transaction ID associated with the proof-of-address request.

get_vasp_by_did(did, opts \\ [])

@spec get_vasp_by_did(
  String.t(),
  keyword()
) :: map()

Returns information about a specific VASP identified by its DID.

  • did: The Decentralized Identifier (DID) of the VASP to retrieve.

Options:

  • :fields (String.t/0) - Comma-separated list of VASP fields to include in the response, e.g. "name,did,complianceLevel"

get_vasp_for_vault(vault_account_id)

@spec get_vasp_for_vault(String.t()) :: map()

Returns the VASP DID assigned to the vault, or an empty string if none is assigned.

  • vault_account_id: The ID of the vault account to query.

get_vasps(opts \\ [])

@spec get_vasps(keyword()) :: map()

Returns a paginated list of VASPs from the Notabene VASP directory.

Results default to 500 per page (accepted range 100–1000). Use the returned pageCursor to iterate through subsequent pages.

Options:

  • :order - Sort order for results. One of "ASC" or "DESC"

  • :pageSize (non_neg_integer/0) - Number of results per page (default 500, accepted range 100–1000)

  • :fields (String.t/0) - Comma-separated list of VASP fields to include in each result, e.g. "name,did"

  • :search (String.t/0) - Free-text search query to filter VASPs by name or DID, e.g. "Fireblocks"

  • :reviewValue - Filter results by workspace review status. One of "TRUSTED", "BLOCKED", "MANUAL"

  • :pageCursor (String.t/0) - Opaque cursor string returned by a previous response for pagination

set_vasp_for_vault(vault_account_id, params, idempotency_key \\ "")

@spec set_vasp_for_vault(String.t(), keyword(), String.t()) :: map()

Assigns or removes the VASP DID for a vault account.

Use this to link a vault to a specific VASP for Travel Rule purposes. Pass vaspDid: "" to clear an existing assignment.

  • vault_account_id: The ID of the vault account to configure.
  • idempotency_key: Optional idempotency key (Idempotency-Key header).

Options:

  • :vaspDid (String.t/0) - VASP DID to assign to the vault account. Pass an empty string "" to remove an existing assignment.

update_vasp(params, idempotency_key \\ "")

@spec update_vasp(
  keyword(),
  String.t()
) :: map()

Updates a VASP's pii_didkey in the workspace.

Sets or rotates the public DID key used to encrypt PII payloads before transmitting them to the specified VASP.

  • idempotency_key: Optional idempotency key (Idempotency-Key header).

Options:

  • :did (String.t/0) - Required. DID of the VASP entry to update

  • :pii_didkey (String.t/0) - Required. Public jsonDIDkey obtained from Notabene, used to encrypt PII sent to this VASP

validate_full_travel_rule_transaction(params, idempotency_key \\ "")

@spec validate_full_travel_rule_transaction(
  keyword(),
  String.t()
) :: map()

Validates a full Travel Rule transaction with IVMS101 PII.

This is the preferred endpoint for Travel Rule compliance validation. Accepts complete originator and beneficiary PII in IVMS101 format and checks compliance against the applicable regulatory framework and the beneficiary VASP's jurisdiction policy.

  • idempotency_key: Optional idempotency key (Idempotency-Key header).

Options:

  • :originator (map/0) - Required. Originator PII in IVMS101 format

  • :beneficiary (map/0) - Required. Beneficiary PII in IVMS101 format

  • :originatorVASPdid (String.t/0) - DID of the originating VASP

  • :beneficiaryVASPdid (String.t/0) - DID of the beneficiary VASP

  • :transactionAsset (String.t/0) - Asset ticker, e.g. "BTC", "ETH"

  • :transactionAmount (String.t/0) - Amount of the transaction

  • :originatorVASPname (String.t/0) - Name of the originating VASP

  • :beneficiaryVASPname (String.t/0) - Name of the beneficiary VASP

  • :transactionBlockchainInfo (map/0) - Blockchain-level transaction metadata

  • :encrypted (String.t/0) - Encrypted PII payload

  • :protocol - Travel Rule protocol to use. One of "TRLight", "TRP", "OpenVASP", "GTR"

  • :skipBeneficiaryDataValidation (boolean/0) - When true, skips server-side validation of the beneficiary data

  • :travelRuleBehavior (boolean/0) - When true, checks whether the transaction is compliant with the beneficiary VASP's jurisdiction

  • :originatorRef (String.t/0) - Reference ID for the originator

  • :beneficiaryRef (String.t/0) - Reference ID for the beneficiary

  • :travelRuleBehaviorRef (String.t/0) - Reference ID for travel rule behavior

  • :originatorProof (map/0) - Proof object for the originator

  • :beneficiaryProof (map/0) - Proof object for the beneficiary

  • :beneficiaryDid (String.t/0) - DID of the beneficiary

  • :originatorDid (String.t/0) - DID of the originator

  • :isNonCustodial (boolean/0) - When true, indicates this is a non-custodial transfer

  • :notificationEmail (String.t/0) - Email address to receive Travel Rule notifications

  • :pii (map/0) - Plain-text PII payload in IVMS101 format

  • :pii_url (String.t/0) - URL pointing to the encrypted PII payload

validate_travel_rule_transaction(params, idempotency_key \\ "")

This function is deprecated. Use validate_full_travel_rule_transaction/2 instead..
@spec validate_travel_rule_transaction(
  keyword(),
  String.t()
) :: map()

Validates a Travel Rule transaction (basic form).

Checks basic Travel Rule fields for a transaction against the Notabene network. This endpoint is deprecated — use validate_full_travel_rule_transaction/2 for full IVMS101-compliant validation instead.

Options:

  • :transactionAsset (String.t/0) - Required. Asset ticker for the transaction, e.g. "BTC", "ETH"

  • :destination (String.t/0) - Required. Destination address of the transaction

  • :transactionAmount (String.t/0) - Required. Amount of the transaction expressed in the transaction asset

  • :originatorVASPdid (String.t/0) - Required. DID of the originating VASP

  • :originatorEqualsBeneficiary (boolean/0) - Required. true when the originator and beneficiary are the same natural person

  • :transactionAssetDecimals (non_neg_integer/0) - Number of decimals for the asset

  • :travelRuleBehavior (boolean/0) - When true, checks whether the transaction is compliant with the beneficiary VASP's jurisdiction

  • :beneficiaryVASPdid (String.t/0) - DID of the beneficiary VASP

  • :beneficiaryVASPname (String.t/0) - Name of the beneficiary VASP

  • :beneficiaryName (String.t/0) - Full name of the beneficiary

  • :beneficiaryAccountNumber (String.t/0) - Account number of the beneficiary

  • :beneficiaryAddress (map/0) - TravelRuleAddress object for the beneficiary