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.

Installation

pip install python-vaultwarden

Usage

Admin client

from vaultwarden.clients.vaultwarden import VaultwardenAdminClient

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

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

# Get all users
all_users = client.users()

# Get a specific user by email
user = client.user(email="example@example.com")

# Delete/Disable/Enable a user by ID
client.delete(user.Id)
client.disable(user.Id)
client.enable(user.Id)

# Set enabled status of a user
client.set_user_enabled(user.Id, enabled=True)

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])

Compatibility

This library is compatible with vaultwarden 1.32.0 and above. It is tested against vaultwarden 1.32.5, 1.33.2, and 1.34.3.

python-vaultwarden <= v1.0.2 is compatible with vaultwarden from v1.30.0 up to v1.33.2.

Credits

The crypto part originates from bitwardentools.

Contributing

Thank you for being interested in contributing to python-vaultwarden. There are many ways you can contribute to the project:

  • Try and report bugs/issues you find
  • Implement new features
  • Review Pull Requests of others
  • Write documentation
  • Participate in discussions

Development

To start developing create a fork of the python-vaultwarden repository on GitHub.

Then clone your fork with the following command replacing YOUR-USERNAME with your GitHub username:

git clone https://github.com/YOUR-USERNAME/python-vaultwarden

You can now install the project and its dependencies using:

pip install -e .[test]

Code Style and Linting

This project uses ruff for both linting and code formatting. Before submitting a pull request, ensure your code follows the project's style guidelines.

To check for linting and formatting issues:

hatch run style:check

To automatically fix linting issues and format your code:

hatch run style:format

To only run linting (with auto-fix):

hatch run style:lint

Testing

To run the tests, use:

bash tests/e2e/run_tests.sh

Or using hatch:

hatch run test:test

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.1.1.tar.gz (19.3 kB view details)

Uploaded Source

Built Distribution

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

python_vaultwarden-1.1.1-py3-none-any.whl (21.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: python_vaultwarden-1.1.1.tar.gz
  • Upload date:
  • Size: 19.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.16.3 cpython/3.10.19 HTTPX/0.28.1

File hashes

Hashes for python_vaultwarden-1.1.1.tar.gz
Algorithm Hash digest
SHA256 df4a89545b305a44016e5ecf9d1846b2025273031b588b1ce5265135573e2312
MD5 5c94f021bce4211b13a9203034109a9e
BLAKE2b-256 8e2fcc8d2ccf3d7ea586dc086b996aa9b93e64fc72441c4b1ddb4b9803a07398

See more details on using hashes here.

File details

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

File metadata

  • Download URL: python_vaultwarden-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 21.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.16.3 cpython/3.10.19 HTTPX/0.28.1

File hashes

Hashes for python_vaultwarden-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5c1cb83486b3c17b9b6cc641ecb231e15c70240c16494b2105eafcaf4c0f0b9a
MD5 cd03a6f1cf847e4af05ec04b83cfd335
BLAKE2b-256 4a3116b624fa393e9001f6fa70729ace5af5ba2bc1b094766d4b497b9ccfc48e

See more details on using hashes here.

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