Skip to main content

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/transactions
57    async fn get_transactions<'a>(
58        &self,
59        organization_id: uuid::Uuid,
60        start_after: Option<String>,
61    ) -> Result<(), Error<GetTransactionsError>>;
62
63    /// POST /organizations/{organizationId}/billing/setup-business-unit
64    async fn setup_business_unit<'a>(
65        &self,
66        organization_id: uuid::Uuid,
67        setup_business_unit_request_body: Option<models::SetupBusinessUnitRequestBody>,
68    ) -> Result<(), Error<SetupBusinessUnitError>>;
69}
70
71pub struct OrganizationBillingApiClient {
72    configuration: Arc<configuration::Configuration>,
73}
74
75impl OrganizationBillingApiClient {
76    pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
77        Self { configuration }
78    }
79}
80
81#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
82#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
83impl OrganizationBillingApi for OrganizationBillingApiClient {
84    async fn change_plan_subscription_frequency<'a>(
85        &self,
86        organization_id: uuid::Uuid,
87        change_plan_frequency_request: Option<models::ChangePlanFrequencyRequest>,
88    ) -> Result<(), Error<ChangePlanSubscriptionFrequencyError>> {
89        let local_var_configuration = &self.configuration;
90
91        let local_var_client = &local_var_configuration.client;
92
93        let local_var_uri_str = format!(
94            "{}/organizations/{organizationId}/billing/change-frequency",
95            local_var_configuration.base_path,
96            organizationId = organization_id
97        );
98        let mut local_var_req_builder =
99            local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
100
101        local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
102        local_var_req_builder = local_var_req_builder.json(&change_plan_frequency_request);
103
104        let local_var_resp = local_var_req_builder.send().await?;
105
106        let local_var_status = local_var_resp.status();
107        let local_var_content = local_var_resp.text().await?;
108
109        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
110            Ok(())
111        } else {
112            let local_var_entity: Option<ChangePlanSubscriptionFrequencyError> =
113                serde_json::from_str(&local_var_content).ok();
114            let local_var_error = ResponseContent {
115                status: local_var_status,
116                content: local_var_content,
117                entity: local_var_entity,
118            };
119            Err(Error::ResponseError(local_var_error))
120        }
121    }
122
123    async fn get_billing<'a>(
124        &self,
125        organization_id: uuid::Uuid,
126    ) -> Result<(), Error<GetBillingError>> {
127        let local_var_configuration = &self.configuration;
128
129        let local_var_client = &local_var_configuration.client;
130
131        let local_var_uri_str = format!(
132            "{}/organizations/{organizationId}/billing",
133            local_var_configuration.base_path,
134            organizationId = organization_id
135        );
136        let mut local_var_req_builder =
137            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
138
139        local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
140
141        let local_var_resp = local_var_req_builder.send().await?;
142
143        let local_var_status = local_var_resp.status();
144        let local_var_content = local_var_resp.text().await?;
145
146        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
147            Ok(())
148        } else {
149            let local_var_entity: Option<GetBillingError> =
150                serde_json::from_str(&local_var_content).ok();
151            let local_var_error = ResponseContent {
152                status: local_var_status,
153                content: local_var_content,
154                entity: local_var_entity,
155            };
156            Err(Error::ResponseError(local_var_error))
157        }
158    }
159
160    async fn get_history<'a>(
161        &self,
162        organization_id: uuid::Uuid,
163    ) -> Result<(), Error<GetHistoryError>> {
164        let local_var_configuration = &self.configuration;
165
166        let local_var_client = &local_var_configuration.client;
167
168        let local_var_uri_str = format!(
169            "{}/organizations/{organizationId}/billing/history",
170            local_var_configuration.base_path,
171            organizationId = organization_id
172        );
173        let mut local_var_req_builder =
174            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
175
176        local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
177
178        let local_var_resp = local_var_req_builder.send().await?;
179
180        let local_var_status = local_var_resp.status();
181        let local_var_content = local_var_resp.text().await?;
182
183        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
184            Ok(())
185        } else {
186            let local_var_entity: Option<GetHistoryError> =
187                serde_json::from_str(&local_var_content).ok();
188            let local_var_error = ResponseContent {
189                status: local_var_status,
190                content: local_var_content,
191                entity: local_var_entity,
192            };
193            Err(Error::ResponseError(local_var_error))
194        }
195    }
196
197    async fn get_invoices<'a>(
198        &self,
199        organization_id: uuid::Uuid,
200        status: Option<&'a str>,
201        start_after: Option<&'a str>,
202    ) -> Result<(), Error<GetInvoicesError>> {
203        let local_var_configuration = &self.configuration;
204
205        let local_var_client = &local_var_configuration.client;
206
207        let local_var_uri_str = format!(
208            "{}/organizations/{organizationId}/billing/invoices",
209            local_var_configuration.base_path,
210            organizationId = organization_id
211        );
212        let mut local_var_req_builder =
213            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
214
215        if let Some(ref param_value) = status {
216            local_var_req_builder =
217                local_var_req_builder.query(&[("status", &param_value.to_string())]);
218        }
219        if let Some(ref param_value) = start_after {
220            local_var_req_builder =
221                local_var_req_builder.query(&[("startAfter", &param_value.to_string())]);
222        }
223        local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
224
225        let local_var_resp = local_var_req_builder.send().await?;
226
227        let local_var_status = local_var_resp.status();
228        let local_var_content = local_var_resp.text().await?;
229
230        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
231            Ok(())
232        } else {
233            let local_var_entity: Option<GetInvoicesError> =
234                serde_json::from_str(&local_var_content).ok();
235            let local_var_error = ResponseContent {
236                status: local_var_status,
237                content: local_var_content,
238                entity: local_var_entity,
239            };
240            Err(Error::ResponseError(local_var_error))
241        }
242    }
243
244    async fn get_transactions<'a>(
245        &self,
246        organization_id: uuid::Uuid,
247        start_after: Option<String>,
248    ) -> Result<(), Error<GetTransactionsError>> {
249        let local_var_configuration = &self.configuration;
250
251        let local_var_client = &local_var_configuration.client;
252
253        let local_var_uri_str = format!(
254            "{}/organizations/{organizationId}/billing/transactions",
255            local_var_configuration.base_path,
256            organizationId = organization_id
257        );
258        let mut local_var_req_builder =
259            local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
260
261        if let Some(ref param_value) = start_after {
262            local_var_req_builder =
263                local_var_req_builder.query(&[("startAfter", &param_value.to_string())]);
264        }
265        local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
266
267        let local_var_resp = local_var_req_builder.send().await?;
268
269        let local_var_status = local_var_resp.status();
270        let local_var_content = local_var_resp.text().await?;
271
272        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
273            Ok(())
274        } else {
275            let local_var_entity: Option<GetTransactionsError> =
276                serde_json::from_str(&local_var_content).ok();
277            let local_var_error = ResponseContent {
278                status: local_var_status,
279                content: local_var_content,
280                entity: local_var_entity,
281            };
282            Err(Error::ResponseError(local_var_error))
283        }
284    }
285
286    async fn setup_business_unit<'a>(
287        &self,
288        organization_id: uuid::Uuid,
289        setup_business_unit_request_body: Option<models::SetupBusinessUnitRequestBody>,
290    ) -> Result<(), Error<SetupBusinessUnitError>> {
291        let local_var_configuration = &self.configuration;
292
293        let local_var_client = &local_var_configuration.client;
294
295        let local_var_uri_str = format!(
296            "{}/organizations/{organizationId}/billing/setup-business-unit",
297            local_var_configuration.base_path,
298            organizationId = organization_id
299        );
300        let mut local_var_req_builder =
301            local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
302
303        local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
304        local_var_req_builder = local_var_req_builder.json(&setup_business_unit_request_body);
305
306        let local_var_resp = local_var_req_builder.send().await?;
307
308        let local_var_status = local_var_resp.status();
309        let local_var_content = local_var_resp.text().await?;
310
311        if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
312            Ok(())
313        } else {
314            let local_var_entity: Option<SetupBusinessUnitError> =
315                serde_json::from_str(&local_var_content).ok();
316            let local_var_error = ResponseContent {
317                status: local_var_status,
318                content: local_var_content,
319                entity: local_var_entity,
320            };
321            Err(Error::ResponseError(local_var_error))
322        }
323    }
324}
325
326/// struct for typed errors of method [`OrganizationBillingApi::change_plan_subscription_frequency`]
327#[derive(Debug, Clone, Serialize, Deserialize)]
328#[serde(untagged)]
329pub enum ChangePlanSubscriptionFrequencyError {
330    UnknownValue(serde_json::Value),
331}
332/// struct for typed errors of method [`OrganizationBillingApi::get_billing`]
333#[derive(Debug, Clone, Serialize, Deserialize)]
334#[serde(untagged)]
335pub enum GetBillingError {
336    UnknownValue(serde_json::Value),
337}
338/// struct for typed errors of method [`OrganizationBillingApi::get_history`]
339#[derive(Debug, Clone, Serialize, Deserialize)]
340#[serde(untagged)]
341pub enum GetHistoryError {
342    UnknownValue(serde_json::Value),
343}
344/// struct for typed errors of method [`OrganizationBillingApi::get_invoices`]
345#[derive(Debug, Clone, Serialize, Deserialize)]
346#[serde(untagged)]
347pub enum GetInvoicesError {
348    UnknownValue(serde_json::Value),
349}
350/// struct for typed errors of method [`OrganizationBillingApi::get_transactions`]
351#[derive(Debug, Clone, Serialize, Deserialize)]
352#[serde(untagged)]
353pub enum GetTransactionsError {
354    UnknownValue(serde_json::Value),
355}
356/// struct for typed errors of method [`OrganizationBillingApi::setup_business_unit`]
357#[derive(Debug, Clone, Serialize, Deserialize)]
358#[serde(untagged)]
359pub enum SetupBusinessUnitError {
360    UnknownValue(serde_json::Value),
361}