fireblocks-sdk 0.2.0

Rust implementation of the Fireblocks SDK
Documentation
fireblocks-sdk-0.2.0 has been yanked.

Overview

fireblocks_sdk is an async library for the Fireblocks API

!!!! Note this is community driven project and not affiliated with Fireblocks !!!!!

Getting Started

See developer portal and sign up for a sandbox account

Quick Start

use fireblocks_sdk::{ClientBuilder, PagingVaultRequestBuilder};
use std::time::Duration;

#[tokio::main]
async fn main() -> color_eyre::Result<()> {
  let api_key = std::env::var("FIREBLOCKS_API_KEY")?;
  let secret = std::env::var("FIREBLOCKS_SECRET")?;
  let client = ClientBuilder::new(&api_key, &secret.into_bytes())
    .with_timeout(Duration::from_secs(10))
    .with_connect_timeout(Duration::from_secs(5))
    .build()?;
  let params = PagingVaultRequestBuilder::new().limit(10).build()?;
  let (vault_accounts, request_id) = client.vaults(params).await?;
  println!("Got requestId: {request_id}");
  println!("vault accounts: {:#?}", vault_accounts.accounts);
  Ok(())
}

Development

Create a .env file

cp .env-sameple .env

Edit .env and configure your API and secret key

Run tests:

cargo test

Supported Endpoints

Vaults

Endpoint Status
GET /vault/accounts
POST /vault/accounts
GET /vault/accounts_paged
GET /vault/accounts/{vaultAccountId}
PUT /vault/accounts/{vaultAccountId}
GET /vault/asset_wallets
POST /vault/accounts/{vaultAccountId}/hide
POST /vault/accounts/{vaultAccountId}/unhide
POST /vault/accounts/{vaultAccountId}/{assetId}/activate
POST /vault/accounts/{vaultAccountId}/set_customer_ref_id
POST /vault/accounts/{vaultAccountId}/set_auto_fuel
GET /vault/accounts/{vaultAccountId}/{assetId}
POST /vault/accounts/{vaultAccountId}/{assetId}
POST /vault/accounts/{vaultAccountId}/{assetId}/balance
GET /vault/accounts/{vaultAccountId}/{assetId}/addresses
POST /vault/accounts/{vaultAccountId}/{assetId}/addresses
GET /vault/accounts/{vaultAccountId}/{assetId}/addresses_paginated
GET /vault/accounts/{vaultAccountId}/{assetId}/max_spendable_amount
PUT /vault/accounts/{vaultAccountId}/{assetId}/addresses/{addressId}
POST /vault/accounts/{vaultAccountId}/{assetId}/addresses/{addressId}/set_customer_ref_id
POST /vault/accounts/{vaultAccountId}/{assetId}/addresses/{addressId}/create_legacy
GET /vault/accounts/{vaultAccountId}/{assetId}/unspent_inputs
GET /vault/public_key_info/
GET /vault/accounts/{vaultAccountId}/{assetId}/{change}/{addressIndex}/public_key_info
GET /vault/assets
GET /vault/assets/{assetId}

Staking

Endpoint Status
GET /staking/chains
GET /staking/chains/{chainDescriptor}/chainInfo
POST /staking/chains/{chainDescriptor}/stake
POST /staking/chains/{chainDescriptor}/unstake
POST /staking/chains/{chainDescriptor}/withdraw
POST /staking/chains/{chainDescriptor}/claimRewards
GET /staking/positions
GET /staking/positions/summary
GET /staking/positions/summary/vaults
GET /staking/positions/{id}
GET /staking/providers
POST /staking/providers/{providerId}/approveTermsOfService

Exchange accounts

Endpoint Status
GET /exchange_accounts
GET /exchange_accounts/paged
GET /exchange_accounts/{exchangeAccountId}
POST /exchange_accounts/{exchangeAccountId}/internal_transfer
POST /exchange_accounts/{exchangeAccountId}/convert
GET /exchange_accounts/{exchangeAccountId}/{assetId}

Fiat accounts

Endpoint Status
GET /fiat_accounts
GET /fiat_accounts/{accountId}
POST /fiat_accounts/{accountId}/redeem_to_linked_dda
POST /fiat_accounts/{accountId}/deposit_from_linked_dda

Network connections

Endpoint Status
GET /network_connections
POST /network_connections
PATCH /network_connections/{connectionId}/set_routing_policy
GET /network_connections/{connectionId}/is_third_party_routing/{assetType}
GET /network_connections/{connectionId}
DELETE /network_connections/{connectionId}
GET /network_ids
POST /network_ids
GET /network_ids/{networkId}
DELETE /network_ids/{networkId}
PATCH /network_ids/{networkId}/set_routing_policy
PATCH /network_ids/{networkId}/set_discoverability
PATCH /network_ids/{networkId}/set_name

Internal wallets

Endpoint Status
GET /internal_wallets
POST /internal_wallets
GET /internal_wallets/{walletId}
DELETE /internal_wallets/{walletId}
POST /internal_wallets/{walletId}/set_customer_ref_id
GET /internal_wallets/{walletId}/{assetId}
POST /internal_wallets/{walletId}/{assetId}
DELETE /internal_wallets/{walletId}/{assetId}

External wallets

