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