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 #[serde(rename = "HTTPPort")]
157 pub http_port: i32,
158 #[serde(rename = "HTTPSPort")]
159 pub https_port: i32,
160 pub origin_protocol_policy: String,
161 #[serde(default, skip_serializing_if = "skip_if_none")]
162 pub origin_ssl_protocols: Option<OriginSslProtocols>,
163 #[serde(default, skip_serializing_if = "skip_if_none")]
164 pub origin_read_timeout: Option<i32>,
165 #[serde(default, skip_serializing_if = "skip_if_none")]
166 pub origin_keepalive_timeout: Option<i32>,
167}
168
169#[derive(Debug, Clone, Serialize, Deserialize, Default)]
170#[serde(rename_all = "PascalCase")]
171pub struct OriginSslProtocols {
172 pub quantity: i32,
173 pub items: SslProtocolItems,
174}
175
176#[derive(Debug, Clone, Serialize, Deserialize, Default)]
177#[serde(rename_all = "PascalCase")]
178pub struct SslProtocolItems {
179 #[serde(default, rename = "SslProtocol")]
180 pub ssl_protocol: Vec<String>,
181}
182
183#[derive(Debug, Clone, Serialize, Deserialize, Default)]
184#[serde(rename_all = "PascalCase")]
185pub struct VpcOriginConfig {
186 pub vpc_origin_id: String,
187 #[serde(default, skip_serializing_if = "skip_if_none")]
188 pub origin_read_timeout: Option<i32>,
189 #[serde(default, skip_serializing_if = "skip_if_none")]
190 pub origin_keepalive_timeout: Option<i32>,
191}
192
193#[derive(Debug, Clone, Serialize, Deserialize, Default)]
194#[serde(rename_all = "PascalCase")]
195pub struct OriginShield {
196 pub enabled: bool,
197 #[serde(default, skip_serializing_if = "skip_if_none")]
198 pub origin_shield_region: Option<String>,
199}
200
201#[derive(Debug, Clone, Serialize, Deserialize, Default)]
202#[serde(rename_all = "PascalCase")]
203pub struct OriginGroups {
204 pub quantity: i32,
205 #[serde(default, skip_serializing_if = "skip_if_none")]
206 pub items: Option<OriginGroupItems>,
207}
208
209#[derive(Debug, Clone, Serialize, Deserialize, Default)]
210#[serde(rename_all = "PascalCase")]
211pub struct OriginGroupItems {
212 #[serde(default)]
213 pub origin_group: Vec<OriginGroup>,
214}
215
216#[derive(Debug, Clone, Serialize, Deserialize, Default)]
217#[serde(rename_all = "PascalCase")]
218pub struct OriginGroup {
219 pub id: String,
220 pub failover_criteria: OriginGroupFailoverCriteria,
221 pub members: OriginGroupMembers,
222 #[serde(default, skip_serializing_if = "skip_if_none")]
223 pub selection_criteria: Option<String>,
224}
225
226#[derive(Debug, Clone, Serialize, Deserialize, Default)]
227#[serde(rename_all = "PascalCase")]
228pub struct OriginGroupFailoverCriteria {
229 pub status_codes: StatusCodes,
230}
231
232#[derive(Debug, Clone, Serialize, Deserialize, Default)]
233#[serde(rename_all = "PascalCase")]
234pub struct StatusCodes {
235 pub quantity: i32,
236 pub items: StatusCodeItems,
237}
238
239#[derive(Debug, Clone, Serialize, Deserialize, Default)]
240#[serde(rename_all = "PascalCase")]
241pub struct StatusCodeItems {
242 #[serde(default, rename = "StatusCode")]
243 pub status_code: Vec<i32>,
244}
245
246#[derive(Debug, Clone, Serialize, Deserialize, Default)]
247#[serde(rename_all = "PascalCase")]
248pub struct OriginGroupMembers {
249 pub quantity: i32,
250 pub items: OriginGroupMemberItems,
251}
252
253#[derive(Debug, Clone, Serialize, Deserialize, Default)]
254#[serde(rename_all = "PascalCase")]
255pub struct OriginGroupMemberItems {
256 #[serde(default)]
257 pub origin_group_member: Vec<OriginGroupMember>,
258}
259
260#[derive(Debug, Clone, Serialize, Deserialize, Default)]
261#[serde(rename_all = "PascalCase")]
262pub struct OriginGroupMember {
263 pub origin_id: String,
264}
265
266#[derive(Debug, Clone, Serialize, Deserialize, Default)]
267#[serde(rename_all = "PascalCase")]
268pub struct DefaultCacheBehavior {
269 pub target_origin_id: String,
270 #[serde(default, skip_serializing_if = "skip_if_none")]
271 pub trusted_signers: Option<TrustedSigners>,
272 #[serde(default, skip_serializing_if = "skip_if_none")]
273 pub trusted_key_groups: Option<TrustedKeyGroups>,
274 pub viewer_protocol_policy: String,
275 #[serde(default, skip_serializing_if = "skip_if_none")]
276 pub allowed_methods: Option<AllowedMethods>,
277 #[serde(default, skip_serializing_if = "skip_if_none")]
278 pub smooth_streaming: Option<bool>,
279 #[serde(default, skip_serializing_if = "skip_if_none")]
280 pub compress: Option<bool>,
281 #[serde(default, skip_serializing_if = "skip_if_none")]
282 pub lambda_function_associations: Option<LambdaFunctionAssociations>,
283 #[serde(default, skip_serializing_if = "skip_if_none")]
284 pub function_associations: Option<FunctionAssociations>,
285 #[serde(default, skip_serializing_if = "skip_if_none")]
286 pub field_level_encryption_id: Option<String>,
287 #[serde(default, skip_serializing_if = "skip_if_none")]
288 pub realtime_log_config_arn: Option<String>,
289 #[serde(default, skip_serializing_if = "skip_if_none")]
290 pub cache_policy_id: Option<String>,
291 #[serde(default, skip_serializing_if = "skip_if_none")]
292 pub origin_request_policy_id: Option<String>,
293 #[serde(default, skip_serializing_if = "skip_if_none")]
294 pub response_headers_policy_id: Option<String>,
295 #[serde(default, skip_serializing_if = "skip_if_none")]
296 pub grpc_config: Option<GrpcConfig>,
297 #[serde(default, skip_serializing_if = "skip_if_none")]
298 pub forwarded_values: Option<ForwardedValues>,
299 #[serde(default, skip_serializing_if = "skip_if_none")]
300 pub min_ttl: Option<i64>,
301 #[serde(default, skip_serializing_if = "skip_if_none")]
302 pub default_ttl: Option<i64>,
303 #[serde(default, skip_serializing_if = "skip_if_none")]
304 pub max_ttl: Option<i64>,
305}
306
307#[derive(Debug, Clone, Serialize, Deserialize, Default)]
308#[serde(rename_all = "PascalCase")]
309pub struct TrustedSigners {
310 pub enabled: bool,
311 pub quantity: i32,
312 #[serde(default, skip_serializing_if = "skip_if_none")]
313 pub items: Option<AwsAccountNumberList>,
314}
315
316#[derive(Debug, Clone, Serialize, Deserialize, Default)]
317#[serde(rename_all = "PascalCase")]
318pub struct AwsAccountNumberList {
319 #[serde(default, rename = "AwsAccountNumber")]
320 pub aws_account_number: Vec<String>,
321}
322
323#[derive(Debug, Clone, Serialize, Deserialize, Default)]
324#[serde(rename_all = "PascalCase")]
325pub struct TrustedKeyGroups {
326 pub enabled: bool,
327 pub quantity: i32,
328 #[serde(default, skip_serializing_if = "skip_if_none")]
329 pub items: Option<TrustedKeyGroupIdList>,
330}
331
332#[derive(Debug, Clone, Serialize, Deserialize, Default)]
333#[serde(rename_all = "PascalCase")]
334pub struct TrustedKeyGroupIdList {
335 #[serde(default, rename = "KeyGroup")]
336 pub key_group: Vec<String>,
337}
338
339#[derive(Debug, Clone, Serialize, Deserialize, Default)]
340#[serde(rename_all = "PascalCase")]
341pub struct AllowedMethods {
342 pub quantity: i32,
343 pub items: MethodList,
344 #[serde(default, skip_serializing_if = "skip_if_none")]
345 pub cached_methods: Option<CachedMethods>,
346}
347
348#[derive(Debug, Clone, Serialize, Deserialize, Default)]
349#[serde(rename_all = "PascalCase")]
350pub struct MethodList {
351 #[serde(default, rename = "Method")]
352 pub method: Vec<String>,
353}
354
355#[derive(Debug, Clone, Serialize, Deserialize, Default)]
356#[serde(rename_all = "PascalCase")]
357pub struct CachedMethods {
358 pub quantity: i32,
359 pub items: MethodList,
360}
361
362#[derive(Debug, Clone, Serialize, Deserialize, Default)]
363#[serde(rename_all = "PascalCase")]
364pub struct LambdaFunctionAssociations {
365 pub quantity: i32,
366 #[serde(default, skip_serializing_if = "skip_if_none")]
367 pub items: Option<LambdaFunctionAssociationItems>,
368}
369
370#[derive(Debug, Clone, Serialize, Deserialize, Default)]
371#[serde(rename_all = "PascalCase")]
372pub struct LambdaFunctionAssociationItems {
373 #[serde(default)]
374 pub lambda_function_association: Vec<LambdaFunctionAssociation>,
375}
376
377#[derive(Debug, Clone, Serialize, Deserialize, Default)]
378#[serde(rename_all = "PascalCase")]
379pub struct LambdaFunctionAssociation {
380 pub lambda_function_arn: String,
381 pub event_type: String,
382 #[serde(default, skip_serializing_if = "skip_if_none")]
383 pub include_body: Option<bool>,
384}
385
386#[derive(Debug, Clone, Serialize, Deserialize, Default)]
387#[serde(rename_all = "PascalCase")]
388pub struct FunctionAssociations {
389 pub quantity: i32,
390 #[serde(default, skip_serializing_if = "skip_if_none")]
391 pub items: Option<FunctionAssociationItems>,
392}
393
394#[derive(Debug, Clone, Serialize, Deserialize, Default)]
395#[serde(rename_all = "PascalCase")]
396pub struct FunctionAssociationItems {
397 #[serde(default)]
398 pub function_association: Vec<FunctionAssociation>,
399}
400
401#[derive(Debug, Clone, Serialize, Deserialize, Default)]
402#[serde(rename_all = "PascalCase")]
403pub struct FunctionAssociation {
404 pub function_arn: String,
405 pub event_type: String,
406}
407
408#[derive(Debug, Clone, Serialize, Deserialize, Default)]
409#[serde(rename_all = "PascalCase")]
410pub struct GrpcConfig {
411 pub enabled: bool,
412}
413
414#[derive(Debug, Clone, Serialize, Deserialize, Default)]
415#[serde(rename_all = "PascalCase")]
416pub struct ForwardedValues {
417 pub query_string: bool,
418 pub cookies: CookiePreference,
419 #[serde(default, skip_serializing_if = "skip_if_none")]
420 pub headers: Option<Headers>,
421 #[serde(default, skip_serializing_if = "skip_if_none")]
422 pub query_string_cache_keys: Option<QueryStringCacheKeys>,
423}
424
425#[derive(Debug, Clone, Serialize, Deserialize, Default)]
426#[serde(rename_all = "PascalCase")]
427pub struct CookiePreference {
428 pub forward: String,
429 #[serde(default, skip_serializing_if = "skip_if_none")]
430 pub whitelisted_names: Option<CookieNames>,
431}
432
433#[derive(Debug, Clone, Serialize, Deserialize, Default)]
434#[serde(rename_all = "PascalCase")]
435pub struct CookieNames {
436 pub quantity: i32,
437 #[serde(default, skip_serializing_if = "skip_if_none")]
438 pub items: Option<CookieNameList>,
439}
440
441#[derive(Debug, Clone, Serialize, Deserialize, Default)]
442#[serde(rename_all = "PascalCase")]
443pub struct CookieNameList {
444 #[serde(default, rename = "Name")]
445 pub name: Vec<String>,
446}
447
448#[derive(Debug, Clone, Serialize, Deserialize, Default)]
449#[serde(rename_all = "PascalCase")]
450pub struct Headers {
451 pub quantity: i32,
452 #[serde(default, skip_serializing_if = "skip_if_none")]
453 pub items: Option<HeaderList>,
454}
455
456#[derive(Debug, Clone, Serialize, Deserialize, Default)]
457#[serde(rename_all = "PascalCase")]
458pub struct HeaderList {
459 #[serde(default, rename = "Name")]
460 pub name: Vec<String>,
461}
462
463#[derive(Debug, Clone, Serialize, Deserialize, Default)]
464#[serde(rename_all = "PascalCase")]
465pub struct QueryStringCacheKeys {
466 pub quantity: i32,
467 #[serde(default, skip_serializing_if = "skip_if_none")]
468 pub items: Option<QueryStringCacheKeyList>,
469}
470
471#[derive(Debug, Clone, Serialize, Deserialize, Default)]
472#[serde(rename_all = "PascalCase")]
473pub struct QueryStringCacheKeyList {
474 #[serde(default, rename = "Name")]
475 pub name: Vec<String>,
476}
477
478#[derive(Debug, Clone, Serialize, Deserialize, Default)]
479#[serde(rename_all = "PascalCase")]
480pub struct CacheBehaviors {
481 pub quantity: i32,
482 #[serde(default, skip_serializing_if = "skip_if_none")]
483 pub items: Option<CacheBehaviorItems>,
484}
485
486#[derive(Debug, Clone, Serialize, Deserialize, Default)]
487#[serde(rename_all = "PascalCase")]
488pub struct CacheBehaviorItems {
489 #[serde(default)]
490 pub cache_behavior: Vec<CacheBehavior>,
491}
492
493#[derive(Debug, Clone, Serialize, Deserialize, Default)]
494#[serde(rename_all = "PascalCase")]
495pub struct CacheBehavior {
496 pub path_pattern: String,
497 pub target_origin_id: String,
498 #[serde(default, skip_serializing_if = "skip_if_none")]
499 pub trusted_signers: Option<TrustedSigners>,
500 #[serde(default, skip_serializing_if = "skip_if_none")]
501 pub trusted_key_groups: Option<TrustedKeyGroups>,
502 pub viewer_protocol_policy: String,
503 #[serde(default, skip_serializing_if = "skip_if_none")]
504 pub allowed_methods: Option<AllowedMethods>,
505 #[serde(default, skip_serializing_if = "skip_if_none")]
506 pub smooth_streaming: Option<bool>,
507 #[serde(default, skip_serializing_if = "skip_if_none")]
508 pub compress: Option<bool>,
509 #[serde(default, skip_serializing_if = "skip_if_none")]
510 pub lambda_function_associations: Option<LambdaFunctionAssociations>,
511 #[serde(default, skip_serializing_if = "skip_if_none")]
512 pub function_associations: Option<FunctionAssociations>,
513 #[serde(default, skip_serializing_if = "skip_if_none")]
514 pub field_level_encryption_id: Option<String>,
515 #[serde(default, skip_serializing_if = "skip_if_none")]
516 pub realtime_log_config_arn: Option<String>,
517 #[serde(default, skip_serializing_if = "skip_if_none")]
518 pub cache_policy_id: Option<String>,
519 #[serde(default, skip_serializing_if = "skip_if_none")]
520 pub origin_request_policy_id: Option<String>,
521 #[serde(default, skip_serializing_if = "skip_if_none")]
522 pub response_headers_policy_id: Option<String>,
523 #[serde(default, skip_serializing_if = "skip_if_none")]
524 pub grpc_config: Option<GrpcConfig>,
525 #[serde(default, skip_serializing_if = "skip_if_none")]
526 pub forwarded_values: Option<ForwardedValues>,
527 #[serde(default, skip_serializing_if = "skip_if_none")]
528 pub min_ttl: Option<i64>,
529 #[serde(default, skip_serializing_if = "skip_if_none")]
530 pub default_ttl: Option<i64>,
531 #[serde(default, skip_serializing_if = "skip_if_none")]
532 pub max_ttl: Option<i64>,
533}
534
535#[derive(Debug, Clone, Serialize, Deserialize, Default)]
536#[serde(rename_all = "PascalCase")]
537pub struct CustomErrorResponses {
538 pub quantity: i32,
539 #[serde(default, skip_serializing_if = "skip_if_none")]
540 pub items: Option<CustomErrorResponseItems>,
541}
542
543#[derive(Debug, Clone, Serialize, Deserialize, Default)]
544#[serde(rename_all = "PascalCase")]
545pub struct CustomErrorResponseItems {
546 #[serde(default)]
547 pub custom_error_response: Vec<CustomErrorResponse>,
548}
549
550#[derive(Debug, Clone, Serialize, Deserialize, Default)]
551#[serde(rename_all = "PascalCase")]
552pub struct CustomErrorResponse {
553 pub error_code: i32,
554 #[serde(default, skip_serializing_if = "skip_if_none")]
555 pub response_page_path: Option<String>,
556 #[serde(default, skip_serializing_if = "skip_if_none")]
557 pub response_code: Option<String>,
558 #[serde(default, skip_serializing_if = "skip_if_none")]
559 pub error_caching_min_ttl: Option<i64>,
560}
561
562#[derive(Debug, Clone, Serialize, Deserialize, Default)]
563#[serde(rename_all = "PascalCase")]
564pub struct LoggingConfig {
565 pub enabled: bool,
566 pub include_cookies: bool,
567 pub bucket: String,
568 pub prefix: String,
569}
570
571#[derive(Debug, Clone, Serialize, Deserialize, Default)]
572#[serde(rename_all = "PascalCase")]
573pub struct ViewerCertificate {
574 #[serde(default, skip_serializing_if = "skip_if_none")]
575 pub cloud_front_default_certificate: Option<bool>,
576 #[serde(default, skip_serializing_if = "skip_if_none")]
577 pub iam_certificate_id: Option<String>,
578 #[serde(default, skip_serializing_if = "skip_if_none")]
579 pub acm_certificate_arn: Option<String>,
580 #[serde(default, skip_serializing_if = "skip_if_none")]
581 pub ssl_support_method: Option<String>,
582 #[serde(default, skip_serializing_if = "skip_if_none")]
583 pub minimum_protocol_version: Option<String>,
584 #[serde(default, skip_serializing_if = "skip_if_none")]
585 pub certificate: Option<String>,
586 #[serde(default, skip_serializing_if = "skip_if_none")]
587 pub certificate_source: Option<String>,
588}
589
590#[derive(Debug, Clone, Serialize, Deserialize, Default)]
591#[serde(rename_all = "PascalCase")]
592pub struct Restrictions {
593 pub geo_restriction: GeoRestriction,
594}
595
596#[derive(Debug, Clone, Serialize, Deserialize, Default)]
597#[serde(rename_all = "PascalCase")]
598pub struct GeoRestriction {
599 pub restriction_type: String,
600 pub quantity: i32,
601 #[serde(default, skip_serializing_if = "skip_if_none")]
602 pub items: Option<LocationList>,
603}
604
605#[derive(Debug, Clone, Serialize, Deserialize, Default)]
606#[serde(rename_all = "PascalCase")]
607pub struct LocationList {
608 #[serde(default, rename = "Location")]
609 pub location: Vec<String>,
610}
611
612#[derive(Debug, Clone, Serialize, Deserialize, Default)]
613#[serde(rename_all = "PascalCase")]
614pub struct TenantConfig {
615 #[serde(default, skip_serializing_if = "skip_if_none")]
616 pub parameter_definitions: Option<ParameterDefinitions>,
617}
618
619#[derive(Debug, Clone, Serialize, Deserialize, Default)]
620#[serde(rename_all = "PascalCase")]
621pub struct ParameterDefinitions {
622 #[serde(default, rename = "ParameterDefinition")]
623 pub parameter_definition: Vec<ParameterDefinition>,
624}
625
626#[derive(Debug, Clone, Serialize, Deserialize, Default)]
627#[serde(rename_all = "PascalCase")]
628pub struct ParameterDefinition {
629 pub name: String,
630 pub definition: ParameterDefinitionSchema,
631}
632
633#[derive(Debug, Clone, Serialize, Deserialize, Default)]
634#[serde(rename_all = "PascalCase")]
635pub struct ParameterDefinitionSchema {
636 #[serde(default, skip_serializing_if = "skip_if_none")]
637 pub string_schema: Option<StringSchemaConfig>,
638}
639
640#[derive(Debug, Clone, Serialize, Deserialize, Default)]
641#[serde(rename_all = "PascalCase")]
642pub struct StringSchemaConfig {
643 pub required: bool,
644 #[serde(default, skip_serializing_if = "skip_if_none")]
645 pub comment: Option<String>,
646 #[serde(default, skip_serializing_if = "skip_if_none")]
647 pub default_value: Option<String>,
648}
649
650#[derive(Debug, Clone, Serialize, Deserialize, Default)]
653#[serde(rename_all = "PascalCase")]
654pub struct Tags {
655 #[serde(default, skip_serializing_if = "skip_if_none")]
656 pub items: Option<TagList>,
657}
658
659#[derive(Debug, Clone, Serialize, Deserialize, Default)]
660#[serde(rename_all = "PascalCase")]
661pub struct TagList {
662 #[serde(default, rename = "Tag")]
663 pub tag: Vec<Tag>,
664}
665
666#[derive(Debug, Clone, Serialize, Deserialize, Default)]
667#[serde(rename_all = "PascalCase")]
668pub struct Tag {
669 pub key: String,
670 #[serde(default, skip_serializing_if = "skip_if_none")]
671 pub value: Option<String>,
672}
673
674#[derive(Debug, Clone, Serialize, Deserialize, Default)]
675#[serde(rename_all = "PascalCase")]
676pub struct TagKeys {
677 #[serde(default, skip_serializing_if = "skip_if_none")]
678 pub items: Option<TagKeyList>,
679}
680
681#[derive(Debug, Clone, Serialize, Deserialize, Default)]
682#[serde(rename_all = "PascalCase")]
683pub struct TagKeyList {
684 #[serde(default, rename = "Key")]
685 pub key: Vec<String>,
686}
687
688#[derive(Debug, Clone, Serialize, Deserialize, Default)]
691#[serde(rename_all = "PascalCase")]
692pub struct DistributionConfigWithTags {
693 pub distribution_config: DistributionConfig,
694 pub tags: Tags,
695}
696
697#[derive(Debug, Clone, Serialize, Deserialize, Default)]
700#[serde(rename_all = "PascalCase")]
701pub struct InvalidationBatch {
702 pub paths: Paths,
703 pub caller_reference: String,
704}
705
706#[derive(Debug, Clone, Serialize, Deserialize, Default)]
707#[serde(rename_all = "PascalCase")]
708pub struct Paths {
709 pub quantity: i32,
710 #[serde(default, skip_serializing_if = "skip_if_none")]
711 pub items: Option<PathList>,
712}
713
714#[derive(Debug, Clone, Serialize, Deserialize, Default)]
715#[serde(rename_all = "PascalCase")]
716pub struct PathList {
717 #[serde(default, rename = "Path")]
718 pub path: Vec<String>,
719}