From 631a4c06d80a7d0ee6e89df10427a0bad3fc3534 Mon Sep 17 00:00:00 2001 From: "bw-ghapp[bot]" <178206702+bw-ghapp[bot]@users.noreply.github.com> Date: Mon, 24 Nov 2025 04:17:07 +0000 Subject: [PATCH 1/4] Update API bindings - fdfec0ac4df89b33896aadf532e95404f01747c0 --- .../.openapi-generator/FILES | 1 + crates/bitwarden-api-api/README.md | 4 +- crates/bitwarden-api-api/src/apis/mod.rs | 12 + .../src/apis/organization_users_api.rs | 68 +++ .../src/apis/self_hosted_billing_api.rs | 461 ++++++++++++++++++ .../src/models/event_type.rs | 2 + .../models/policy_detail_response_model.rs | 7 + .../src/models/policy_response_model.rs | 7 + .../src/models/policy_type.rs | 2 + .../.openapi-generator/FILES | 5 +- crates/bitwarden-api-identity/README.md | 9 +- .../src/apis/accounts_api.rs | 31 +- .../src/models/kdf_settings.rs | 44 ++ .../bitwarden-api-identity/src/models/mod.rs | 10 +- ....rs => password_prelogin_request_model.rs} | 8 +- ...rs => password_prelogin_response_model.rs} | 22 +- ...r_send_verification_email_request_model.rs | 7 + ...l_send_verification_email_request_model.rs | 7 + 18 files changed, 674 insertions(+), 33 deletions(-) create mode 100644 crates/bitwarden-api-api/src/apis/self_hosted_billing_api.rs create mode 100644 crates/bitwarden-api-identity/src/models/kdf_settings.rs rename crates/bitwarden-api-identity/src/models/{prelogin_request_model.rs => password_prelogin_request_model.rs} (70%) rename crates/bitwarden-api-identity/src/models/{prelogin_response_model.rs => password_prelogin_response_model.rs} (66%) diff --git a/crates/bitwarden-api-api/.openapi-generator/FILES b/crates/bitwarden-api-api/.openapi-generator/FILES index 6ef40d94b..7dcab3ccc 100644 --- a/crates/bitwarden-api-api/.openapi-generator/FILES +++ b/crates/bitwarden-api-api/.openapi-generator/FILES @@ -53,6 +53,7 @@ src/apis/secrets_manager_events_api.rs src/apis/secrets_manager_porting_api.rs src/apis/security_task_api.rs src/apis/self_hosted_account_billing_api.rs +src/apis/self_hosted_billing_api.rs src/apis/self_hosted_organization_licenses_api.rs src/apis/self_hosted_organization_sponsorships_api.rs src/apis/sends_api.rs diff --git a/crates/bitwarden-api-api/README.md b/crates/bitwarden-api-api/README.md index 10a5fd4b8..7d2b411cb 100644 --- a/crates/bitwarden-api-api/README.md +++ b/crates/bitwarden-api-api/README.md @@ -12,7 +12,7 @@ client. - API version: latest - Package version: 1.0.0 - Server Git commit: - [`1274fe656234f06507f9af73927fa9ff7982438b`](https://github.com/bitwarden/server/commit/1274fe656234f06507f9af73927fa9ff7982438b) + [`fdfec0ac4df89b33896aadf532e95404f01747c0`](https://github.com/bitwarden/server/commit/fdfec0ac4df89b33896aadf532e95404f01747c0) - Generator version: 7.15.0 - Build package: `org.openapitools.codegen.languages.RustClientCodegen` @@ -302,6 +302,7 @@ All URIs are relative to *https://api.bitwarden.com* | _OrganizationSponsorshipsApi_ | [**sync**](docs/OrganizationSponsorshipsApi.md#organization_sponsorships_sync) | **POST** /organization/sponsorship/sync | | _OrganizationUsersApi_ | [**accept**](docs/OrganizationUsersApi.md#organization_users_accept) | **POST** /organizations/{orgId}/users/{organizationUserId}/accept | | _OrganizationUsersApi_ | [**accept_init**](docs/OrganizationUsersApi.md#organization_users_accept_init) | **POST** /organizations/{orgId}/users/{organizationUserId}/accept-init | +| _OrganizationUsersApi_ | [**automatically_confirm_organization_user**](docs/OrganizationUsersApi.md#organization_users_automatically_confirm_organization_user) | **POST** /organizations/{orgId}/users/{id}/auto-confirm | | _OrganizationUsersApi_ | [**bulk_confirm**](docs/OrganizationUsersApi.md#organization_users_bulk_confirm) | **POST** /organizations/{orgId}/users/confirm | | _OrganizationUsersApi_ | [**bulk_delete_account**](docs/OrganizationUsersApi.md#organization_users_bulk_delete_account) | **DELETE** /organizations/{orgId}/users/delete-account | | _OrganizationUsersApi_ | [**bulk_enable_secrets_manager**](docs/OrganizationUsersApi.md#organization_users_bulk_enable_secrets_manager) | **PUT** /organizations/{orgId}/users/enable-secrets-manager | @@ -438,6 +439,7 @@ All URIs are relative to *https://api.bitwarden.com* | _SecurityTaskApi_ | [**get_task_metrics_for_organization**](docs/SecurityTaskApi.md#security_task_get_task_metrics_for_organization) | **GET** /tasks/{organizationId}/metrics | Retrieves security task metrics for an organization. | | _SecurityTaskApi_ | [**list_for_organization**](docs/SecurityTaskApi.md#security_task_list_for_organization) | **GET** /tasks/organization | Retrieves security tasks for an organization. Restricted to organization administrators. | | _SelfHostedAccountBillingApi_ | [**upload_license**](docs/SelfHostedAccountBillingApi.md#self_hosted_account_billing_upload_license) | **POST** /account/billing/vnext/self-host/license | +| _SelfHostedBillingApi_ | [**get_metadata**](docs/SelfHostedBillingApi.md#self_hosted_billing_get_metadata) | **GET** /organizations/{organizationId}/billing/vnext/self-host/metadata | | _SelfHostedOrganizationLicensesApi_ | [**create_license**](docs/SelfHostedOrganizationLicensesApi.md#self_hosted_organization_licenses_create_license) | **POST** /organizations/licenses/self-hosted | | _SelfHostedOrganizationLicensesApi_ | [**sync_license**](docs/SelfHostedOrganizationLicensesApi.md#self_hosted_organization_licenses_sync_license) | **POST** /organizations/licenses/self-hosted/{id}/sync | | _SelfHostedOrganizationLicensesApi_ | [**update_license**](docs/SelfHostedOrganizationLicensesApi.md#self_hosted_organization_licenses_update_license) | **POST** /organizations/licenses/self-hosted/{id} | diff --git a/crates/bitwarden-api-api/src/apis/mod.rs b/crates/bitwarden-api-api/src/apis/mod.rs index 6c94b485d..f5e9ccc03 100644 --- a/crates/bitwarden-api-api/src/apis/mod.rs +++ b/crates/bitwarden-api-api/src/apis/mod.rs @@ -164,6 +164,7 @@ pub mod secrets_manager_events_api; pub mod secrets_manager_porting_api; pub mod security_task_api; pub mod self_hosted_account_billing_api; +pub mod self_hosted_billing_api; pub mod self_hosted_organization_licenses_api; pub mod self_hosted_organization_sponsorships_api; pub mod sends_api; @@ -247,6 +248,7 @@ struct ApiClientReal { security_task_api: security_task_api::SecurityTaskApiClient, self_hosted_account_billing_api: self_hosted_account_billing_api::SelfHostedAccountBillingApiClient, + self_hosted_billing_api: self_hosted_billing_api::SelfHostedBillingApiClient, self_hosted_organization_licenses_api: self_hosted_organization_licenses_api::SelfHostedOrganizationLicensesApiClient, self_hosted_organization_sponsorships_api: @@ -324,6 +326,7 @@ pub struct ApiClientMock { pub security_task_api: security_task_api::MockSecurityTaskApi, pub self_hosted_account_billing_api: self_hosted_account_billing_api::MockSelfHostedAccountBillingApi, + pub self_hosted_billing_api: self_hosted_billing_api::MockSelfHostedBillingApi, pub self_hosted_organization_licenses_api: self_hosted_organization_licenses_api::MockSelfHostedOrganizationLicensesApi, pub self_hosted_organization_sponsorships_api: @@ -397,6 +400,7 @@ impl ApiClient { secrets_manager_porting_api: secrets_manager_porting_api::SecretsManagerPortingApiClient::new(configuration.clone()), security_task_api: security_task_api::SecurityTaskApiClient::new(configuration.clone()), self_hosted_account_billing_api: self_hosted_account_billing_api::SelfHostedAccountBillingApiClient::new(configuration.clone()), + self_hosted_billing_api: self_hosted_billing_api::SelfHostedBillingApiClient::new(configuration.clone()), self_hosted_organization_licenses_api: self_hosted_organization_licenses_api::SelfHostedOrganizationLicensesApiClient::new(configuration.clone()), self_hosted_organization_sponsorships_api: self_hosted_organization_sponsorships_api::SelfHostedOrganizationSponsorshipsApiClient::new(configuration.clone()), sends_api: sends_api::SendsApiClient::new(configuration.clone()), @@ -469,6 +473,7 @@ impl ApiClient { secrets_manager_porting_api: secrets_manager_porting_api::MockSecretsManagerPortingApi::new(), security_task_api: security_task_api::MockSecurityTaskApi::new(), self_hosted_account_billing_api: self_hosted_account_billing_api::MockSelfHostedAccountBillingApi::new(), + self_hosted_billing_api: self_hosted_billing_api::MockSelfHostedBillingApi::new(), self_hosted_organization_licenses_api: self_hosted_organization_licenses_api::MockSelfHostedOrganizationLicensesApi::new(), self_hosted_organization_sponsorships_api: self_hosted_organization_sponsorships_api::MockSelfHostedOrganizationSponsorshipsApi::new(), sends_api: sends_api::MockSendsApi::new(), @@ -885,6 +890,13 @@ impl ApiClient { ApiClient::Mock(mock) => &mock.self_hosted_account_billing_api, } } + pub fn self_hosted_billing_api(&self) -> &dyn self_hosted_billing_api::SelfHostedBillingApi { + match self { + ApiClient::Real(real) => &real.self_hosted_billing_api, + #[cfg(feature = "mockall")] + ApiClient::Mock(mock) => &mock.self_hosted_billing_api, + } + } pub fn self_hosted_organization_licenses_api( &self, ) -> &dyn self_hosted_organization_licenses_api::SelfHostedOrganizationLicensesApi { diff --git a/crates/bitwarden-api-api/src/apis/organization_users_api.rs b/crates/bitwarden-api-api/src/apis/organization_users_api.rs index db0685780..6f60e00f5 100644 --- a/crates/bitwarden-api-api/src/apis/organization_users_api.rs +++ b/crates/bitwarden-api-api/src/apis/organization_users_api.rs @@ -44,6 +44,16 @@ pub trait OrganizationUsersApi: Send + Sync { >, ) -> Result<(), Error>; + /// POST /organizations/{orgId}/users/{id}/auto-confirm + async fn automatically_confirm_organization_user<'a>( + &self, + org_id: uuid::Uuid, + id: uuid::Uuid, + organization_user_confirm_request_model: Option< + models::OrganizationUserConfirmRequestModel, + >, + ) -> Result<(), Error>; + /// POST /organizations/{orgId}/users/confirm async fn bulk_confirm<'a>( &self, @@ -346,6 +356,57 @@ impl OrganizationUsersApi for OrganizationUsersApiClient { } } + async fn automatically_confirm_organization_user<'a>( + &self, + org_id: uuid::Uuid, + id: uuid::Uuid, + organization_user_confirm_request_model: Option< + models::OrganizationUserConfirmRequestModel, + >, + ) -> Result<(), Error> { + let local_var_configuration = &self.configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/organizations/{orgId}/users/{id}/auto-confirm", + local_var_configuration.base_path, + orgId = org_id, + id = id + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = local_var_req_builder + .header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.oauth_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + local_var_req_builder = + local_var_req_builder.json(&organization_user_confirm_request_model); + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + Ok(()) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } + } + async fn bulk_confirm<'a>( &self, org_id: uuid::Uuid, @@ -1683,6 +1744,13 @@ pub enum AcceptError { pub enum AcceptInitError { UnknownValue(serde_json::Value), } +/// struct for typed errors of method +/// [`OrganizationUsersApi::automatically_confirm_organization_user`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum AutomaticallyConfirmOrganizationUserError { + UnknownValue(serde_json::Value), +} /// struct for typed errors of method [`OrganizationUsersApi::bulk_confirm`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] diff --git a/crates/bitwarden-api-api/src/apis/self_hosted_billing_api.rs b/crates/bitwarden-api-api/src/apis/self_hosted_billing_api.rs new file mode 100644 index 000000000..4d7167180 --- /dev/null +++ b/crates/bitwarden-api-api/src/apis/self_hosted_billing_api.rs @@ -0,0 +1,461 @@ +/* + * Bitwarden Internal API + * + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: latest + * + * Generated by: https://openapi-generator.tech + */ + +use std::sync::Arc; + +use async_trait::async_trait; +#[cfg(feature = "mockall")] +use mockall::automock; +use reqwest; +use serde::{Deserialize, Serialize, de::Error as _}; + +use super::{Error, configuration}; +use crate::{ + apis::{ContentType, ResponseContent}, + models, +}; + +#[cfg_attr(feature = "mockall", automock)] +#[cfg_attr(target_arch = "wasm32", async_trait(?Send))] +#[cfg_attr(not(target_arch = "wasm32"), async_trait)] +pub trait SelfHostedBillingApi: Send + Sync { + /// GET /organizations/{organizationId}/billing/vnext/self-host/metadata + async fn get_metadata<'a>( + &self, + organization_id: &'a str, + id: Option, + identifier: Option<&'a str>, + name: Option<&'a str>, + business_name: Option<&'a str>, + business_address1: Option<&'a str>, + business_address2: Option<&'a str>, + business_address3: Option<&'a str>, + business_country: Option<&'a str>, + business_tax_number: Option<&'a str>, + billing_email: Option<&'a str>, + plan: Option<&'a str>, + plan_type: Option, + seats: Option, + max_collections: Option, + use_policies: Option, + use_sso: Option, + use_key_connector: Option, + use_scim: Option, + use_groups: Option, + use_directory: Option, + use_events: Option, + use_totp: Option, + use2fa: Option, + use_api: Option, + use_reset_password: Option, + use_secrets_manager: Option, + self_host: Option, + users_get_premium: Option, + use_custom_permissions: Option, + storage: Option, + max_storage_gb: Option, + gateway: Option, + gateway_customer_id: Option<&'a str>, + gateway_subscription_id: Option<&'a str>, + reference_data: Option<&'a str>, + enabled: Option, + license_key: Option<&'a str>, + public_key: Option<&'a str>, + private_key: Option<&'a str>, + two_factor_providers: Option<&'a str>, + expiration_date: Option, + creation_date: Option, + revision_date: Option, + max_autoscale_seats: Option, + owners_notified_of_autoscaling: Option, + status: Option, + use_password_manager: Option, + sm_seats: Option, + sm_service_accounts: Option, + max_autoscale_sm_seats: Option, + max_autoscale_sm_service_accounts: Option, + limit_collection_creation: Option, + limit_collection_deletion: Option, + allow_admin_access_to_all_collection_items: Option, + limit_item_deletion: Option, + use_risk_insights: Option, + use_organization_domains: Option, + use_admin_sponsored_families: Option, + sync_seats: Option, + use_automatic_user_confirmation: Option, + ) -> Result<(), Error>; +} + +pub struct SelfHostedBillingApiClient { + configuration: Arc, +} + +impl SelfHostedBillingApiClient { + pub fn new(configuration: Arc) -> Self { + Self { configuration } + } +} + +#[cfg_attr(target_arch = "wasm32", async_trait(?Send))] +#[cfg_attr(not(target_arch = "wasm32"), async_trait)] +impl SelfHostedBillingApi for SelfHostedBillingApiClient { + async fn get_metadata<'a>( + &self, + organization_id: &'a str, + id: Option, + identifier: Option<&'a str>, + name: Option<&'a str>, + business_name: Option<&'a str>, + business_address1: Option<&'a str>, + business_address2: Option<&'a str>, + business_address3: Option<&'a str>, + business_country: Option<&'a str>, + business_tax_number: Option<&'a str>, + billing_email: Option<&'a str>, + plan: Option<&'a str>, + plan_type: Option, + seats: Option, + max_collections: Option, + use_policies: Option, + use_sso: Option, + use_key_connector: Option, + use_scim: Option, + use_groups: Option, + use_directory: Option, + use_events: Option, + use_totp: Option, + use2fa: Option, + use_api: Option, + use_reset_password: Option, + use_secrets_manager: Option, + self_host: Option, + users_get_premium: Option, + use_custom_permissions: Option, + storage: Option, + max_storage_gb: Option, + gateway: Option, + gateway_customer_id: Option<&'a str>, + gateway_subscription_id: Option<&'a str>, + reference_data: Option<&'a str>, + enabled: Option, + license_key: Option<&'a str>, + public_key: Option<&'a str>, + private_key: Option<&'a str>, + two_factor_providers: Option<&'a str>, + expiration_date: Option, + creation_date: Option, + revision_date: Option, + max_autoscale_seats: Option, + owners_notified_of_autoscaling: Option, + status: Option, + use_password_manager: Option, + sm_seats: Option, + sm_service_accounts: Option, + max_autoscale_sm_seats: Option, + max_autoscale_sm_service_accounts: Option, + limit_collection_creation: Option, + limit_collection_deletion: Option, + allow_admin_access_to_all_collection_items: Option, + limit_item_deletion: Option, + use_risk_insights: Option, + use_organization_domains: Option, + use_admin_sponsored_families: Option, + sync_seats: Option, + use_automatic_user_confirmation: Option, + ) -> Result<(), Error> { + let local_var_configuration = &self.configuration; + + let local_var_client = &local_var_configuration.client; + + let local_var_uri_str = format!( + "{}/organizations/{organizationId}/billing/vnext/self-host/metadata", + local_var_configuration.base_path, + organizationId = crate::apis::urlencode(organization_id) + ); + let mut local_var_req_builder = + local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str()); + + if let Some(ref param_value) = id { + local_var_req_builder = + local_var_req_builder.query(&[("id", ¶m_value.to_string())]); + } + if let Some(ref param_value) = identifier { + local_var_req_builder = + local_var_req_builder.query(&[("identifier", ¶m_value.to_string())]); + } + if let Some(ref param_value) = name { + local_var_req_builder = + local_var_req_builder.query(&[("name", ¶m_value.to_string())]); + } + if let Some(ref param_value) = business_name { + local_var_req_builder = + local_var_req_builder.query(&[("businessName", ¶m_value.to_string())]); + } + if let Some(ref param_value) = business_address1 { + local_var_req_builder = + local_var_req_builder.query(&[("businessAddress1", ¶m_value.to_string())]); + } + if let Some(ref param_value) = business_address2 { + local_var_req_builder = + local_var_req_builder.query(&[("businessAddress2", ¶m_value.to_string())]); + } + if let Some(ref param_value) = business_address3 { + local_var_req_builder = + local_var_req_builder.query(&[("businessAddress3", ¶m_value.to_string())]); + } + if let Some(ref param_value) = business_country { + local_var_req_builder = + local_var_req_builder.query(&[("businessCountry", ¶m_value.to_string())]); + } + if let Some(ref param_value) = business_tax_number { + local_var_req_builder = + local_var_req_builder.query(&[("businessTaxNumber", ¶m_value.to_string())]); + } + if let Some(ref param_value) = billing_email { + local_var_req_builder = + local_var_req_builder.query(&[("billingEmail", ¶m_value.to_string())]); + } + if let Some(ref param_value) = plan { + local_var_req_builder = + local_var_req_builder.query(&[("plan", ¶m_value.to_string())]); + } + if let Some(ref param_value) = plan_type { + local_var_req_builder = + local_var_req_builder.query(&[("planType", ¶m_value.to_string())]); + } + if let Some(ref param_value) = seats { + local_var_req_builder = + local_var_req_builder.query(&[("seats", ¶m_value.to_string())]); + } + if let Some(ref param_value) = max_collections { + local_var_req_builder = + local_var_req_builder.query(&[("maxCollections", ¶m_value.to_string())]); + } + if let Some(ref param_value) = use_policies { + local_var_req_builder = + local_var_req_builder.query(&[("usePolicies", ¶m_value.to_string())]); + } + if let Some(ref param_value) = use_sso { + local_var_req_builder = + local_var_req_builder.query(&[("useSso", ¶m_value.to_string())]); + } + if let Some(ref param_value) = use_key_connector { + local_var_req_builder = + local_var_req_builder.query(&[("useKeyConnector", ¶m_value.to_string())]); + } + if let Some(ref param_value) = use_scim { + local_var_req_builder = + local_var_req_builder.query(&[("useScim", ¶m_value.to_string())]); + } + if let Some(ref param_value) = use_groups { + local_var_req_builder = + local_var_req_builder.query(&[("useGroups", ¶m_value.to_string())]); + } + if let Some(ref param_value) = use_directory { + local_var_req_builder = + local_var_req_builder.query(&[("useDirectory", ¶m_value.to_string())]); + } + if let Some(ref param_value) = use_events { + local_var_req_builder = + local_var_req_builder.query(&[("useEvents", ¶m_value.to_string())]); + } + if let Some(ref param_value) = use_totp { + local_var_req_builder = + local_var_req_builder.query(&[("useTotp", ¶m_value.to_string())]); + } + if let Some(ref param_value) = use2fa { + local_var_req_builder = + local_var_req_builder.query(&[("use2fa", ¶m_value.to_string())]); + } + if let Some(ref param_value) = use_api { + local_var_req_builder = + local_var_req_builder.query(&[("useApi", ¶m_value.to_string())]); + } + if let Some(ref param_value) = use_reset_password { + local_var_req_builder = + local_var_req_builder.query(&[("useResetPassword", ¶m_value.to_string())]); + } + if let Some(ref param_value) = use_secrets_manager { + local_var_req_builder = + local_var_req_builder.query(&[("useSecretsManager", ¶m_value.to_string())]); + } + if let Some(ref param_value) = self_host { + local_var_req_builder = + local_var_req_builder.query(&[("selfHost", ¶m_value.to_string())]); + } + if let Some(ref param_value) = users_get_premium { + local_var_req_builder = + local_var_req_builder.query(&[("usersGetPremium", ¶m_value.to_string())]); + } + if let Some(ref param_value) = use_custom_permissions { + local_var_req_builder = + local_var_req_builder.query(&[("useCustomPermissions", ¶m_value.to_string())]); + } + if let Some(ref param_value) = storage { + local_var_req_builder = + local_var_req_builder.query(&[("storage", ¶m_value.to_string())]); + } + if let Some(ref param_value) = max_storage_gb { + local_var_req_builder = + local_var_req_builder.query(&[("maxStorageGb", ¶m_value.to_string())]); + } + if let Some(ref param_value) = gateway { + local_var_req_builder = + local_var_req_builder.query(&[("gateway", ¶m_value.to_string())]); + } + if let Some(ref param_value) = gateway_customer_id { + local_var_req_builder = + local_var_req_builder.query(&[("gatewayCustomerId", ¶m_value.to_string())]); + } + if let Some(ref param_value) = gateway_subscription_id { + local_var_req_builder = + local_var_req_builder.query(&[("gatewaySubscriptionId", ¶m_value.to_string())]); + } + if let Some(ref param_value) = reference_data { + local_var_req_builder = + local_var_req_builder.query(&[("referenceData", ¶m_value.to_string())]); + } + if let Some(ref param_value) = enabled { + local_var_req_builder = + local_var_req_builder.query(&[("enabled", ¶m_value.to_string())]); + } + if let Some(ref param_value) = license_key { + local_var_req_builder = + local_var_req_builder.query(&[("licenseKey", ¶m_value.to_string())]); + } + if let Some(ref param_value) = public_key { + local_var_req_builder = + local_var_req_builder.query(&[("publicKey", ¶m_value.to_string())]); + } + if let Some(ref param_value) = private_key { + local_var_req_builder = + local_var_req_builder.query(&[("privateKey", ¶m_value.to_string())]); + } + if let Some(ref param_value) = two_factor_providers { + local_var_req_builder = + local_var_req_builder.query(&[("twoFactorProviders", ¶m_value.to_string())]); + } + if let Some(ref param_value) = expiration_date { + local_var_req_builder = + local_var_req_builder.query(&[("expirationDate", ¶m_value.to_string())]); + } + if let Some(ref param_value) = creation_date { + local_var_req_builder = + local_var_req_builder.query(&[("creationDate", ¶m_value.to_string())]); + } + if let Some(ref param_value) = revision_date { + local_var_req_builder = + local_var_req_builder.query(&[("revisionDate", ¶m_value.to_string())]); + } + if let Some(ref param_value) = max_autoscale_seats { + local_var_req_builder = + local_var_req_builder.query(&[("maxAutoscaleSeats", ¶m_value.to_string())]); + } + if let Some(ref param_value) = owners_notified_of_autoscaling { + local_var_req_builder = local_var_req_builder + .query(&[("ownersNotifiedOfAutoscaling", ¶m_value.to_string())]); + } + if let Some(ref param_value) = status { + local_var_req_builder = + local_var_req_builder.query(&[("status", ¶m_value.to_string())]); + } + if let Some(ref param_value) = use_password_manager { + local_var_req_builder = + local_var_req_builder.query(&[("usePasswordManager", ¶m_value.to_string())]); + } + if let Some(ref param_value) = sm_seats { + local_var_req_builder = + local_var_req_builder.query(&[("smSeats", ¶m_value.to_string())]); + } + if let Some(ref param_value) = sm_service_accounts { + local_var_req_builder = + local_var_req_builder.query(&[("smServiceAccounts", ¶m_value.to_string())]); + } + if let Some(ref param_value) = max_autoscale_sm_seats { + local_var_req_builder = + local_var_req_builder.query(&[("maxAutoscaleSmSeats", ¶m_value.to_string())]); + } + if let Some(ref param_value) = max_autoscale_sm_service_accounts { + local_var_req_builder = local_var_req_builder + .query(&[("maxAutoscaleSmServiceAccounts", ¶m_value.to_string())]); + } + if let Some(ref param_value) = limit_collection_creation { + local_var_req_builder = local_var_req_builder + .query(&[("limitCollectionCreation", ¶m_value.to_string())]); + } + if let Some(ref param_value) = limit_collection_deletion { + local_var_req_builder = local_var_req_builder + .query(&[("limitCollectionDeletion", ¶m_value.to_string())]); + } + if let Some(ref param_value) = allow_admin_access_to_all_collection_items { + local_var_req_builder = local_var_req_builder.query(&[( + "allowAdminAccessToAllCollectionItems", + ¶m_value.to_string(), + )]); + } + if let Some(ref param_value) = limit_item_deletion { + local_var_req_builder = + local_var_req_builder.query(&[("limitItemDeletion", ¶m_value.to_string())]); + } + if let Some(ref param_value) = use_risk_insights { + local_var_req_builder = + local_var_req_builder.query(&[("useRiskInsights", ¶m_value.to_string())]); + } + if let Some(ref param_value) = use_organization_domains { + local_var_req_builder = local_var_req_builder + .query(&[("useOrganizationDomains", ¶m_value.to_string())]); + } + if let Some(ref param_value) = use_admin_sponsored_families { + local_var_req_builder = local_var_req_builder + .query(&[("useAdminSponsoredFamilies", ¶m_value.to_string())]); + } + if let Some(ref param_value) = sync_seats { + local_var_req_builder = + local_var_req_builder.query(&[("syncSeats", ¶m_value.to_string())]); + } + if let Some(ref param_value) = use_automatic_user_confirmation { + local_var_req_builder = local_var_req_builder + .query(&[("useAutomaticUserConfirmation", ¶m_value.to_string())]); + } + if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { + local_var_req_builder = local_var_req_builder + .header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); + } + if let Some(ref local_var_token) = local_var_configuration.oauth_access_token { + local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned()); + }; + + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = local_var_client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; + + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + Ok(()) + } else { + let local_var_entity: Option = + serde_json::from_str(&local_var_content).ok(); + let local_var_error = ResponseContent { + status: local_var_status, + content: local_var_content, + entity: local_var_entity, + }; + Err(Error::ResponseError(local_var_error)) + } + } +} + +/// struct for typed errors of method [`SelfHostedBillingApi::get_metadata`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum GetMetadataError { + UnknownValue(serde_json::Value), +} diff --git a/crates/bitwarden-api-api/src/models/event_type.rs b/crates/bitwarden-api-api/src/models/event_type.rs index 603294c02..471eb6a6e 100644 --- a/crates/bitwarden-api-api/src/models/event_type.rs +++ b/crates/bitwarden-api-api/src/models/event_type.rs @@ -71,6 +71,7 @@ pub enum EventType { OrganizationUser_RejectedAuthRequest = 1514, OrganizationUser_Deleted = 1515, OrganizationUser_Left = 1516, + OrganizationUser_AutomaticallyConfirmed = 1517, Organization_Updated = 1600, Organization_PurgedVault = 1601, Organization_ClientExportedVault = 1602, @@ -176,6 +177,7 @@ impl std::fmt::Display for EventType { Self::OrganizationUser_RejectedAuthRequest => "1514", Self::OrganizationUser_Deleted => "1515", Self::OrganizationUser_Left => "1516", + Self::OrganizationUser_AutomaticallyConfirmed => "1517", Self::Organization_Updated => "1600", Self::Organization_PurgedVault => "1601", Self::Organization_ClientExportedVault => "1602", diff --git a/crates/bitwarden-api-api/src/models/policy_detail_response_model.rs b/crates/bitwarden-api-api/src/models/policy_detail_response_model.rs index 2a9e97a6f..66a7dc8c4 100644 --- a/crates/bitwarden-api-api/src/models/policy_detail_response_model.rs +++ b/crates/bitwarden-api-api/src/models/policy_detail_response_model.rs @@ -46,6 +46,12 @@ pub struct PolicyDetailResponseModel { skip_serializing_if = "Option::is_none" )] pub enabled: Option, + #[serde( + rename = "revisionDate", + alias = "RevisionDate", + skip_serializing_if = "Option::is_none" + )] + pub revision_date: Option, /// Indicates whether the Policy can be enabled/disabled #[serde( rename = "canToggleState", @@ -64,6 +70,7 @@ impl PolicyDetailResponseModel { r#type: None, data: None, enabled: None, + revision_date: None, can_toggle_state: None, } } diff --git a/crates/bitwarden-api-api/src/models/policy_response_model.rs b/crates/bitwarden-api-api/src/models/policy_response_model.rs index 35b8a9c0a..968499fb4 100644 --- a/crates/bitwarden-api-api/src/models/policy_response_model.rs +++ b/crates/bitwarden-api-api/src/models/policy_response_model.rs @@ -46,6 +46,12 @@ pub struct PolicyResponseModel { skip_serializing_if = "Option::is_none" )] pub enabled: Option, + #[serde( + rename = "revisionDate", + alias = "RevisionDate", + skip_serializing_if = "Option::is_none" + )] + pub revision_date: Option, } impl PolicyResponseModel { @@ -57,6 +63,7 @@ impl PolicyResponseModel { r#type: None, data: None, enabled: None, + revision_date: None, } } } diff --git a/crates/bitwarden-api-api/src/models/policy_type.rs b/crates/bitwarden-api-api/src/models/policy_type.rs index 6a11eedd0..9d6c79297 100644 --- a/crates/bitwarden-api-api/src/models/policy_type.rs +++ b/crates/bitwarden-api-api/src/models/policy_type.rs @@ -37,6 +37,7 @@ pub enum PolicyType { UriMatchDefaults = 16, AutotypeDefaultSetting = 17, AutomaticUserConfirmation = 18, + BlockClaimedDomainAccountCreation = 19, } impl std::fmt::Display for PolicyType { @@ -64,6 +65,7 @@ impl std::fmt::Display for PolicyType { Self::UriMatchDefaults => "16", Self::AutotypeDefaultSetting => "17", Self::AutomaticUserConfirmation => "18", + Self::BlockClaimedDomainAccountCreation => "19", } ) } diff --git a/crates/bitwarden-api-identity/.openapi-generator/FILES b/crates/bitwarden-api-identity/.openapi-generator/FILES index ec6263894..6ac78cfb0 100644 --- a/crates/bitwarden-api-identity/.openapi-generator/FILES +++ b/crates/bitwarden-api-identity/.openapi-generator/FILES @@ -8,11 +8,12 @@ src/lib.rs src/models/assertion_options.rs src/models/authentication_extensions_client_inputs.rs src/models/authenticator_transport.rs +src/models/kdf_settings.rs src/models/kdf_type.rs src/models/keys_request_model.rs src/models/mod.rs -src/models/prelogin_request_model.rs -src/models/prelogin_response_model.rs +src/models/password_prelogin_request_model.rs +src/models/password_prelogin_response_model.rs src/models/product_tier_type.rs src/models/product_type.rs src/models/public_key_credential_descriptor.rs diff --git a/crates/bitwarden-api-identity/README.md b/crates/bitwarden-api-identity/README.md index 4f5cacd3f..59fbb7bd8 100644 --- a/crates/bitwarden-api-identity/README.md +++ b/crates/bitwarden-api-identity/README.md @@ -12,7 +12,7 @@ client. - API version: v1 - Package version: 1.0.0 - Server Git commit: - [`1274fe656234f06507f9af73927fa9ff7982438b`](https://github.com/bitwarden/server/commit/1274fe656234f06507f9af73927fa9ff7982438b) + [`fdfec0ac4df89b33896aadf532e95404f01747c0`](https://github.com/bitwarden/server/commit/fdfec0ac4df89b33896aadf532e95404f01747c0) - Generator version: 7.15.0 - Build package: `org.openapitools.codegen.languages.RustClientCodegen` @@ -32,7 +32,7 @@ All URIs are relative to *https://identity.bitwarden.com* | Class | Method | HTTP request | Description | | ------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | ----------- | | _AccountsApi_ | [**get_web_authn_login_assertion_options**](docs/AccountsApi.md#accounts_get_web_authn_login_assertion_options) | **GET** /accounts/webauthn/assertion-options | -| _AccountsApi_ | [**post_prelogin**](docs/AccountsApi.md#accounts_post_prelogin) | **POST** /accounts/prelogin | +| _AccountsApi_ | [**post_password_prelogin**](docs/AccountsApi.md#accounts_post_password_prelogin) | **POST** /accounts/prelogin/password | | _AccountsApi_ | [**post_register_finish**](docs/AccountsApi.md#accounts_post_register_finish) | **POST** /accounts/register/finish | | _AccountsApi_ | [**post_register_send_verification_email**](docs/AccountsApi.md#accounts_post_register_send_verification_email) | **POST** /accounts/register/send-verification-email | | _AccountsApi_ | [**post_register_verification_email_clicked**](docs/AccountsApi.md#accounts_post_register_verification_email_clicked) | **POST** /accounts/register/verification-email-clicked | @@ -49,10 +49,11 @@ All URIs are relative to *https://identity.bitwarden.com* - [AssertionOptions](docs/AssertionOptions.md) - [AuthenticationExtensionsClientInputs](docs/AuthenticationExtensionsClientInputs.md) - [AuthenticatorTransport](docs/AuthenticatorTransport.md) +- [KdfSettings](docs/KdfSettings.md) - [KdfType](docs/KdfType.md) - [KeysRequestModel](docs/KeysRequestModel.md) -- [PreloginRequestModel](docs/PreloginRequestModel.md) -- [PreloginResponseModel](docs/PreloginResponseModel.md) +- [PasswordPreloginRequestModel](docs/PasswordPreloginRequestModel.md) +- [PasswordPreloginResponseModel](docs/PasswordPreloginResponseModel.md) - [ProductTierType](docs/ProductTierType.md) - [ProductType](docs/ProductType.md) - [PublicKeyCredentialDescriptor](docs/PublicKeyCredentialDescriptor.md) diff --git a/crates/bitwarden-api-identity/src/apis/accounts_api.rs b/crates/bitwarden-api-identity/src/apis/accounts_api.rs index 031620804..8ea0f0d5e 100644 --- a/crates/bitwarden-api-identity/src/apis/accounts_api.rs +++ b/crates/bitwarden-api-identity/src/apis/accounts_api.rs @@ -34,11 +34,11 @@ pub trait AccountsApi: Send + Sync { Error, >; - /// POST /accounts/prelogin - async fn post_prelogin<'a>( + /// POST /accounts/prelogin/password + async fn post_password_prelogin<'a>( &self, - prelogin_request_model: Option, - ) -> Result>; + password_prelogin_request_model: Option, + ) -> Result>; /// POST /accounts/register/finish async fn post_register_finish<'a>( @@ -144,15 +144,18 @@ impl AccountsApi for AccountsApiClient { } } - async fn post_prelogin<'a>( + async fn post_password_prelogin<'a>( &self, - prelogin_request_model: Option, - ) -> Result> { + password_prelogin_request_model: Option, + ) -> Result> { let local_var_configuration = &self.configuration; let local_var_client = &local_var_configuration.client; - let local_var_uri_str = format!("{}/accounts/prelogin", local_var_configuration.base_path); + let local_var_uri_str = format!( + "{}/accounts/prelogin/password", + local_var_configuration.base_path + ); let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); @@ -160,7 +163,7 @@ impl AccountsApi for AccountsApiClient { local_var_req_builder = local_var_req_builder .header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); } - local_var_req_builder = local_var_req_builder.json(&prelogin_request_model); + local_var_req_builder = local_var_req_builder.json(&password_prelogin_request_model); let local_var_req = local_var_req_builder.build()?; let local_var_resp = local_var_client.execute(local_var_req).await?; @@ -179,17 +182,17 @@ impl AccountsApi for AccountsApiClient { ContentType::Json => serde_json::from_str(&local_var_content).map_err(Error::from), ContentType::Text => { return Err(Error::from(serde_json::Error::custom( - "Received `text/plain` content type response that cannot be converted to `models::PreloginResponseModel`", + "Received `text/plain` content type response that cannot be converted to `models::PasswordPreloginResponseModel`", ))); } ContentType::Unsupported(local_var_unknown_type) => { return Err(Error::from(serde_json::Error::custom(format!( - "Received `{local_var_unknown_type}` content type response that cannot be converted to `models::PreloginResponseModel`" + "Received `{local_var_unknown_type}` content type response that cannot be converted to `models::PasswordPreloginResponseModel`" )))); } } } else { - let local_var_entity: Option = + let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); let local_var_error = ResponseContent { status: local_var_status, @@ -398,10 +401,10 @@ impl AccountsApi for AccountsApiClient { pub enum GetWebAuthnLoginAssertionOptionsError { UnknownValue(serde_json::Value), } -/// struct for typed errors of method [`AccountsApi::post_prelogin`] +/// struct for typed errors of method [`AccountsApi::post_password_prelogin`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] -pub enum PostPreloginError { +pub enum PostPasswordPreloginError { UnknownValue(serde_json::Value), } /// struct for typed errors of method [`AccountsApi::post_register_finish`] diff --git a/crates/bitwarden-api-identity/src/models/kdf_settings.rs b/crates/bitwarden-api-identity/src/models/kdf_settings.rs new file mode 100644 index 000000000..441f30a4d --- /dev/null +++ b/crates/bitwarden-api-identity/src/models/kdf_settings.rs @@ -0,0 +1,44 @@ +/* + * Bitwarden Identity + * + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v1 + * + * Generated by: https://openapi-generator.tech + */ + +use serde::{Deserialize, Serialize}; + +use crate::models; + +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct KdfSettings { + #[serde(rename = "kdfType", alias = "KdfType")] + pub kdf_type: models::KdfType, + #[serde(rename = "iterations", alias = "Iterations")] + pub iterations: i32, + #[serde( + rename = "memory", + alias = "Memory", + skip_serializing_if = "Option::is_none" + )] + pub memory: Option, + #[serde( + rename = "parallelism", + alias = "Parallelism", + skip_serializing_if = "Option::is_none" + )] + pub parallelism: Option, +} + +impl KdfSettings { + pub fn new(kdf_type: models::KdfType, iterations: i32) -> KdfSettings { + KdfSettings { + kdf_type, + iterations, + memory: None, + parallelism: None, + } + } +} diff --git a/crates/bitwarden-api-identity/src/models/mod.rs b/crates/bitwarden-api-identity/src/models/mod.rs index b7f4fbccc..500492f30 100644 --- a/crates/bitwarden-api-identity/src/models/mod.rs +++ b/crates/bitwarden-api-identity/src/models/mod.rs @@ -4,14 +4,16 @@ pub mod authentication_extensions_client_inputs; pub use self::authentication_extensions_client_inputs::AuthenticationExtensionsClientInputs; pub mod authenticator_transport; pub use self::authenticator_transport::AuthenticatorTransport; +pub mod kdf_settings; +pub use self::kdf_settings::KdfSettings; pub mod kdf_type; pub use self::kdf_type::KdfType; pub mod keys_request_model; pub use self::keys_request_model::KeysRequestModel; -pub mod prelogin_request_model; -pub use self::prelogin_request_model::PreloginRequestModel; -pub mod prelogin_response_model; -pub use self::prelogin_response_model::PreloginResponseModel; +pub mod password_prelogin_request_model; +pub use self::password_prelogin_request_model::PasswordPreloginRequestModel; +pub mod password_prelogin_response_model; +pub use self::password_prelogin_response_model::PasswordPreloginResponseModel; pub mod product_tier_type; pub use self::product_tier_type::ProductTierType; pub mod product_type; diff --git a/crates/bitwarden-api-identity/src/models/prelogin_request_model.rs b/crates/bitwarden-api-identity/src/models/password_prelogin_request_model.rs similarity index 70% rename from crates/bitwarden-api-identity/src/models/prelogin_request_model.rs rename to crates/bitwarden-api-identity/src/models/password_prelogin_request_model.rs index e02fe15bf..9a94823a6 100644 --- a/crates/bitwarden-api-identity/src/models/prelogin_request_model.rs +++ b/crates/bitwarden-api-identity/src/models/password_prelogin_request_model.rs @@ -13,13 +13,13 @@ use serde::{Deserialize, Serialize}; use crate::models; #[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] -pub struct PreloginRequestModel { +pub struct PasswordPreloginRequestModel { #[serde(rename = "email", alias = "Email")] pub email: String, } -impl PreloginRequestModel { - pub fn new(email: String) -> PreloginRequestModel { - PreloginRequestModel { email } +impl PasswordPreloginRequestModel { + pub fn new(email: String) -> PasswordPreloginRequestModel { + PasswordPreloginRequestModel { email } } } diff --git a/crates/bitwarden-api-identity/src/models/prelogin_response_model.rs b/crates/bitwarden-api-identity/src/models/password_prelogin_response_model.rs similarity index 66% rename from crates/bitwarden-api-identity/src/models/prelogin_response_model.rs rename to crates/bitwarden-api-identity/src/models/password_prelogin_response_model.rs index 33d6abacc..74f9bc79f 100644 --- a/crates/bitwarden-api-identity/src/models/prelogin_response_model.rs +++ b/crates/bitwarden-api-identity/src/models/password_prelogin_response_model.rs @@ -13,7 +13,7 @@ use serde::{Deserialize, Serialize}; use crate::models; #[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] -pub struct PreloginResponseModel { +pub struct PasswordPreloginResponseModel { #[serde(rename = "kdf", alias = "Kdf", skip_serializing_if = "Option::is_none")] pub kdf: Option, #[serde( @@ -34,15 +34,29 @@ pub struct PreloginResponseModel { skip_serializing_if = "Option::is_none" )] pub kdf_parallelism: Option, + #[serde( + rename = "kdfSettings", + alias = "KdfSettings", + skip_serializing_if = "Option::is_none" + )] + pub kdf_settings: Option>, + #[serde( + rename = "salt", + alias = "Salt", + skip_serializing_if = "Option::is_none" + )] + pub salt: Option, } -impl PreloginResponseModel { - pub fn new() -> PreloginResponseModel { - PreloginResponseModel { +impl PasswordPreloginResponseModel { + pub fn new() -> PasswordPreloginResponseModel { + PasswordPreloginResponseModel { kdf: None, kdf_iterations: None, kdf_memory: None, kdf_parallelism: None, + kdf_settings: None, + salt: None, } } } diff --git a/crates/bitwarden-api-identity/src/models/register_send_verification_email_request_model.rs b/crates/bitwarden-api-identity/src/models/register_send_verification_email_request_model.rs index 05e1d811b..82f09a741 100644 --- a/crates/bitwarden-api-identity/src/models/register_send_verification_email_request_model.rs +++ b/crates/bitwarden-api-identity/src/models/register_send_verification_email_request_model.rs @@ -28,6 +28,12 @@ pub struct RegisterSendVerificationEmailRequestModel { skip_serializing_if = "Option::is_none" )] pub receive_marketing_emails: Option, + #[serde( + rename = "fromMarketing", + alias = "FromMarketing", + skip_serializing_if = "Option::is_none" + )] + pub from_marketing: Option, } impl RegisterSendVerificationEmailRequestModel { @@ -36,6 +42,7 @@ impl RegisterSendVerificationEmailRequestModel { name: None, email, receive_marketing_emails: None, + from_marketing: None, } } } diff --git a/crates/bitwarden-api-identity/src/models/trial_send_verification_email_request_model.rs b/crates/bitwarden-api-identity/src/models/trial_send_verification_email_request_model.rs index e550000a2..a385df766 100644 --- a/crates/bitwarden-api-identity/src/models/trial_send_verification_email_request_model.rs +++ b/crates/bitwarden-api-identity/src/models/trial_send_verification_email_request_model.rs @@ -28,6 +28,12 @@ pub struct TrialSendVerificationEmailRequestModel { skip_serializing_if = "Option::is_none" )] pub receive_marketing_emails: Option, + #[serde( + rename = "fromMarketing", + alias = "FromMarketing", + skip_serializing_if = "Option::is_none" + )] + pub from_marketing: Option, #[serde( rename = "productTier", alias = "ProductTier", @@ -54,6 +60,7 @@ impl TrialSendVerificationEmailRequestModel { name: None, email, receive_marketing_emails: None, + from_marketing: None, product_tier: None, products: None, trial_length: None, From b2e75bf5e67953d79fc362cc25c45f66b035a5ec Mon Sep 17 00:00:00 2001 From: "bw-ghapp[bot]" <178206702+bw-ghapp[bot]@users.noreply.github.com> Date: Mon, 1 Dec 2025 04:26:51 +0000 Subject: [PATCH 2/4] Update API bindings - 8a67aafbe5e01a738b479ebb82185fbc947866f8 --- crates/bitwarden-api-api/README.md | 4 +-- .../src/apis/organizations_api.rs | 34 +++++-------------- .../organization_update_request_model.rs | 24 +++++-------- crates/bitwarden-api-identity/README.md | 2 +- 4 files changed, 20 insertions(+), 44 deletions(-) diff --git a/crates/bitwarden-api-api/README.md b/crates/bitwarden-api-api/README.md index 7d2b411cb..0c5ec148f 100644 --- a/crates/bitwarden-api-api/README.md +++ b/crates/bitwarden-api-api/README.md @@ -12,7 +12,7 @@ client. - API version: latest - Package version: 1.0.0 - Server Git commit: - [`fdfec0ac4df89b33896aadf532e95404f01747c0`](https://github.com/bitwarden/server/commit/fdfec0ac4df89b33896aadf532e95404f01747c0) + [`8a67aafbe5e01a738b479ebb82185fbc947866f8`](https://github.com/bitwarden/server/commit/8a67aafbe5e01a738b479ebb82185fbc947866f8) - Generator version: 7.15.0 - Build package: `org.openapitools.codegen.languages.RustClientCodegen` @@ -352,7 +352,7 @@ All URIs are relative to *https://api.bitwarden.com* | _OrganizationsApi_ | [**post_subscribe_secrets_manager**](docs/OrganizationsApi.md#organizations_post_subscribe_secrets_manager) | **POST** /organizations/{id}/subscribe-secrets-manager | | _OrganizationsApi_ | [**post_subscription**](docs/OrganizationsApi.md#organizations_post_subscription) | **POST** /organizations/{id}/subscription | | _OrganizationsApi_ | [**post_upgrade**](docs/OrganizationsApi.md#organizations_post_upgrade) | **POST** /organizations/{id}/upgrade | -| _OrganizationsApi_ | [**put**](docs/OrganizationsApi.md#organizations_put) | **PUT** /organizations/{id} | +| _OrganizationsApi_ | [**put**](docs/OrganizationsApi.md#organizations_put) | **PUT** /organizations/{organizationId} | | _OrganizationsApi_ | [**put_collection_management**](docs/OrganizationsApi.md#organizations_put_collection_management) | **PUT** /organizations/{id}/collection-management | | _OrganizationsApi_ | [**put_tax_info**](docs/OrganizationsApi.md#organizations_put_tax_info) | **PUT** /organizations/{id}/tax | | _OrganizationsApi_ | [**rotate_api_key**](docs/OrganizationsApi.md#organizations_rotate_api_key) | **POST** /organizations/{id}/rotate-api-key | diff --git a/crates/bitwarden-api-api/src/apis/organizations_api.rs b/crates/bitwarden-api-api/src/apis/organizations_api.rs index 4ba86c00e..1838016fd 100644 --- a/crates/bitwarden-api-api/src/apis/organizations_api.rs +++ b/crates/bitwarden-api-api/src/apis/organizations_api.rs @@ -199,12 +199,12 @@ pub trait OrganizationsApi: Send + Sync { organization_upgrade_request_model: Option, ) -> Result>; - /// PUT /organizations/{id} + /// PUT /organizations/{organizationId} async fn put<'a>( &self, - id: &'a str, + organization_id: uuid::Uuid, organization_update_request_model: Option, - ) -> Result>; + ) -> Result<(), Error>; /// PUT /organizations/{id}/collection-management async fn put_collection_management<'a>( @@ -1796,17 +1796,17 @@ impl OrganizationsApi for OrganizationsApiClient { async fn put<'a>( &self, - id: &'a str, + organization_id: uuid::Uuid, organization_update_request_model: Option, - ) -> Result> { + ) -> Result<(), Error> { let local_var_configuration = &self.configuration; let local_var_client = &local_var_configuration.client; let local_var_uri_str = format!( - "{}/organizations/{id}", + "{}/organizations/{organizationId}", local_var_configuration.base_path, - id = crate::apis::urlencode(id) + organizationId = organization_id ); let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str()); @@ -1824,28 +1824,10 @@ impl OrganizationsApi for OrganizationsApiClient { let local_var_resp = local_var_client.execute(local_var_req).await?; let local_var_status = local_var_resp.status(); - let local_var_content_type = local_var_resp - .headers() - .get("content-type") - .and_then(|v| v.to_str().ok()) - .unwrap_or("application/octet-stream"); - let local_var_content_type = super::ContentType::from(local_var_content_type); let local_var_content = local_var_resp.text().await?; if !local_var_status.is_client_error() && !local_var_status.is_server_error() { - match local_var_content_type { - ContentType::Json => serde_json::from_str(&local_var_content).map_err(Error::from), - ContentType::Text => { - return Err(Error::from(serde_json::Error::custom( - "Received `text/plain` content type response that cannot be converted to `models::OrganizationResponseModel`", - ))); - } - ContentType::Unsupported(local_var_unknown_type) => { - return Err(Error::from(serde_json::Error::custom(format!( - "Received `{local_var_unknown_type}` content type response that cannot be converted to `models::OrganizationResponseModel`" - )))); - } - } + Ok(()) } else { let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); let local_var_error = ResponseContent { diff --git a/crates/bitwarden-api-api/src/models/organization_update_request_model.rs b/crates/bitwarden-api-api/src/models/organization_update_request_model.rs index aeddaf481..20428de94 100644 --- a/crates/bitwarden-api-api/src/models/organization_update_request_model.rs +++ b/crates/bitwarden-api-api/src/models/organization_update_request_model.rs @@ -14,22 +14,18 @@ use crate::models; #[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct OrganizationUpdateRequestModel { - #[serde(rename = "name", alias = "Name")] - pub name: String, #[serde( - rename = "businessName", - alias = "BusinessName", + rename = "name", + alias = "Name", skip_serializing_if = "Option::is_none" )] - pub business_name: Option, - #[serde(rename = "billingEmail", alias = "BillingEmail")] - pub billing_email: String, + pub name: Option, #[serde( - rename = "permissions", - alias = "Permissions", + rename = "billingEmail", + alias = "BillingEmail", skip_serializing_if = "Option::is_none" )] - pub permissions: Option>, + pub billing_email: Option, #[serde( rename = "keys", alias = "Keys", @@ -39,12 +35,10 @@ pub struct OrganizationUpdateRequestModel { } impl OrganizationUpdateRequestModel { - pub fn new(name: String, billing_email: String) -> OrganizationUpdateRequestModel { + pub fn new() -> OrganizationUpdateRequestModel { OrganizationUpdateRequestModel { - name, - business_name: None, - billing_email, - permissions: None, + name: None, + billing_email: None, keys: None, } } diff --git a/crates/bitwarden-api-identity/README.md b/crates/bitwarden-api-identity/README.md index 59fbb7bd8..c308d25e5 100644 --- a/crates/bitwarden-api-identity/README.md +++ b/crates/bitwarden-api-identity/README.md @@ -12,7 +12,7 @@ client. - API version: v1 - Package version: 1.0.0 - Server Git commit: - [`fdfec0ac4df89b33896aadf532e95404f01747c0`](https://github.com/bitwarden/server/commit/fdfec0ac4df89b33896aadf532e95404f01747c0) + [`8a67aafbe5e01a738b479ebb82185fbc947866f8`](https://github.com/bitwarden/server/commit/8a67aafbe5e01a738b479ebb82185fbc947866f8) - Generator version: 7.15.0 - Build package: `org.openapitools.codegen.languages.RustClientCodegen` From 43186e46730b6060700995c7ea3f326e2666e9b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garci=CC=81a?= Date: Wed, 3 Dec 2025 15:05:48 +0100 Subject: [PATCH 3/4] add missing policy type --- crates/bitwarden-core/src/admin_console/policy.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/crates/bitwarden-core/src/admin_console/policy.rs b/crates/bitwarden-core/src/admin_console/policy.rs index b17158d8f..3d0ebd7b8 100644 --- a/crates/bitwarden-core/src/admin_console/policy.rs +++ b/crates/bitwarden-core/src/admin_console/policy.rs @@ -49,8 +49,9 @@ pub enum PolicyType { RemoveUnlockWithPin = 14, RestrictedItemTypesPolicy = 15, UriMatchDefaults = 16, - AutomaticUserConfirmation = 18, AutotypeDefaultSetting = 17, + AutomaticUserConfirmation = 18, + BlockClaimedDomainAccountCreation = 19, } impl TryFrom for Policy { @@ -111,6 +112,9 @@ impl From for PolicyType { bitwarden_api_api::models::PolicyType::AutomaticUserConfirmation => { PolicyType::AutomaticUserConfirmation } + bitwarden_api_api::models::PolicyType::BlockClaimedDomainAccountCreation => { + PolicyType::BlockClaimedDomainAccountCreation + } } } } From 5635837429226a8d8090fbdccbcc0d5a0166d17e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garci=CC=81a?= Date: Wed, 3 Dec 2025 15:24:35 +0100 Subject: [PATCH 4/4] Fix prelogin rename --- crates/bitwarden-core/src/auth/login/prelogin.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/crates/bitwarden-core/src/auth/login/prelogin.rs b/crates/bitwarden-core/src/auth/login/prelogin.rs index 6c1539759..c835d45b6 100644 --- a/crates/bitwarden-core/src/auth/login/prelogin.rs +++ b/crates/bitwarden-core/src/auth/login/prelogin.rs @@ -1,4 +1,4 @@ -use bitwarden_api_identity::models::{PreloginRequestModel, PreloginResponseModel}; +use bitwarden_api_identity::models::{PasswordPreloginRequestModel, PasswordPreloginResponseModel}; use bitwarden_crypto::Kdf; use thiserror::Error; @@ -14,19 +14,19 @@ pub enum PreloginError { } pub(crate) async fn prelogin(client: &Client, email: String) -> Result { - let request_model = PreloginRequestModel::new(email); + let request_model = PasswordPreloginRequestModel::new(email); let config = client.internal.get_api_configurations().await; let result = config .identity_client .accounts_api() - .post_prelogin(Some(request_model)) + .post_password_prelogin(Some(request_model)) .await .map_err(ApiError::from)?; Ok(parse_prelogin(result)?) } -fn parse_prelogin(response: PreloginResponseModel) -> Result { +fn parse_prelogin(response: PasswordPreloginResponseModel) -> Result { use std::num::NonZeroU32; use bitwarden_api_identity::models::KdfType;