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 change_privileged_controls_seats<'a>(
33 &self,
34 organization_id: uuid::Uuid,
35 privileged_controls_seats_request: models::PrivilegedControlsSeatsRequest,
36 ) -> Result<(), Error>;
37
38 async fn get_organization_subscription_preview<'a>(
41 &self,
42 organization_id: uuid::Uuid,
43 ) -> Result<models::SubscriptionPreview, Error>;
44
45 async fn preview_organization_plan_change<'a>(
48 &self,
49 organization_id: uuid::Uuid,
50 preview_organization_plan_change_request: models::PreviewOrganizationPlanChangeRequest,
51 ) -> Result<models::InvoicePreview, Error>;
52
53 async fn preview_organization_restart<'a>(
56 &self,
57 organization_id: uuid::Uuid,
58 preview_organization_restart_request: models::PreviewOrganizationRestartRequest,
59 ) -> Result<models::InvoicePreview, Error>;
60
61 async fn preview_organization_subscription_purchase<'a>(
64 &self,
65 preview_organization_subscription_purchase_request: models::PreviewOrganizationSubscriptionPurchaseRequest,
66 ) -> Result<models::InvoicePreview, Error>;
67
68 async fn purchase_privileged_controls<'a>(
71 &self,
72 organization_id: uuid::Uuid,
73 purchase_privileged_controls_request: models::PurchasePrivilegedControlsRequest,
74 ) -> Result<(), Error>;
75
76 async fn remove_privileged_controls<'a>(
79 &self,
80 organization_id: uuid::Uuid,
81 ) -> Result<(), Error>;
82}
83
84pub struct OrganizationSubscriptionsApiClient {
85 configuration: Arc<configuration::Configuration>,
86}
87
88impl OrganizationSubscriptionsApiClient {
89 pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
90 Self { configuration }
91 }
92}
93
94#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
95#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
96impl OrganizationSubscriptionsApi for OrganizationSubscriptionsApiClient {
97 async fn change_privileged_controls_seats<'a>(
100 &self,
101 organization_id: uuid::Uuid,
102 privileged_controls_seats_request: models::PrivilegedControlsSeatsRequest,
103 ) -> Result<(), Error> {
104 let local_var_configuration = &self.configuration;
105
106 let local_var_client = &local_var_configuration.client;
107
108 let local_var_uri_str = format!(
109 "{}/organizations/{organizationId}/billing/subscription/privileged-controls",
110 local_var_configuration.base_path,
111 organizationId = organization_id
112 );
113 let mut local_var_req_builder =
114 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
115
116 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
117 local_var_req_builder = local_var_req_builder.json(&privileged_controls_seats_request);
118
119 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
120 }
121
122 async fn get_organization_subscription_preview<'a>(
124 &self,
125 organization_id: uuid::Uuid,
126 ) -> Result<models::SubscriptionPreview, Error> {
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/subscription/preview",
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 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
142 }
143
144 async fn preview_organization_plan_change<'a>(
146 &self,
147 organization_id: uuid::Uuid,
148 preview_organization_plan_change_request: models::PreviewOrganizationPlanChangeRequest,
149 ) -> Result<models::InvoicePreview, Error> {
150 let local_var_configuration = &self.configuration;
151
152 let local_var_client = &local_var_configuration.client;
153
154 let local_var_uri_str = format!(
155 "{}/organizations/{organizationId}/billing/subscription/plan-change/preview",
156 local_var_configuration.base_path,
157 organizationId = organization_id
158 );
159 let mut local_var_req_builder =
160 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
161
162 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
163 local_var_req_builder =
164 local_var_req_builder.json(&preview_organization_plan_change_request);
165
166 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
167 }
168
169 async fn preview_organization_restart<'a>(
171 &self,
172 organization_id: uuid::Uuid,
173 preview_organization_restart_request: models::PreviewOrganizationRestartRequest,
174 ) -> Result<models::InvoicePreview, Error> {
175 let local_var_configuration = &self.configuration;
176
177 let local_var_client = &local_var_configuration.client;
178
179 let local_var_uri_str = format!(
180 "{}/organizations/{organizationId}/billing/subscription/restart/preview",
181 local_var_configuration.base_path,
182 organizationId = organization_id
183 );
184 let mut local_var_req_builder =
185 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
186
187 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
188 local_var_req_builder = local_var_req_builder.json(&preview_organization_restart_request);
189
190 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
191 }
192
193 async fn preview_organization_subscription_purchase<'a>(
195 &self,
196 preview_organization_subscription_purchase_request: models::PreviewOrganizationSubscriptionPurchaseRequest,
197 ) -> Result<models::InvoicePreview, Error> {
198 let local_var_configuration = &self.configuration;
199
200 let local_var_client = &local_var_configuration.client;
201
202 let local_var_uri_str = format!(
203 "{}/organizations/billing/subscription/purchase/preview",
204 local_var_configuration.base_path
205 );
206 let mut local_var_req_builder =
207 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
208
209 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
210 local_var_req_builder =
211 local_var_req_builder.json(&preview_organization_subscription_purchase_request);
212
213 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
214 }
215
216 async fn purchase_privileged_controls<'a>(
218 &self,
219 organization_id: uuid::Uuid,
220 purchase_privileged_controls_request: models::PurchasePrivilegedControlsRequest,
221 ) -> Result<(), Error> {
222 let local_var_configuration = &self.configuration;
223
224 let local_var_client = &local_var_configuration.client;
225
226 let local_var_uri_str = format!(
227 "{}/organizations/{organizationId}/billing/subscription/privileged-controls/purchase",
228 local_var_configuration.base_path,
229 organizationId = organization_id
230 );
231 let mut local_var_req_builder =
232 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
233
234 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
235 local_var_req_builder = local_var_req_builder.json(&purchase_privileged_controls_request);
236
237 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
238 }
239
240 async fn remove_privileged_controls<'a>(
242 &self,
243 organization_id: uuid::Uuid,
244 ) -> Result<(), Error> {
245 let local_var_configuration = &self.configuration;
246
247 let local_var_client = &local_var_configuration.client;
248
249 let local_var_uri_str = format!(
250 "{}/organizations/{organizationId}/billing/subscription/privileged-controls",
251 local_var_configuration.base_path,
252 organizationId = organization_id
253 );
254 let mut local_var_req_builder =
255 local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
256
257 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
258
259 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
260 }
261}