Skip to main content

Dfns Python SDK - Auto-generated from OpenAPI specification

Project description

Dfns Python SDK

Auto-generated Python SDK for the Dfns API.

Installation

pip install dfns_sdk

Or install from source:

pip install -e .

Quick Start

from dfns_sdk import DfnsClient, DfnsClientConfig

# Configure the client
config = DfnsClientConfig(
    auth_token="your-auth-token",
    base_url="https://api.dfns.io",  # Optional, this is the default
)

# Create the client
client = DfnsClient(config)

# Use the client
wallets = client.wallets.list_wallets()
print(wallets)

# Clean up
client.close()

Using as a Context Manager

from dfns_sdk import DfnsClient, DfnsClientConfig

config = DfnsClientConfig(
    auth_token="your-auth-token",
)

with DfnsClient(config) as client:
    wallets = client.wallets.list_wallets()
    print(wallets)

User Action Signing

Some operations (like creating wallets or signing transactions) require user action signing. Configure a signer to enable these operations:

from dfns_sdk import DfnsClient, DfnsClientConfig, KeySigner

# Load your private key
with open("private_key.pem") as f:
    private_key = f.read()

# Create a signer
signer = KeySigner(
    credential_id="cr-xxx-xxx",  # Your credential ID
    private_key=private_key,
    app_origin="https://app.dfns.io",
)

# Configure the client with the signer
config = DfnsClientConfig(
    auth_token="your-auth-token",
    signer=signer,
)

with DfnsClient(config) as client:
    # Operations requiring signatures will automatically sign
    wallet = client.wallets.create_wallet({
        "network": "EthereumSepolia",
    })
    print(wallet)

Delegated Client (External Signing)

For service accounts that orchestrate signing externally (e.g., using a separate signing service), use the DfnsDelegatedClient. This client separates user action signing into *_init() and *_complete() method pairs:

from dfns_sdk import DfnsDelegatedClient, DfnsDelegatedClientConfig

# Configure the delegated client (no signer needed)
config = DfnsDelegatedClientConfig(
    auth_token="service-account-token",
)

with DfnsDelegatedClient(config) as client:
    # Step 1: Initialize the action (returns challenge)
    challenge = client.wallets.create_wallet_init(
        body={"network": "EthereumSepolia"}
    )

    # Step 2: Sign challenge externally (your signing system)
    # The challenge contains everything needed to sign:
    # - challenge["challenge"]: The challenge string to sign
    # - challenge["challengeIdentifier"]: Unique ID for this challenge
    signed_assertion = your_external_signer.sign(challenge)

    # Step 3: Complete the action with signed challenge
    wallet = client.wallets.create_wallet_complete(
        body={"network": "EthereumSepolia"},
        signed_challenge={
            "challengeIdentifier": challenge["challengeIdentifier"],
            "firstFactor": signed_assertion,
        },
    )
    print(wallet)

When to Use Delegated vs Regular Client

Use Case Client Type
Single application with embedded signing DfnsClient
Mobile app with local key storage DfnsClient
Backend service with external HSM DfnsDelegatedClient
Multi-step approval workflows DfnsDelegatedClient
Service account orchestrating user actions DfnsDelegatedClient

Available Domains

The client provides access to the following API domains:

  • client.auth - Authentication and user management
  • client.wallets - Wallet operations
  • client.policies - Policy management
  • client.permissions - Permission management
  • client.webhooks - Webhook subscriptions
  • And more...

Each domain provides typed methods for all available API endpoints.

Error Handling

from dfns_sdk import DfnsClient, DfnsClientConfig, DfnsError

config = DfnsClientConfig(auth_token="your-auth-token")
client = DfnsClient(config)

try:
    wallet = client.wallets.get_wallet(wallet_id="invalid-id")
except DfnsError as e:
    print(f"Error: {e.message}")
    print(f"Status: {e.status_code}")
    print(f"Code: {e.error_code}")

License

MIT License - See LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dfns_sdk-0.0.1.tar.gz (51.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dfns_sdk-0.0.1-py3-none-any.whl (85.6 kB view details)

Uploaded Python 3

File details

Details for the file dfns_sdk-0.0.1.tar.gz.

File metadata

  • Download URL: dfns_sdk-0.0.1.tar.gz
  • Upload date:
  • Size: 51.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dfns_sdk-0.0.1.tar.gz
Algorithm Hash digest
SHA256 1cc2f195aa068f752a507fe779a84622a926adcf9ee180b8931521abf3ecbc01
MD5 244cebbad513b046033a0780ca0c6892
BLAKE2b-256 d159bb0f0a7f1172011fbf53e4e0df3de54a33179a4e3a2d2f06195f76b089dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for dfns_sdk-0.0.1.tar.gz:

Publisher: publish.yml on dfns/dfns-sdk-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dfns_sdk-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: dfns_sdk-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 85.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dfns_sdk-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6e2bf44daca5b36551f92e27344b53032db0ffffe0ec6a9782a40970d91abbe5
MD5 7bf111e48b3609558a065fd4ba0e4604
BLAKE2b-256 1449646a715f9c8041d57acc7d160aa49b75869c8c78d76d5865105193023681

See more details on using hashes here.

Provenance

The following attestation bundles were made for dfns_sdk-0.0.1-py3-none-any.whl:

Publisher: publish.yml on dfns/dfns-sdk-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page