Skip to main content

Crate bitwarden

Crate bitwarden 

Source
Expand description

§Bitwarden

A Rust client SDK to interact with the Bitwarden Secrets Manager. This is a beta release and might be missing some functionality.

To use this crate, add it to your Cargo.toml:

[dependencies]
bitwarden = { "*", features = ["secrets"] }

§Basic setup

All operations in this crate are done via a Client:

use bitwarden::{
    auth::login::AccessTokenLoginRequest,
    error::Result,
    secrets_manager::{secrets::SecretIdentifiersRequest, ClientSecretsExt},
    Client, ClientSettings, DeviceType,
};
use uuid::Uuid;

async fn test() -> Result<()> {
    // Use the default values
    let mut client = Client::new(None);

    // Or set your own values
    let settings = ClientSettings {
        identity_url: "https://identity.bitwarden.com".to_string(),
        api_url: "https://api.bitwarden.com".to_string(),
        user_agent: "Bitwarden Rust-SDK".to_string(),
        device_type: DeviceType::SDK,
        device_identifier: None,
        bitwarden_package_type: None,
        bitwarden_client_version: Some(env!("CARGO_PKG_VERSION").to_string()),
    };
    let mut client = Client::new(Some(settings));

    // Before we operate, we need to authenticate with a token
    let token = AccessTokenLoginRequest {
        access_token: String::from(""),
        state_file: None,
    };
    client.auth().login_access_token(&token).await.unwrap();

    let org_id = SecretIdentifiersRequest {
        organization_id: Uuid::parse_str("00000000-0000-0000-0000-000000000000").unwrap(),
    };
    println!(
        "Stored secrets: {:#?}",
        client.secrets().list(&org_id).await.unwrap()
    );
    Ok(())
}

Modules§

authDeprecated
error
Errors that can occur when using this SDK
generators
secrets_manager

Structs§

Client
The main struct for interacting with the Secrets Manager service through the SM SDK.
ClientSettings
Basic client behavior settings. These settings specify the various targets and behavior of the Bitwarden Client. They are optional and uneditable once the client is initialized.
OrganizationId
NewType wrapper for OrganizationId

Enums§

DeviceType