1use std::collections::HashMap;
4
5use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, PartialEq, Eq, Hash, Default, Serialize, Deserialize)]
9pub enum FilterNameStringType {
10 #[default]
12 #[serde(rename = "all")]
13 All,
14 #[serde(rename = "description")]
15 Description,
16 #[serde(rename = "name")]
17 Name,
18 #[serde(rename = "owning-service")]
19 OwningService,
20 #[serde(rename = "primary-region")]
21 PrimaryRegion,
22 #[serde(rename = "tag-key")]
23 TagKey,
24 #[serde(rename = "tag-value")]
25 TagValue,
26}
27
28impl FilterNameStringType {
29 #[must_use]
31 pub fn as_str(&self) -> &'static str {
32 match self {
33 Self::All => "all",
34 Self::Description => "description",
35 Self::Name => "name",
36 Self::OwningService => "owning-service",
37 Self::PrimaryRegion => "primary-region",
38 Self::TagKey => "tag-key",
39 Self::TagValue => "tag-value",
40 }
41 }
42}
43
44impl std::fmt::Display for FilterNameStringType {
45 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
46 f.write_str(self.as_str())
47 }
48}
49
50impl From<&str> for FilterNameStringType {
51 fn from(s: &str) -> Self {
52 match s {
53 "all" => Self::All,
54 "description" => Self::Description,
55 "name" => Self::Name,
56 "owning-service" => Self::OwningService,
57 "primary-region" => Self::PrimaryRegion,
58 "tag-key" => Self::TagKey,
59 "tag-value" => Self::TagValue,
60 _ => Self::default(),
61 }
62 }
63}
64
65#[derive(Debug, Clone, PartialEq, Eq, Hash, Default, Serialize, Deserialize)]
67pub enum SortByType {
68 #[default]
70 #[serde(rename = "created-date")]
71 CreatedDate,
72 #[serde(rename = "last-accessed-date")]
73 LastAccessedDate,
74 #[serde(rename = "last-changed-date")]
75 LastChangedDate,
76 #[serde(rename = "name")]
77 Name,
78}
79
80impl SortByType {
81 #[must_use]
83 pub fn as_str(&self) -> &'static str {
84 match self {
85 Self::CreatedDate => "created-date",
86 Self::LastAccessedDate => "last-accessed-date",
87 Self::LastChangedDate => "last-changed-date",
88 Self::Name => "name",
89 }
90 }
91}
92
93impl std::fmt::Display for SortByType {
94 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
95 f.write_str(self.as_str())
96 }
97}
98
99impl From<&str> for SortByType {
100 fn from(s: &str) -> Self {
101 match s {
102 "created-date" => Self::CreatedDate,
103 "last-accessed-date" => Self::LastAccessedDate,
104 "last-changed-date" => Self::LastChangedDate,
105 "name" => Self::Name,
106 _ => Self::default(),
107 }
108 }
109}
110
111#[derive(Debug, Clone, PartialEq, Eq, Hash, Default, Serialize, Deserialize)]
113pub enum SortOrderType {
114 #[default]
116 #[serde(rename = "asc")]
117 Asc,
118 #[serde(rename = "desc")]
119 Desc,
120}
121
122impl SortOrderType {
123 #[must_use]
125 pub fn as_str(&self) -> &'static str {
126 match self {
127 Self::Asc => "asc",
128 Self::Desc => "desc",
129 }
130 }
131}
132
133impl std::fmt::Display for SortOrderType {
134 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
135 f.write_str(self.as_str())
136 }
137}
138
139impl From<&str> for SortOrderType {
140 fn from(s: &str) -> Self {
141 match s {
142 "asc" => Self::Asc,
143 "desc" => Self::Desc,
144 _ => Self::default(),
145 }
146 }
147}
148
149#[derive(Debug, Clone, PartialEq, Eq, Hash, Default, Serialize, Deserialize)]
151pub enum StatusType {
152 #[default]
154 Failed,
155 InProgress,
156 InSync,
157}
158
159impl StatusType {
160 #[must_use]
162 pub fn as_str(&self) -> &'static str {
163 match self {
164 Self::Failed => "Failed",
165 Self::InProgress => "InProgress",
166 Self::InSync => "InSync",
167 }
168 }
169}
170
171impl std::fmt::Display for StatusType {
172 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
173 f.write_str(self.as_str())
174 }
175}
176
177impl From<&str> for StatusType {
178 fn from(s: &str) -> Self {
179 match s {
180 "Failed" => Self::Failed,
181 "InProgress" => Self::InProgress,
182 "InSync" => Self::InSync,
183 _ => Self::default(),
184 }
185 }
186}
187
188#[derive(Debug, Clone, Default, Serialize, Deserialize)]
190#[serde(rename_all = "PascalCase")]
191pub struct APIErrorType {
192 #[serde(skip_serializing_if = "Option::is_none")]
193 pub error_code: Option<String>,
194 #[serde(skip_serializing_if = "Option::is_none")]
195 pub message: Option<String>,
196 #[serde(skip_serializing_if = "Option::is_none")]
197 pub secret_id: Option<String>,
198}
199
200#[derive(Debug, Clone, Default, Serialize, Deserialize)]
202#[serde(rename_all = "PascalCase")]
203pub struct ExternalSecretRotationMetadataItem {
204 #[serde(skip_serializing_if = "Option::is_none")]
205 pub key: Option<String>,
206 #[serde(skip_serializing_if = "Option::is_none")]
207 pub value: Option<String>,
208}
209
210#[derive(Debug, Clone, Default, Serialize, Deserialize)]
212#[serde(rename_all = "PascalCase")]
213pub struct Filter {
214 #[serde(skip_serializing_if = "Option::is_none")]
215 pub key: Option<FilterNameStringType>,
216 #[serde(default, skip_serializing_if = "Vec::is_empty")]
217 pub values: Vec<String>,
218}
219
220#[derive(Debug, Clone, Default, Serialize, Deserialize)]
222#[serde(rename_all = "PascalCase")]
223pub struct ReplicaRegionType {
224 #[serde(skip_serializing_if = "Option::is_none")]
225 pub kms_key_id: Option<String>,
226 #[serde(skip_serializing_if = "Option::is_none")]
227 pub region: Option<String>,
228}
229
230#[derive(Debug, Clone, Default, Serialize, Deserialize)]
232#[serde(rename_all = "PascalCase")]
233pub struct ReplicationStatusType {
234 #[serde(skip_serializing_if = "Option::is_none")]
235 pub kms_key_id: Option<String>,
236 #[serde(
237 skip_serializing_if = "Option::is_none",
238 serialize_with = "crate::epoch_seconds::option::serialize",
239 deserialize_with = "crate::epoch_seconds::option::deserialize"
240 )]
241 pub last_accessed_date: Option<chrono::DateTime<chrono::Utc>>,
242 #[serde(skip_serializing_if = "Option::is_none")]
243 pub region: Option<String>,
244 #[serde(skip_serializing_if = "Option::is_none")]
245 pub status: Option<StatusType>,
246 #[serde(skip_serializing_if = "Option::is_none")]
247 pub status_message: Option<String>,
248}
249
250#[derive(Debug, Clone, Default, Serialize, Deserialize)]
252#[serde(rename_all = "PascalCase")]
253pub struct RotationRulesType {
254 #[serde(skip_serializing_if = "Option::is_none")]
255 pub automatically_after_days: Option<i64>,
256 #[serde(skip_serializing_if = "Option::is_none")]
257 pub duration: Option<String>,
258 #[serde(skip_serializing_if = "Option::is_none")]
259 pub schedule_expression: Option<String>,
260}
261
262#[derive(Debug, Clone, Default, Serialize, Deserialize)]
264#[serde(rename_all = "PascalCase")]
265pub struct SecretListEntry {
266 #[serde(rename = "ARN")]
267 #[serde(skip_serializing_if = "Option::is_none")]
268 pub arn: Option<String>,
269 #[serde(
270 skip_serializing_if = "Option::is_none",
271 serialize_with = "crate::epoch_seconds::option::serialize",
272 deserialize_with = "crate::epoch_seconds::option::deserialize"
273 )]
274 pub created_date: Option<chrono::DateTime<chrono::Utc>>,
275 #[serde(
276 skip_serializing_if = "Option::is_none",
277 serialize_with = "crate::epoch_seconds::option::serialize",
278 deserialize_with = "crate::epoch_seconds::option::deserialize"
279 )]
280 pub deleted_date: Option<chrono::DateTime<chrono::Utc>>,
281 #[serde(skip_serializing_if = "Option::is_none")]
282 pub description: Option<String>,
283 #[serde(default, skip_serializing_if = "Vec::is_empty")]
284 pub external_secret_rotation_metadata: Vec<ExternalSecretRotationMetadataItem>,
285 #[serde(skip_serializing_if = "Option::is_none")]
286 pub external_secret_rotation_role_arn: Option<String>,
287 #[serde(skip_serializing_if = "Option::is_none")]
288 pub kms_key_id: Option<String>,
289 #[serde(
290 skip_serializing_if = "Option::is_none",
291 serialize_with = "crate::epoch_seconds::option::serialize",
292 deserialize_with = "crate::epoch_seconds::option::deserialize"
293 )]
294 pub last_accessed_date: Option<chrono::DateTime<chrono::Utc>>,
295 #[serde(
296 skip_serializing_if = "Option::is_none",
297 serialize_with = "crate::epoch_seconds::option::serialize",
298 deserialize_with = "crate::epoch_seconds::option::deserialize"
299 )]
300 pub last_changed_date: Option<chrono::DateTime<chrono::Utc>>,
301 #[serde(
302 skip_serializing_if = "Option::is_none",
303 serialize_with = "crate::epoch_seconds::option::serialize",
304 deserialize_with = "crate::epoch_seconds::option::deserialize"
305 )]
306 pub last_rotated_date: Option<chrono::DateTime<chrono::Utc>>,
307 #[serde(skip_serializing_if = "Option::is_none")]
308 pub name: Option<String>,
309 #[serde(
310 skip_serializing_if = "Option::is_none",
311 serialize_with = "crate::epoch_seconds::option::serialize",
312 deserialize_with = "crate::epoch_seconds::option::deserialize"
313 )]
314 pub next_rotation_date: Option<chrono::DateTime<chrono::Utc>>,
315 #[serde(skip_serializing_if = "Option::is_none")]
316 pub owning_service: Option<String>,
317 #[serde(skip_serializing_if = "Option::is_none")]
318 pub primary_region: Option<String>,
319 #[serde(skip_serializing_if = "Option::is_none")]
320 pub rotation_enabled: Option<bool>,
321 #[serde(rename = "RotationLambdaARN")]
322 #[serde(skip_serializing_if = "Option::is_none")]
323 pub rotation_lambda_arn: Option<String>,
324 #[serde(skip_serializing_if = "Option::is_none")]
325 pub rotation_rules: Option<RotationRulesType>,
326 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
327 pub secret_versions_to_stages: HashMap<String, Vec<String>>,
328 #[serde(default, skip_serializing_if = "Vec::is_empty")]
329 pub tags: Vec<Tag>,
330 #[serde(skip_serializing_if = "Option::is_none")]
331 pub r#type: Option<String>,
332}
333
334#[derive(Debug, Clone, Default, Serialize, Deserialize)]
336#[serde(rename_all = "PascalCase")]
337pub struct SecretValueEntry {
338 #[serde(rename = "ARN")]
339 #[serde(skip_serializing_if = "Option::is_none")]
340 pub arn: Option<String>,
341 #[serde(
342 skip_serializing_if = "Option::is_none",
343 serialize_with = "crate::epoch_seconds::option::serialize",
344 deserialize_with = "crate::epoch_seconds::option::deserialize"
345 )]
346 pub created_date: Option<chrono::DateTime<chrono::Utc>>,
347 #[serde(skip_serializing_if = "Option::is_none")]
348 pub name: Option<String>,
349 #[serde(
350 skip_serializing_if = "Option::is_none",
351 default,
352 with = "crate::blob::option"
353 )]
354 pub secret_binary: Option<bytes::Bytes>,
355 #[serde(skip_serializing_if = "Option::is_none")]
356 pub secret_string: Option<String>,
357 #[serde(skip_serializing_if = "Option::is_none")]
358 pub version_id: Option<String>,
359 #[serde(default, skip_serializing_if = "Vec::is_empty")]
360 pub version_stages: Vec<String>,
361}
362
363#[derive(Debug, Clone, Default, Serialize, Deserialize)]
365#[serde(rename_all = "PascalCase")]
366pub struct SecretVersionsListEntry {
367 #[serde(
368 skip_serializing_if = "Option::is_none",
369 serialize_with = "crate::epoch_seconds::option::serialize",
370 deserialize_with = "crate::epoch_seconds::option::deserialize"
371 )]
372 pub created_date: Option<chrono::DateTime<chrono::Utc>>,
373 #[serde(default, skip_serializing_if = "Vec::is_empty")]
374 pub kms_key_ids: Vec<String>,
375 #[serde(
376 skip_serializing_if = "Option::is_none",
377 serialize_with = "crate::epoch_seconds::option::serialize",
378 deserialize_with = "crate::epoch_seconds::option::deserialize"
379 )]
380 pub last_accessed_date: Option<chrono::DateTime<chrono::Utc>>,
381 #[serde(skip_serializing_if = "Option::is_none")]
382 pub version_id: Option<String>,
383 #[serde(default, skip_serializing_if = "Vec::is_empty")]
384 pub version_stages: Vec<String>,
385}
386
387#[derive(Debug, Clone, Default, Serialize, Deserialize)]
389#[serde(rename_all = "PascalCase")]
390pub struct Tag {
391 #[serde(skip_serializing_if = "Option::is_none")]
392 pub key: Option<String>,
393 #[serde(skip_serializing_if = "Option::is_none")]
394 pub value: Option<String>,
395}
396
397#[derive(Debug, Clone, Default, Serialize, Deserialize)]
399#[serde(rename_all = "PascalCase")]
400pub struct ValidationErrorsEntry {
401 #[serde(skip_serializing_if = "Option::is_none")]
402 pub check_name: Option<String>,
403 #[serde(skip_serializing_if = "Option::is_none")]
404 pub error_message: Option<String>,
405}