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.1b2.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.1b2-py3-none-any.whl (85.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dfns_sdk-0.0.1b2.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.1b2.tar.gz
Algorithm Hash digest
SHA256 df7d57800c97ab597fff1913ed163dbccea0f882a2b9f7084a6774ee74d02223
MD5 839b682bb45d53d6015f7a6713c60966
BLAKE2b-256 17f715b9a82db4331c85392d323789c2e0af8326d57ff37ae6ad71b370eead5d

See more details on using hashes here.

Provenance

The following attestation bundles were made for dfns_sdk-0.0.1b2.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.1b2-py3-none-any.whl.

File metadata

  • Download URL: dfns_sdk-0.0.1b2-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.1b2-py3-none-any.whl
Algorithm Hash digest
SHA256 554d7dbe8f1b1283c53b0751a1df1db2fbbb83fd9244f450e082dad35d62bf41
MD5 3b321ee5d4523adce62fd0a783f9ca2c
BLAKE2b-256 688047c657aa2c271c728dc1173ca619ede2e2cb7056beb6f0e91e948e369b9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for dfns_sdk-0.0.1b2-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