Modular, extensible, and easy-to-use Rust SDK for the Dfns API.
Warning: This SDK is currently under development and not ready for production use. The API is subject to change. Consider contributing to the project if you're interested in helping out.
cargo add dfns-sdk-rs
Check out the list of all examples in this repository.
- List Wallets - Demonstrates how to retrieve a list of wallets
- Create Wallet - Shows how to create a new wallet
- Get Wallet - Retrieves details of a specific wallet
- Update Wallet - Updates wallet information
- Tag Wallet - Adds tags to a wallet
- Untag Wallet - Removes tags from a wallet
- Get Wallet Assets - Lists assets in a wallet
- Get Wallet History - Shows transaction history
- Get Wallet NFTs - Lists NFTs in a wallet
- Transfer Asset - Transfers assets between wallets
- Broadcast Transaction - Broadcasts a transaction
- Generate Signature - Generates a signature
- Get Signature - Retrieves a specific signature
- List Signatures - Lists all signatures
- Get Transaction - Gets transaction details
- List Transactions - Lists all transactions
- Get Transfer - Gets transfer details
- List Transfers - Lists all transfers
- Export Wallet - Exports a wallet
- Import Wallet - Imports a wallet
- Delegate Wallet - Delegates wallet control
- Create Webhook - Creates a new webhook
- Get Webhook - Gets webhook details
- Update Webhook - Updates webhook configuration
- Delete Webhook - Deletes a webhook
- List Webhooks - Lists all webhooks
- Ping Webhook - Tests webhook connectivity
- Get Webhook Event - Gets webhook event details
- List Webhook Events - Lists webhook events
- Create Stake - Creates a new stake
- Create Stake Action - Creates a stake action
- Get Stake Rewards - Gets stake rewards
- List Stake Actions - Lists stake actions
- List Stakes - Lists all stakes
- List Signers - Lists all signers in clusters
- Archive Policy - Archives a policy
- Create Approval Decision - Creates an approval decision
- Create Policy - Creates a new policy
- Get Approval - Gets approval details
- Get Policy - Gets policy details
- List Approvals - Lists all approvals
- List Policies - Lists all policies
- Update Policy - Updates policy configuration
- Archive Permission - Archives a permission
- Create Assignment - Creates a permission assignment
- Create Permission - Creates a new permission
- Delete Assignment - Deletes a permission assignment
- Get Permission - Gets permission details
- List Assignments - Lists all assignments
- List Permissions - Lists all permissions
- Update Permission - Updates permission configuration
- Get Fees - Gets network fees for various blockchains
- Read Contract - Reads data from a smart contract
- Create Deposit - Creates a new deposit
- Create Exchange - Creates a new exchange
- Create Withdrawal - Creates a new withdrawal
- Delete Exchange - Deletes an exchange
- Get Exchange - Gets exchange details
- List Account Assets - Lists assets in an account
- List Accounts - Lists all accounts
- List Asset Withdrawal Networks - Lists withdrawal networks for an asset
- List Exchanges - Lists all exchanges
- Activate Application - Activates an application
- Activate Credential - Activates a credential
- Activate Personal Access Token - Activates a personal access token
- Activate Service Account - Activates a service account
- Activate User - Activates a user
- Deactivate Application - Deactivates an application
- Deactivate Credential - Deactivates a credential
- Deactivate Personal Access Token - Deactivates a personal access token
- Deactivate Service Account - Deactivates a service account
- Deactivate User - Deactivates a user
- Archive Application - Archives an application
- Archive Personal Access Token - Archives a personal access token
- Archive Service Account - Archives a service account
- Archive User - Archives a user
- Create Credential Challenge - Creates a credential challenge
- Create Credential Code - Creates a credential code
- Create Credential With Code - Creates a credential using a code
- Create Delegated Recovery Challenge - Creates a delegated recovery challenge
- Create Delegated Registration Challenge - Creates a delegated registration challenge
- Create Login Challenge - Creates a login challenge
- Create Personal Access Token - Creates a personal access token
- Create Recovery Challenge - Creates a recovery challenge
- Create Registration Challenge - Creates a registration challenge
- Create Service Account - Creates a service account
- Create User - Creates a new user
- Create User Action Challenge - Creates a user action challenge
- Create User Action Signature - Creates a user action signature
- Get Application - Gets application details
- Get Personal Access Token - Gets personal access token details
- Get Service Account - Gets service account details
- Get User - Gets user details
- List Applications - Lists all applications
- List Credentials - Lists all credentials
- List Personal Access Tokens - Lists all personal access tokens
- Login - Performs a login
- Recover - Recovers an account
- Recreate Delegated Registration Challenge - Recreates a delegated registration challenge
- Register - Registers a new user
- Register End User - Registers an end user
- Register With Recovery - Registers using recovery
- Update Application - Updates an application
- Update Credential - Updates a credential
- Update Personal Access Token - Updates a personal access token
- Update Service Account - Updates a service account
- Verify Challenge - Verifies a challenge
- Verify Recovery Challenge - Verifies a recovery challenge
- Verify Registration Challenge - Verifies a registration challenge
Here's a simple example of how to use the SDK:
use dfns_sdk_rs::{
DfnsApiClient, DfnsBaseApiOptions, CredentialSigner,
models::wallets::CreateWalletRequest,
};
use std::sync::Arc;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Initialize your signer (implementation depends on your use case)
let signer = Arc::new(YourCredentialSigner::new());
// Create API client
let client = DfnsApiClient::new(
DfnsBaseApiOptions {
base_url: "https://api.dfns.io".to_string(),
app_id: "ap-2ng9jv-80cfc-983pop0iauf2sv8r".to_string(),
auth_token: "your-auth-token".to_string(),
},
Some(signer),
);
// Create a wallet
let wallet = client
.wallets()
.create_wallet(CreateWalletRequest {
network: "EthereumSepolia".to_string(),
})
.await?;
// Get wallet assets
let assets = client
.wallets()
.get_wallet_assets(wallet.id)
.await?;
println!("Wallet assets: {:?}", assets);
Ok(())
}
The example above demonstrates:
- Creating an API client with authentication
- Creating a new wallet
- Retrieving wallet assets
To generate the documentation locally, you'll need the nightly Rust toolchain. Here's how to set it up:
# Install and switch to nightly Rust
rustup install nightly
rustup default nightly
# Generate the documentation
RUSTDOCFLAGS="--enable-index-page -Zunstable-options" cargo doc --no-deps --document-private-items --target-dir ./docs
To view the documentation in your browser:
# Start a local server (Python required)
python3 -m http.server 8000 --directory ./docs/doc
Then open http://localhost:8000/dfns_sdk_rs/ in your browser.
For more examples and detailed API documentation, check the documentation section.