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 EmergencyAccessApi: Send + Sync {
29 async fn accept<'a>(
31 &self,
32 id: uuid::Uuid,
33 organization_user_accept_request_model: Option<models::OrganizationUserAcceptRequestModel>,
34 ) -> Result<(), Error>;
35
36 async fn approve<'a>(&self, id: uuid::Uuid) -> Result<(), Error>;
38
39 async fn confirm<'a>(
41 &self,
42 id: uuid::Uuid,
43 organization_user_confirm_request_model: Option<
44 models::OrganizationUserConfirmRequestModel,
45 >,
46 ) -> Result<(), Error>;
47
48 async fn delete<'a>(&self, id: uuid::Uuid) -> Result<(), Error>;
50
51 async fn get<'a>(
53 &self,
54 id: uuid::Uuid,
55 ) -> Result<models::EmergencyAccessGranteeDetailsResponseModel, Error>;
56
57 async fn get_attachment_data<'a>(
59 &self,
60 id: uuid::Uuid,
61 cipher_id: uuid::Uuid,
62 attachment_id: &'a str,
63 ) -> Result<models::AttachmentResponseModel, Error>;
64
65 async fn get_contacts(
67 &self,
68 ) -> Result<models::EmergencyAccessGranteeDetailsResponseModelListResponseModel, Error>;
69
70 async fn get_grantees(
72 &self,
73 ) -> Result<models::EmergencyAccessGrantorDetailsResponseModelListResponseModel, Error>;
74
75 async fn initiate<'a>(&self, id: uuid::Uuid) -> Result<(), Error>;
77
78 async fn invite<'a>(
80 &self,
81 emergency_access_invite_request_model: Option<models::EmergencyAccessInviteRequestModel>,
82 ) -> Result<(), Error>;
83
84 async fn password<'a>(
86 &self,
87 id: uuid::Uuid,
88 emergency_access_password_request_model: Option<
89 models::EmergencyAccessPasswordRequestModel,
90 >,
91 ) -> Result<(), Error>;
92
93 async fn policies<'a>(
95 &self,
96 id: uuid::Uuid,
97 ) -> Result<models::PolicyResponseModelListResponseModel, Error>;
98
99 async fn put<'a>(
101 &self,
102 id: uuid::Uuid,
103 emergency_access_update_request_model: Option<models::EmergencyAccessUpdateRequestModel>,
104 ) -> Result<(), Error>;
105
106 async fn reinvite<'a>(&self, id: uuid::Uuid) -> Result<(), Error>;
108
109 async fn reject<'a>(&self, id: uuid::Uuid) -> Result<(), Error>;
111
112 async fn takeover<'a>(
114 &self,
115 id: uuid::Uuid,
116 ) -> Result<models::EmergencyAccessTakeoverResponseModel, Error>;
117
118 async fn view_ciphers<'a>(
122 &self,
123 id: uuid::Uuid,
124 ) -> Result<models::EmergencyAccessViewResponseModel, Error>;
125}
126
127pub struct EmergencyAccessApiClient {
128 configuration: Arc<configuration::Configuration>,
129}
130
131impl EmergencyAccessApiClient {
132 pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
133 Self { configuration }
134 }
135}
136
137#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
138#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
139impl EmergencyAccessApi for EmergencyAccessApiClient {
140 async fn accept<'a>(
141 &self,
142 id: uuid::Uuid,
143 organization_user_accept_request_model: Option<models::OrganizationUserAcceptRequestModel>,
144 ) -> Result<(), Error> {
145 let local_var_configuration = &self.configuration;
146
147 let local_var_client = &local_var_configuration.client;
148
149 let local_var_uri_str = format!(
150 "{}/emergency-access/{id}/accept",
151 local_var_configuration.base_path,
152 id = id
153 );
154 let mut local_var_req_builder =
155 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
156
157 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
158 local_var_req_builder = local_var_req_builder.json(&organization_user_accept_request_model);
159
160 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
161 }
162
163 async fn approve<'a>(&self, id: uuid::Uuid) -> Result<(), Error> {
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 "{}/emergency-access/{id}/approve",
170 local_var_configuration.base_path,
171 id = id
172 );
173 let mut local_var_req_builder =
174 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
175
176 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
177
178 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
179 }
180
181 async fn confirm<'a>(
182 &self,
183 id: uuid::Uuid,
184 organization_user_confirm_request_model: Option<
185 models::OrganizationUserConfirmRequestModel,
186 >,
187 ) -> Result<(), Error> {
188 let local_var_configuration = &self.configuration;
189
190 let local_var_client = &local_var_configuration.client;
191
192 let local_var_uri_str = format!(
193 "{}/emergency-access/{id}/confirm",
194 local_var_configuration.base_path,
195 id = id
196 );
197 let mut local_var_req_builder =
198 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
199
200 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
201 local_var_req_builder =
202 local_var_req_builder.json(&organization_user_confirm_request_model);
203
204 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
205 }
206
207 async fn delete<'a>(&self, id: uuid::Uuid) -> Result<(), Error> {
208 let local_var_configuration = &self.configuration;
209
210 let local_var_client = &local_var_configuration.client;
211
212 let local_var_uri_str = format!(
213 "{}/emergency-access/{id}",
214 local_var_configuration.base_path,
215 id = id
216 );
217 let mut local_var_req_builder =
218 local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
219
220 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
221
222 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
223 }
224
225 async fn get<'a>(
226 &self,
227 id: uuid::Uuid,
228 ) -> Result<models::EmergencyAccessGranteeDetailsResponseModel, Error> {
229 let local_var_configuration = &self.configuration;
230
231 let local_var_client = &local_var_configuration.client;
232
233 let local_var_uri_str = format!(
234 "{}/emergency-access/{id}",
235 local_var_configuration.base_path,
236 id = id
237 );
238 let mut local_var_req_builder =
239 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
240
241 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
242
243 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
244 }
245
246 async fn get_attachment_data<'a>(
247 &self,
248 id: uuid::Uuid,
249 cipher_id: uuid::Uuid,
250 attachment_id: &'a str,
251 ) -> Result<models::AttachmentResponseModel, Error> {
252 let local_var_configuration = &self.configuration;
253
254 let local_var_client = &local_var_configuration.client;
255
256 let local_var_uri_str = format!(
257 "{}/emergency-access/{id}/{cipherId}/attachment/{attachmentId}",
258 local_var_configuration.base_path,
259 id = id,
260 cipherId = cipher_id,
261 attachmentId = crate::apis::urlencode(attachment_id)
262 );
263 let mut local_var_req_builder =
264 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
265
266 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
267
268 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
269 }
270
271 async fn get_contacts(
272 &self,
273 ) -> Result<models::EmergencyAccessGranteeDetailsResponseModelListResponseModel, Error> {
274 let local_var_configuration = &self.configuration;
275
276 let local_var_client = &local_var_configuration.client;
277
278 let local_var_uri_str = format!(
279 "{}/emergency-access/trusted",
280 local_var_configuration.base_path
281 );
282 let mut local_var_req_builder =
283 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
284
285 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
286
287 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
288 }
289
290 async fn get_grantees(
291 &self,
292 ) -> Result<models::EmergencyAccessGrantorDetailsResponseModelListResponseModel, Error> {
293 let local_var_configuration = &self.configuration;
294
295 let local_var_client = &local_var_configuration.client;
296
297 let local_var_uri_str = format!(
298 "{}/emergency-access/granted",
299 local_var_configuration.base_path
300 );
301 let mut local_var_req_builder =
302 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
303
304 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
305
306 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
307 }
308
309 async fn initiate<'a>(&self, id: uuid::Uuid) -> Result<(), Error> {
310 let local_var_configuration = &self.configuration;
311
312 let local_var_client = &local_var_configuration.client;
313
314 let local_var_uri_str = format!(
315 "{}/emergency-access/{id}/initiate",
316 local_var_configuration.base_path,
317 id = id
318 );
319 let mut local_var_req_builder =
320 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
321
322 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
323
324 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
325 }
326
327 async fn invite<'a>(
328 &self,
329 emergency_access_invite_request_model: Option<models::EmergencyAccessInviteRequestModel>,
330 ) -> Result<(), Error> {
331 let local_var_configuration = &self.configuration;
332
333 let local_var_client = &local_var_configuration.client;
334
335 let local_var_uri_str = format!(
336 "{}/emergency-access/invite",
337 local_var_configuration.base_path
338 );
339 let mut local_var_req_builder =
340 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
341
342 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
343 local_var_req_builder = local_var_req_builder.json(&emergency_access_invite_request_model);
344
345 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
346 }
347
348 async fn password<'a>(
349 &self,
350 id: uuid::Uuid,
351 emergency_access_password_request_model: Option<
352 models::EmergencyAccessPasswordRequestModel,
353 >,
354 ) -> Result<(), Error> {
355 let local_var_configuration = &self.configuration;
356
357 let local_var_client = &local_var_configuration.client;
358
359 let local_var_uri_str = format!(
360 "{}/emergency-access/{id}/password",
361 local_var_configuration.base_path,
362 id = id
363 );
364 let mut local_var_req_builder =
365 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
366
367 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
368 local_var_req_builder =
369 local_var_req_builder.json(&emergency_access_password_request_model);
370
371 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
372 }
373
374 async fn policies<'a>(
375 &self,
376 id: uuid::Uuid,
377 ) -> Result<models::PolicyResponseModelListResponseModel, Error> {
378 let local_var_configuration = &self.configuration;
379
380 let local_var_client = &local_var_configuration.client;
381
382 let local_var_uri_str = format!(
383 "{}/emergency-access/{id}/policies",
384 local_var_configuration.base_path,
385 id = id
386 );
387 let mut local_var_req_builder =
388 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
389
390 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
391
392 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
393 }
394
395 async fn put<'a>(
396 &self,
397 id: uuid::Uuid,
398 emergency_access_update_request_model: Option<models::EmergencyAccessUpdateRequestModel>,
399 ) -> Result<(), Error> {
400 let local_var_configuration = &self.configuration;
401
402 let local_var_client = &local_var_configuration.client;
403
404 let local_var_uri_str = format!(
405 "{}/emergency-access/{id}",
406 local_var_configuration.base_path,
407 id = id
408 );
409 let mut local_var_req_builder =
410 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
411
412 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
413 local_var_req_builder = local_var_req_builder.json(&emergency_access_update_request_model);
414
415 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
416 }
417
418 async fn reinvite<'a>(&self, id: uuid::Uuid) -> Result<(), Error> {
419 let local_var_configuration = &self.configuration;
420
421 let local_var_client = &local_var_configuration.client;
422
423 let local_var_uri_str = format!(
424 "{}/emergency-access/{id}/reinvite",
425 local_var_configuration.base_path,
426 id = id
427 );
428 let mut local_var_req_builder =
429 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
430
431 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
432
433 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
434 }
435
436 async fn reject<'a>(&self, id: uuid::Uuid) -> Result<(), Error> {
437 let local_var_configuration = &self.configuration;
438
439 let local_var_client = &local_var_configuration.client;
440
441 let local_var_uri_str = format!(
442 "{}/emergency-access/{id}/reject",
443 local_var_configuration.base_path,
444 id = id
445 );
446 let mut local_var_req_builder =
447 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
448
449 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
450
451 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
452 }
453
454 async fn takeover<'a>(
455 &self,
456 id: uuid::Uuid,
457 ) -> Result<models::EmergencyAccessTakeoverResponseModel, Error> {
458 let local_var_configuration = &self.configuration;
459
460 let local_var_client = &local_var_configuration.client;
461
462 let local_var_uri_str = format!(
463 "{}/emergency-access/{id}/takeover",
464 local_var_configuration.base_path,
465 id = id
466 );
467 let mut local_var_req_builder =
468 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
469
470 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
471
472 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
473 }
474
475 async fn view_ciphers<'a>(
478 &self,
479 id: uuid::Uuid,
480 ) -> Result<models::EmergencyAccessViewResponseModel, Error> {
481 let local_var_configuration = &self.configuration;
482
483 let local_var_client = &local_var_configuration.client;
484
485 let local_var_uri_str = format!(
486 "{}/emergency-access/{id}/view",
487 local_var_configuration.base_path,
488 id = id
489 );
490 let mut local_var_req_builder =
491 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
492
493 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
494
495 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
496 }
497}