Skip to main content

Admin Vaultwarden and Simple Bitwarden Python Client

Project description

python-vaultwarden

PyPI Version Build Status

A python client library for vaultwarden.

Rationale

While there are numerous clients for bitwarden, its low-level Python client libraries ecosystem is not well stuffed yet.

We at Numberly are strong users (and supporters) of vaultwarden and needed a way to integrate admin operations into our automation stack.

We took inspiration from bitwardentools and leverage from it internally while adding some admin related features so that we can automate vaultwarden administration tasks.

Contributions welcomed!

Clients

There are 2 types of clients:

  • One for the vaultwarden admin API, that needs to be authenticated with an admin token.
  • One for the bitwarden API, that needs to be authenticated with the user api keys or user's mail and password. An Owner or Admin user is required to perform admin operations.

The reset_account and transfer_account_rights from the Admin client needs a valid Bitwarden client to re-invite the target user.

Usage

Admin client

from vaultwarden.clients.vaultwarden import VaultwardenAdminClient

client = VaultwardenAdminClient(url="https://vaultwarden.example.com", admin_secret_token="admin_token")

client.invite("john.doe@example.com")

all_users = client.get_all_users()

client.delete(all_users[0].id)

Bitwarden client

from vaultwarden.clients.bitwarden import BitwardenAPIClient
from vaultwarden.models.bitwarden import Organization, OrganizationCollection, get_organization

bitwarden_client = BitwardenAPIClient(url="https://vaultwarden.example.com", email="admin@example", password="admin_password", client_id="client_id", client_secret="client_secret")

org_uuid = "550e8400-e29b-41d4-a716-446655440000"

orga= get_organization(bitwarden_client, org_uuid)

collection_id_list = ["666e8400-e29b-41d4-a716-446655440000", "888e8400-e29b-41d4-a716-446655440000", "770e8400-e29b-41d4-a716-446655440000" ]
orga.invite(email="new@example.com", collections=collection_id_list, default_readonly=True, default_hide_passwords=True)
org_users = orga.users()
org_collections: list[OrganizationCollection] = orga.collections()
org_collections_by_name: dict[str: OrganizationCollection] = orga.collections(as_dict=True)
new_coll = orga.create_collection("new_collection")
orga.delete_collection(new_coll.Id)

my_coll = orga.collection("my_collection")
if new_coll:
    users_coll = my_coll.users()

my_coll_2 = org_collections_by_name["my_coll_2"]

my_user = orga.users(search="john.doe@example.com")
if my_user:
    my_user = my_user[0]
    print(my_user.Collections)
    my_user.add_collections([my_coll_2.Id])

TODO

  • Add tests form Vaultwarden admin client
  • Rewrite crypto part to remove dependency on bitwardentools and add argon2id support
  • Support email + password authentication
  • Support end user operations
  • Ciphers management support
  • Many other things I didn't think of yet

Credits

The crypto part originates from bitwardentools.

License

Python-vaultwarden is distributed under the terms of the Apache-2.0 license.

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

python_vaultwarden-1.0.0.tar.gz (18.0 kB view details)

Uploaded Source

Built Distribution

python_vaultwarden-1.0.0-py3-none-any.whl (19.8 kB view details)

Uploaded Python 3

File details

Details for the file python_vaultwarden-1.0.0.tar.gz.

File metadata

  • Download URL: python_vaultwarden-1.0.0.tar.gz
  • Upload date:
  • Size: 18.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.26.0

File hashes

Hashes for python_vaultwarden-1.0.0.tar.gz
Algorithm Hash digest
SHA256 f64f6a17dee163cc5030f4380496bb213e065a32668120e762b4c436b42b63d0
MD5 6d3a6fc5a1c87283de8e86aea4edda53
BLAKE2b-256 eadb5ef9f060dcc23a0df8c3bb192ecede517eb914ece67edb2a74e9c073ef41

See more details on using hashes here.

File details

Details for the file python_vaultwarden-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for python_vaultwarden-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a13be0865812707a03a682d237b42a763225bfc9a97b98966b07a83c3a6b83ff
MD5 7822df0916854eea6e855c94854146ad
BLAKE2b-256 1056a91615005b43dac30e1440cd7372b9831a358dbefa97e6be5d4c6c6ca2bc

See more details on using hashes here.

Supported by

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