bitwarden_api_api/apis/
organization_subscriptions_api.rs1use 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 OrganizationSubscriptionsApi: Send + Sync {
29 async fn get_organization_subscription_preview<'a>(
32 &self,
33 organization_id: uuid::Uuid,
34 ) -> Result<models::SubscriptionPreview, Error>;
35
36 async fn preview_organization_plan_change<'a>(
39 &self,
40 organization_id: uuid::Uuid,
41 preview_organization_plan_change_request: models::PreviewOrganizationPlanChangeRequest,
42 ) -> Result<models::InvoicePreview, Error>;
43
44 async fn preview_organization_subscription_purchase<'a>(
47 &self,
48 preview_organization_subscription_purchase_request: models::PreviewOrganizationSubscriptionPurchaseRequest,
49 ) -> Result<models::InvoicePreview, Error>;
50}
51
52pub struct OrganizationSubscriptionsApiClient {
53 configuration: Arc<configuration::Configuration>,
54}
55
56impl OrganizationSubscriptionsApiClient {
57 pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
58 Self { configuration }
59 }
60}
61
62#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
63#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
64impl OrganizationSubscriptionsApi for OrganizationSubscriptionsApiClient {
65 async fn get_organization_subscription_preview<'a>(
67 &self,
68 organization_id: uuid::Uuid,
69 ) -> Result<models::SubscriptionPreview, Error> {
70 let local_var_configuration = &self.configuration;
71
72 let local_var_client = &local_var_configuration.client;
73
74 let local_var_uri_str = format!(
75 "{}/organizations/{organizationId}/billing/subscription/preview",
76 local_var_configuration.base_path,
77 organizationId = organization_id
78 );
79 let mut local_var_req_builder =
80 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
81
82 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
83
84 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
85 }
86
87 async fn preview_organization_plan_change<'a>(
89 &self,
90 organization_id: uuid::Uuid,
91 preview_organization_plan_change_request: models::PreviewOrganizationPlanChangeRequest,
92 ) -> Result<models::InvoicePreview, Error> {
93 let local_var_configuration = &self.configuration;
94
95 let local_var_client = &local_var_configuration.client;
96
97 let local_var_uri_str = format!(
98 "{}/organizations/{organizationId}/billing/subscription/plan-change/preview",
99 local_var_configuration.base_path,
100 organizationId = organization_id
101 );
102 let mut local_var_req_builder =
103 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
104
105 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
106 local_var_req_builder =
107 local_var_req_builder.json(&preview_organization_plan_change_request);
108
109 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
110 }
111
112 async fn preview_organization_subscription_purchase<'a>(
114 &self,
115 preview_organization_subscription_purchase_request: models::PreviewOrganizationSubscriptionPurchaseRequest,
116 ) -> Result<models::InvoicePreview, Error> {
117 let local_var_configuration = &self.configuration;
118
119 let local_var_client = &local_var_configuration.client;
120
121 let local_var_uri_str = format!(
122 "{}/organizations/billing/subscription/purchase/preview",
123 local_var_configuration.base_path
124 );
125 let mut local_var_req_builder =
126 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
127
128 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
129 local_var_req_builder =
130 local_var_req_builder.json(&preview_organization_subscription_purchase_request);
131
132 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
133 }
134}