Skip to main content

winterbaume_backup/
types.rs

1use std::collections::HashMap;
2
3use chrono::{DateTime, Utc};
4
5/// A backup selection associated with a plan.
6#[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    /// Full selection JSON from the request (for round-tripping).
15    pub selection_json: serde_json::Value,
16}
17
18/// A recovery point stored in a vault.
19#[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/// A backup job.
34#[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/// A backup vault.
50#[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/// A backup plan.
64#[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/// A report plan.
76#[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/// Vault access policy.
89#[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/// Vault notification configuration.
97#[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/// An audit framework.
106#[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/// Global settings (account-level).
118#[derive(Debug, Clone, Default)]
119pub struct GlobalSettings {
120    pub global_settings: HashMap<String, String>,
121}
122
123/// Region settings.
124#[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/// A report job.
131#[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/// A scan job.
142#[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/// A tiering configuration.
160#[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/// A legal hold.
173#[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/// A copy job.
187#[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/// A restore job.
205#[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/// A restore testing plan.
222#[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/// A restore testing selection.
237#[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}