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.0.dev0.tar.gz (50.6 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.0.dev0-py3-none-any.whl (85.1 kB view details)

Uploaded Python 3

File details

Details for the file dfns_sdk-0.0.0.dev0.tar.gz.

File metadata

  • Download URL: dfns_sdk-0.0.0.dev0.tar.gz
  • Upload date:
  • Size: 50.6 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.0.dev0.tar.gz
Algorithm Hash digest
SHA256 9781010c3de80714fad381bcbd8cb0a28d26f00ebbbb630f49f9234b1d6a6a65
MD5 2bbad1fda02135ac0358e882119b747a
BLAKE2b-256 5a94f390f826892cabc2e6268e244401a657000a4c5b01d2796bf3fe5eeda085

See more details on using hashes here.

Provenance

The following attestation bundles were made for dfns_sdk-0.0.0.dev0.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.0.dev0-py3-none-any.whl.

File metadata

  • Download URL: dfns_sdk-0.0.0.dev0-py3-none-any.whl
  • Upload date:
  • Size: 85.1 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.0.dev0-py3-none-any.whl
Algorithm Hash digest
SHA256 7e4c8fc4cd58bb920c4f53f6893afd8957ecc8fadc769ce4f615095d4f859b7e
MD5 71ca8a437edba130563deebcfd92b0aa
BLAKE2b-256 6321ac04f17f249f391d9c2f1f756c4f45b9d0bf229243cc854de1974af4bd74

See more details on using hashes here.

Provenance

The following attestation bundles were made for dfns_sdk-0.0.0.dev0-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