bitwarden_api_api/apis/
organization_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 OrganizationBillingApi: Send + Sync {
29    /// POST /organizations/{organizationId}/billing/change-frequency
30    async fn change_plan_subscription_frequency<'a>(
31        &self,
32        organization_id: uuid::Uuid,
33        change_plan_frequency_request: Option<models::ChangePlanFrequencyRequest>,
34    ) -> Result<(), Error<ChangePlanSubscriptionFrequencyError>>;
35
36    /// GET /organizations/{organizationId}/billing
37    async fn get_billing<'a>(
38        &self,
39        organization_id: uuid::Uuid,
40    ) -> Result<(), Error<GetBillingError>>;
41
42    /// GET /organizations/{organizationId}/billing/history
43    async fn get_history<'a>(
44        &self,
45        organization_id: uuid::Uuid,
46    ) -> Result<(), Error<GetHistoryError>>;
47
48    /// GET /organizations/{organizationId}/billing/invoices
49    async fn get_invoices<'a>(
50        &self,
51        organization_id: uuid::Uuid,
52        status: Option<&'a str>,
53        start_after: Option<&'a str>,
54    ) -> Result<(), Error<GetInvoicesError>>;
55
56    /// GET /organizations/{organizationId}/billing/metadata
57    async fn get_metadata<'a>(
58        &self,
59        organization_id: uuid::Uuid,
60    ) -> Result<(), Error<GetMetadataError>>;
61
62    /// GET /organizations/{organizationId}/billing/transactions
63    async fn get_transactions<'a>(
64        &self,
65        organization_id: uuid::Uuid,
66        start_after: Option<String>,
67    ) -> Result<(), Error<GetTransactionsError>>;
68
69    /// POST /organizations/{organizationId}/billing/setup-business-unit
70    async fn setup_business_unit<'a>(
71        &self,
72        organization_id: uuid::Uuid,
73        setup_business_unit_request_body: Option<models::SetupBusinessUnitRequestBody>,
74    ) -> Result<(), Error<SetupBusinessUnitError>>;
75}
76
77pub struct OrganizationBillingApiClient {
78    configuration: Arc<configuration::Configuration>,
79}
80
81impl OrganizationBillingApiClient {
82    pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
83        Self { configuration }
84    }
85}
86
87#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
88#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
89impl OrganizationBillingApi for OrganizationBillingApiClient {
90    async fn change_plan_subscription_frequency<'a>(
91        &self,
92        organization_id: uuid::Uuid,
93        change_plan_frequency_request: Option<models::ChangePlanFrequencyRequest>,
94    ) -> Result<(), Error<ChangePlanSubscriptionFrequencyError>> {
95        let local_var_configuration = &self.configuration;
96
97        let local_var_client = &local_var_configuration.client;
98
99        let local_var_uri_str = format!(
100            "{}/organizations/{organizationId}/billing/change-frequency",
101            local_var_configuration.base_path,
102            organizationId = organization_id
103        );
104        let mut local_var_req_builder =
105            local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
106
107        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
108            local_var_req_builder = local_var_req_builder
109                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
110        }
111        if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
112            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
113        };
114        local_var_req_builder = local_var_req_builder.json(&change_plan_frequency_request);
115
116        let local_var_req = local_var_req_builder.build()?;
117        let local_var_resp = local_var_client.execute(local_var_req).await?;
118
119        let local_var_status = local_var_resp.status();
120        let local_var_content = local_var_resp.text().await?;
121
122        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
123            Ok(())
124        } else {
125            let local_var_entity: Option<ChangePlanSubscriptionFrequencyError> =
126                serde_json::from_str(&local_var_content).ok();
127            let local_var_error = ResponseContent {
128                status: local_var_status,
129                content: local_var_content,
130                entity: local_var_entity,
131            };
132            Err(Error::ResponseError(local_var_error))
133        }
134    }
135
136    async fn get_billing<'a>(
137        &self,
138        organization_id: uuid::Uuid,
139    ) -> Result<(), Error<GetBillingError>> {
140        let local_var_configuration = &self.configuration;
141
142        let local_var_client = &local_var_configuration.client;
143
144        let local_var_uri_str = format!(
145            "{}/organizations/{organizationId}/billing",
146            local_var_configuration.base_path,
147            organizationId = organization_id
148        );
149        let mut local_var_req_builder =
150            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
151
152        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
153            local_var_req_builder = local_var_req_builder
154                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
155        }
156        if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
157            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
158        };
159
160        let local_var_req = local_var_req_builder.build()?;
161        let local_var_resp = local_var_client.execute(local_var_req).await?;
162
163        let local_var_status = local_var_resp.status();
164        let local_var_content = local_var_resp.text().await?;
165
166        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
167            Ok(())
168        } else {
169            let local_var_entity: Option<GetBillingError> =
170                serde_json::from_str(&local_var_content).ok();
171            let local_var_error = ResponseContent {
172                status: local_var_status,
173                content: local_var_content,
174                entity: local_var_entity,
175            };
176            Err(Error::ResponseError(local_var_error))
177        }
178    }
179
180    async fn get_history<'a>(
181        &self,
182        organization_id: uuid::Uuid,
183    ) -> Result<(), Error<GetHistoryError>> {
184        let local_var_configuration = &self.configuration;
185
186        let local_var_client = &local_var_configuration.client;
187
188        let local_var_uri_str = format!(
189            "{}/organizations/{organizationId}/billing/history",
190            local_var_configuration.base_path,
191            organizationId = organization_id
192        );
193        let mut local_var_req_builder =
194            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
195
196        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
197            local_var_req_builder = local_var_req_builder
198                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
199        }
200        if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
201            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
202        };
203
204        let local_var_req = local_var_req_builder.build()?;
205        let local_var_resp = local_var_client.execute(local_var_req).await?;
206
207        let local_var_status = local_var_resp.status();
208        let local_var_content = local_var_resp.text().await?;
209
210        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
211            Ok(())
212        } else {
213            let local_var_entity: Option<GetHistoryError> =
214                serde_json::from_str(&local_var_content).ok();
215            let local_var_error = ResponseContent {
216                status: local_var_status,
217                content: local_var_content,
218                entity: local_var_entity,
219            };
220            Err(Error::ResponseError(local_var_error))
221        }
222    }
223
224    async fn get_invoices<'a>(
225        &self,
226        organization_id: uuid::Uuid,
227        status: Option<&'a str>,
228        start_after: Option<&'a str>,
229    ) -> Result<(), Error<GetInvoicesError>> {
230        let local_var_configuration = &self.configuration;
231
232        let local_var_client = &local_var_configuration.client;
233
234        let local_var_uri_str = format!(
235            "{}/organizations/{organizationId}/billing/invoices",
236            local_var_configuration.base_path,
237            organizationId = organization_id
238        );
239        let mut local_var_req_builder =
240            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
241
242        if let Some(ref param_value) = status {
243            local_var_req_builder =
244                local_var_req_builder.query(&[("status", &param_value.to_string())]);
245        }
246        if let Some(ref param_value) = start_after {
247            local_var_req_builder =
248                local_var_req_builder.query(&[("startAfter", &param_value.to_string())]);
249        }
250        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
251            local_var_req_builder = local_var_req_builder
252                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
253        }
254        if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
255            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
256        };
257
258        let local_var_req = local_var_req_builder.build()?;
259        let local_var_resp = local_var_client.execute(local_var_req).await?;
260
261        let local_var_status = local_var_resp.status();
262        let local_var_content = local_var_resp.text().await?;
263
264        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
265            Ok(())
266        } else {
267            let local_var_entity: Option<GetInvoicesError> =
268                serde_json::from_str(&local_var_content).ok();
269            let local_var_error = ResponseContent {
270                status: local_var_status,
271                content: local_var_content,
272                entity: local_var_entity,
273            };
274            Err(Error::ResponseError(local_var_error))
275        }
276    }
277
278    async fn get_metadata<'a>(
279        &self,
280        organization_id: uuid::Uuid,
281    ) -> Result<(), Error<GetMetadataError>> {
282        let local_var_configuration = &self.configuration;
283
284        let local_var_client = &local_var_configuration.client;
285
286        let local_var_uri_str = format!(
287            "{}/organizations/{organizationId}/billing/metadata",
288            local_var_configuration.base_path,
289            organizationId = organization_id
290        );
291        let mut local_var_req_builder =
292            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
293
294        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
295            local_var_req_builder = local_var_req_builder
296                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
297        }
298        if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
299            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
300        };
301
302        let local_var_req = local_var_req_builder.build()?;
303        let local_var_resp = local_var_client.execute(local_var_req).await?;
304
305        let local_var_status = local_var_resp.status();
306        let local_var_content = local_var_resp.text().await?;
307
308        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
309            Ok(())
310        } else {
311            let local_var_entity: Option<GetMetadataError> =
312                serde_json::from_str(&local_var_content).ok();
313            let local_var_error = ResponseContent {
314                status: local_var_status,
315                content: local_var_content,
316                entity: local_var_entity,
317            };
318            Err(Error::ResponseError(local_var_error))
319        }
320    }
321
322    async fn get_transactions<'a>(
323        &self,
324        organization_id: uuid::Uuid,
325        start_after: Option<String>,
326    ) -> Result<(), Error<GetTransactionsError>> {
327        let local_var_configuration = &self.configuration;
328
329        let local_var_client = &local_var_configuration.client;
330
331        let local_var_uri_str = format!(
332            "{}/organizations/{organizationId}/billing/transactions",
333            local_var_configuration.base_path,
334            organizationId = organization_id
335        );
336        let mut local_var_req_builder =
337            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
338
339        if let Some(ref param_value) = start_after {
340            local_var_req_builder =
341                local_var_req_builder.query(&[("startAfter", &param_value.to_string())]);
342        }
343        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
344            local_var_req_builder = local_var_req_builder
345                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
346        }
347        if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
348            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
349        };
350
351        let local_var_req = local_var_req_builder.build()?;
352        let local_var_resp = local_var_client.execute(local_var_req).await?;
353
354        let local_var_status = local_var_resp.status();
355        let local_var_content = local_var_resp.text().await?;
356
357        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
358            Ok(())
359        } else {
360            let local_var_entity: Option<GetTransactionsError> =
361                serde_json::from_str(&local_var_content).ok();
362            let local_var_error = ResponseContent {
363                status: local_var_status,
364                content: local_var_content,
365                entity: local_var_entity,
366            };
367            Err(Error::ResponseError(local_var_error))
368        }
369    }
370
371    async fn setup_business_unit<'a>(
372        &self,
373        organization_id: uuid::Uuid,
374        setup_business_unit_request_body: Option<models::SetupBusinessUnitRequestBody>,
375    ) -> Result<(), Error<SetupBusinessUnitError>> {
376        let local_var_configuration = &self.configuration;
377
378        let local_var_client = &local_var_configuration.client;
379
380        let local_var_uri_str = format!(
381            "{}/organizations/{organizationId}/billing/setup-business-unit",
382            local_var_configuration.base_path,
383            organizationId = organization_id
384        );
385        let mut local_var_req_builder =
386            local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
387
388        if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
389            local_var_req_builder = local_var_req_builder
390                .header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
391        }
392        if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
393            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
394        };
395        local_var_req_builder = local_var_req_builder.json(&setup_business_unit_request_body);
396
397        let local_var_req = local_var_req_builder.build()?;
398        let local_var_resp = local_var_client.execute(local_var_req).await?;
399
400        let local_var_status = local_var_resp.status();
401        let local_var_content = local_var_resp.text().await?;
402
403        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
404            Ok(())
405        } else {
406            let local_var_entity: Option<SetupBusinessUnitError> =
407                serde_json::from_str(&local_var_content).ok();
408            let local_var_error = ResponseContent {
409                status: local_var_status,
410                content: local_var_content,
411                entity: local_var_entity,
412            };
413            Err(Error::ResponseError(local_var_error))
414        }
415    }
416}
417
418/// struct for typed errors of method [`OrganizationBillingApi::change_plan_subscription_frequency`]
419#[derive(Debug, Clone, Serialize, Deserialize)]
420#[serde(untagged)]
421pub enum ChangePlanSubscriptionFrequencyError {
422    UnknownValue(serde_json::Value),
423}
424/// struct for typed errors of method [`OrganizationBillingApi::get_billing`]
425#[derive(Debug, Clone, Serialize, Deserialize)]
426#[serde(untagged)]
427pub enum GetBillingError {
428    UnknownValue(serde_json::Value),
429}
430/// struct for typed errors of method [`OrganizationBillingApi::get_history`]
431#[derive(Debug, Clone, Serialize, Deserialize)]
432#[serde(untagged)]
433pub enum GetHistoryError {
434    UnknownValue(serde_json::Value),
435}
436/// struct for typed errors of method [`OrganizationBillingApi::get_invoices`]
437#[derive(Debug, Clone, Serialize, Deserialize)]
438#[serde(untagged)]
439pub enum GetInvoicesError {
440    UnknownValue(serde_json::Value),
441}
442/// struct for typed errors of method [`OrganizationBillingApi::get_metadata`]
443#[derive(Debug, Clone, Serialize, Deserialize)]
444#[serde(untagged)]
445pub enum GetMetadataError {
446    UnknownValue(serde_json::Value),
447}
448/// struct for typed errors of method [`OrganizationBillingApi::get_transactions`]
449#[derive(Debug, Clone, Serialize, Deserialize)]
450#[serde(untagged)]
451pub enum GetTransactionsError {
452    UnknownValue(serde_json::Value),
453}
454/// struct for typed errors of method [`OrganizationBillingApi::setup_business_unit`]
455#[derive(Debug, Clone, Serialize, Deserialize)]
456#[serde(untagged)]
457pub enum SetupBusinessUnitError {
458    UnknownValue(serde_json::Value),
459}