1use serde::{Deserialize, Serialize};
11
12fn skip_if_none<T>(x: &Option<T>) -> bool {
13 x.is_none()
14}
15
16#[derive(Debug, Clone, Serialize, Deserialize, Default)]
19#[serde(rename_all = "PascalCase")]
20pub struct DistributionConfig {
21 pub caller_reference: String,
22 #[serde(default, skip_serializing_if = "skip_if_none")]
23 pub aliases: Option<Aliases>,
24 #[serde(default, skip_serializing_if = "skip_if_none")]
25 pub default_root_object: Option<String>,
26 pub origins: Origins,
27 #[serde(default, skip_serializing_if = "skip_if_none")]
28 pub origin_groups: Option<OriginGroups>,
29 pub default_cache_behavior: DefaultCacheBehavior,
30 #[serde(default, skip_serializing_if = "skip_if_none")]
31 pub cache_behaviors: Option<CacheBehaviors>,
32 #[serde(default, skip_serializing_if = "skip_if_none")]
33 pub custom_error_responses: Option<CustomErrorResponses>,
34 pub comment: String,
35 #[serde(default, skip_serializing_if = "skip_if_none")]
36 pub logging: Option<LoggingConfig>,
37 #[serde(default, skip_serializing_if = "skip_if_none")]
38 pub price_class: Option<String>,
39 pub enabled: bool,
40 #[serde(default, skip_serializing_if = "skip_if_none")]
41 pub viewer_certificate: Option<ViewerCertificate>,
42 #[serde(default, skip_serializing_if = "skip_if_none")]
43 pub restrictions: Option<Restrictions>,
44 #[serde(default, rename = "WebACLId", skip_serializing_if = "skip_if_none")]
48 pub web_acl_id: Option<String>,
49 #[serde(default, skip_serializing_if = "skip_if_none")]
50 pub http_version: Option<String>,
51 #[serde(default, skip_serializing_if = "skip_if_none")]
52 pub is_ipv6_enabled: Option<bool>,
53 #[serde(default, skip_serializing_if = "skip_if_none")]
54 pub continuous_deployment_policy_id: Option<String>,
55 #[serde(default, skip_serializing_if = "skip_if_none")]
56 pub staging: Option<bool>,
57 #[serde(default, skip_serializing_if = "skip_if_none")]
58 pub anycast_ip_list_id: Option<String>,
59 #[serde(default, skip_serializing_if = "skip_if_none")]
60 pub tenant_config: Option<TenantConfig>,
61 #[serde(default, skip_serializing_if = "skip_if_none")]
62 pub connection_mode: Option<String>,
63}
64
65#[derive(Debug, Clone, Serialize, Deserialize, Default)]
66#[serde(rename_all = "PascalCase")]
67pub struct Aliases {
68 pub quantity: i32,
69 #[serde(default, skip_serializing_if = "skip_if_none")]
70 pub items: Option<AliasItems>,
71}
72
73#[derive(Debug, Clone, Serialize, Deserialize, Default)]
74#[serde(rename_all = "PascalCase")]
75pub struct AliasItems {
76 #[serde(default, rename = "CNAME")]
77 pub cname: Vec<String>,
78}
79
80#[derive(Debug, Clone, Serialize, Deserialize, Default)]
81#[serde(rename_all = "PascalCase")]
82pub struct Origins {
83 pub quantity: i32,
84 #[serde(default, skip_serializing_if = "skip_if_none")]
85 pub items: Option<OriginItems>,
86}
87
88#[derive(Debug, Clone, Serialize, Deserialize, Default)]
89#[serde(rename_all = "PascalCase")]
90pub struct OriginItems {
91 #[serde(default)]
92 pub origin: Vec<Origin>,
93}
94
95#[derive(Debug, Clone, Serialize, Deserialize, Default)]
96#[serde(rename_all = "PascalCase")]
97pub struct Origin {
98 pub id: String,
99 pub domain_name: String,
100 #[serde(default, skip_serializing_if = "skip_if_none")]
101 pub origin_path: Option<String>,
102 #[serde(default, skip_serializing_if = "skip_if_none")]
103 pub custom_headers: Option<CustomHeaders>,
104 #[serde(default, skip_serializing_if = "skip_if_none")]
105 pub s3_origin_config: Option<S3OriginConfig>,
106 #[serde(default, skip_serializing_if = "skip_if_none")]
107 pub custom_origin_config: Option<CustomOriginConfig>,
108 #[serde(default, skip_serializing_if = "skip_if_none")]
109 pub vpc_origin_config: Option<VpcOriginConfig>,
110 #[serde(default, skip_serializing_if = "skip_if_none")]
111 pub connection_attempts: Option<i32>,
112 #[serde(default, skip_serializing_if = "skip_if_none")]
113 pub connection_timeout: Option<i32>,
114 #[serde(default, skip_serializing_if = "skip_if_none")]
115 pub origin_shield: Option<OriginShield>,
116 #[serde(default, skip_serializing_if = "skip_if_none")]
117 pub origin_access_control_id: Option<String>,
118 #[serde(default, skip_serializing_if = "skip_if_none")]
119 pub response_completion_timeout: Option<i32>,
120}
121
122#[derive(Debug, Clone, Serialize, Deserialize, Default)]
123#[serde(rename_all = "PascalCase")]
124pub struct CustomHeaders {
125 pub quantity: i32,
126 #[serde(default, skip_serializing_if = "skip_if_none")]
127 pub items: Option<CustomHeaderItems>,
128}
129
130#[derive(Debug, Clone, Serialize, Deserialize, Default)]
131#[serde(rename_all = "PascalCase")]
132pub struct CustomHeaderItems {
133 #[serde(default)]
134 pub origin_custom_header: Vec<OriginCustomHeader>,
135}
136
137#[derive(Debug, Clone, Serialize, Deserialize, Default)]
138#[serde(rename_all = "PascalCase")]
139pub struct OriginCustomHeader {
140 pub header_name: String,
141 pub header_value: String,
142}
143
144#[derive(Debug, Clone, Serialize, Deserialize, Default)]
145#[serde(rename_all = "PascalCase")]
146pub struct S3OriginConfig {
147 pub origin_access_identity: String,
148}
149
150#[derive(Debug, Clone, Serialize, Deserialize, Default)]
151#[serde(rename_all = "PascalCase")]
152pub struct CustomOriginConfig {
153 pub http_port: i32,
154 pub https_port: i32,
155 pub origin_protocol_policy: String,
156 #[serde(default, skip_serializing_if = "skip_if_none")]
157 pub origin_ssl_protocols: Option<OriginSslProtocols>,
158 #[serde(default, skip_serializing_if = "skip_if_none")]
159 pub origin_read_timeout: Option<i32>,
160 #[serde(default, skip_serializing_if = "skip_if_none")]
161 pub origin_keepalive_timeout: Option<i32>,
162}
163
164#[derive(Debug, Clone, Serialize, Deserialize, Default)]
165#[serde(rename_all = "PascalCase")]
166pub struct OriginSslProtocols {
167 pub quantity: i32,
168 pub items: SslProtocolItems,
169}
170
171#[derive(Debug, Clone, Serialize, Deserialize, Default)]
172#[serde(rename_all = "PascalCase")]
173pub struct SslProtocolItems {
174 #[serde(default, rename = "SslProtocol")]
175 pub ssl_protocol: Vec<String>,
176}
177
178#[derive(Debug, Clone, Serialize, Deserialize, Default)]
179#[serde(rename_all = "PascalCase")]
180pub struct VpcOriginConfig {
181 pub vpc_origin_id: String,
182 #[serde(default, skip_serializing_if = "skip_if_none")]
183 pub origin_read_timeout: Option<i32>,
184 #[serde(default, skip_serializing_if = "skip_if_none")]
185 pub origin_keepalive_timeout: Option<i32>,
186}
187
188#[derive(Debug, Clone, Serialize, Deserialize, Default)]
189#[serde(rename_all = "PascalCase")]
190pub struct OriginShield {
191 pub enabled: bool,
192 #[serde(default, skip_serializing_if = "skip_if_none")]
193 pub origin_shield_region: Option<String>,
194}
195
196#[derive(Debug, Clone, Serialize, Deserialize, Default)]
197#[serde(rename_all = "PascalCase")]
198pub struct OriginGroups {
199 pub quantity: i32,
200 #[serde(default, skip_serializing_if = "skip_if_none")]
201 pub items: Option<OriginGroupItems>,
202}
203
204#[derive(Debug, Clone, Serialize, Deserialize, Default)]
205#[serde(rename_all = "PascalCase")]
206pub struct OriginGroupItems {
207 #[serde(default)]
208 pub origin_group: Vec<OriginGroup>,
209}
210
211#[derive(Debug, Clone, Serialize, Deserialize, Default)]
212#[serde(rename_all = "PascalCase")]
213pub struct OriginGroup {
214 pub id: String,
215 pub failover_criteria: OriginGroupFailoverCriteria,
216 pub members: OriginGroupMembers,
217 #[serde(default, skip_serializing_if = "skip_if_none")]
218 pub selection_criteria: Option<String>,
219}
220
221#[derive(Debug, Clone, Serialize, Deserialize, Default)]
222#[serde(rename_all = "PascalCase")]
223pub struct OriginGroupFailoverCriteria {
224 pub status_codes: StatusCodes,
225}
226
227#[derive(Debug, Clone, Serialize, Deserialize, Default)]
228#[serde(rename_all = "PascalCase")]
229pub struct StatusCodes {
230 pub quantity: i32,
231 pub items: StatusCodeItems,
232}
233
234#[derive(Debug, Clone, Serialize, Deserialize, Default)]
235#[serde(rename_all = "PascalCase")]
236pub struct StatusCodeItems {
237 #[serde(default, rename = "StatusCode")]
238 pub status_code: Vec<i32>,
239}
240
241#[derive(Debug, Clone, Serialize, Deserialize, Default)]
242#[serde(rename_all = "PascalCase")]
243pub struct OriginGroupMembers {
244 pub quantity: i32,
245 pub items: OriginGroupMemberItems,
246}
247
248#[derive(Debug, Clone, Serialize, Deserialize, Default)]
249#[serde(rename_all = "PascalCase")]
250pub struct OriginGroupMemberItems {
251 #[serde(default)]
252 pub origin_group_member: Vec<OriginGroupMember>,
253}
254
255#[derive(Debug, Clone, Serialize, Deserialize, Default)]
256#[serde(rename_all = "PascalCase")]
257pub struct OriginGroupMember {
258 pub origin_id: String,
259}
260
261#[derive(Debug, Clone, Serialize, Deserialize, Default)]
262#[serde(rename_all = "PascalCase")]
263pub struct DefaultCacheBehavior {
264 pub target_origin_id: String,
265 #[serde(default, skip_serializing_if = "skip_if_none")]
266 pub trusted_signers: Option<TrustedSigners>,
267 #[serde(default, skip_serializing_if = "skip_if_none")]
268 pub trusted_key_groups: Option<TrustedKeyGroups>,
269 pub viewer_protocol_policy: String,
270 #[serde(default, skip_serializing_if = "skip_if_none")]
271 pub allowed_methods: Option<AllowedMethods>,
272 #[serde(default, skip_serializing_if = "skip_if_none")]
273 pub smooth_streaming: Option<bool>,
274 #[serde(default, skip_serializing_if = "skip_if_none")]
275 pub compress: Option<bool>,
276 #[serde(default, skip_serializing_if = "skip_if_none")]
277 pub lambda_function_associations: Option<LambdaFunctionAssociations>,
278 #[serde(default, skip_serializing_if = "skip_if_none")]
279 pub function_associations: Option<FunctionAssociations>,
280 #[serde(default, skip_serializing_if = "skip_if_none")]
281 pub field_level_encryption_id: Option<String>,
282 #[serde(default, skip_serializing_if = "skip_if_none")]
283 pub realtime_log_config_arn: Option<String>,
284 #[serde(default, skip_serializing_if = "skip_if_none")]
285 pub cache_policy_id: Option<String>,
286 #[serde(default, skip_serializing_if = "skip_if_none")]
287 pub origin_request_policy_id: Option<String>,
288 #[serde(default, skip_serializing_if = "skip_if_none")]
289 pub response_headers_policy_id: Option<String>,
290 #[serde(default, skip_serializing_if = "skip_if_none")]
291 pub grpc_config: Option<GrpcConfig>,
292 #[serde(default, skip_serializing_if = "skip_if_none")]
293 pub forwarded_values: Option<ForwardedValues>,
294 #[serde(default, skip_serializing_if = "skip_if_none")]
295 pub min_ttl: Option<i64>,
296 #[serde(default, skip_serializing_if = "skip_if_none")]
297 pub default_ttl: Option<i64>,
298 #[serde(default, skip_serializing_if = "skip_if_none")]
299 pub max_ttl: Option<i64>,
300}
301
302#[derive(Debug, Clone, Serialize, Deserialize, Default)]
303#[serde(rename_all = "PascalCase")]
304pub struct TrustedSigners {
305 pub enabled: bool,
306 pub quantity: i32,
307 #[serde(default, skip_serializing_if = "skip_if_none")]
308 pub items: Option<AwsAccountNumberList>,
309}
310
311#[derive(Debug, Clone, Serialize, Deserialize, Default)]
312#[serde(rename_all = "PascalCase")]
313pub struct AwsAccountNumberList {
314 #[serde(default, rename = "AwsAccountNumber")]
315 pub aws_account_number: Vec<String>,
316}
317
318#[derive(Debug, Clone, Serialize, Deserialize, Default)]
319#[serde(rename_all = "PascalCase")]
320pub struct TrustedKeyGroups {
321 pub enabled: bool,
322 pub quantity: i32,
323 #[serde(default, skip_serializing_if = "skip_if_none")]
324 pub items: Option<TrustedKeyGroupIdList>,
325}
326
327#[derive(Debug, Clone, Serialize, Deserialize, Default)]
328#[serde(rename_all = "PascalCase")]
329pub struct TrustedKeyGroupIdList {
330 #[serde(default, rename = "KeyGroup")]
331 pub key_group: Vec<String>,
332}
333
334#[derive(Debug, Clone, Serialize, Deserialize, Default)]
335#[serde(rename_all = "PascalCase")]
336pub struct AllowedMethods {
337 pub quantity: i32,
338 pub items: MethodList,
339 #[serde(default, skip_serializing_if = "skip_if_none")]
340 pub cached_methods: Option<CachedMethods>,
341}
342
343#[derive(Debug, Clone, Serialize, Deserialize, Default)]
344#[serde(rename_all = "PascalCase")]
345pub struct MethodList {
346 #[serde(default, rename = "Method")]
347 pub method: Vec<String>,
348}
349
350#[derive(Debug, Clone, Serialize, Deserialize, Default)]
351#[serde(rename_all = "PascalCase")]
352pub struct CachedMethods {
353 pub quantity: i32,
354 pub items: MethodList,
355}
356
357#[derive(Debug, Clone, Serialize, Deserialize, Default)]
358#[serde(rename_all = "PascalCase")]
359pub struct LambdaFunctionAssociations {
360 pub quantity: i32,
361 #[serde(default, skip_serializing_if = "skip_if_none")]
362 pub items: Option<LambdaFunctionAssociationItems>,
363}
364
365#[derive(Debug, Clone, Serialize, Deserialize, Default)]
366#[serde(rename_all = "PascalCase")]
367pub struct LambdaFunctionAssociationItems {
368 #[serde(default)]
369 pub lambda_function_association: Vec<LambdaFunctionAssociation>,
370}
371
372#[derive(Debug, Clone, Serialize, Deserialize, Default)]
373#[serde(rename_all = "PascalCase")]
374pub struct LambdaFunctionAssociation {
375 pub lambda_function_arn: String,
376 pub event_type: String,
377 #[serde(default, skip_serializing_if = "skip_if_none")]
378 pub include_body: Option<bool>,
379}
380
381#[derive(Debug, Clone, Serialize, Deserialize, Default)]
382#[serde(rename_all = "PascalCase")]
383pub struct FunctionAssociations {
384 pub quantity: i32,
385 #[serde(default, skip_serializing_if = "skip_if_none")]
386 pub items: Option<FunctionAssociationItems>,
387}
388
389#[derive(Debug, Clone, Serialize, Deserialize, Default)]
390#[serde(rename_all = "PascalCase")]
391pub struct FunctionAssociationItems {
392 #[serde(default)]
393 pub function_association: Vec<FunctionAssociation>,
394}
395
396#[derive(Debug, Clone, Serialize, Deserialize, Default)]
397#[serde(rename_all = "PascalCase")]
398pub struct FunctionAssociation {
399 pub function_arn: String,
400 pub event_type: String,
401}
402
403#[derive(Debug, Clone, Serialize, Deserialize, Default)]
404#[serde(rename_all = "PascalCase")]
405pub struct GrpcConfig {
406 pub enabled: bool,
407}
408
409#[derive(Debug, Clone, Serialize, Deserialize, Default)]
410#[serde(rename_all = "PascalCase")]
411pub struct ForwardedValues {
412 pub query_string: bool,
413 pub cookies: CookiePreference,
414 #[serde(default, skip_serializing_if = "skip_if_none")]
415 pub headers: Option<Headers>,
416 #[serde(default, skip_serializing_if = "skip_if_none")]
417 pub query_string_cache_keys: Option<QueryStringCacheKeys>,
418}
419
420#[derive(Debug, Clone, Serialize, Deserialize, Default)]
421#[serde(rename_all = "PascalCase")]
422pub struct CookiePreference {
423 pub forward: String,
424 #[serde(default, skip_serializing_if = "skip_if_none")]
425 pub whitelisted_names: Option<CookieNames>,
426}
427
428#[derive(Debug, Clone, Serialize, Deserialize, Default)]
429#[serde(rename_all = "PascalCase")]
430pub struct CookieNames {
431 pub quantity: i32,
432 #[serde(default, skip_serializing_if = "skip_if_none")]
433 pub items: Option<CookieNameList>,
434}
435
436#[derive(Debug, Clone, Serialize, Deserialize, Default)]
437#[serde(rename_all = "PascalCase")]
438pub struct CookieNameList {
439 #[serde(default, rename = "Name")]
440 pub name: Vec<String>,
441}
442
443#[derive(Debug, Clone, Serialize, Deserialize, Default)]
444#[serde(rename_all = "PascalCase")]
445pub struct Headers {
446 pub quantity: i32,
447 #[serde(default, skip_serializing_if = "skip_if_none")]
448 pub items: Option<HeaderList>,
449}
450
451#[derive(Debug, Clone, Serialize, Deserialize, Default)]
452#[serde(rename_all = "PascalCase")]
453pub struct HeaderList {
454 #[serde(default, rename = "Name")]
455 pub name: Vec<String>,
456}
457
458#[derive(Debug, Clone, Serialize, Deserialize, Default)]
459#[serde(rename_all = "PascalCase")]
460pub struct QueryStringCacheKeys {
461 pub quantity: i32,
462 #[serde(default, skip_serializing_if = "skip_if_none")]
463 pub items: Option<QueryStringCacheKeyList>,
464}
465
466#[derive(Debug, Clone, Serialize, Deserialize, Default)]
467#[serde(rename_all = "PascalCase")]
468pub struct QueryStringCacheKeyList {
469 #[serde(default, rename = "Name")]
470 pub name: Vec<String>,
471}
472
473#[derive(Debug, Clone, Serialize, Deserialize, Default)]
474#[serde(rename_all = "PascalCase")]
475pub struct CacheBehaviors {
476 pub quantity: i32,
477 #[serde(default, skip_serializing_if = "skip_if_none")]
478 pub items: Option<CacheBehaviorItems>,
479}
480
481#[derive(Debug, Clone, Serialize, Deserialize, Default)]
482#[serde(rename_all = "PascalCase")]
483pub struct CacheBehaviorItems {
484 #[serde(default)]
485 pub cache_behavior: Vec<CacheBehavior>,
486}
487
488#[derive(Debug, Clone, Serialize, Deserialize, Default)]
489#[serde(rename_all = "PascalCase")]
490pub struct CacheBehavior {
491 pub path_pattern: String,
492 pub target_origin_id: String,
493 #[serde(default, skip_serializing_if = "skip_if_none")]
494 pub trusted_signers: Option<TrustedSigners>,
495 #[serde(default, skip_serializing_if = "skip_if_none")]
496 pub trusted_key_groups: Option<TrustedKeyGroups>,
497 pub viewer_protocol_policy: String,
498 #[serde(default, skip_serializing_if = "skip_if_none")]
499 pub allowed_methods: Option<AllowedMethods>,
500 #[serde(default, skip_serializing_if = "skip_if_none")]
501 pub smooth_streaming: Option<bool>,
502 #[serde(default, skip_serializing_if = "skip_if_none")]
503 pub compress: Option<bool>,
504 #[serde(default, skip_serializing_if = "skip_if_none")]
505 pub lambda_function_associations: Option<LambdaFunctionAssociations>,
506 #[serde(default, skip_serializing_if = "skip_if_none")]
507 pub function_associations: Option<FunctionAssociations>,
508 #[serde(default, skip_serializing_if = "skip_if_none")]
509 pub field_level_encryption_id: Option<String>,
510 #[serde(default, skip_serializing_if = "skip_if_none")]
511 pub realtime_log_config_arn: Option<String>,
512 #[serde(default, skip_serializing_if = "skip_if_none")]
513 pub cache_policy_id: Option<String>,
514 #[serde(default, skip_serializing_if = "skip_if_none")]
515 pub origin_request_policy_id: Option<String>,
516 #[serde(default, skip_serializing_if = "skip_if_none")]
517 pub response_headers_policy_id: Option<String>,
518 #[serde(default, skip_serializing_if = "skip_if_none")]
519 pub grpc_config: Option<GrpcConfig>,
520 #[serde(default, skip_serializing_if = "skip_if_none")]
521 pub forwarded_values: Option<ForwardedValues>,
522 #[serde(default, skip_serializing_if = "skip_if_none")]
523 pub min_ttl: Option<i64>,
524 #[serde(default, skip_serializing_if = "skip_if_none")]
525 pub default_ttl: Option<i64>,
526 #[serde(default, skip_serializing_if = "skip_if_none")]
527 pub max_ttl: Option<i64>,
528}
529
530#[derive(Debug, Clone, Serialize, Deserialize, Default)]
531#[serde(rename_all = "PascalCase")]
532pub struct CustomErrorResponses {
533 pub quantity: i32,
534 #[serde(default, skip_serializing_if = "skip_if_none")]
535 pub items: Option<CustomErrorResponseItems>,
536}
537
538#[derive(Debug, Clone, Serialize, Deserialize, Default)]
539#[serde(rename_all = "PascalCase")]
540pub struct CustomErrorResponseItems {
541 #[serde(default)]
542 pub custom_error_response: Vec<CustomErrorResponse>,
543}
544
545#[derive(Debug, Clone, Serialize, Deserialize, Default)]
546#[serde(rename_all = "PascalCase")]
547pub struct CustomErrorResponse {
548 pub error_code: i32,
549 #[serde(default, skip_serializing_if = "skip_if_none")]
550 pub response_page_path: Option<String>,
551 #[serde(default, skip_serializing_if = "skip_if_none")]
552 pub response_code: Option<String>,
553 #[serde(default, skip_serializing_if = "skip_if_none")]
554 pub error_caching_min_ttl: Option<i64>,
555}
556
557#[derive(Debug, Clone, Serialize, Deserialize, Default)]
558#[serde(rename_all = "PascalCase")]
559pub struct LoggingConfig {
560 pub enabled: bool,
561 pub include_cookies: bool,
562 pub bucket: String,
563 pub prefix: String,
564}
565
566#[derive(Debug, Clone, Serialize, Deserialize, Default)]
567#[serde(rename_all = "PascalCase")]
568pub struct ViewerCertificate {
569 #[serde(default, skip_serializing_if = "skip_if_none")]
570 pub cloud_front_default_certificate: Option<bool>,
571 #[serde(default, skip_serializing_if = "skip_if_none")]
572 pub iam_certificate_id: Option<String>,
573 #[serde(default, skip_serializing_if = "skip_if_none")]
574 pub acm_certificate_arn: Option<String>,
575 #[serde(default, skip_serializing_if = "skip_if_none")]
576 pub ssl_support_method: Option<String>,
577 #[serde(default, skip_serializing_if = "skip_if_none")]
578 pub minimum_protocol_version: Option<String>,
579 #[serde(default, skip_serializing_if = "skip_if_none")]
580 pub certificate: Option<String>,
581 #[serde(default, skip_serializing_if = "skip_if_none")]
582 pub certificate_source: Option<String>,
583}
584
585#[derive(Debug, Clone, Serialize, Deserialize, Default)]
586#[serde(rename_all = "PascalCase")]
587pub struct Restrictions {
588 pub geo_restriction: GeoRestriction,
589}
590
591#[derive(Debug, Clone, Serialize, Deserialize, Default)]
592#[serde(rename_all = "PascalCase")]
593pub struct GeoRestriction {
594 pub restriction_type: String,
595 pub quantity: i32,
596 #[serde(default, skip_serializing_if = "skip_if_none")]
597 pub items: Option<LocationList>,
598}
599
600#[derive(Debug, Clone, Serialize, Deserialize, Default)]
601#[serde(rename_all = "PascalCase")]
602pub struct LocationList {
603 #[serde(default, rename = "Location")]
604 pub location: Vec<String>,
605}
606
607#[derive(Debug, Clone, Serialize, Deserialize, Default)]
608#[serde(rename_all = "PascalCase")]
609pub struct TenantConfig {
610 #[serde(default, skip_serializing_if = "skip_if_none")]
611 pub parameter_definitions: Option<ParameterDefinitions>,
612}
613
614#[derive(Debug, Clone, Serialize, Deserialize, Default)]
615#[serde(rename_all = "PascalCase")]
616pub struct ParameterDefinitions {
617 #[serde(default, rename = "ParameterDefinition")]
618 pub parameter_definition: Vec<ParameterDefinition>,
619}
620
621#[derive(Debug, Clone, Serialize, Deserialize, Default)]
622#[serde(rename_all = "PascalCase")]
623pub struct ParameterDefinition {
624 pub name: String,
625 pub definition: ParameterDefinitionSchema,
626}
627
628#[derive(Debug, Clone, Serialize, Deserialize, Default)]
629#[serde(rename_all = "PascalCase")]
630pub struct ParameterDefinitionSchema {
631 #[serde(default, skip_serializing_if = "skip_if_none")]
632 pub string_schema: Option<StringSchemaConfig>,
633}
634
635#[derive(Debug, Clone, Serialize, Deserialize, Default)]
636#[serde(rename_all = "PascalCase")]
637pub struct StringSchemaConfig {
638 pub required: bool,
639 #[serde(default, skip_serializing_if = "skip_if_none")]
640 pub comment: Option<String>,
641 #[serde(default, skip_serializing_if = "skip_if_none")]
642 pub default_value: Option<String>,
643}
644
645#[derive(Debug, Clone, Serialize, Deserialize, Default)]
648#[serde(rename_all = "PascalCase")]
649pub struct Tags {
650 #[serde(default, skip_serializing_if = "skip_if_none")]
651 pub items: Option<TagList>,
652}
653
654#[derive(Debug, Clone, Serialize, Deserialize, Default)]
655#[serde(rename_all = "PascalCase")]
656pub struct TagList {
657 #[serde(default, rename = "Tag")]
658 pub tag: Vec<Tag>,
659}
660
661#[derive(Debug, Clone, Serialize, Deserialize, Default)]
662#[serde(rename_all = "PascalCase")]
663pub struct Tag {
664 pub key: String,
665 #[serde(default, skip_serializing_if = "skip_if_none")]
666 pub value: Option<String>,
667}
668
669#[derive(Debug, Clone, Serialize, Deserialize, Default)]
670#[serde(rename_all = "PascalCase")]
671pub struct TagKeys {
672 #[serde(default, skip_serializing_if = "skip_if_none")]
673 pub items: Option<TagKeyList>,
674}
675
676#[derive(Debug, Clone, Serialize, Deserialize, Default)]
677#[serde(rename_all = "PascalCase")]
678pub struct TagKeyList {
679 #[serde(default, rename = "Key")]
680 pub key: Vec<String>,
681}
682
683#[derive(Debug, Clone, Serialize, Deserialize, Default)]
686#[serde(rename_all = "PascalCase")]
687pub struct DistributionConfigWithTags {
688 pub distribution_config: DistributionConfig,
689 pub tags: Tags,
690}
691
692#[derive(Debug, Clone, Serialize, Deserialize, Default)]
695#[serde(rename_all = "PascalCase")]
696pub struct InvalidationBatch {
697 pub paths: Paths,
698 pub caller_reference: String,
699}
700
701#[derive(Debug, Clone, Serialize, Deserialize, Default)]
702#[serde(rename_all = "PascalCase")]
703pub struct Paths {
704 pub quantity: i32,
705 #[serde(default, skip_serializing_if = "skip_if_none")]
706 pub items: Option<PathList>,
707}
708
709#[derive(Debug, Clone, Serialize, Deserialize, Default)]
710#[serde(rename_all = "PascalCase")]
711pub struct PathList {
712 #[serde(default, rename = "Path")]
713 pub path: Vec<String>,
714}