bitwarden_api_api/apis/
self_hosted_account_billing_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::{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 SelfHostedAccountBillingApi: 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        premium: Option<bool>,
51        premium_expiration_date: Option<String>,
52        renewal_reminder_date: Option<String>,
53        storage: Option<i64>,
54        max_storage_gb: Option<i32>,
55        gateway: Option<models::GatewayType>,
56        gateway_customer_id: Option<&'a str>,
57        gateway_subscription_id: Option<&'a str>,
58        reference_data: Option<&'a str>,
59        license_key: Option<&'a str>,
60        kdf: Option<models::KdfType>,
61        kdf_iterations: Option<i32>,
62        kdf_memory: Option<i32>,
63        kdf_parallelism: Option<i32>,
64        creation_date: Option<String>,
65        revision_date: Option<String>,
66        force_password_reset: Option<bool>,
67        uses_key_connector: Option<bool>,
68        failed_login_count: Option<i32>,
69        last_failed_login_date: Option<String>,
70        avatar_color: Option<&'a str>,
71        last_password_change_date: Option<String>,
72        last_kdf_change_date: Option<String>,
73        last_key_rotation_date: Option<String>,
74        last_email_change_date: Option<String>,
75        verify_devices: Option<bool>,
76    ) -> Result<(), Error<UploadLicenseError>>;
77}
78
79pub struct SelfHostedAccountBillingApiClient {
80    configuration: Arc<configuration::Configuration>,
81}
82
83impl SelfHostedAccountBillingApiClient {
84    pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
85        Self { configuration }
86    }
87}
88
89#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
90#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
91impl SelfHostedAccountBillingApi for SelfHostedAccountBillingApiClient {
92    async fn upload_license<'a>(
93        &self,
94        email: &'a str,
95        security_stamp: &'a str,
96        api_key: &'a str,
97        license: std::path::PathBuf,
98        id: Option<uuid::Uuid>,
99        name: Option<&'a str>,
100        email_verified: Option<bool>,
101        master_password: Option<&'a str>,
102        master_password_hint: Option<&'a str>,
103        culture: Option<&'a str>,
104        two_factor_providers: Option<&'a str>,
105        two_factor_recovery_code: Option<&'a str>,
106        equivalent_domains: Option<&'a str>,
107        excluded_global_equivalent_domains: Option<&'a str>,
108        account_revision_date: Option<String>,
109        key: Option<&'a str>,
110        public_key: Option<&'a str>,
111        private_key: Option<&'a str>,
112        premium: Option<bool>,
113        premium_expiration_date: Option<String>,
114        renewal_reminder_date: Option<String>,
115        storage: Option<i64>,
116        max_storage_gb: Option<i32>,
117        gateway: Option<models::GatewayType>,
118        gateway_customer_id: Option<&'a str>,
119        gateway_subscription_id: Option<&'a str>,
120        reference_data: Option<&'a str>,
121        license_key: Option<&'a str>,
122        kdf: Option<models::KdfType>,
123        kdf_iterations: Option<i32>,
124        kdf_memory: Option<i32>,
125        kdf_parallelism: Option<i32>,
126        creation_date: Option<String>,
127        revision_date: Option<String>,
128        force_password_reset: Option<bool>,
129        uses_key_connector: Option<bool>,
130        failed_login_count: Option<i32>,
131        last_failed_login_date: Option<String>,
132        avatar_color: Option<&'a str>,
133        last_password_change_date: Option<String>,
134        last_kdf_change_date: Option<String>,
135        last_key_rotation_date: Option<String>,
136        last_email_change_date: Option<String>,
137        verify_devices: Option<bool>,
138    ) -> Result<(), Error<UploadLicenseError>> {
139        let local_var_configuration = &self.configuration;
140
141        let local_var_client = &local_var_configuration.client;
142
143        let local_var_uri_str = format!(
144            "{}/account/billing/vnext/self-host/license",
145            local_var_configuration.base_path
146        );
147        let mut local_var_req_builder =
148            local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
149
150        if let Some(ref param_value) = id {
151            local_var_req_builder =
152                local_var_req_builder.query(&[("id", &param_value.to_string())]);
153        }
154        if let Some(ref param_value) = name {
155            local_var_req_builder =
156                local_var_req_builder.query(&[("name", &param_value.to_string())]);
157        }
158        local_var_req_builder = local_var_req_builder.query(&[("email", &email.to_string())]);
159        if let Some(ref param_value) = email_verified {
160            local_var_req_builder =
161                local_var_req_builder.query(&[("emailVerified", &param_value.to_string())]);
162        }
163        if let Some(ref param_value) = master_password {
164            local_var_req_builder =
165                local_var_req_builder.query(&[("masterPassword", &param_value.to_string())]);
166        }
167        if let Some(ref param_value) = master_password_hint {
168            local_var_req_builder =
169                local_var_req_builder.query(&[("masterPasswordHint", &param_value.to_string())]);
170        }
171        if let Some(ref param_value) = culture {
172            local_var_req_builder =
173                local_var_req_builder.query(&[("culture", &param_value.to_string())]);
174        }
175        local_var_req_builder =
176            local_var_req_builder.query(&[("securityStamp", &security_stamp.to_string())]);
177        if let Some(ref param_value) = two_factor_providers {
178            local_var_req_builder =
179                local_var_req_builder.query(&[("twoFactorProviders", &param_value.to_string())]);
180        }
181        if let Some(ref param_value) = two_factor_recovery_code {
182            local_var_req_builder =
183                local_var_req_builder.query(&[("twoFactorRecoveryCode", &param_value.to_string())]);
184        }
185        if let Some(ref param_value) = equivalent_domains {
186            local_var_req_builder =
187                local_var_req_builder.query(&[("equivalentDomains", &param_value.to_string())]);
188        }
189        if let Some(ref param_value) = excluded_global_equivalent_domains {
190            local_var_req_builder = local_var_req_builder
191                .query(&[("excludedGlobalEquivalentDomains", &param_value.to_string())]);
192        }
193        if let Some(ref param_value) = account_revision_date {
194            local_var_req_builder =
195                local_var_req_builder.query(&[("accountRevisionDate", &param_value.to_string())]);
196        }
197        if let Some(ref param_value) = key {
198            local_var_req_builder =
199                local_var_req_builder.query(&[("key", &param_value.to_string())]);
200        }
201        if let Some(ref param_value) = public_key {
202            local_var_req_builder =
203                local_var_req_builder.query(&[("publicKey", &param_value.to_string())]);
204        }
205        if let Some(ref param_value) = private_key {
206            local_var_req_builder =
207                local_var_req_builder.query(&[("privateKey", &param_value.to_string())]);
208        }
209        if let Some(ref param_value) = premium {
210            local_var_req_builder =
211                local_var_req_builder.query(&[("premium", &param_value.to_string())]);
212        }
213        if let Some(ref param_value) = premium_expiration_date {
214            local_var_req_builder =
215                local_var_req_builder.query(&[("premiumExpirationDate", &param_value.to_string())]);
216        }
217        if let Some(ref param_value) = renewal_reminder_date {
218            local_var_req_builder =
219                local_var_req_builder.query(&[("renewalReminderDate", &param_value.to_string())]);
220        }
221        if let Some(ref param_value) = storage {
222            local_var_req_builder =
223                local_var_req_builder.query(&[("storage", &param_value.to_string())]);
224        }
225        if let Some(ref param_value) = max_storage_gb {
226            local_var_req_builder =
227                local_var_req_builder.query(&[("maxStorageGb", &param_value.to_string())]);
228        }
229        if let Some(ref param_value) = gateway {
230            local_var_req_builder =
231                local_var_req_builder.query(&[("gateway", &param_value.to_string())]);
232        }
233        if let Some(ref param_value) = gateway_customer_id {
234            local_var_req_builder =
235                local_var_req_builder.query(&[("gatewayCustomerId", &param_value.to_string())]);
236        }
237        if let Some(ref param_value) = gateway_subscription_id {
238            local_var_req_builder =
239                local_var_req_builder.query(&[("gatewaySubscriptionId", &param_value.to_string())]);
240        }
241        if let Some(ref param_value) = reference_data {
242            local_var_req_builder =
243                local_var_req_builder.query(&[("referenceData", &param_value.to_string())]);
244        }
245        if let Some(ref param_value) = license_key {
246            local_var_req_builder =
247                local_var_req_builder.query(&[("licenseKey", &param_value.to_string())]);
248        }
249        local_var_req_builder = local_var_req_builder.query(&[("apiKey", &api_key.to_string())]);
250        if let Some(ref param_value) = kdf {
251            local_var_req_builder =
252                local_var_req_builder.query(&[("kdf", &param_value.to_string())]);
253        }
254        if let Some(ref param_value) = kdf_iterations {
255            local_var_req_builder =
256                local_var_req_builder.query(&[("kdfIterations", &param_value.to_string())]);
257        }
258        if let Some(ref param_value) = kdf_memory {
259            local_var_req_builder =
260                local_var_req_builder.query(&[("kdfMemory", &param_value.to_string())]);
261        }
262        if let Some(ref param_value) = kdf_parallelism {
263            local_var_req_builder =
264                local_var_req_builder.query(&[("kdfParallelism", &param_value.to_string())]);
265        }
266        if let Some(ref param_value) = creation_date {
267            local_var_req_builder =
268                local_var_req_builder.query(&[("creationDate", &param_value.to_string())]);
269        }
270        if let Some(ref param_value) = revision_date {
271            local_var_req_builder =
272                local_var_req_builder.query(&[("revisionDate", &param_value.to_string())]);
273        }
274        if let Some(ref param_value) = force_password_reset {
275            local_var_req_builder =
276                local_var_req_builder.query(&[("forcePasswordReset", &param_value.to_string())]);
277        }
278        if let Some(ref param_value) = uses_key_connector {
279            local_var_req_builder =
280                local_var_req_builder.query(&[("usesKeyConnector", &param_value.to_string())]);
281        }
282        if let Some(ref param_value) = failed_login_count {
283            local_var_req_builder =
284                local_var_req_builder.query(&[("failedLoginCount", &param_value.to_string())]);
285        }
286        if let Some(ref param_value) = last_failed_login_date {
287            local_var_req_builder =
288                local_var_req_builder.query(&[("lastFailedLoginDate", &param_value.to_string())]);
289        }
290        if let Some(ref param_value) = avatar_color {
291            local_var_req_builder =
292                local_var_req_builder.query(&[("avatarColor", &param_value.to_string())]);
293        }
294        if let Some(ref param_value) = last_password_change_date {
295            local_var_req_builder = local_var_req_builder
296                .query(&[("lastPasswordChangeDate", &param_value.to_string())]);
297        }
298        if let Some(ref param_value) = last_kdf_change_date {
299            local_var_req_builder =
300                local_var_req_builder.query(&[("lastKdfChangeDate", &param_value.to_string())]);
301        }
302        if let Some(ref param_value) = last_key_rotation_date {
303            local_var_req_builder =
304                local_var_req_builder.query(&[("lastKeyRotationDate", &param_value.to_string())]);
305        }
306        if let Some(ref param_value) = last_email_change_date {
307            local_var_req_builder =
308                local_var_req_builder.query(&[("lastEmailChangeDate", &param_value.to_string())]);
309        }
310        if let Some(ref param_value) = verify_devices {
311            local_var_req_builder =
312                local_var_req_builder.query(&[("verifyDevices", &param_value.to_string())]);
313        }
314        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
315            local_var_req_builder = local_var_req_builder
316                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
317        }
318        if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
319            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
320        };
321        let mut local_var_form = reqwest::multipart::Form::new();
322        // TODO: support file upload for 'license' parameter
323        local_var_req_builder = local_var_req_builder.multipart(local_var_form);
324
325        let local_var_req = local_var_req_builder.build()?;
326        let local_var_resp = local_var_client.execute(local_var_req).await?;
327
328        let local_var_status = local_var_resp.status();
329        let local_var_content = local_var_resp.text().await?;
330
331        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
332            Ok(())
333        } else {
334            let local_var_entity: Option<UploadLicenseError> =
335                serde_json::from_str(&local_var_content).ok();
336            let local_var_error = ResponseContent {
337                status: local_var_status,
338                content: local_var_content,
339                entity: local_var_entity,
340            };
341            Err(Error::ResponseError(local_var_error))
342        }
343    }
344}
345
346/// struct for typed errors of method [`SelfHostedAccountBillingApi::upload_license`]
347#[derive(Debug, Clone, Serialize, Deserialize)]
348#[serde(untagged)]
349pub enum UploadLicenseError {
350    UnknownValue(serde_json::Value),
351}