bitwarden_json/command.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
#[cfg(feature = "secrets")]
use bitwarden::{
auth::login::AccessTokenLoginRequest,
generators::PasswordGeneratorRequest,
secrets_manager::{
projects::{
ProjectCreateRequest, ProjectGetRequest, ProjectPutRequest, ProjectsDeleteRequest,
ProjectsListRequest,
},
secrets::{
SecretCreateRequest, SecretGetRequest, SecretIdentifiersRequest, SecretPutRequest,
SecretsDeleteRequest, SecretsGetRequest, SecretsSyncRequest,
},
},
};
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, JsonSchema, Debug)]
#[serde(rename_all = "camelCase", deny_unknown_fields)]
pub enum Command {
#[cfg(feature = "secrets")]
/// Login with Secrets Manager Access Token
///
/// This command is for initiating an authentication handshake with Bitwarden.
///
/// Returns: [ApiKeyLoginResponse](bitwarden::auth::login::ApiKeyLoginResponse)
LoginAccessToken(AccessTokenLoginRequest),
#[cfg(feature = "secrets")]
Secrets(SecretsCommand),
#[cfg(feature = "secrets")]
Projects(ProjectsCommand),
#[cfg(feature = "secrets")]
Generators(GeneratorsCommand),
}
#[cfg(feature = "secrets")]
#[derive(Serialize, Deserialize, JsonSchema, Debug)]
#[serde(rename_all = "camelCase", deny_unknown_fields)]
pub enum SecretsCommand {
/// > Requires Authentication
/// > Requires using an Access Token for login or calling Sync at least once
/// Retrieve a secret by the provided identifier
///
/// Returns: [SecretResponse](bitwarden::secrets_manager::secrets::SecretResponse)
Get(SecretGetRequest),
/// > Requires Authentication
/// > Requires using an Access Token for login or calling Sync at least once
/// Retrieve secrets by the provided identifiers
///
/// Returns: [SecretsResponse](bitwarden::secrets_manager::secrets::SecretsResponse)
GetByIds(SecretsGetRequest),
/// > Requires Authentication
/// > Requires using an Access Token for login or calling Sync at least once
/// Creates a new secret in the provided organization using the given data
///
/// Returns: [SecretResponse](bitwarden::secrets_manager::secrets::SecretResponse)
Create(SecretCreateRequest),
/// > Requires Authentication
/// > Requires using an Access Token for login or calling Sync at least once
/// Lists all secret identifiers of the given organization, to then retrieve each secret, use
/// `CreateSecret`
///
/// Returns: [SecretIdentifiersResponse](bitwarden::secrets_manager::secrets::SecretIdentifiersResponse)
List(SecretIdentifiersRequest),
/// > Requires Authentication
/// > Requires using an Access Token for login or calling Sync at least once
/// Updates an existing secret with the provided ID using the given data
///
/// Returns: [SecretResponse](bitwarden::secrets_manager::secrets::SecretResponse)
Update(SecretPutRequest),
/// > Requires Authentication
/// > Requires using an Access Token for login or calling Sync at least once
/// Deletes all the secrets whose IDs match the provided ones
///
/// Returns: [SecretsDeleteResponse](bitwarden::secrets_manager::secrets::SecretsDeleteResponse)
Delete(SecretsDeleteRequest),
/// > Requires Authentication
/// > Requires using an Access Token for login
/// Retrieve the secrets accessible by the authenticated machine account
/// Optionally, provide the last synced date to assess whether any changes have occurred
/// If changes are detected, retrieves all the secrets accessible by the authenticated machine
/// account
///
/// Returns: [SecretsSyncResponse](bitwarden::secrets_manager::secrets::SecretsSyncResponse)
Sync(SecretsSyncRequest),
}
#[cfg(feature = "secrets")]
#[derive(Serialize, Deserialize, JsonSchema, Debug)]
#[serde(rename_all = "camelCase", deny_unknown_fields)]
pub enum ProjectsCommand {
/// > Requires Authentication
/// > Requires using an Access Token for login or calling Sync at least once
/// Retrieve a project by the provided identifier
///
/// Returns: [ProjectResponse](bitwarden::secrets_manager::projects::ProjectResponse)
Get(ProjectGetRequest),
/// > Requires Authentication
/// > Requires using an Access Token for login or calling Sync at least once
/// Creates a new project in the provided organization using the given data
///
/// Returns: [ProjectResponse](bitwarden::secrets_manager::projects::ProjectResponse)
Create(ProjectCreateRequest),
/// > Requires Authentication
/// > Requires using an Access Token for login or calling Sync at least once
/// Lists all projects of the given organization
///
/// Returns: [ProjectsResponse](bitwarden::secrets_manager::projects::ProjectsResponse)
List(ProjectsListRequest),
/// > Requires Authentication
/// > Requires using an Access Token for login or calling Sync at least once
/// Updates an existing project with the provided ID using the given data
///
/// Returns: [ProjectResponse](bitwarden::secrets_manager::projects::ProjectResponse)
Update(ProjectPutRequest),
/// > Requires Authentication
/// > Requires using an Access Token for login or calling Sync at least once
/// Deletes all the projects whose IDs match the provided ones
///
/// Returns: [ProjectsDeleteResponse](bitwarden::secrets_manager::projects::ProjectsDeleteResponse)
Delete(ProjectsDeleteRequest),
}
#[cfg(feature = "secrets")]
#[derive(Serialize, Deserialize, JsonSchema, Debug)]
#[serde(rename_all = "camelCase", deny_unknown_fields)]
pub enum GeneratorsCommand {
/// Generate a password
///
/// Returns: [String]
GeneratePassword(PasswordGeneratorRequest),
}