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 AccessPoliciesApi: Send + Sync {
29 async fn get_people_potential_grantees<'a>(
31 &self,
32 id: uuid::Uuid,
33 ) -> Result<
34 models::PotentialGranteeResponseModelListResponseModel,
35 Error<GetPeoplePotentialGranteesError>,
36 >;
37
38 async fn get_project_people_access_policies<'a>(
40 &self,
41 id: uuid::Uuid,
42 ) -> Result<
43 models::ProjectPeopleAccessPoliciesResponseModel,
44 Error<GetProjectPeopleAccessPoliciesError>,
45 >;
46
47 async fn get_project_potential_grantees<'a>(
49 &self,
50 id: uuid::Uuid,
51 ) -> Result<
52 models::PotentialGranteeResponseModelListResponseModel,
53 Error<GetProjectPotentialGranteesError>,
54 >;
55
56 async fn get_project_service_accounts_access_policies<'a>(
58 &self,
59 id: uuid::Uuid,
60 ) -> Result<
61 models::ProjectServiceAccountsAccessPoliciesResponseModel,
62 Error<GetProjectServiceAccountsAccessPoliciesError>,
63 >;
64
65 async fn get_secret_access_policies<'a>(
67 &self,
68 secret_id: uuid::Uuid,
69 ) -> Result<models::SecretAccessPoliciesResponseModel, Error<GetSecretAccessPoliciesError>>;
70
71 async fn get_service_account_granted_policies<'a>(
73 &self,
74 id: uuid::Uuid,
75 ) -> Result<
76 models::ServiceAccountGrantedPoliciesPermissionDetailsResponseModel,
77 Error<GetServiceAccountGrantedPoliciesError>,
78 >;
79
80 async fn get_service_account_people_access_policies<'a>(
82 &self,
83 id: uuid::Uuid,
84 ) -> Result<
85 models::ServiceAccountPeopleAccessPoliciesResponseModel,
86 Error<GetServiceAccountPeopleAccessPoliciesError>,
87 >;
88
89 async fn get_service_accounts_potential_grantees<'a>(
91 &self,
92 id: uuid::Uuid,
93 ) -> Result<
94 models::PotentialGranteeResponseModelListResponseModel,
95 Error<GetServiceAccountsPotentialGranteesError>,
96 >;
97
98 async fn put_project_people_access_policies<'a>(
100 &self,
101 id: uuid::Uuid,
102 people_access_policies_request_model: Option<models::PeopleAccessPoliciesRequestModel>,
103 ) -> Result<
104 models::ProjectPeopleAccessPoliciesResponseModel,
105 Error<PutProjectPeopleAccessPoliciesError>,
106 >;
107
108 async fn put_project_service_accounts_access_policies<'a>(
110 &self,
111 id: uuid::Uuid,
112 project_service_accounts_access_policies_request_model: Option<
113 models::ProjectServiceAccountsAccessPoliciesRequestModel,
114 >,
115 ) -> Result<
116 models::ProjectServiceAccountsAccessPoliciesResponseModel,
117 Error<PutProjectServiceAccountsAccessPoliciesError>,
118 >;
119
120 async fn put_service_account_granted_policies<'a>(
122 &self,
123 id: uuid::Uuid,
124 service_account_granted_policies_request_model: Option<
125 models::ServiceAccountGrantedPoliciesRequestModel,
126 >,
127 ) -> Result<
128 models::ServiceAccountGrantedPoliciesPermissionDetailsResponseModel,
129 Error<PutServiceAccountGrantedPoliciesError>,
130 >;
131
132 async fn put_service_account_people_access_policies<'a>(
134 &self,
135 id: uuid::Uuid,
136 people_access_policies_request_model: Option<models::PeopleAccessPoliciesRequestModel>,
137 ) -> Result<
138 models::ServiceAccountPeopleAccessPoliciesResponseModel,
139 Error<PutServiceAccountPeopleAccessPoliciesError>,
140 >;
141}
142
143pub struct AccessPoliciesApiClient {
144 configuration: Arc<configuration::Configuration>,
145}
146
147impl AccessPoliciesApiClient {
148 pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
149 Self { configuration }
150 }
151}
152
153#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
154#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
155impl AccessPoliciesApi for AccessPoliciesApiClient {
156 async fn get_people_potential_grantees<'a>(
157 &self,
158 id: uuid::Uuid,
159 ) -> Result<
160 models::PotentialGranteeResponseModelListResponseModel,
161 Error<GetPeoplePotentialGranteesError>,
162 > {
163 let local_var_configuration = &self.configuration;
164
165 let local_var_client = &local_var_configuration.client;
166
167 let local_var_uri_str = format!(
168 "{}/organizations/{id}/access-policies/people/potential-grantees",
169 local_var_configuration.base_path,
170 id = id
171 );
172 let mut local_var_req_builder =
173 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
174
175 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
176
177 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
178 }
179
180 async fn get_project_people_access_policies<'a>(
181 &self,
182 id: uuid::Uuid,
183 ) -> Result<
184 models::ProjectPeopleAccessPoliciesResponseModel,
185 Error<GetProjectPeopleAccessPoliciesError>,
186 > {
187 let local_var_configuration = &self.configuration;
188
189 let local_var_client = &local_var_configuration.client;
190
191 let local_var_uri_str = format!(
192 "{}/projects/{id}/access-policies/people",
193 local_var_configuration.base_path,
194 id = id
195 );
196 let mut local_var_req_builder =
197 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
198
199 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
200
201 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
202 }
203
204 async fn get_project_potential_grantees<'a>(
205 &self,
206 id: uuid::Uuid,
207 ) -> Result<
208 models::PotentialGranteeResponseModelListResponseModel,
209 Error<GetProjectPotentialGranteesError>,
210 > {
211 let local_var_configuration = &self.configuration;
212
213 let local_var_client = &local_var_configuration.client;
214
215 let local_var_uri_str = format!(
216 "{}/organizations/{id}/access-policies/projects/potential-grantees",
217 local_var_configuration.base_path,
218 id = id
219 );
220 let mut local_var_req_builder =
221 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
222
223 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
224
225 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
226 }
227
228 async fn get_project_service_accounts_access_policies<'a>(
229 &self,
230 id: uuid::Uuid,
231 ) -> Result<
232 models::ProjectServiceAccountsAccessPoliciesResponseModel,
233 Error<GetProjectServiceAccountsAccessPoliciesError>,
234 > {
235 let local_var_configuration = &self.configuration;
236
237 let local_var_client = &local_var_configuration.client;
238
239 let local_var_uri_str = format!(
240 "{}/projects/{id}/access-policies/service-accounts",
241 local_var_configuration.base_path,
242 id = id
243 );
244 let mut local_var_req_builder =
245 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
246
247 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
248
249 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
250 }
251
252 async fn get_secret_access_policies<'a>(
253 &self,
254 secret_id: uuid::Uuid,
255 ) -> Result<models::SecretAccessPoliciesResponseModel, Error<GetSecretAccessPoliciesError>>
256 {
257 let local_var_configuration = &self.configuration;
258
259 let local_var_client = &local_var_configuration.client;
260
261 let local_var_uri_str = format!(
262 "{}/secrets/{secretId}/access-policies",
263 local_var_configuration.base_path,
264 secretId = secret_id
265 );
266 let mut local_var_req_builder =
267 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
268
269 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
270
271 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
272 }
273
274 async fn get_service_account_granted_policies<'a>(
275 &self,
276 id: uuid::Uuid,
277 ) -> Result<
278 models::ServiceAccountGrantedPoliciesPermissionDetailsResponseModel,
279 Error<GetServiceAccountGrantedPoliciesError>,
280 > {
281 let local_var_configuration = &self.configuration;
282
283 let local_var_client = &local_var_configuration.client;
284
285 let local_var_uri_str = format!(
286 "{}/service-accounts/{id}/granted-policies",
287 local_var_configuration.base_path,
288 id = id
289 );
290 let mut local_var_req_builder =
291 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
292
293 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
294
295 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
296 }
297
298 async fn get_service_account_people_access_policies<'a>(
299 &self,
300 id: uuid::Uuid,
301 ) -> Result<
302 models::ServiceAccountPeopleAccessPoliciesResponseModel,
303 Error<GetServiceAccountPeopleAccessPoliciesError>,
304 > {
305 let local_var_configuration = &self.configuration;
306
307 let local_var_client = &local_var_configuration.client;
308
309 let local_var_uri_str = format!(
310 "{}/service-accounts/{id}/access-policies/people",
311 local_var_configuration.base_path,
312 id = id
313 );
314 let mut local_var_req_builder =
315 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
316
317 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
318
319 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
320 }
321
322 async fn get_service_accounts_potential_grantees<'a>(
323 &self,
324 id: uuid::Uuid,
325 ) -> Result<
326 models::PotentialGranteeResponseModelListResponseModel,
327 Error<GetServiceAccountsPotentialGranteesError>,
328 > {
329 let local_var_configuration = &self.configuration;
330
331 let local_var_client = &local_var_configuration.client;
332
333 let local_var_uri_str = format!(
334 "{}/organizations/{id}/access-policies/service-accounts/potential-grantees",
335 local_var_configuration.base_path,
336 id = id
337 );
338 let mut local_var_req_builder =
339 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
340
341 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
342
343 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
344 }
345
346 async fn put_project_people_access_policies<'a>(
347 &self,
348 id: uuid::Uuid,
349 people_access_policies_request_model: Option<models::PeopleAccessPoliciesRequestModel>,
350 ) -> Result<
351 models::ProjectPeopleAccessPoliciesResponseModel,
352 Error<PutProjectPeopleAccessPoliciesError>,
353 > {
354 let local_var_configuration = &self.configuration;
355
356 let local_var_client = &local_var_configuration.client;
357
358 let local_var_uri_str = format!(
359 "{}/projects/{id}/access-policies/people",
360 local_var_configuration.base_path,
361 id = id
362 );
363 let mut local_var_req_builder =
364 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
365
366 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
367 local_var_req_builder = local_var_req_builder.json(&people_access_policies_request_model);
368
369 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
370 }
371
372 async fn put_project_service_accounts_access_policies<'a>(
373 &self,
374 id: uuid::Uuid,
375 project_service_accounts_access_policies_request_model: Option<
376 models::ProjectServiceAccountsAccessPoliciesRequestModel,
377 >,
378 ) -> Result<
379 models::ProjectServiceAccountsAccessPoliciesResponseModel,
380 Error<PutProjectServiceAccountsAccessPoliciesError>,
381 > {
382 let local_var_configuration = &self.configuration;
383
384 let local_var_client = &local_var_configuration.client;
385
386 let local_var_uri_str = format!(
387 "{}/projects/{id}/access-policies/service-accounts",
388 local_var_configuration.base_path,
389 id = id
390 );
391 let mut local_var_req_builder =
392 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
393
394 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
395 local_var_req_builder =
396 local_var_req_builder.json(&project_service_accounts_access_policies_request_model);
397
398 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
399 }
400
401 async fn put_service_account_granted_policies<'a>(
402 &self,
403 id: uuid::Uuid,
404 service_account_granted_policies_request_model: Option<
405 models::ServiceAccountGrantedPoliciesRequestModel,
406 >,
407 ) -> Result<
408 models::ServiceAccountGrantedPoliciesPermissionDetailsResponseModel,
409 Error<PutServiceAccountGrantedPoliciesError>,
410 > {
411 let local_var_configuration = &self.configuration;
412
413 let local_var_client = &local_var_configuration.client;
414
415 let local_var_uri_str = format!(
416 "{}/service-accounts/{id}/granted-policies",
417 local_var_configuration.base_path,
418 id = id
419 );
420 let mut local_var_req_builder =
421 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
422
423 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
424 local_var_req_builder =
425 local_var_req_builder.json(&service_account_granted_policies_request_model);
426
427 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
428 }
429
430 async fn put_service_account_people_access_policies<'a>(
431 &self,
432 id: uuid::Uuid,
433 people_access_policies_request_model: Option<models::PeopleAccessPoliciesRequestModel>,
434 ) -> Result<
435 models::ServiceAccountPeopleAccessPoliciesResponseModel,
436 Error<PutServiceAccountPeopleAccessPoliciesError>,
437 > {
438 let local_var_configuration = &self.configuration;
439
440 let local_var_client = &local_var_configuration.client;
441
442 let local_var_uri_str = format!(
443 "{}/service-accounts/{id}/access-policies/people",
444 local_var_configuration.base_path,
445 id = id
446 );
447 let mut local_var_req_builder =
448 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
449
450 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
451 local_var_req_builder = local_var_req_builder.json(&people_access_policies_request_model);
452
453 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
454 }
455}
456
457#[derive(Debug, Clone, Serialize, Deserialize)]
459#[serde(untagged)]
460pub enum GetPeoplePotentialGranteesError {
461 UnknownValue(serde_json::Value),
462}
463#[derive(Debug, Clone, Serialize, Deserialize)]
465#[serde(untagged)]
466pub enum GetProjectPeopleAccessPoliciesError {
467 UnknownValue(serde_json::Value),
468}
469#[derive(Debug, Clone, Serialize, Deserialize)]
471#[serde(untagged)]
472pub enum GetProjectPotentialGranteesError {
473 UnknownValue(serde_json::Value),
474}
475#[derive(Debug, Clone, Serialize, Deserialize)]
478#[serde(untagged)]
479pub enum GetProjectServiceAccountsAccessPoliciesError {
480 UnknownValue(serde_json::Value),
481}
482#[derive(Debug, Clone, Serialize, Deserialize)]
484#[serde(untagged)]
485pub enum GetSecretAccessPoliciesError {
486 UnknownValue(serde_json::Value),
487}
488#[derive(Debug, Clone, Serialize, Deserialize)]
490#[serde(untagged)]
491pub enum GetServiceAccountGrantedPoliciesError {
492 UnknownValue(serde_json::Value),
493}
494#[derive(Debug, Clone, Serialize, Deserialize)]
497#[serde(untagged)]
498pub enum GetServiceAccountPeopleAccessPoliciesError {
499 UnknownValue(serde_json::Value),
500}
501#[derive(Debug, Clone, Serialize, Deserialize)]
503#[serde(untagged)]
504pub enum GetServiceAccountsPotentialGranteesError {
505 UnknownValue(serde_json::Value),
506}
507#[derive(Debug, Clone, Serialize, Deserialize)]
509#[serde(untagged)]
510pub enum PutProjectPeopleAccessPoliciesError {
511 UnknownValue(serde_json::Value),
512}
513#[derive(Debug, Clone, Serialize, Deserialize)]
516#[serde(untagged)]
517pub enum PutProjectServiceAccountsAccessPoliciesError {
518 UnknownValue(serde_json::Value),
519}
520#[derive(Debug, Clone, Serialize, Deserialize)]
522#[serde(untagged)]
523pub enum PutServiceAccountGrantedPoliciesError {
524 UnknownValue(serde_json::Value),
525}
526#[derive(Debug, Clone, Serialize, Deserialize)]
529#[serde(untagged)]
530pub enum PutServiceAccountPeopleAccessPoliciesError {
531 UnknownValue(serde_json::Value),
532}