1use 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 OrganizationBillingVNextApi: Send + Sync {
29 async fn add_credit_via_bit_pay<'a>(
31 &self,
32 organization_id: &'a str,
33 bit_pay_credit_request: Option<models::BitPayCreditRequest>,
34 ) -> Result<(), Error>;
35
36 async fn get_annual_upgrade_offer<'a>(&self, organization_id: &'a str) -> Result<(), Error>;
38
39 async fn get_billing_address<'a>(&self, organization_id: &'a str) -> Result<(), Error>;
41
42 async fn get_churn_mitigation_offer<'a>(&self, organization_id: &'a str) -> Result<(), Error>;
44
45 async fn get_credit<'a>(&self, organization_id: &'a str) -> Result<(), Error>;
47
48 async fn get_metadata<'a>(&self, organization_id: &'a str) -> Result<(), Error>;
50
51 async fn get_payment_method<'a>(&self, organization_id: &'a str) -> Result<(), Error>;
53
54 async fn get_warnings<'a>(&self, organization_id: &'a str) -> Result<(), Error>;
56
57 async fn redeem_annual_upgrade_offer<'a>(&self, organization_id: &'a str) -> Result<(), Error>;
59
60 async fn redeem_churn_mitigation_offer<'a>(
62 &self,
63 organization_id: &'a str,
64 ) -> Result<(), Error>;
65
66 async fn restart_subscription<'a>(
68 &self,
69 organization_id: &'a str,
70 restart_subscription_request: Option<models::RestartSubscriptionRequest>,
71 ) -> Result<(), Error>;
72
73 async fn update_billing_address<'a>(
75 &self,
76 organization_id: &'a str,
77 billing_address_request: Option<models::BillingAddressRequest>,
78 ) -> Result<(), Error>;
79
80 async fn update_payment_method<'a>(
82 &self,
83 organization_id: &'a str,
84 tokenized_payment_method_request: Option<models::TokenizedPaymentMethodRequest>,
85 ) -> Result<(), Error>;
86}
87
88pub struct OrganizationBillingVNextApiClient {
89 configuration: Arc<configuration::Configuration>,
90}
91
92impl OrganizationBillingVNextApiClient {
93 pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
94 Self { configuration }
95 }
96}
97
98#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
99#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
100impl OrganizationBillingVNextApi for OrganizationBillingVNextApiClient {
101 async fn add_credit_via_bit_pay<'a>(
102 &self,
103 organization_id: &'a str,
104 bit_pay_credit_request: Option<models::BitPayCreditRequest>,
105 ) -> Result<(), Error> {
106 let local_var_configuration = &self.configuration;
107
108 let local_var_client = &local_var_configuration.client;
109
110 let local_var_uri_str = format!(
111 "{}/organizations/{organizationId}/billing/vnext/credit/bitpay",
112 local_var_configuration.base_path,
113 organizationId = crate::apis::urlencode(organization_id)
114 );
115 let mut local_var_req_builder =
116 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
117
118 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
119 local_var_req_builder = local_var_req_builder.json(&bit_pay_credit_request);
120
121 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
122 }
123
124 async fn get_annual_upgrade_offer<'a>(&self, organization_id: &'a str) -> Result<(), Error> {
125 let local_var_configuration = &self.configuration;
126
127 let local_var_client = &local_var_configuration.client;
128
129 let local_var_uri_str = format!(
130 "{}/organizations/{organizationId}/billing/vnext/annual-upgrade-offer",
131 local_var_configuration.base_path,
132 organizationId = crate::apis::urlencode(organization_id)
133 );
134 let mut local_var_req_builder =
135 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
136
137 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
138
139 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
140 }
141
142 async fn get_billing_address<'a>(&self, organization_id: &'a str) -> Result<(), Error> {
143 let local_var_configuration = &self.configuration;
144
145 let local_var_client = &local_var_configuration.client;
146
147 let local_var_uri_str = format!(
148 "{}/organizations/{organizationId}/billing/vnext/address",
149 local_var_configuration.base_path,
150 organizationId = crate::apis::urlencode(organization_id)
151 );
152 let mut local_var_req_builder =
153 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
154
155 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
156
157 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
158 }
159
160 async fn get_churn_mitigation_offer<'a>(&self, organization_id: &'a str) -> Result<(), Error> {
161 let local_var_configuration = &self.configuration;
162
163 let local_var_client = &local_var_configuration.client;
164
165 let local_var_uri_str = format!(
166 "{}/organizations/{organizationId}/billing/vnext/churn-mitigation-offer",
167 local_var_configuration.base_path,
168 organizationId = crate::apis::urlencode(organization_id)
169 );
170 let mut local_var_req_builder =
171 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
172
173 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
174
175 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
176 }
177
178 async fn get_credit<'a>(&self, organization_id: &'a str) -> Result<(), Error> {
179 let local_var_configuration = &self.configuration;
180
181 let local_var_client = &local_var_configuration.client;
182
183 let local_var_uri_str = format!(
184 "{}/organizations/{organizationId}/billing/vnext/credit",
185 local_var_configuration.base_path,
186 organizationId = crate::apis::urlencode(organization_id)
187 );
188 let mut local_var_req_builder =
189 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
190
191 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
192
193 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
194 }
195
196 async fn get_metadata<'a>(&self, organization_id: &'a str) -> Result<(), Error> {
197 let local_var_configuration = &self.configuration;
198
199 let local_var_client = &local_var_configuration.client;
200
201 let local_var_uri_str = format!(
202 "{}/organizations/{organizationId}/billing/vnext/metadata",
203 local_var_configuration.base_path,
204 organizationId = crate::apis::urlencode(organization_id)
205 );
206 let mut local_var_req_builder =
207 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
208
209 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
210
211 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
212 }
213
214 async fn get_payment_method<'a>(&self, organization_id: &'a str) -> Result<(), Error> {
215 let local_var_configuration = &self.configuration;
216
217 let local_var_client = &local_var_configuration.client;
218
219 let local_var_uri_str = format!(
220 "{}/organizations/{organizationId}/billing/vnext/payment-method",
221 local_var_configuration.base_path,
222 organizationId = crate::apis::urlencode(organization_id)
223 );
224 let mut local_var_req_builder =
225 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
226
227 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
228
229 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
230 }
231
232 async fn get_warnings<'a>(&self, organization_id: &'a str) -> Result<(), Error> {
233 let local_var_configuration = &self.configuration;
234
235 let local_var_client = &local_var_configuration.client;
236
237 let local_var_uri_str = format!(
238 "{}/organizations/{organizationId}/billing/vnext/warnings",
239 local_var_configuration.base_path,
240 organizationId = crate::apis::urlencode(organization_id)
241 );
242 let mut local_var_req_builder =
243 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
244
245 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
246
247 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
248 }
249
250 async fn redeem_annual_upgrade_offer<'a>(&self, organization_id: &'a str) -> Result<(), Error> {
251 let local_var_configuration = &self.configuration;
252
253 let local_var_client = &local_var_configuration.client;
254
255 let local_var_uri_str = format!(
256 "{}/organizations/{organizationId}/billing/vnext/annual-upgrade-offer/redeem",
257 local_var_configuration.base_path,
258 organizationId = crate::apis::urlencode(organization_id)
259 );
260 let mut local_var_req_builder =
261 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
262
263 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
264
265 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
266 }
267
268 async fn redeem_churn_mitigation_offer<'a>(
269 &self,
270 organization_id: &'a str,
271 ) -> Result<(), Error> {
272 let local_var_configuration = &self.configuration;
273
274 let local_var_client = &local_var_configuration.client;
275
276 let local_var_uri_str = format!(
277 "{}/organizations/{organizationId}/billing/vnext/churn-mitigation-offer/redeem",
278 local_var_configuration.base_path,
279 organizationId = crate::apis::urlencode(organization_id)
280 );
281 let mut local_var_req_builder =
282 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
283
284 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
285
286 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
287 }
288
289 async fn restart_subscription<'a>(
290 &self,
291 organization_id: &'a str,
292 restart_subscription_request: Option<models::RestartSubscriptionRequest>,
293 ) -> Result<(), Error> {
294 let local_var_configuration = &self.configuration;
295
296 let local_var_client = &local_var_configuration.client;
297
298 let local_var_uri_str = format!(
299 "{}/organizations/{organizationId}/billing/vnext/subscription/restart",
300 local_var_configuration.base_path,
301 organizationId = crate::apis::urlencode(organization_id)
302 );
303 let mut local_var_req_builder =
304 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
305
306 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
307 local_var_req_builder = local_var_req_builder.json(&restart_subscription_request);
308
309 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
310 }
311
312 async fn update_billing_address<'a>(
313 &self,
314 organization_id: &'a str,
315 billing_address_request: Option<models::BillingAddressRequest>,
316 ) -> Result<(), Error> {
317 let local_var_configuration = &self.configuration;
318
319 let local_var_client = &local_var_configuration.client;
320
321 let local_var_uri_str = format!(
322 "{}/organizations/{organizationId}/billing/vnext/address",
323 local_var_configuration.base_path,
324 organizationId = crate::apis::urlencode(organization_id)
325 );
326 let mut local_var_req_builder =
327 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
328
329 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
330 local_var_req_builder = local_var_req_builder.json(&billing_address_request);
331
332 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
333 }
334
335 async fn update_payment_method<'a>(
336 &self,
337 organization_id: &'a str,
338 tokenized_payment_method_request: Option<models::TokenizedPaymentMethodRequest>,
339 ) -> Result<(), Error> {
340 let local_var_configuration = &self.configuration;
341
342 let local_var_client = &local_var_configuration.client;
343
344 let local_var_uri_str = format!(
345 "{}/organizations/{organizationId}/billing/vnext/payment-method",
346 local_var_configuration.base_path,
347 organizationId = crate::apis::urlencode(organization_id)
348 );
349 let mut local_var_req_builder =
350 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
351
352 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
353 local_var_req_builder = local_var_req_builder.json(&tokenized_payment_method_request);
354
355 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
356 }
357}