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