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 AccountsKeyManagementApi: Send + Sync {
29 async fn get_key_connector_confirmation_details<'a>(
31 &self,
32 org_sso_identifier: &'a str,
33 ) -> Result<
34 models::KeyConnectorConfirmationDetailsResponseModel,
35 Error<GetKeyConnectorConfirmationDetailsError>,
36 >;
37
38 async fn post_convert_to_key_connector(
40 &self,
41 ) -> Result<(), Error<PostConvertToKeyConnectorError>>;
42
43 async fn post_set_key_connector_key<'a>(
45 &self,
46 set_key_connector_key_request_model: Option<models::SetKeyConnectorKeyRequestModel>,
47 ) -> Result<(), Error<PostSetKeyConnectorKeyError>>;
48
49 async fn regenerate_keys<'a>(
51 &self,
52 key_regeneration_request_model: Option<models::KeyRegenerationRequestModel>,
53 ) -> Result<(), Error<RegenerateKeysError>>;
54
55 async fn rotate_user_account_keys<'a>(
57 &self,
58 rotate_user_account_keys_and_data_request_model: Option<
59 models::RotateUserAccountKeysAndDataRequestModel,
60 >,
61 ) -> Result<(), Error<RotateUserAccountKeysError>>;
62}
63
64pub struct AccountsKeyManagementApiClient {
65 configuration: Arc<configuration::Configuration>,
66}
67
68impl AccountsKeyManagementApiClient {
69 pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
70 Self { configuration }
71 }
72}
73
74#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
75#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
76impl AccountsKeyManagementApi for AccountsKeyManagementApiClient {
77 async fn get_key_connector_confirmation_details<'a>(
78 &self,
79 org_sso_identifier: &'a str,
80 ) -> Result<
81 models::KeyConnectorConfirmationDetailsResponseModel,
82 Error<GetKeyConnectorConfirmationDetailsError>,
83 > {
84 let local_var_configuration = &self.configuration;
85
86 let local_var_client = &local_var_configuration.client;
87
88 let local_var_uri_str = format!(
89 "{}/accounts/key-connector/confirmation-details/{orgSsoIdentifier}",
90 local_var_configuration.base_path,
91 orgSsoIdentifier = crate::apis::urlencode(org_sso_identifier)
92 );
93 let mut local_var_req_builder =
94 local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
95
96 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
97
98 let local_var_resp = local_var_req_builder.send().await?;
99
100 let local_var_status = local_var_resp.status();
101 let local_var_content_type = local_var_resp
102 .headers()
103 .get("content-type")
104 .and_then(|v| v.to_str().ok())
105 .unwrap_or("application/octet-stream");
106 let local_var_content_type = super::ContentType::from(local_var_content_type);
107 let local_var_content = local_var_resp.text().await?;
108
109 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
110 match local_var_content_type {
111 ContentType::Json => serde_json::from_str(&local_var_content).map_err(Error::from),
112 ContentType::Text => {
113 return Err(Error::from(serde_json::Error::custom(
114 "Received `text/plain` content type response that cannot be converted to `models::KeyConnectorConfirmationDetailsResponseModel`",
115 )));
116 }
117 ContentType::Unsupported(local_var_unknown_type) => {
118 return Err(Error::from(serde_json::Error::custom(format!(
119 "Received `{local_var_unknown_type}` content type response that cannot be converted to `models::KeyConnectorConfirmationDetailsResponseModel`"
120 ))));
121 }
122 }
123 } else {
124 let local_var_entity: Option<GetKeyConnectorConfirmationDetailsError> =
125 serde_json::from_str(&local_var_content).ok();
126 let local_var_error = ResponseContent {
127 status: local_var_status,
128 content: local_var_content,
129 entity: local_var_entity,
130 };
131 Err(Error::ResponseError(local_var_error))
132 }
133 }
134
135 async fn post_convert_to_key_connector(
136 &self,
137 ) -> Result<(), Error<PostConvertToKeyConnectorError>> {
138 let local_var_configuration = &self.configuration;
139
140 let local_var_client = &local_var_configuration.client;
141
142 let local_var_uri_str = format!(
143 "{}/accounts/convert-to-key-connector",
144 local_var_configuration.base_path
145 );
146 let mut local_var_req_builder =
147 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
148
149 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
150
151 let local_var_resp = local_var_req_builder.send().await?;
152
153 let local_var_status = local_var_resp.status();
154 let local_var_content = local_var_resp.text().await?;
155
156 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
157 Ok(())
158 } else {
159 let local_var_entity: Option<PostConvertToKeyConnectorError> =
160 serde_json::from_str(&local_var_content).ok();
161 let local_var_error = ResponseContent {
162 status: local_var_status,
163 content: local_var_content,
164 entity: local_var_entity,
165 };
166 Err(Error::ResponseError(local_var_error))
167 }
168 }
169
170 async fn post_set_key_connector_key<'a>(
171 &self,
172 set_key_connector_key_request_model: Option<models::SetKeyConnectorKeyRequestModel>,
173 ) -> Result<(), Error<PostSetKeyConnectorKeyError>> {
174 let local_var_configuration = &self.configuration;
175
176 let local_var_client = &local_var_configuration.client;
177
178 let local_var_uri_str = format!(
179 "{}/accounts/set-key-connector-key",
180 local_var_configuration.base_path
181 );
182 let mut local_var_req_builder =
183 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
184
185 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
186 local_var_req_builder = local_var_req_builder.json(&set_key_connector_key_request_model);
187
188 let local_var_resp = local_var_req_builder.send().await?;
189
190 let local_var_status = local_var_resp.status();
191 let local_var_content = local_var_resp.text().await?;
192
193 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
194 Ok(())
195 } else {
196 let local_var_entity: Option<PostSetKeyConnectorKeyError> =
197 serde_json::from_str(&local_var_content).ok();
198 let local_var_error = ResponseContent {
199 status: local_var_status,
200 content: local_var_content,
201 entity: local_var_entity,
202 };
203 Err(Error::ResponseError(local_var_error))
204 }
205 }
206
207 async fn regenerate_keys<'a>(
208 &self,
209 key_regeneration_request_model: Option<models::KeyRegenerationRequestModel>,
210 ) -> Result<(), Error<RegenerateKeysError>> {
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 "{}/accounts/key-management/regenerate-keys",
217 local_var_configuration.base_path
218 );
219 let mut local_var_req_builder =
220 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
221
222 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
223 local_var_req_builder = local_var_req_builder.json(&key_regeneration_request_model);
224
225 let local_var_resp = local_var_req_builder.send().await?;
226
227 let local_var_status = local_var_resp.status();
228 let local_var_content = local_var_resp.text().await?;
229
230 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
231 Ok(())
232 } else {
233 let local_var_entity: Option<RegenerateKeysError> =
234 serde_json::from_str(&local_var_content).ok();
235 let local_var_error = ResponseContent {
236 status: local_var_status,
237 content: local_var_content,
238 entity: local_var_entity,
239 };
240 Err(Error::ResponseError(local_var_error))
241 }
242 }
243
244 async fn rotate_user_account_keys<'a>(
245 &self,
246 rotate_user_account_keys_and_data_request_model: Option<
247 models::RotateUserAccountKeysAndDataRequestModel,
248 >,
249 ) -> Result<(), Error<RotateUserAccountKeysError>> {
250 let local_var_configuration = &self.configuration;
251
252 let local_var_client = &local_var_configuration.client;
253
254 let local_var_uri_str = format!(
255 "{}/accounts/key-management/rotate-user-account-keys",
256 local_var_configuration.base_path
257 );
258 let mut local_var_req_builder =
259 local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
260
261 local_var_req_builder = local_var_req_builder.with_extension(AuthRequired::Bearer);
262 local_var_req_builder =
263 local_var_req_builder.json(&rotate_user_account_keys_and_data_request_model);
264
265 let local_var_resp = local_var_req_builder.send().await?;
266
267 let local_var_status = local_var_resp.status();
268 let local_var_content = local_var_resp.text().await?;
269
270 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
271 Ok(())
272 } else {
273 let local_var_entity: Option<RotateUserAccountKeysError> =
274 serde_json::from_str(&local_var_content).ok();
275 let local_var_error = ResponseContent {
276 status: local_var_status,
277 content: local_var_content,
278 entity: local_var_entity,
279 };
280 Err(Error::ResponseError(local_var_error))
281 }
282 }
283}
284
285#[derive(Debug, Clone, Serialize, Deserialize)]
288#[serde(untagged)]
289pub enum GetKeyConnectorConfirmationDetailsError {
290 UnknownValue(serde_json::Value),
291}
292#[derive(Debug, Clone, Serialize, Deserialize)]
294#[serde(untagged)]
295pub enum PostConvertToKeyConnectorError {
296 UnknownValue(serde_json::Value),
297}
298#[derive(Debug, Clone, Serialize, Deserialize)]
300#[serde(untagged)]
301pub enum PostSetKeyConnectorKeyError {
302 UnknownValue(serde_json::Value),
303}
304#[derive(Debug, Clone, Serialize, Deserialize)]
306#[serde(untagged)]
307pub enum RegenerateKeysError {
308 UnknownValue(serde_json::Value),
309}
310#[derive(Debug, Clone, Serialize, Deserialize)]
312#[serde(untagged)]
313pub enum RotateUserAccountKeysError {
314 UnknownValue(serde_json::Value),
315}