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 CollectionsApi: Send + Sync {
29 async fn delete<'a>(
31 &self,
32 org_id: uuid::Uuid,
33 id: &'a str,
34 collection: Option<models::Collection>,
35 ) -> Result<(), Error>;
36
37 async fn delete_many<'a>(
39 &self,
40 org_id: uuid::Uuid,
41 collection_bulk_delete_request_model: Option<models::CollectionBulkDeleteRequestModel>,
42 ) -> Result<(), Error>;
43
44 async fn get<'a>(
46 &self,
47 org_id: uuid::Uuid,
48 id: &'a str,
49 collection: Option<models::Collection>,
50 ) -> Result<models::CollectionResponseModel, Error>;
51
52 async fn get_all<'a>(
54 &self,
55 org_id: uuid::Uuid,
56 ) -> Result<models::CollectionResponseModelListResponseModel, Error>;
57
58 async fn get_all_with_access<'a>(
60 &self,
61 org_id: uuid::Uuid,
62 ) -> Result<models::CollectionAccessDetailsResponseModelListResponseModel, Error>;
63
64 async fn get_details<'a>(
66 &self,
67 org_id: uuid::Uuid,
68 id: uuid::Uuid,
69 ) -> Result<models::CollectionAccessDetailsResponseModel, Error>;
70
71 async fn get_many_with_details<'a>(
73 &self,
74 org_id: uuid::Uuid,
75 ) -> Result<models::CollectionAccessDetailsResponseModelListResponseModel, Error>;
76
77 async fn get_user(
79 &self,
80 ) -> Result<models::CollectionDetailsResponseModelListResponseModel, Error>;
81
82 async fn get_users<'a>(
84 &self,
85 org_id: uuid::Uuid,
86 id: &'a str,
87 collection: Option<models::Collection>,
88 ) -> Result<Vec<models::SelectionReadOnlyResponseModel>, Error>;
89
90 async fn post<'a>(
92 &self,
93 org_id: uuid::Uuid,
94 create_collection_request_model: Option<models::CreateCollectionRequestModel>,
95 ) -> Result<models::CollectionResponseModel, Error>;
96
97 async fn post_bulk_collection_access<'a>(
99 &self,
100 org_id: uuid::Uuid,
101 bulk_collection_access_request_model: Option<models::BulkCollectionAccessRequestModel>,
102 ) -> Result<(), Error>;
103
104 async fn put<'a>(
106 &self,
107 org_id: uuid::Uuid,
108 id: &'a str,
109 collection: Option<models::Collection>,
110 update_collection_request_model: Option<models::UpdateCollectionRequestModel>,
111 ) -> Result<models::CollectionResponseModel, Error>;
112}
113
114pub struct CollectionsApiClient {
115 configuration: Arc<configuration::Configuration>,
116}
117
118impl CollectionsApiClient {
119 pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
120 Self { configuration }
121 }
122}
123
124#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
125#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
126impl CollectionsApi for CollectionsApiClient {
127 async fn delete<'a>(
128 &self,
129 org_id: uuid::Uuid,
130 id: &'a str,
131 collection: Option<models::Collection>,
132 ) -> Result<(), Error> {
133 let local_var_configuration = &self.configuration;
134
135 let local_var_client = &local_var_configuration.client;
136
137 let local_var_uri_str = format!(
138 "{}/organizations/{orgId}/collections/{id}",
139 local_var_configuration.base_path,
140 orgId = org_id,
141 id = crate::apis::urlencode(id)
142 );
143 let mut local_var_req_builder =
144 local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
145
146 if let Some(ref param_value) = collection {
147 local_var_req_builder =
148 local_var_req_builder.query(&[("collection", &serde_json::to_value(param_value)?)]);
149 }
150 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
151
152 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
153 }
154
155 async fn delete_many<'a>(
156 &self,
157 org_id: uuid::Uuid,
158 collection_bulk_delete_request_model: Option<models::CollectionBulkDeleteRequestModel>,
159 ) -> Result<(), Error> {
160 let local_var_configuration = &self.configuration;
161
162 let local_var_client = &local_var_configuration.client;
163
164 let local_var_uri_str = format!(
165 "{}/organizations/{orgId}/collections",
166 local_var_configuration.base_path,
167 orgId = org_id
168 );
169 let mut local_var_req_builder =
170 local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
171
172 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
173 local_var_req_builder = local_var_req_builder.json(&collection_bulk_delete_request_model);
174
175 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
176 }
177
178 async fn get<'a>(
179 &self,
180 org_id: uuid::Uuid,
181 id: &'a str,
182 collection: Option<models::Collection>,
183 ) -> Result<models::CollectionResponseModel, Error> {
184 let local_var_configuration = &self.configuration;
185
186 let local_var_client = &local_var_configuration.client;
187
188 let local_var_uri_str = format!(
189 "{}/organizations/{orgId}/collections/{id}",
190 local_var_configuration.base_path,
191 orgId = org_id,
192 id = crate::apis::urlencode(id)
193 );
194 let mut local_var_req_builder =
195 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
196
197 if let Some(ref param_value) = collection {
198 local_var_req_builder =
199 local_var_req_builder.query(&[("collection", &serde_json::to_value(param_value)?)]);
200 }
201 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
202
203 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
204 }
205
206 async fn get_all<'a>(
207 &self,
208 org_id: uuid::Uuid,
209 ) -> Result<models::CollectionResponseModelListResponseModel, Error> {
210 let local_var_configuration = &self.configuration;
211
212 let local_var_client = &local_var_configuration.client;
213
214 let local_var_uri_str = format!(
215 "{}/organizations/{orgId}/collections",
216 local_var_configuration.base_path,
217 orgId = org_id
218 );
219 let mut local_var_req_builder =
220 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
221
222 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
223
224 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
225 }
226
227 async fn get_all_with_access<'a>(
228 &self,
229 org_id: uuid::Uuid,
230 ) -> Result<models::CollectionAccessDetailsResponseModelListResponseModel, Error> {
231 let local_var_configuration = &self.configuration;
232
233 let local_var_client = &local_var_configuration.client;
234
235 let local_var_uri_str = format!(
236 "{}/organizations/{orgId}/collections/access",
237 local_var_configuration.base_path,
238 orgId = org_id
239 );
240 let mut local_var_req_builder =
241 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
242
243 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
244
245 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
246 }
247
248 async fn get_details<'a>(
249 &self,
250 org_id: uuid::Uuid,
251 id: uuid::Uuid,
252 ) -> Result<models::CollectionAccessDetailsResponseModel, Error> {
253 let local_var_configuration = &self.configuration;
254
255 let local_var_client = &local_var_configuration.client;
256
257 let local_var_uri_str = format!(
258 "{}/organizations/{orgId}/collections/{id}/details",
259 local_var_configuration.base_path,
260 orgId = org_id,
261 id = 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_many_with_details<'a>(
272 &self,
273 org_id: uuid::Uuid,
274 ) -> Result<models::CollectionAccessDetailsResponseModelListResponseModel, Error> {
275 let local_var_configuration = &self.configuration;
276
277 let local_var_client = &local_var_configuration.client;
278
279 let local_var_uri_str = format!(
280 "{}/organizations/{orgId}/collections/details",
281 local_var_configuration.base_path,
282 orgId = org_id
283 );
284 let mut local_var_req_builder =
285 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
286
287 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
288
289 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
290 }
291
292 async fn get_user(
293 &self,
294 ) -> Result<models::CollectionDetailsResponseModelListResponseModel, Error> {
295 let local_var_configuration = &self.configuration;
296
297 let local_var_client = &local_var_configuration.client;
298
299 let local_var_uri_str = format!("{}/collections", local_var_configuration.base_path);
300 let mut local_var_req_builder =
301 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
302
303 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
304
305 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
306 }
307
308 async fn get_users<'a>(
309 &self,
310 org_id: uuid::Uuid,
311 id: &'a str,
312 collection: Option<models::Collection>,
313 ) -> Result<Vec<models::SelectionReadOnlyResponseModel>, Error> {
314 let local_var_configuration = &self.configuration;
315
316 let local_var_client = &local_var_configuration.client;
317
318 let local_var_uri_str = format!(
319 "{}/organizations/{orgId}/collections/{id}/users",
320 local_var_configuration.base_path,
321 orgId = org_id,
322 id = crate::apis::urlencode(id)
323 );
324 let mut local_var_req_builder =
325 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
326
327 if let Some(ref param_value) = collection {
328 local_var_req_builder =
329 local_var_req_builder.query(&[("collection", &serde_json::to_value(param_value)?)]);
330 }
331 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
332
333 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
334 }
335
336 async fn post<'a>(
337 &self,
338 org_id: uuid::Uuid,
339 create_collection_request_model: Option<models::CreateCollectionRequestModel>,
340 ) -> Result<models::CollectionResponseModel, Error> {
341 let local_var_configuration = &self.configuration;
342
343 let local_var_client = &local_var_configuration.client;
344
345 let local_var_uri_str = format!(
346 "{}/organizations/{orgId}/collections",
347 local_var_configuration.base_path,
348 orgId = org_id
349 );
350 let mut local_var_req_builder =
351 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
352
353 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
354 local_var_req_builder = local_var_req_builder.json(&create_collection_request_model);
355
356 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
357 }
358
359 async fn post_bulk_collection_access<'a>(
360 &self,
361 org_id: uuid::Uuid,
362 bulk_collection_access_request_model: Option<models::BulkCollectionAccessRequestModel>,
363 ) -> Result<(), Error> {
364 let local_var_configuration = &self.configuration;
365
366 let local_var_client = &local_var_configuration.client;
367
368 let local_var_uri_str = format!(
369 "{}/organizations/{orgId}/collections/bulk-access",
370 local_var_configuration.base_path,
371 orgId = org_id
372 );
373 let mut local_var_req_builder =
374 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
375
376 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
377 local_var_req_builder = local_var_req_builder.json(&bulk_collection_access_request_model);
378
379 bitwarden_api_base::process_with_empty_response(local_var_req_builder).await
380 }
381
382 async fn put<'a>(
383 &self,
384 org_id: uuid::Uuid,
385 id: &'a str,
386 collection: Option<models::Collection>,
387 update_collection_request_model: Option<models::UpdateCollectionRequestModel>,
388 ) -> Result<models::CollectionResponseModel, Error> {
389 let local_var_configuration = &self.configuration;
390
391 let local_var_client = &local_var_configuration.client;
392
393 let local_var_uri_str = format!(
394 "{}/organizations/{orgId}/collections/{id}",
395 local_var_configuration.base_path,
396 orgId = org_id,
397 id = crate::apis::urlencode(id)
398 );
399 let mut local_var_req_builder =
400 local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
401
402 if let Some(ref param_value) = collection {
403 local_var_req_builder =
404 local_var_req_builder.query(&[("collection", &serde_json::to_value(param_value)?)]);
405 }
406 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
407 local_var_req_builder = local_var_req_builder.json(&update_collection_request_model);
408
409 bitwarden_api_base::process_with_json_response(local_var_req_builder).await
410 }
411}