Endpoint Status
GET /external_wallets
POST /external_wallets
GET /external_wallets/{walletId}
DELETE /external_wallets/{walletId}
POST /external_wallets/{walletId}/set_customer_ref_id
GET /external_wallets/{walletId}/{assetId}
POST /external_wallets/{walletId}/{assetId}
DELETE /external_wallets/{walletId}/{assetId}

Contracts

Endpoint Status
GET /contracts
POST /contracts
GET /contracts/{contractId}
DELETE /contracts/{contractId}
GET /contracts/{contractId}/{assetId}
POST /contracts/{contractId}/{assetId}
DELETE /contracts/{contractId}/{assetId}

Blockchains & assets

Endpoint Status
GET /supported_assets
POST /assets
GET /estimate_network_fee
GET /transactions/validate_address/{assetId}/{address}

Transactions

Endpoint Status
GET /transactions
POST /transactions
POST /transactions/estimate_fee
GET /transactions/{txId}
GET /transactions/external_tx_id/{externalTxId}/
POST /transactions/{txId}/set_confirmation_threshold
POST /transactions/{txId}/drop
POST /transactions/{txId}/cancel
POST /transactions/{txId}/freeze
POST /transactions/{txId}/unfreeze
POST /txHash/{txHash}/set_confirmation_threshold

Payments - cross-border settlement

Endpoint Status
POST /payments/xb-settlements/configs
GET /payments/xb-settlements/configs
GET /payments/xb-settlements/configs/{configId}
PUT /payments/xb-settlements/configs/{configId}
DELETE /payments/xb-settlements/configs/{configId}
POST /payments/xb-settlements/flows
GET /payments/xb-settlements/flows/{flowId}
POST /payments/xb-settlements/flows/{flowId}/actions/execute

Payments - Payout

Endpoint Status
POST /payments/payout
POST /payments/payout/{payoutId}/actions/execute
GET /payments/payout/{payoutId}

Payments - Flows

Endpoint Status
POST /payments/workflow_config
GET /payments/workflow_config/{configId}
DELETE /payments/workflow_config/{configId}
POST /payments/workflow_execution
GET /payments/workflow_execution/{workflowExecutionId}
POST /payments/workflow_execution/{workflowExecutionId}/actions/execute

Gas stations

Endpoint Status
GET /gas_station
GET /gas_station/{assetId}
PUT /gas_station/configuration
PUT /gas_station/configuration/{assetId}

Workspace Management

Endpoint Status
GET /management/user_groups
POST /management/user_groups
GET /management/user_groups/{groupId}
PUT /management/user_groups/{groupId}
DELETE /management/user_groups/{groupId}
GET /management/audit_logs
POST /management/ota
GET /management/ota
GET /management/workspace_status
GET /management/users
POST /management/users
GET /management/api_users
POST /management/api_users
POST /management/users/{id}/reset_device
GET /management/api_users/{userId}/whitelist_ip_addresses

Users

Endpoint Status
GET /users

Audit Logs

Endpoint Status
GET /audits

Off exchanges

Endpoint Status
POST /off_exchange/add
POST /off_exchange/remove
POST /off_exchange/settlements/trader
GET /off_exchange/settlements/transactions
GET /off_exchange/collateral_accounts/{mainExchangeAccountId}

Webhooks

Endpoint Status
POST /webhooks/resend
POST /webhooks/resend/{txId}

NFTs

Endpoint Status
PUT /nfts/ownership/tokens
GET /nfts/ownership/tokens
GET /nfts/ownership/assets
GET /nfts/ownership/collections
PUT /nfts/tokens/{id}
GET /nfts/tokens/{id}
GET /nfts/tokens
PUT /nfts/ownership/tokens/{id}/status
PUT /nfts/ownership/tokens/status
PUT /api/v1/nfts/ownership/tokens/spam

WalletLink

Endpoint Status
GET /connections
POST /connections/wc
PUT /connections/wc/{id}
DELETE /connections/wc/{id}

Travel Rule (Beta)

Endpoint Status
POST /screening/travel_rule/transaction/validate
POST /screening/travel_rule/transaction/validate/full
GET /screening/travel_rule/vasp/{did}
GET /screening/travel_rule/vasp
PUT /screeening/travel_rule/vasp/update

Policy Editor (Beta)

Endpoint Status
GET /tap/active_policy
GET /tap/draft
PUT /tap/draft
POST /tap/draft
POST /tap/publish

Smart Transfer

Endpoint Status
POST /smart-transfers
GET /smart-transfers
GET /smart-transfers/{ticketId}
PUT /smart-transfers/{ticketId}/expires-in
PUT /smart-transfers/{ticketId}/external-id
PUT /smart-transfers/{ticketId}/submit
PUT /smart-transfers/{ticketId}/fulfill
PUT /smart-transfers/{ticketId}/cancel
POST /smart-transfers/{ticketId}/terms
GET /smart-transfers/{ticketId}/terms/{termId}
PUT /smart-transfers/{ticketId}/terms/{termId}
DELETE /smart-transfers/{ticketId}/terms/{termId}
PUT /smart-transfers/{ticketId}/terms/{termId}/fund
PUT /smart-transfers/{ticketId}/terms/{termId}/manually-fund
POST /smart-transfers/settings/user-groups
GET /smart-transfers/settings/user-groups