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::{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 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_token) = local_var_configuration.oauth_access_token {
108            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
109        };
110        local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
111        local_var_req_builder = local_var_req_builder.json(&change_plan_frequency_request);
112
113        let local_var_req = local_var_req_builder.build()?;
114        let local_var_resp = local_var_client.execute(local_var_req).await?;
115
116        let local_var_status = local_var_resp.status();
117        let local_var_content = local_var_resp.text().await?;
118
119        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
120            Ok(())
121        } else {
122            let local_var_entity: Option<ChangePlanSubscriptionFrequencyError> =
123                serde_json::from_str(&local_var_content).ok();
124            let local_var_error = ResponseContent {
125                status: local_var_status,
126                content: local_var_content,
127                entity: local_var_entity,
128            };
129            Err(Error::ResponseError(local_var_error))
130        }
131    }
132
133    async fn get_billing<'a>(
134        &self,
135        organization_id: uuid::Uuid,
136    ) -> Result<(), Error<GetBillingError>> {
137        let local_var_configuration = &self.configuration;
138
139        let local_var_client = &local_var_configuration.client;
140
141        let local_var_uri_str = format!(
142            "{}/organizations/{organizationId}/billing",
143            local_var_configuration.base_path,
144            organizationId = organization_id
145        );
146        let mut local_var_req_builder =
147            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
148
149        if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
150            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
151        };
152        local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
153
154        let local_var_req = local_var_req_builder.build()?;
155        let local_var_resp = local_var_client.execute(local_var_req).await?;
156
157        let local_var_status = local_var_resp.status();
158        let local_var_content = local_var_resp.text().await?;
159
160        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
161            Ok(())
162        } else {
163            let local_var_entity: Option<GetBillingError> =
164                serde_json::from_str(&local_var_content).ok();
165            let local_var_error = ResponseContent {
166                status: local_var_status,
167                content: local_var_content,
168                entity: local_var_entity,
169            };
170            Err(Error::ResponseError(local_var_error))
171        }
172    }
173
174    async fn get_history<'a>(
175        &self,
176        organization_id: uuid::Uuid,
177    ) -> Result<(), Error<GetHistoryError>> {
178        let local_var_configuration = &self.configuration;
179
180        let local_var_client = &local_var_configuration.client;
181
182        let local_var_uri_str = format!(
183            "{}/organizations/{organizationId}/billing/history",
184            local_var_configuration.base_path,
185            organizationId = organization_id
186        );
187        let mut local_var_req_builder =
188            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
189
190        if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
191            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
192        };
193        local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
194
195        let local_var_req = local_var_req_builder.build()?;
196        let local_var_resp = local_var_client.execute(local_var_req).await?;
197
198        let local_var_status = local_var_resp.status();
199        let local_var_content = local_var_resp.text().await?;
200
201        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
202            Ok(())
203        } else {
204            let local_var_entity: Option<GetHistoryError> =
205                serde_json::from_str(&local_var_content).ok();
206            let local_var_error = ResponseContent {
207                status: local_var_status,
208                content: local_var_content,
209                entity: local_var_entity,
210            };
211            Err(Error::ResponseError(local_var_error))
212        }
213    }
214
215    async fn get_invoices<'a>(
216        &self,
217        organization_id: uuid::Uuid,
218        status: Option<&'a str>,
219        start_after: Option<&'a str>,
220    ) -> Result<(), Error<GetInvoicesError>> {
221        let local_var_configuration = &self.configuration;
222
223        let local_var_client = &local_var_configuration.client;
224
225        let local_var_uri_str = format!(
226            "{}/organizations/{organizationId}/billing/invoices",
227            local_var_configuration.base_path,
228            organizationId = organization_id
229        );
230        let mut local_var_req_builder =
231            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
232
233        if let Some(ref param_value) = status {
234            local_var_req_builder =
235                local_var_req_builder.query(&[("status", &param_value.to_string())]);
236        }
237        if let Some(ref param_value) = start_after {
238            local_var_req_builder =
239                local_var_req_builder.query(&[("startAfter", &param_value.to_string())]);
240        }
241        if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
242            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
243        };
244        local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
245
246        let local_var_req = local_var_req_builder.build()?;
247        let local_var_resp = local_var_client.execute(local_var_req).await?;
248
249        let local_var_status = local_var_resp.status();
250        let local_var_content = local_var_resp.text().await?;
251
252        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
253            Ok(())
254        } else {
255            let local_var_entity: Option<GetInvoicesError> =
256                serde_json::from_str(&local_var_content).ok();
257            let local_var_error = ResponseContent {
258                status: local_var_status,
259                content: local_var_content,
260                entity: local_var_entity,
261            };
262            Err(Error::ResponseError(local_var_error))
263        }
264    }
265
266    async fn get_metadata<'a>(
267        &self,
268        organization_id: uuid::Uuid,
269    ) -> Result<(), Error<GetMetadataError>> {
270        let local_var_configuration = &self.configuration;
271
272        let local_var_client = &local_var_configuration.client;
273
274        let local_var_uri_str = format!(
275            "{}/organizations/{organizationId}/billing/metadata",
276            local_var_configuration.base_path,
277            organizationId = organization_id
278        );
279        let mut local_var_req_builder =
280            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
281
282        if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
283            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
284        };
285        local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
286
287        let local_var_req = local_var_req_builder.build()?;
288        let local_var_resp = local_var_client.execute(local_var_req).await?;
289
290        let local_var_status = local_var_resp.status();
291        let local_var_content = local_var_resp.text().await?;
292
293        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
294            Ok(())
295        } else {
296            let local_var_entity: Option<GetMetadataError> =
297                serde_json::from_str(&local_var_content).ok();
298            let local_var_error = ResponseContent {
299                status: local_var_status,
300                content: local_var_content,
301                entity: local_var_entity,
302            };
303            Err(Error::ResponseError(local_var_error))
304        }
305    }
306
307    async fn get_transactions<'a>(
308        &self,
309        organization_id: uuid::Uuid,
310        start_after: Option<String>,
311    ) -> Result<(), Error<GetTransactionsError>> {
312        let local_var_configuration = &self.configuration;
313
314        let local_var_client = &local_var_configuration.client;
315
316        let local_var_uri_str = format!(
317            "{}/organizations/{organizationId}/billing/transactions",
318            local_var_configuration.base_path,
319            organizationId = organization_id
320        );
321        let mut local_var_req_builder =
322            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
323
324        if let Some(ref param_value) = start_after {
325            local_var_req_builder =
326                local_var_req_builder.query(&[("startAfter", &param_value.to_string())]);
327        }
328        if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
329            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
330        };
331        local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
332
333        let local_var_req = local_var_req_builder.build()?;
334        let local_var_resp = local_var_client.execute(local_var_req).await?;
335
336        let local_var_status = local_var_resp.status();
337        let local_var_content = local_var_resp.text().await?;
338
339        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
340            Ok(())
341        } else {
342            let local_var_entity: Option<GetTransactionsError> =
343                serde_json::from_str(&local_var_content).ok();
344            let local_var_error = ResponseContent {
345                status: local_var_status,
346                content: local_var_content,
347                entity: local_var_entity,
348            };
349            Err(Error::ResponseError(local_var_error))
350        }
351    }
352
353    async fn setup_business_unit<'a>(
354        &self,
355        organization_id: uuid::Uuid,
356        setup_business_unit_request_body: Option<models::SetupBusinessUnitRequestBody>,
357    ) -> Result<(), Error<SetupBusinessUnitError>> {
358        let local_var_configuration = &self.configuration;
359
360        let local_var_client = &local_var_configuration.client;
361
362        let local_var_uri_str = format!(
363            "{}/organizations/{organizationId}/billing/setup-business-unit",
364            local_var_configuration.base_path,
365            organizationId = organization_id
366        );
367        let mut local_var_req_builder =
368            local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
369
370        if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
371            local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
372        };
373        local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
374        local_var_req_builder = local_var_req_builder.json(&setup_business_unit_request_body);
375
376        let local_var_req = local_var_req_builder.build()?;
377        let local_var_resp = local_var_client.execute(local_var_req).await?;
378
379        let local_var_status = local_var_resp.status();
380        let local_var_content = local_var_resp.text().await?;
381
382        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
383            Ok(())
384        } else {
385            let local_var_entity: Option<SetupBusinessUnitError> =
386                serde_json::from_str(&local_var_content).ok();
387            let local_var_error = ResponseContent {
388                status: local_var_status,
389                content: local_var_content,
390                entity: local_var_entity,
391            };
392            Err(Error::ResponseError(local_var_error))
393        }
394    }
395}
396
397/// struct for typed errors of method [`OrganizationBillingApi::change_plan_subscription_frequency`]
398#[derive(Debug, Clone, Serialize, Deserialize)]
399#[serde(untagged)]
400pub enum ChangePlanSubscriptionFrequencyError {
401    UnknownValue(serde_json::Value),
402}
403/// struct for typed errors of method [`OrganizationBillingApi::get_billing`]
404#[derive(Debug, Clone, Serialize, Deserialize)]
405#[serde(untagged)]
406pub enum GetBillingError {
407    UnknownValue(serde_json::Value),
408}
409/// struct for typed errors of method [`OrganizationBillingApi::get_history`]
410#[derive(Debug, Clone, Serialize, Deserialize)]
411#[serde(untagged)]
412pub enum GetHistoryError {
413    UnknownValue(serde_json::Value),
414}
415/// struct for typed errors of method [`OrganizationBillingApi::get_invoices`]
416#[derive(Debug, Clone, Serialize, Deserialize)]
417#[serde(untagged)]
418pub enum GetInvoicesError {
419    UnknownValue(serde_json::Value),
420}
421/// struct for typed errors of method [`OrganizationBillingApi::get_metadata`]
422#[derive(Debug, Clone, Serialize, Deserialize)]
423#[serde(untagged)]
424pub enum GetMetadataError {
425    UnknownValue(serde_json::Value),
426}
427/// struct for typed errors of method [`OrganizationBillingApi::get_transactions`]
428#[derive(Debug, Clone, Serialize, Deserialize)]
429#[serde(untagged)]
430pub enum GetTransactionsError {
431    UnknownValue(serde_json::Value),
432}
433/// struct for typed errors of method [`OrganizationBillingApi::setup_business_unit`]
434#[derive(Debug, Clone, Serialize, Deserialize)]
435#[serde(untagged)]
436pub enum SetupBusinessUnitError {
437    UnknownValue(serde_json::Value),
438}