1use std::collections::HashMap;
2
3use chrono::{DateTime, Utc};
4
5#[derive(Debug, Clone)]
7pub struct BackupSelectionData {
8 pub selection_id: String,
9 pub backup_plan_id: String,
10 pub selection_name: String,
11 pub iam_role_arn: String,
12 pub resources: Vec<String>,
13 pub creation_date: DateTime<Utc>,
14 pub selection_json: serde_json::Value,
16}
17
18#[derive(Debug, Clone)]
20pub struct RecoveryPointData {
21 pub recovery_point_arn: String,
22 pub backup_vault_name: String,
23 pub backup_vault_arn: String,
24 pub resource_arn: String,
25 pub resource_type: String,
26 pub iam_role_arn: String,
27 pub status: String,
28 pub creation_date: DateTime<Utc>,
29 pub backup_size_bytes: i64,
30 pub account_id: String,
31}
32
33#[derive(Debug, Clone)]
35pub struct BackupJobData {
36 pub backup_job_id: String,
37 pub backup_vault_name: String,
38 pub backup_vault_arn: String,
39 pub recovery_point_arn: String,
40 pub resource_arn: String,
41 pub resource_type: String,
42 pub iam_role_arn: String,
43 pub state: String,
44 pub creation_date: DateTime<Utc>,
45 pub completion_date: Option<DateTime<Utc>>,
46 pub account_id: String,
47}
48
49#[derive(Debug, Clone)]
51pub struct BackupVault {
52 pub backup_vault_name: String,
53 pub backup_vault_arn: String,
54 pub creation_date: DateTime<Utc>,
55 pub number_of_recovery_points: i64,
56 pub locked: bool,
57 pub min_retention_days: Option<i64>,
58 pub max_retention_days: Option<i64>,
59 pub lock_date: Option<DateTime<Utc>>,
60 pub tags: HashMap<String, String>,
61}
62
63#[derive(Debug, Clone)]
65pub struct BackupPlanData {
66 pub backup_plan_id: String,
67 pub backup_plan_arn: String,
68 pub backup_plan_name: String,
69 pub version_id: String,
70 pub creation_date: DateTime<Utc>,
71 pub backup_plan_json: serde_json::Value,
72 pub tags: HashMap<String, String>,
73}
74
75#[derive(Debug, Clone)]
77pub struct ReportPlanData {
78 pub report_plan_name: String,
79 pub report_plan_arn: String,
80 pub report_plan_description: String,
81 pub report_delivery_channel: serde_json::Value,
82 pub report_setting: serde_json::Value,
83 pub creation_time: DateTime<Utc>,
84 pub deployment_status: String,
85 pub tags: HashMap<String, String>,
86}
87
88#[derive(Debug, Clone)]
90pub struct VaultAccessPolicy {
91 pub backup_vault_name: String,
92 pub backup_vault_arn: String,
93 pub policy: String,
94}
95
96#[derive(Debug, Clone)]
98pub struct VaultNotificationConfig {
99 pub backup_vault_name: String,
100 pub backup_vault_arn: String,
101 pub sns_topic_arn: String,
102 pub backup_vault_events: Vec<String>,
103}
104
105#[derive(Debug, Clone)]
107pub struct FrameworkData {
108 pub framework_name: String,
109 pub framework_arn: String,
110 pub framework_description: String,
111 pub framework_controls: serde_json::Value,
112 pub creation_time: DateTime<Utc>,
113 pub deployment_status: String,
114 pub number_of_controls: i32,
115}
116
117#[derive(Debug, Clone, Default)]
119pub struct GlobalSettings {
120 pub global_settings: HashMap<String, String>,
121}
122
123#[derive(Debug, Clone, Default)]
125pub struct RegionSettings {
126 pub resource_type_opt_in_preference: HashMap<String, bool>,
127 pub resource_type_management_preference: HashMap<String, bool>,
128}
129
130#[derive(Debug, Clone)]
132pub struct ReportJobData {
133 pub report_job_id: String,
134 pub report_plan_arn: String,
135 pub report_template: String,
136 pub creation_time: DateTime<Utc>,
137 pub completion_time: Option<DateTime<Utc>>,
138 pub status: String,
139}
140
141#[derive(Debug, Clone)]
143pub struct ScanJobData {
144 pub scan_job_id: String,
145 pub backup_vault_name: String,
146 pub backup_vault_arn: String,
147 pub recovery_point_arn: String,
148 pub iam_role_arn: String,
149 pub malware_scanner: String,
150 pub scan_mode: String,
151 pub scanner_role_arn: String,
152 pub scan_base_recovery_point_arn: Option<String>,
153 pub state: String,
154 pub creation_date: DateTime<Utc>,
155 pub completion_date: Option<DateTime<Utc>>,
156 pub account_id: String,
157}
158
159#[derive(Debug, Clone)]
161pub struct TieringConfigData {
162 pub tiering_configuration_name: String,
163 pub tiering_configuration_arn: String,
164 pub backup_vault_name: String,
165 pub resource_selection: serde_json::Value,
166 pub creation_time: DateTime<Utc>,
167 pub last_updated_time: DateTime<Utc>,
168 pub creator_request_id: Option<String>,
169 pub tags: HashMap<String, String>,
170}
171
172#[derive(Debug, Clone)]
174pub struct LegalHoldData {
175 pub legal_hold_id: String,
176 pub legal_hold_arn: String,
177 pub title: String,
178 pub description: String,
179 pub status: String,
180 pub creation_date: DateTime<Utc>,
181 pub cancellation_date: Option<DateTime<Utc>>,
182 pub recovery_point_selection: serde_json::Value,
183 pub tags: HashMap<String, String>,
184}
185
186#[derive(Debug, Clone)]
188pub struct CopyJobData {
189 pub copy_job_id: String,
190 pub source_backup_vault_name: String,
191 pub source_backup_vault_arn: String,
192 pub source_recovery_point_arn: String,
193 pub destination_backup_vault_arn: String,
194 pub destination_recovery_point_arn: String,
195 pub resource_arn: String,
196 pub resource_type: String,
197 pub iam_role_arn: String,
198 pub state: String,
199 pub creation_date: DateTime<Utc>,
200 pub completion_date: Option<DateTime<Utc>>,
201 pub account_id: String,
202}
203
204#[derive(Debug, Clone)]
206pub struct RestoreJobData {
207 pub restore_job_id: String,
208 pub recovery_point_arn: String,
209 pub resource_type: String,
210 pub iam_role_arn: String,
211 pub status: String,
212 pub creation_date: DateTime<Utc>,
213 pub completion_date: Option<DateTime<Utc>>,
214 pub backup_size_in_bytes: i64,
215 pub account_id: String,
216 pub metadata: HashMap<String, String>,
217 pub validation_status: Option<String>,
218 pub validation_status_message: Option<String>,
219}
220
221#[derive(Debug, Clone)]
223pub struct RestoreTestingPlanData {
224 pub restore_testing_plan_name: String,
225 pub restore_testing_plan_arn: String,
226 pub schedule_expression: String,
227 pub schedule_expression_timezone: Option<String>,
228 pub start_window_hours: Option<i32>,
229 pub recovery_point_selection: serde_json::Value,
230 pub creator_request_id: Option<String>,
231 pub creation_time: DateTime<Utc>,
232 pub last_update_time: DateTime<Utc>,
233 pub tags: HashMap<String, String>,
234}
235
236#[derive(Debug, Clone)]
238pub struct RestoreTestingSelectionData {
239 pub restore_testing_selection_name: String,
240 pub restore_testing_plan_name: String,
241 pub restore_testing_plan_arn: String,
242 pub iam_role_arn: String,
243 pub protected_resource_type: String,
244 pub protected_resource_arns: Vec<String>,
245 pub protected_resource_conditions: serde_json::Value,
246 pub restore_metadata_overrides: HashMap<String, String>,
247 pub validation_window_hours: Option<i32>,
248 pub creator_request_id: Option<String>,
249 pub creation_time: DateTime<Utc>,
250 pub last_update_time: DateTime<Utc>,
251}