1use chrono::{DateTime, Utc};
5use serde::{Deserialize, Serialize};
6
7fn skip_if_none<T>(x: &Option<T>) -> bool {
8 x.is_none()
9}
10
11#[derive(Debug, Clone, Serialize, Deserialize, Default)]
14#[serde(rename_all = "PascalCase")]
15pub struct FieldLevelEncryptionConfig {
16 pub caller_reference: String,
17 #[serde(default, skip_serializing_if = "skip_if_none")]
18 pub comment: Option<String>,
19 pub query_arg_profile_config: QueryArgProfileConfig,
20 pub content_type_profile_config: ContentTypeProfileConfig,
21}
22
23#[derive(Debug, Clone, Serialize, Deserialize, Default)]
24#[serde(rename_all = "PascalCase")]
25pub struct QueryArgProfileConfig {
26 pub forward_when_query_arg_profile_is_unknown: bool,
27 #[serde(default, skip_serializing_if = "skip_if_none")]
28 pub query_arg_profiles: Option<QueryArgProfiles>,
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize, Default)]
32#[serde(rename_all = "PascalCase")]
33pub struct QueryArgProfiles {
34 pub quantity: i32,
35 #[serde(default, skip_serializing_if = "skip_if_none")]
36 pub items: Option<QueryArgProfileItems>,
37}
38
39#[derive(Debug, Clone, Serialize, Deserialize, Default)]
40#[serde(rename_all = "PascalCase")]
41pub struct QueryArgProfileItems {
42 #[serde(default, rename = "QueryArgProfile")]
43 pub query_arg_profile: Vec<QueryArgProfile>,
44}
45
46#[derive(Debug, Clone, Serialize, Deserialize, Default)]
47#[serde(rename_all = "PascalCase")]
48pub struct QueryArgProfile {
49 pub query_arg: String,
50 pub profile_id: String,
51}
52
53#[derive(Debug, Clone, Serialize, Deserialize, Default)]
54#[serde(rename_all = "PascalCase")]
55pub struct ContentTypeProfileConfig {
56 pub forward_when_content_type_is_unknown: bool,
57 #[serde(default, skip_serializing_if = "skip_if_none")]
58 pub content_type_profiles: Option<ContentTypeProfiles>,
59}
60
61#[derive(Debug, Clone, Serialize, Deserialize, Default)]
62#[serde(rename_all = "PascalCase")]
63pub struct ContentTypeProfiles {
64 pub quantity: i32,
65 #[serde(default, skip_serializing_if = "skip_if_none")]
66 pub items: Option<ContentTypeProfileItems>,
67}
68
69#[derive(Debug, Clone, Serialize, Deserialize, Default)]
70#[serde(rename_all = "PascalCase")]
71pub struct ContentTypeProfileItems {
72 #[serde(default, rename = "ContentTypeProfile")]
73 pub content_type_profile: Vec<ContentTypeProfile>,
74}
75
76#[derive(Debug, Clone, Serialize, Deserialize, Default)]
77#[serde(rename_all = "PascalCase")]
78pub struct ContentTypeProfile {
79 pub format: String,
80 #[serde(default, skip_serializing_if = "skip_if_none")]
81 pub profile_id: Option<String>,
82 pub content_type: String,
83}
84
85#[derive(Debug, Clone, Serialize, Deserialize)]
86pub struct StoredFieldLevelEncryption {
87 pub id: String,
88 pub etag: String,
89 pub last_modified_time: DateTime<Utc>,
90 pub config: FieldLevelEncryptionConfig,
91}
92
93#[derive(Debug, Clone, Serialize, Deserialize, Default)]
96#[serde(rename_all = "PascalCase")]
97pub struct FieldLevelEncryptionProfileConfig {
98 pub name: String,
99 pub caller_reference: String,
100 #[serde(default, skip_serializing_if = "skip_if_none")]
101 pub comment: Option<String>,
102 pub encryption_entities: EncryptionEntities,
103}
104
105#[derive(Debug, Clone, Serialize, Deserialize, Default)]
106#[serde(rename_all = "PascalCase")]
107pub struct EncryptionEntities {
108 pub quantity: i32,
109 #[serde(default, skip_serializing_if = "skip_if_none")]
110 pub items: Option<EncryptionEntityItems>,
111}
112
113#[derive(Debug, Clone, Serialize, Deserialize, Default)]
114#[serde(rename_all = "PascalCase")]
115pub struct EncryptionEntityItems {
116 #[serde(default, rename = "EncryptionEntity")]
117 pub encryption_entity: Vec<EncryptionEntity>,
118}
119
120#[derive(Debug, Clone, Serialize, Deserialize, Default)]
121#[serde(rename_all = "PascalCase")]
122pub struct EncryptionEntity {
123 pub public_key_id: String,
124 pub provider_id: String,
125 pub field_patterns: FieldPatterns,
126}
127
128#[derive(Debug, Clone, Serialize, Deserialize, Default)]
129#[serde(rename_all = "PascalCase")]
130pub struct FieldPatterns {
131 pub quantity: i32,
132 #[serde(default, skip_serializing_if = "skip_if_none")]
133 pub items: Option<FieldPatternItems>,
134}
135
136#[derive(Debug, Clone, Serialize, Deserialize, Default)]
137#[serde(rename_all = "PascalCase")]
138pub struct FieldPatternItems {
139 #[serde(default, rename = "FieldPattern")]
140 pub field_pattern: Vec<String>,
141}
142
143#[derive(Debug, Clone, Serialize, Deserialize)]
144pub struct StoredFieldLevelEncryptionProfile {
145 pub id: String,
146 pub etag: String,
147 pub last_modified_time: DateTime<Utc>,
148 pub config: FieldLevelEncryptionProfileConfig,
149}
150
151#[derive(Debug, Clone, Serialize, Deserialize, Default)]
154#[serde(rename_all = "PascalCase")]
155pub struct CreateRealtimeLogConfigRequest {
156 pub end_points: EndPoints,
157 pub fields: FieldsList,
158 pub name: String,
159 pub sampling_rate: i64,
160}
161
162#[derive(Debug, Clone, Serialize, Deserialize, Default)]
163#[serde(rename_all = "PascalCase")]
164pub struct UpdateRealtimeLogConfigRequest {
165 pub end_points: EndPoints,
166 pub fields: FieldsList,
167 pub name: String,
168 #[serde(rename = "ARN")]
169 pub arn: String,
170 pub sampling_rate: i64,
171}
172
173#[derive(Debug, Clone, Serialize, Deserialize, Default)]
174#[serde(rename_all = "PascalCase")]
175pub struct GetOrDeleteRealtimeLogConfigRequest {
176 #[serde(default, skip_serializing_if = "skip_if_none")]
177 pub name: Option<String>,
178 #[serde(default, skip_serializing_if = "skip_if_none", rename = "ARN")]
179 pub arn: Option<String>,
180}
181
182#[derive(Debug, Clone, Serialize, Deserialize, Default)]
183#[serde(rename_all = "PascalCase")]
184pub struct EndPoints {
185 #[serde(default, rename = "member")]
186 pub member: Vec<EndPoint>,
187}
188
189#[derive(Debug, Clone, Serialize, Deserialize, Default)]
190#[serde(rename_all = "PascalCase")]
191pub struct EndPoint {
192 pub stream_type: String,
193 pub kinesis_stream_config: KinesisStreamConfig,
194}
195
196#[derive(Debug, Clone, Serialize, Deserialize, Default)]
197#[serde(rename_all = "PascalCase")]
198pub struct KinesisStreamConfig {
199 #[serde(rename = "RoleARN")]
200 pub role_arn: String,
201 #[serde(rename = "StreamARN")]
202 pub stream_arn: String,
203}
204
205#[derive(Debug, Clone, Serialize, Deserialize, Default)]
206#[serde(rename_all = "PascalCase")]
207pub struct FieldsList {
208 #[serde(default, rename = "Field")]
209 pub field: Vec<String>,
210}
211
212#[derive(Debug, Clone, Serialize, Deserialize)]
213pub struct StoredRealtimeLogConfig {
214 pub arn: String,
215 pub name: String,
216 pub sampling_rate: i64,
217 pub end_points: EndPoints,
218 pub fields: FieldsList,
219}