Skip to main content

bitwarden_api_api/apis/
self_hosted_account_billing_v_next_api.rs

1/*
2 * Bitwarden Internal API
3 *
4 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5 *
6 * The version of the OpenAPI document: latest
7 *
8 * Generated by: https://openapi-generator.tech
9 */
10
11use std::sync::Arc;
12
13use async_trait::async_trait;
14#[cfg(feature = "mockall")]
15use mockall::automock;
16use reqwest;
17use serde::{Deserialize, Serialize, de::Error as _};
18
19use super::{Error, configuration};
20use crate::{
21    apis::{AuthRequired, ContentType, ResponseContent},
22    models,
23};
24
25#[cfg_attr(feature = "mockall", automock)]
26#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
27#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
28pub trait SelfHostedAccountBillingVNextApi: Send + Sync {
29    /// POST /account/billing/vnext/self-host/license
30    async fn upload_license<'a>(
31        &self,
32        email: &'a str,
33        security_stamp: &'a str,
34        api_key: &'a str,
35        license: std::path::PathBuf,
36        id: Option<uuid::Uuid>,
37        name: Option<&'a str>,
38        email_verified: Option<bool>,
39        master_password: Option<&'a str>,
40        master_password_hint: Option<&'a str>,
41        culture: Option<&'a str>,
42        two_factor_providers: Option<&'a str>,
43        two_factor_recovery_code: Option<&'a str>,
44        equivalent_domains: Option<&'a str>,
45        excluded_global_equivalent_domains: Option<&'a str>,
46        account_revision_date: Option<String>,
47        key: Option<&'a str>,
48        public_key: Option<&'a str>,
49        private_key: Option<&'a str>,
50        signed_public_key: Option<&'a str>,
51        security_version: Option<i32>,
52        security_state: Option<&'a str>,
53        premium: Option<bool>,
54        premium_expiration_date: Option<String>,
55        renewal_reminder_date: Option<String>,
56        storage: Option<i64>,
57        max_storage_gb: Option<i32>,
58        gateway: Option<models::GatewayType>,
59        gateway_customer_id: Option<&'a str>,
60        gateway_subscription_id: Option<&'a str>,
61        reference_data: Option<&'a str>,
62        license_key: Option<&'a str>,
63        kdf: Option<models::KdfType>,
64        kdf_iterations: Option<i32>,
65        kdf_memory: Option<i32>,
66        kdf_parallelism: Option<i32>,
67        creation_date: Option<String>,
68        revision_date: Option<String>,
69        force_password_reset: Option<bool>,
70        uses_key_connector: Option<bool>,
71        failed_login_count: Option<i32>,
72        last_failed_login_date: Option<String>,
73        avatar_color: Option<&'a str>,
74        last_password_change_date: Option<String>,
75        last_kdf_change_date: Option<String>,
76        last_key_rotation_date: Option<String>,
77        last_email_change_date: Option<String>,
78        verify_devices: Option<bool>,
79        v2_upgrade_token: Option<&'a str>,
80    ) -> Result<(), Error<UploadLicenseError>>;
81}
82
83pub struct SelfHostedAccountBillingVNextApiClient {
84    configuration: Arc<configuration::Configuration>,
85}
86
87impl SelfHostedAccountBillingVNextApiClient {
88    pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
89        Self { configuration }
90    }
91}
92
93#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
94#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
95impl SelfHostedAccountBillingVNextApi for SelfHostedAccountBillingVNextApiClient {
96    async fn upload_license<'a>(
97        &self,
98        email: &'a str,
99        security_stamp: &'a str,
100        api_key: &'a str,
101        license: std::path::PathBuf,
102        id: Option<uuid::Uuid>,
103        name: Option<&'a str>,
104        email_verified: Option<bool>,
105        master_password: Option<&'a str>,
106        master_password_hint: Option<&'a str>,
107        culture: Option<&'a str>,
108        two_factor_providers: Option<&'a str>,
109        two_factor_recovery_code: Option<&'a str>,
110        equivalent_domains: Option<&'a str>,
111        excluded_global_equivalent_domains: Option<&'a str>,
112        account_revision_date: Option<String>,
113        key: Option<&'a str>,
114        public_key: Option<&'a str>,
115        private_key: Option<&'a str>,
116        signed_public_key: Option<&'a str>,
117        security_version: Option<i32>,
118        security_state: Option<&'a str>,
119        premium: Option<bool>,
120        premium_expiration_date: Option<String>,
121        renewal_reminder_date: Option<String>,
122        storage: Option<i64>,
123        max_storage_gb: Option<i32>,
124        gateway: Option<models::GatewayType>,
125        gateway_customer_id: Option<&'a str>,
126        gateway_subscription_id: Option<&'a str>,
127        reference_data: Option<&'a str>,
128        license_key: Option<&'a str>,
129        kdf: Option<models::KdfType>,
130        kdf_iterations: Option<i32>,
131        kdf_memory: Option<i32>,
132        kdf_parallelism: Option<i32>,
133        creation_date: Option<String>,
134        revision_date: Option<String>,
135        force_password_reset: Option<bool>,
136        uses_key_connector: Option<bool>,
137        failed_login_count: Option<i32>,
138        last_failed_login_date: Option<String>,
139        avatar_color: Option<&'a str>,
140        last_password_change_date: Option<String>,
141        last_kdf_change_date: Option<String>,
142        last_key_rotation_date: Option<String>,
143        last_email_change_date: Option<String>,
144        verify_devices: Option<bool>,
145        v2_upgrade_token: Option<&'a str>,
146    ) -> Result<(), Error<UploadLicenseError>> {
147        let local_var_configuration = &self.configuration;
148
149        let local_var_client = &local_var_configuration.client;
150
151        let local_var_uri_str = format!(
152            "{}/account/billing/vnext/self-host/license",
153            local_var_configuration.base_path
154        );
155        let mut local_var_req_builder =
156            local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
157
158        if let Some(ref param_value) = id {
159            local_var_req_builder =
160                local_var_req_builder.query(&[("id", &param_value.to_string())]);
161        }
162        if let Some(ref param_value) = name {
163            local_var_req_builder =
164                local_var_req_builder.query(&[("name", &param_value.to_string())]);
165        }
166        local_var_req_builder = local_var_req_builder.query(&[("email", &email.to_string())]);
167        if let Some(ref param_value) = email_verified {
168            local_var_req_builder =
169                local_var_req_builder.query(&[("emailVerified", &param_value.to_string())]);
170        }
171        if let Some(ref param_value) = master_password {
172            local_var_req_builder =
173                local_var_req_builder.query(&[("masterPassword", &param_value.to_string())]);
174        }
175        if let Some(ref param_value) = master_password_hint {
176            local_var_req_builder =
177                local_var_req_builder.query(&[("masterPasswordHint", &param_value.to_string())]);
178        }
179        if let Some(ref param_value) = culture {
180            local_var_req_builder =
181                local_var_req_builder.query(&[("culture", &param_value.to_string())]);
182        }
183        local_var_req_builder =
184            local_var_req_builder.query(&[("securityStamp", &security_stamp.to_string())]);
185        if let Some(ref param_value) = two_factor_providers {
186            local_var_req_builder =
187                local_var_req_builder.query(&[("twoFactorProviders", &param_value.to_string())]);
188        }
189        if let Some(ref param_value) = two_factor_recovery_code {
190            local_var_req_builder =
191                local_var_req_builder.query(&[("twoFactorRecoveryCode", &param_value.to_string())]);
192        }
193        if let Some(ref param_value) = equivalent_domains {
194            local_var_req_builder =
195                local_var_req_builder.query(&[("equivalentDomains", &param_value.to_string())]);
196        }
197        if let Some(ref param_value) = excluded_global_equivalent_domains {
198            local_var_req_builder = local_var_req_builder
199                .query(&[("excludedGlobalEquivalentDomains", &param_value.to_string())]);
200        }
201        if let Some(ref param_value) = account_revision_date {
202            local_var_req_builder =
203                local_var_req_builder.query(&[("accountRevisionDate", &param_value.to_string())]);
204        }
205        if let Some(ref param_value) = key {
206            local_var_req_builder =
207                local_var_req_builder.query(&[("key", &param_value.to_string())]);
208        }
209        if let Some(ref param_value) = public_key {
210            local_var_req_builder =
211                local_var_req_builder.query(&[("publicKey", &param_value.to_string())]);
212        }
213        if let Some(ref param_value) = private_key {
214            local_var_req_builder =
215                local_var_req_builder.query(&[("privateKey", &param_value.to_string())]);
216        }
217        if let Some(ref param_value) = signed_public_key {
218            local_var_req_builder =
219                local_var_req_builder.query(&[("signedPublicKey", &param_value.to_string())]);
220        }
221        if let Some(ref param_value) = security_version {
222            local_var_req_builder =
223                local_var_req_builder.query(&[("securityVersion", &param_value.to_string())]);
224        }
225        if let Some(ref param_value) = security_state {
226            local_var_req_builder =
227                local_var_req_builder.query(&[("securityState", &param_value.to_string())]);
228        }
229        if let Some(ref param_value) = premium {
230            local_var_req_builder =
231                local_var_req_builder.query(&[("premium", &param_value.to_string())]);
232        }
233        if let Some(ref param_value) = premium_expiration_date {
234            local_var_req_builder =
235                local_var_req_builder.query(&[("premiumExpirationDate", &param_value.to_string())]);
236        }
237        if let Some(ref param_value) = renewal_reminder_date {
238            local_var_req_builder =
239                local_var_req_builder.query(&[("renewalReminderDate", &param_value.to_string())]);
240        }
241        if let Some(ref param_value) = storage {
242            local_var_req_builder =
243                local_var_req_builder.query(&[("storage", &param_value.to_string())]);
244        }
245        if let Some(ref param_value) = max_storage_gb {
246            local_var_req_builder =
247                local_var_req_builder.query(&[("maxStorageGb", &param_value.to_string())]);
248        }
249        if let Some(ref param_value) = gateway {
250            local_var_req_builder =
251                local_var_req_builder.query(&[("gateway", &param_value.to_string())]);
252        }
253        if let Some(ref param_value) = gateway_customer_id {
254            local_var_req_builder =
255                local_var_req_builder.query(&[("gatewayCustomerId", &param_value.to_string())]);
256        }
257        if let Some(ref param_value) = gateway_subscription_id {
258            local_var_req_builder =
259                local_var_req_builder.query(&[("gatewaySubscriptionId", &param_value.to_string())]);
260        }
261        if let Some(ref param_value) = reference_data {
262            local_var_req_builder =
263                local_var_req_builder.query(&[("referenceData", &param_value.to_string())]);
264        }
265        if let Some(ref param_value) = license_key {
266            local_var_req_builder =
267                local_var_req_builder.query(&[("licenseKey", &param_value.to_string())]);
268        }
269        local_var_req_builder = local_var_req_builder.query(&[("apiKey", &api_key.to_string())]);
270        if let Some(ref param_value) = kdf {
271            local_var_req_builder =
272                local_var_req_builder.query(&[("kdf", &param_value.to_string())]);
273        }
274        if let Some(ref param_value) = kdf_iterations {
275            local_var_req_builder =
276                local_var_req_builder.query(&[("kdfIterations", &param_value.to_string())]);
277        }
278        if let Some(ref param_value) = kdf_memory {
279            local_var_req_builder =
280                local_var_req_builder.query(&[("kdfMemory", &param_value.to_string())]);
281        }
282        if let Some(ref param_value) = kdf_parallelism {
283            local_var_req_builder =
284                local_var_req_builder.query(&[("kdfParallelism", &param_value.to_string())]);
285        }
286        if let Some(ref param_value) = creation_date {
287            local_var_req_builder =
288                local_var_req_builder.query(&[("creationDate", &param_value.to_string())]);
289        }
290        if let Some(ref param_value) = revision_date {
291            local_var_req_builder =
292                local_var_req_builder.query(&[("revisionDate", &param_value.to_string())]);
293        }
294        if let Some(ref param_value) = force_password_reset {
295            local_var_req_builder =
296                local_var_req_builder.query(&[("forcePasswordReset", &param_value.to_string())]);
297        }
298        if let Some(ref param_value) = uses_key_connector {
299            local_var_req_builder =
300                local_var_req_builder.query(&[("usesKeyConnector", &param_value.to_string())]);
301        }
302        if let Some(ref param_value) = failed_login_count {
303            local_var_req_builder =
304                local_var_req_builder.query(&[("failedLoginCount", &param_value.to_string())]);
305        }
306        if let Some(ref param_value) = last_failed_login_date {
307            local_var_req_builder =
308                local_var_req_builder.query(&[("lastFailedLoginDate", &param_value.to_string())]);
309        }
310        if let Some(ref param_value) = avatar_color {
311            local_var_req_builder =
312                local_var_req_builder.query(&[("avatarColor", &param_value.to_string())]);
313        }
314        if let Some(ref param_value) = last_password_change_date {
315            local_var_req_builder = local_var_req_builder
316                .query(&[("lastPasswordChangeDate", &param_value.to_string())]);
317        }
318        if let Some(ref param_value) = last_kdf_change_date {
319            local_var_req_builder =
320                local_var_req_builder.query(&[("lastKdfChangeDate", &param_value.to_string())]);
321        }
322        if let Some(ref param_value) = last_key_rotation_date {
323            local_var_req_builder =
324                local_var_req_builder.query(&[("lastKeyRotationDate", &param_value.to_string())]);
325        }
326        if let Some(ref param_value) = last_email_change_date {
327            local_var_req_builder =
328                local_var_req_builder.query(&[("lastEmailChangeDate", &param_value.to_string())]);
329        }
330        if let Some(ref param_value) = verify_devices {
331            local_var_req_builder =
332                local_var_req_builder.query(&[("verifyDevices", &param_value.to_string())]);
333        }
334        if let Some(ref param_value) = v2_upgrade_token {
335            local_var_req_builder =
336                local_var_req_builder.query(&[("v2UpgradeToken", &param_value.to_string())]);
337        }
338        local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
339        let mut local_var_form = reqwest::multipart::Form::new();
340        // TODO: support file upload for 'license' parameter
341        local_var_req_builder = local_var_req_builder.multipart(local_var_form);
342
343        let local_var_resp = local_var_req_builder.send().await?;
344
345        let local_var_status = local_var_resp.status();
346        let local_var_content = local_var_resp.text().await?;
347
348        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
349            Ok(())
350        } else {
351            let local_var_entity: Option<UploadLicenseError> =
352                serde_json::from_str(&local_var_content).ok();
353            let local_var_error = ResponseContent {
354                status: local_var_status,
355                content: local_var_content,
356                entity: local_var_entity,
357            };
358            Err(Error::ResponseError(local_var_error))
359        }
360    }
361}
362
363/// struct for typed errors of method [`SelfHostedAccountBillingVNextApi::upload_license`]
364#[derive(Debug, Clone, Serialize, Deserialize)]
365#[serde(untagged)]
366pub enum UploadLicenseError {
367    UnknownValue(serde_json::Value),
368}