Skip to main content

aws_lite_rs/types/
ec2.rs

1//! Types for the Amazon EC2 API (v1).
2//!
3//! Auto-generated from the AWS Botocore Model.
4//! **Do not edit manually** — modify the manifest and re-run codegen.
5
6use serde::{Deserialize, Serialize};
7
8///
9/// **AWS API**: `ec2.v1.DescribeInstancesResult`
10/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeInstancesResult>
11#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12pub struct DescribeInstancesResponse {
13    /// Information about the reservations.
14    #[serde(rename(serialize = "ReservationSet", deserialize = "reservationSet"))]
15    #[serde(default)]
16    #[serde(skip_serializing_if = "Vec::is_empty")]
17    pub reservations: Vec<Reservation>,
18
19    /// The token to include in another request to get the next page of items. This value is
20    /// null when there are no more items to return.
21    #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
22    #[serde(skip_serializing_if = "Option::is_none")]
23    pub next_token: Option<String>,
24}
25
26impl DescribeInstancesResponse {
27    #[cfg(any(test, feature = "test-support"))]
28    /// Create a fixture instance for testing.
29    pub fn fixture() -> Self {
30        Self {
31            reservations: vec![],
32            next_token: Some("test-next_token".into()),
33        }
34    }
35}
36
37/// Describes a launch request for one or more instances, and includes owner, requester, and
38/// security group information that applies to all instances in the launch request.
39///
40/// **AWS API**: `ec2.v1.Reservation`
41/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//Reservation>
42///
43/// ## Coverage
44/// 2 of 5 fields included.
45/// Omitted fields:
46/// - `OwnerId` — not selected in manifest
47/// - `RequesterId` — not selected in manifest
48/// - `Groups` — not selected in manifest
49#[derive(Debug, Clone, Default, Serialize, Deserialize)]
50pub struct Reservation {
51    /// The ID of the reservation.
52    #[serde(rename(serialize = "ReservationId", deserialize = "reservationId"))]
53    #[serde(skip_serializing_if = "Option::is_none")]
54    pub reservation_id: Option<String>,
55
56    /// The instances.
57    #[serde(rename(serialize = "InstancesSet", deserialize = "instancesSet"))]
58    #[serde(default)]
59    #[serde(skip_serializing_if = "Vec::is_empty")]
60    pub instances: Vec<Instance>,
61}
62
63impl Reservation {
64    #[cfg(any(test, feature = "test-support"))]
65    /// Create a fixture instance for testing.
66    pub fn fixture() -> Self {
67        Self {
68            reservation_id: Some("test-reservation_id".into()),
69            instances: vec![],
70        }
71    }
72}
73
74/// Describes an instance.
75///
76/// **AWS API**: `ec2.v1.Instance`
77/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//Instance>
78///
79/// ## Coverage
80/// 18 of 61 fields included.
81/// Omitted fields:
82/// - `Architecture` — not selected in manifest
83/// - `ClientToken` — not selected in manifest
84/// - `EnaSupport` — not selected in manifest
85/// - `Hypervisor` — not selected in manifest
86/// - `InstanceLifecycle` — not selected in manifest
87/// - `ElasticGpuAssociations` — not selected in manifest
88/// - `ElasticInferenceAcceleratorAssociations` — not selected in manifest
89/// - `OutpostArn` — not selected in manifest
90/// - `RootDeviceName` — not selected in manifest
91/// - `RootDeviceType` — not selected in manifest
92/// - `SourceDestCheck` — not selected in manifest
93/// - `SpotInstanceRequestId` — not selected in manifest
94/// - `SriovNetSupport` — not selected in manifest
95/// - `StateReason` — not selected in manifest
96/// - `CpuOptions` — not selected in manifest
97/// - `CapacityBlockId` — not selected in manifest
98/// - `CapacityReservationId` — not selected in manifest
99/// - `CapacityReservationSpecification` — not selected in manifest
100/// - `HibernationOptions` — not selected in manifest
101/// - `Licenses` — not selected in manifest
102/// - `EnclaveOptions` — not selected in manifest
103/// - `BootMode` — not selected in manifest
104/// - `PlatformDetails` — not selected in manifest
105/// - `UsageOperation` — not selected in manifest
106/// - `UsageOperationUpdateTime` — not selected in manifest
107/// - `PrivateDnsNameOptions` — not selected in manifest
108/// - `Ipv6Address` — not selected in manifest
109/// - `TpmSupport` — not selected in manifest
110/// - `MaintenanceOptions` — not selected in manifest
111/// - `CurrentInstanceBootMode` — not selected in manifest
112/// - `NetworkPerformanceOptions` — not selected in manifest
113/// - `Operator` — not selected in manifest
114/// - `SecondaryInterfaces` — not selected in manifest
115/// - `PrivateDnsName` — not selected in manifest
116/// - `PublicDnsName` — not selected in manifest
117/// - `StateTransitionReason` — not selected in manifest
118/// - `KeyName` — not selected in manifest
119/// - `AmiLaunchIndex` — not selected in manifest
120/// - `ProductCodes` — not selected in manifest
121/// - `KernelId` — not selected in manifest
122/// - `RamdiskId` — not selected in manifest
123/// - `Platform` — not selected in manifest
124/// - `PrivateIpAddress` — not selected in manifest
125#[derive(Debug, Clone, Default, Serialize, Deserialize)]
126pub struct Instance {
127    /// The ID of the instance.
128    #[serde(rename(serialize = "InstanceId", deserialize = "instanceId"))]
129    #[serde(skip_serializing_if = "Option::is_none")]
130    pub instance_id: Option<String>,
131
132    /// The instance type.
133    #[serde(rename(serialize = "InstanceType", deserialize = "instanceType"))]
134    #[serde(skip_serializing_if = "Option::is_none")]
135    pub instance_type: Option<String>,
136
137    /// The current state of the instance.
138    #[serde(rename(serialize = "InstanceState", deserialize = "instanceState"))]
139    #[serde(skip_serializing_if = "Option::is_none")]
140    pub state: Option<InstanceState>,
141
142    /// The location where the instance launched, if applicable.
143    #[serde(rename(serialize = "Placement", deserialize = "placement"))]
144    #[serde(skip_serializing_if = "Option::is_none")]
145    pub placement: Option<Placement>,
146
147    /// The ID of the subnet in which the instance is running.
148    #[serde(rename(serialize = "SubnetId", deserialize = "subnetId"))]
149    #[serde(skip_serializing_if = "Option::is_none")]
150    pub subnet_id: Option<String>,
151
152    /// The ID of the VPC in which the instance is running.
153    #[serde(rename(serialize = "VpcId", deserialize = "vpcId"))]
154    #[serde(skip_serializing_if = "Option::is_none")]
155    pub vpc_id: Option<String>,
156
157    /// The public IPv4 address, or the Carrier IP address assigned to the instance, if
158    /// applicable. A Carrier IP address only applies to an instance launched in a subnet
159    /// associated with a Wavelength Zone.
160    #[serde(rename(serialize = "IpAddress", deserialize = "ipAddress"))]
161    #[serde(skip_serializing_if = "Option::is_none")]
162    pub public_ip_address: Option<String>,
163
164    /// Any block device mapping entries for the instance.
165    #[serde(rename(serialize = "BlockDeviceMapping", deserialize = "blockDeviceMapping"))]
166    #[serde(default)]
167    #[serde(skip_serializing_if = "Vec::is_empty")]
168    pub block_device_mappings: Vec<InstanceBlockDeviceMapping>,
169
170    /// The security groups for the instance.
171    #[serde(rename(serialize = "GroupSet", deserialize = "groupSet"))]
172    #[serde(default)]
173    #[serde(skip_serializing_if = "Vec::is_empty")]
174    pub security_groups: Vec<GroupIdentifier>,
175
176    /// The time that the instance was last launched. To determine the time that instance was
177    /// first launched, see the attachment time for the primary network interface.
178    #[serde(rename(serialize = "LaunchTime", deserialize = "launchTime"))]
179    #[serde(skip_serializing_if = "Option::is_none")]
180    pub launch_time: Option<String>,
181
182    /// The ID of the AMI used to launch the instance.
183    #[serde(rename(serialize = "ImageId", deserialize = "imageId"))]
184    #[serde(skip_serializing_if = "Option::is_none")]
185    pub image_id: Option<String>,
186
187    /// The IAM instance profile associated with the instance, if applicable.
188    #[serde(rename(serialize = "IamInstanceProfile", deserialize = "iamInstanceProfile"))]
189    #[serde(skip_serializing_if = "Option::is_none")]
190    pub iam_instance_profile: Option<IamInstanceProfile>,
191
192    /// The monitoring for the instance.
193    #[serde(rename(serialize = "Monitoring", deserialize = "monitoring"))]
194    #[serde(skip_serializing_if = "Option::is_none")]
195    pub monitoring: Option<Monitoring>,
196
197    /// The metadata options for the instance.
198    #[serde(rename(serialize = "MetadataOptions", deserialize = "metadataOptions"))]
199    #[serde(skip_serializing_if = "Option::is_none")]
200    pub metadata_options: Option<InstanceMetadataOptionsResponse>,
201
202    /// Indicates whether the instance is optimized for Amazon EBS I/O. This optimization
203    /// provides dedicated throughput to Amazon EBS and an optimized configuration stack to
204    /// provide optimal I/O performance. This optimization isn't available with all instance
205    /// types. Additional usage charges apply when using an EBS Optimized instance.
206    #[serde(rename(serialize = "EbsOptimized", deserialize = "ebsOptimized"))]
207    #[serde(skip_serializing_if = "Option::is_none")]
208    pub ebs_optimized: Option<bool>,
209
210    /// The virtualization type of the instance.
211    #[serde(rename(serialize = "VirtualizationType", deserialize = "virtualizationType"))]
212    #[serde(skip_serializing_if = "Option::is_none")]
213    pub virtualization_type: Option<String>,
214
215    /// The network interfaces for the instance.
216    #[serde(rename(serialize = "NetworkInterfaceSet", deserialize = "networkInterfaceSet"))]
217    #[serde(default)]
218    #[serde(skip_serializing_if = "Vec::is_empty")]
219    pub network_interfaces: Vec<InstanceNetworkInterface>,
220
221    /// Any tags assigned to the instance.
222    #[serde(rename(serialize = "TagSet", deserialize = "tagSet"))]
223    #[serde(default)]
224    #[serde(skip_serializing_if = "Vec::is_empty")]
225    pub tags: Vec<Tag>,
226}
227
228impl Instance {
229    #[cfg(any(test, feature = "test-support"))]
230    /// Create a fixture instance for testing.
231    pub fn fixture() -> Self {
232        Self {
233            instance_id: Some("test-instance_id".into()),
234            instance_type: Some("test-instance_type".into()),
235            state: Some(InstanceState::fixture()),
236            placement: Some(Placement::fixture()),
237            subnet_id: Some("test-subnet_id".into()),
238            vpc_id: Some("test-vpc_id".into()),
239            public_ip_address: Some("test-public_ip_address".into()),
240            block_device_mappings: vec![],
241            security_groups: vec![],
242            launch_time: Some("test-launch_time".into()),
243            image_id: Some("test-image_id".into()),
244            iam_instance_profile: Some(IamInstanceProfile::fixture()),
245            monitoring: Some(Monitoring::fixture()),
246            metadata_options: Some(InstanceMetadataOptionsResponse::fixture()),
247            ebs_optimized: Some(false),
248            virtualization_type: Some("test-virtualization_type".into()),
249            network_interfaces: vec![],
250            tags: vec![],
251        }
252    }
253}
254
255/// Describes the current state of an instance.
256///
257/// **AWS API**: `ec2.v1.InstanceState`
258/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//InstanceState>
259#[derive(Debug, Clone, Default, Serialize, Deserialize)]
260pub struct InstanceState {
261    /// The state of the instance as a 16-bit unsigned integer. The high byte is all of the bits
262    /// between 2^8 and (2^16)-1, which equals decimal values between 256 and 65,535. These
263    /// numerical values are used for internal purposes and should be ignored. The low byte is
264    /// all of the bits between 2^0 and (2^8)-1, which equals decimal values between 0 and 255.
265    /// The valid values for instance-state-code will all be in the range of the low byte and
266    /// they are: 0 : pending 16 : running 32 : shutting-down 48 : terminated 64 : stopping 80 :
267    /// stopped You can ignore the high byte value by zeroing out all of the bits above 2^8 or
268    /// 256 in decimal.
269    #[serde(rename(serialize = "Code", deserialize = "code"))]
270    #[serde(skip_serializing_if = "Option::is_none")]
271    pub code: Option<i32>,
272
273    /// The current state of the instance.
274    #[serde(rename(serialize = "Name", deserialize = "name"))]
275    #[serde(skip_serializing_if = "Option::is_none")]
276    pub name: Option<String>,
277}
278
279impl InstanceState {
280    #[cfg(any(test, feature = "test-support"))]
281    /// Create a fixture instance for testing.
282    pub fn fixture() -> Self {
283        Self {
284            code: Some(100),
285            name: Some("test-name".into()),
286        }
287    }
288}
289
290/// Describes the placement of an instance.
291///
292/// **AWS API**: `ec2.v1.Placement`
293/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//Placement>
294///
295/// ## Coverage
296/// 1 of 10 fields included.
297/// Omitted fields:
298/// - `AvailabilityZoneId` — not selected in manifest
299/// - `Affinity` — not selected in manifest
300/// - `GroupName` — not selected in manifest
301/// - `PartitionNumber` — not selected in manifest
302/// - `HostId` — not selected in manifest
303/// - `Tenancy` — not selected in manifest
304/// - `SpreadDomain` — not selected in manifest
305/// - `HostResourceGroupArn` — not selected in manifest
306/// - `GroupId` — not selected in manifest
307#[derive(Debug, Clone, Default, Serialize, Deserialize)]
308pub struct Placement {
309    /// The Availability Zone of the instance. On input, you can specify AvailabilityZone or
310    /// AvailabilityZoneId, but not both. If you specify neither one, Amazon EC2 automatically
311    /// selects an Availability Zone for you. This parameter is not supported for CreateFleet.
312    #[serde(rename(serialize = "AvailabilityZone", deserialize = "availabilityZone"))]
313    #[serde(skip_serializing_if = "Option::is_none")]
314    pub availability_zone: Option<String>,
315}
316
317impl Placement {
318    #[cfg(any(test, feature = "test-support"))]
319    /// Create a fixture instance for testing.
320    pub fn fixture() -> Self {
321        Self {
322            availability_zone: Some("test-availability_zone".into()),
323        }
324    }
325}
326
327/// Describes a block device mapping.
328///
329/// **AWS API**: `ec2.v1.InstanceBlockDeviceMapping`
330/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//InstanceBlockDeviceMapping>
331#[derive(Debug, Clone, Default, Serialize, Deserialize)]
332pub struct InstanceBlockDeviceMapping {
333    /// The device name.
334    #[serde(rename(serialize = "DeviceName", deserialize = "deviceName"))]
335    #[serde(skip_serializing_if = "Option::is_none")]
336    pub device_name: Option<String>,
337
338    /// Parameters used to automatically set up EBS volumes when the instance is launched.
339    #[serde(rename(serialize = "Ebs", deserialize = "ebs"))]
340    #[serde(skip_serializing_if = "Option::is_none")]
341    pub ebs: Option<EbsInstanceBlockDevice>,
342}
343
344impl InstanceBlockDeviceMapping {
345    #[cfg(any(test, feature = "test-support"))]
346    /// Create a fixture instance for testing.
347    pub fn fixture() -> Self {
348        Self {
349            device_name: Some("test-device_name".into()),
350            ebs: Some(EbsInstanceBlockDevice::fixture()),
351        }
352    }
353}
354
355/// Describes a parameter used to set up an EBS volume in a block device mapping.
356///
357/// **AWS API**: `ec2.v1.EbsInstanceBlockDevice`
358/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//EbsInstanceBlockDevice>
359///
360/// ## Coverage
361/// 2 of 8 fields included.
362/// Omitted fields:
363/// - `AttachTime` — not selected in manifest
364/// - `DeleteOnTermination` — not selected in manifest
365/// - `AssociatedResource` — not selected in manifest
366/// - `VolumeOwnerId` — not selected in manifest
367/// - `Operator` — not selected in manifest
368/// - `EbsCardIndex` — not selected in manifest
369#[derive(Debug, Clone, Default, Serialize, Deserialize)]
370pub struct EbsInstanceBlockDevice {
371    /// The ID of the EBS volume.
372    #[serde(rename(serialize = "VolumeId", deserialize = "volumeId"))]
373    #[serde(skip_serializing_if = "Option::is_none")]
374    pub volume_id: Option<String>,
375
376    /// The attachment state.
377    #[serde(rename(serialize = "Status", deserialize = "status"))]
378    #[serde(skip_serializing_if = "Option::is_none")]
379    pub status: Option<String>,
380}
381
382impl EbsInstanceBlockDevice {
383    #[cfg(any(test, feature = "test-support"))]
384    /// Create a fixture instance for testing.
385    pub fn fixture() -> Self {
386        Self {
387            volume_id: Some("test-volume_id".into()),
388            status: Some("test-status".into()),
389        }
390    }
391}
392
393/// Describes an IAM instance profile.
394///
395/// **AWS API**: `ec2.v1.IamInstanceProfile`
396/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//IamInstanceProfile>
397#[derive(Debug, Clone, Default, Serialize, Deserialize)]
398pub struct IamInstanceProfile {
399    /// The Amazon Resource Name (ARN) of the instance profile.
400    #[serde(rename(serialize = "Arn", deserialize = "arn"))]
401    #[serde(skip_serializing_if = "Option::is_none")]
402    pub arn: Option<String>,
403
404    /// The ID of the instance profile.
405    #[serde(rename(serialize = "Id", deserialize = "id"))]
406    #[serde(skip_serializing_if = "Option::is_none")]
407    pub id: Option<String>,
408}
409
410impl IamInstanceProfile {
411    #[cfg(any(test, feature = "test-support"))]
412    /// Create a fixture instance for testing.
413    pub fn fixture() -> Self {
414        Self {
415            arn: Some("test-arn".into()),
416            id: Some("test-id".into()),
417        }
418    }
419}
420
421/// Describes the monitoring of an instance.
422///
423/// **AWS API**: `ec2.v1.Monitoring`
424/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//Monitoring>
425#[derive(Debug, Clone, Default, Serialize, Deserialize)]
426pub struct Monitoring {
427    /// Indicates whether detailed monitoring is enabled. Otherwise, basic monitoring is
428    /// enabled.
429    #[serde(rename(serialize = "State", deserialize = "state"))]
430    #[serde(skip_serializing_if = "Option::is_none")]
431    pub state: Option<String>,
432}
433
434impl Monitoring {
435    #[cfg(any(test, feature = "test-support"))]
436    /// Create a fixture instance for testing.
437    pub fn fixture() -> Self {
438        Self {
439            state: Some("test-state".into()),
440        }
441    }
442}
443
444/// The metadata options for the instance.
445///
446/// **AWS API**: `ec2.v1.InstanceMetadataOptionsResponse`
447/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//InstanceMetadataOptionsResponse>
448///
449/// ## Coverage
450/// 2 of 6 fields included.
451/// Omitted fields:
452/// - `State` — not selected in manifest
453/// - `HttpPutResponseHopLimit` — not selected in manifest
454/// - `HttpProtocolIpv6` — not selected in manifest
455/// - `InstanceMetadataTags` — not selected in manifest
456#[derive(Debug, Clone, Default, Serialize, Deserialize)]
457pub struct InstanceMetadataOptionsResponse {
458    /// Indicates whether IMDSv2 is required. optional
459    /// - IMDSv2 is optional, which means that you can use either IMDSv2 or IMDSv1. required
460    /// - IMDSv2 is required, which means that IMDSv1 is disabled, and you must use IMDSv2.
461    #[serde(rename(serialize = "HttpTokens", deserialize = "httpTokens"))]
462    #[serde(skip_serializing_if = "Option::is_none")]
463    pub http_tokens: Option<String>,
464
465    /// Indicates whether the HTTP metadata endpoint on your instances is enabled or disabled.
466    /// If the value is disabled, you cannot access your instance metadata.
467    #[serde(rename(serialize = "HttpEndpoint", deserialize = "httpEndpoint"))]
468    #[serde(skip_serializing_if = "Option::is_none")]
469    pub http_endpoint: Option<String>,
470}
471
472impl InstanceMetadataOptionsResponse {
473    #[cfg(any(test, feature = "test-support"))]
474    /// Create a fixture instance for testing.
475    pub fn fixture() -> Self {
476        Self {
477            http_tokens: Some("test-http_tokens".into()),
478            http_endpoint: Some("test-http_endpoint".into()),
479        }
480    }
481}
482
483/// Describes a network interface.
484///
485/// **AWS API**: `ec2.v1.InstanceNetworkInterface`
486/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//InstanceNetworkInterface>
487///
488/// ## Coverage
489/// 1 of 20 fields included.
490/// Omitted fields:
491/// - `Association` — not selected in manifest
492/// - `Attachment` — not selected in manifest
493/// - `Description` — not selected in manifest
494/// - `Groups` — not selected in manifest
495/// - `Ipv6Addresses` — not selected in manifest
496/// - `MacAddress` — not selected in manifest
497/// - `OwnerId` — not selected in manifest
498/// - `PrivateDnsName` — not selected in manifest
499/// - `PrivateIpAddress` — not selected in manifest
500/// - `PrivateIpAddresses` — not selected in manifest
501/// - `SourceDestCheck` — not selected in manifest
502/// - `Status` — not selected in manifest
503/// - `SubnetId` — not selected in manifest
504/// - `VpcId` — not selected in manifest
505/// - `InterfaceType` — not selected in manifest
506/// - `Ipv4Prefixes` — not selected in manifest
507/// - `Ipv6Prefixes` — not selected in manifest
508/// - `ConnectionTrackingConfiguration` — not selected in manifest
509/// - `Operator` — not selected in manifest
510#[derive(Debug, Clone, Default, Serialize, Deserialize)]
511pub struct InstanceNetworkInterface {
512    /// The ID of the network interface.
513    #[serde(rename(serialize = "NetworkInterfaceId", deserialize = "networkInterfaceId"))]
514    #[serde(skip_serializing_if = "Option::is_none")]
515    pub network_interface_id: Option<String>,
516}
517
518impl InstanceNetworkInterface {
519    #[cfg(any(test, feature = "test-support"))]
520    /// Create a fixture instance for testing.
521    pub fn fixture() -> Self {
522        Self {
523            network_interface_id: Some("test-network_interface_id".into()),
524        }
525    }
526}
527
528/// Describes a security group.
529///
530/// **AWS API**: `ec2.v1.GroupIdentifier`
531/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//GroupIdentifier>
532#[derive(Debug, Clone, Default, Serialize, Deserialize)]
533pub struct GroupIdentifier {
534    /// The ID of the security group.
535    #[serde(rename(serialize = "GroupId", deserialize = "groupId"))]
536    #[serde(skip_serializing_if = "Option::is_none")]
537    pub group_id: Option<String>,
538
539    /// The name of the security group.
540    #[serde(rename(serialize = "GroupName", deserialize = "groupName"))]
541    #[serde(skip_serializing_if = "Option::is_none")]
542    pub group_name: Option<String>,
543}
544
545impl GroupIdentifier {
546    #[cfg(any(test, feature = "test-support"))]
547    /// Create a fixture instance for testing.
548    pub fn fixture() -> Self {
549        Self {
550            group_id: Some("test-group_id".into()),
551            group_name: Some("test-group_name".into()),
552        }
553    }
554}
555
556/// Describes a tag.
557///
558/// **AWS API**: `ec2.v1.Tag`
559/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//Tag>
560#[derive(Debug, Clone, Default, Serialize, Deserialize)]
561pub struct Tag {
562    /// The key of the tag. Constraints: Tag keys are case-sensitive and accept a maximum of 127
563    /// Unicode characters. May not begin with aws:.
564    #[serde(rename(serialize = "Key", deserialize = "key"))]
565    #[serde(skip_serializing_if = "Option::is_none")]
566    pub key: Option<String>,
567
568    /// The value of the tag. Constraints: Tag values are case-sensitive and accept a maximum of
569    /// 256 Unicode characters.
570    #[serde(rename(serialize = "Value", deserialize = "value"))]
571    #[serde(skip_serializing_if = "Option::is_none")]
572    pub value: Option<String>,
573}
574
575impl Tag {
576    #[cfg(any(test, feature = "test-support"))]
577    /// Create a fixture instance for testing.
578    pub fn fixture() -> Self {
579        Self {
580            key: Some("test-key".into()),
581            value: Some("test-value".into()),
582        }
583    }
584}
585
586///
587/// **AWS API**: `ec2.v1.DescribeVolumesResult`
588/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeVolumesResult>
589#[derive(Debug, Clone, Default, Serialize, Deserialize)]
590pub struct DescribeVolumesResponse {
591    /// Information about the volumes.
592    #[serde(rename(serialize = "VolumeSet", deserialize = "volumeSet"))]
593    #[serde(default)]
594    #[serde(skip_serializing_if = "Vec::is_empty")]
595    pub volumes: Vec<Volume>,
596
597    /// The token to include in another request to get the next page of items. This value is
598    /// null when there are no more items to return.
599    #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
600    #[serde(skip_serializing_if = "Option::is_none")]
601    pub next_token: Option<String>,
602}
603
604impl DescribeVolumesResponse {
605    #[cfg(any(test, feature = "test-support"))]
606    /// Create a fixture instance for testing.
607    pub fn fixture() -> Self {
608        Self {
609            volumes: vec![],
610            next_token: Some("test-next_token".into()),
611        }
612    }
613}
614
615/// Describes a volume.
616///
617/// **AWS API**: `ec2.v1.Volume`
618/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//Volume>
619///
620/// ## Coverage
621/// 12 of 21 fields included.
622/// Omitted fields:
623/// - `AvailabilityZoneId` — not selected in manifest
624/// - `OutpostArn` — not selected in manifest
625/// - `SourceVolumeId` — not selected in manifest
626/// - `FastRestored` — not selected in manifest
627/// - `MultiAttachEnabled` — not selected in manifest
628/// - `SseType` — not selected in manifest
629/// - `Operator` — not selected in manifest
630/// - `VolumeInitializationRate` — not selected in manifest
631/// - `SnapshotId` — not selected in manifest
632#[derive(Debug, Clone, Default, Serialize, Deserialize)]
633pub struct Volume {
634    /// The ID of the volume.
635    #[serde(rename(serialize = "VolumeId", deserialize = "volumeId"))]
636    #[serde(skip_serializing_if = "Option::is_none")]
637    pub volume_id: Option<String>,
638
639    /// The Availability Zone for the volume.
640    #[serde(rename(serialize = "AvailabilityZone", deserialize = "availabilityZone"))]
641    #[serde(skip_serializing_if = "Option::is_none")]
642    pub availability_zone: Option<String>,
643
644    /// The size of the volume, in GiBs.
645    #[serde(rename(serialize = "Size", deserialize = "size"))]
646    #[serde(skip_serializing_if = "Option::is_none")]
647    pub size: Option<i32>,
648
649    /// The volume state.
650    #[serde(rename(serialize = "Status", deserialize = "status"))]
651    #[serde(skip_serializing_if = "Option::is_none")]
652    pub state: Option<String>,
653
654    /// The volume type.
655    #[serde(rename(serialize = "VolumeType", deserialize = "volumeType"))]
656    #[serde(skip_serializing_if = "Option::is_none")]
657    pub volume_type: Option<String>,
658
659    /// Indicates whether the volume is encrypted.
660    #[serde(rename(serialize = "Encrypted", deserialize = "encrypted"))]
661    #[serde(skip_serializing_if = "Option::is_none")]
662    pub encrypted: Option<bool>,
663
664    /// The Amazon Resource Name (ARN) of the KMS key that was used to protect the volume
665    /// encryption key for the volume.
666    #[serde(rename(serialize = "KmsKeyId", deserialize = "kmsKeyId"))]
667    #[serde(skip_serializing_if = "Option::is_none")]
668    pub kms_key_id: Option<String>,
669
670    /// The time stamp when volume creation was initiated.
671    #[serde(rename(serialize = "CreateTime", deserialize = "createTime"))]
672    #[serde(skip_serializing_if = "Option::is_none")]
673    pub create_time: Option<String>,
674
675    /// The number of I/O operations per second (IOPS). For gp3, io1, and io2 volumes, this
676    /// represents the number of IOPS that are provisioned for the volume. For gp2 volumes, this
677    /// represents the baseline performance of the volume and the rate at which the volume
678    /// accumulates I/O credits for bursting.
679    #[serde(rename(serialize = "Iops", deserialize = "iops"))]
680    #[serde(skip_serializing_if = "Option::is_none")]
681    pub iops: Option<i32>,
682
683    /// The throughput that the volume supports, in MiB/s.
684    #[serde(rename(serialize = "Throughput", deserialize = "throughput"))]
685    #[serde(skip_serializing_if = "Option::is_none")]
686    pub throughput: Option<i32>,
687
688    /// This parameter is not returned by CreateVolume. Information about the volume
689    /// attachments.
690    #[serde(rename(serialize = "AttachmentSet", deserialize = "attachmentSet"))]
691    #[serde(default)]
692    #[serde(skip_serializing_if = "Vec::is_empty")]
693    pub attachments: Vec<VolumeAttachment>,
694
695    /// Any tags assigned to the volume.
696    #[serde(rename(serialize = "TagSet", deserialize = "tagSet"))]
697    #[serde(default)]
698    #[serde(skip_serializing_if = "Vec::is_empty")]
699    pub tags: Vec<Tag>,
700}
701
702impl Volume {
703    #[cfg(any(test, feature = "test-support"))]
704    /// Create a fixture instance for testing.
705    pub fn fixture() -> Self {
706        Self {
707            volume_id: Some("test-volume_id".into()),
708            availability_zone: Some("test-availability_zone".into()),
709            size: Some(100),
710            state: Some("test-state".into()),
711            volume_type: Some("test-volume_type".into()),
712            encrypted: Some(false),
713            kms_key_id: Some("test-kms_key_id".into()),
714            create_time: Some("test-create_time".into()),
715            iops: Some(100),
716            throughput: Some(100),
717            attachments: vec![],
718            tags: vec![],
719        }
720    }
721}
722
723/// Describes volume attachment details.
724///
725/// **AWS API**: `ec2.v1.VolumeAttachment`
726/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//VolumeAttachment>
727///
728/// ## Coverage
729/// 4 of 9 fields included.
730/// Omitted fields:
731/// - `DeleteOnTermination` — not selected in manifest
732/// - `AssociatedResource` — not selected in manifest
733/// - `InstanceOwningService` — not selected in manifest
734/// - `EbsCardIndex` — not selected in manifest
735/// - `AttachTime` — not selected in manifest
736#[derive(Debug, Clone, Default, Serialize, Deserialize)]
737pub struct VolumeAttachment {
738    /// The ID of the instance. If the volume is attached to an Amazon Web Services-managed
739    /// resource, this parameter returns null.
740    #[serde(rename(serialize = "InstanceId", deserialize = "instanceId"))]
741    #[serde(skip_serializing_if = "Option::is_none")]
742    pub instance_id: Option<String>,
743
744    /// The attachment state of the volume.
745    #[serde(rename(serialize = "Status", deserialize = "status"))]
746    #[serde(skip_serializing_if = "Option::is_none")]
747    pub state: Option<String>,
748
749    /// The device name. If the volume is attached to an Amazon Web Services-managed resource,
750    /// this parameter returns null.
751    #[serde(rename(serialize = "Device", deserialize = "device"))]
752    #[serde(skip_serializing_if = "Option::is_none")]
753    pub device: Option<String>,
754
755    /// The ID of the volume.
756    #[serde(rename(serialize = "VolumeId", deserialize = "volumeId"))]
757    #[serde(skip_serializing_if = "Option::is_none")]
758    pub volume_id: Option<String>,
759}
760
761impl VolumeAttachment {
762    #[cfg(any(test, feature = "test-support"))]
763    /// Create a fixture instance for testing.
764    pub fn fixture() -> Self {
765        Self {
766            instance_id: Some("test-instance_id".into()),
767            state: Some("test-state".into()),
768            device: Some("test-device".into()),
769            volume_id: Some("test-volume_id".into()),
770        }
771    }
772}
773
774///
775/// **AWS API**: `ec2.v1.DescribeSnapshotsResult`
776/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeSnapshotsResult>
777#[derive(Debug, Clone, Default, Serialize, Deserialize)]
778pub struct DescribeSnapshotsResponse {
779    /// Information about the snapshots.
780    #[serde(rename(serialize = "SnapshotSet", deserialize = "snapshotSet"))]
781    #[serde(default)]
782    #[serde(skip_serializing_if = "Vec::is_empty")]
783    pub snapshots: Vec<Snapshot>,
784
785    /// The token to include in another request to get the next page of items. This value is
786    /// null when there are no more items to return.
787    #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
788    #[serde(skip_serializing_if = "Option::is_none")]
789    pub next_token: Option<String>,
790}
791
792impl DescribeSnapshotsResponse {
793    #[cfg(any(test, feature = "test-support"))]
794    /// Create a fixture instance for testing.
795    pub fn fixture() -> Self {
796        Self {
797            snapshots: vec![],
798            next_token: Some("test-next_token".into()),
799        }
800    }
801}
802
803/// Describes a snapshot.
804///
805/// **AWS API**: `ec2.v1.Snapshot`
806/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//Snapshot>
807///
808/// ## Coverage
809/// 8 of 23 fields included.
810/// Omitted fields:
811/// - `OwnerAlias` — not selected in manifest
812/// - `OutpostArn` — not selected in manifest
813/// - `StorageTier` — not selected in manifest
814/// - `RestoreExpiryTime` — not selected in manifest
815/// - `SseType` — not selected in manifest
816/// - `AvailabilityZone` — not selected in manifest
817/// - `TransferType` — not selected in manifest
818/// - `CompletionDurationMinutes` — not selected in manifest
819/// - `CompletionTime` — not selected in manifest
820/// - `FullSnapshotSizeInBytes` — not selected in manifest
821/// - `StateMessage` — not selected in manifest
822/// - `Progress` — not selected in manifest
823/// - `OwnerId` — not selected in manifest
824/// - `KmsKeyId` — not selected in manifest
825/// - `DataEncryptionKeyId` — not selected in manifest
826#[derive(Debug, Clone, Default, Serialize, Deserialize)]
827pub struct Snapshot {
828    /// The ID of the snapshot. Each snapshot receives a unique identifier when it is created.
829    #[serde(rename(serialize = "SnapshotId", deserialize = "snapshotId"))]
830    #[serde(skip_serializing_if = "Option::is_none")]
831    pub snapshot_id: Option<String>,
832
833    /// The ID of the volume that was used to create the snapshot. Snapshots created by a copy
834    /// snapshot operation have an arbitrary volume ID that you should not use for any purpose.
835    #[serde(rename(serialize = "VolumeId", deserialize = "volumeId"))]
836    #[serde(skip_serializing_if = "Option::is_none")]
837    pub volume_id: Option<String>,
838
839    /// The size of the volume, in GiB.
840    #[serde(rename(serialize = "VolumeSize", deserialize = "volumeSize"))]
841    #[serde(skip_serializing_if = "Option::is_none")]
842    pub volume_size: Option<i32>,
843
844    /// The snapshot state.
845    #[serde(rename(serialize = "Status", deserialize = "status"))]
846    #[serde(skip_serializing_if = "Option::is_none")]
847    pub state: Option<String>,
848
849    /// The time stamp when the snapshot was initiated.
850    #[serde(rename(serialize = "StartTime", deserialize = "startTime"))]
851    #[serde(skip_serializing_if = "Option::is_none")]
852    pub start_time: Option<String>,
853
854    /// The description for the snapshot.
855    #[serde(rename(serialize = "Description", deserialize = "description"))]
856    #[serde(skip_serializing_if = "Option::is_none")]
857    pub description: Option<String>,
858
859    /// Indicates whether the snapshot is encrypted.
860    #[serde(rename(serialize = "Encrypted", deserialize = "encrypted"))]
861    #[serde(skip_serializing_if = "Option::is_none")]
862    pub encrypted: Option<bool>,
863
864    /// Any tags assigned to the snapshot.
865    #[serde(rename(serialize = "TagSet", deserialize = "tagSet"))]
866    #[serde(default)]
867    #[serde(skip_serializing_if = "Vec::is_empty")]
868    pub tags: Vec<Tag>,
869}
870
871impl Snapshot {
872    #[cfg(any(test, feature = "test-support"))]
873    /// Create a fixture instance for testing.
874    pub fn fixture() -> Self {
875        Self {
876            snapshot_id: Some("test-snapshot_id".into()),
877            volume_id: Some("test-volume_id".into()),
878            volume_size: Some(100),
879            state: Some("test-state".into()),
880            start_time: Some("test-start_time".into()),
881            description: Some("test-description".into()),
882            encrypted: Some(false),
883            tags: vec![],
884        }
885    }
886}
887
888///
889/// **AWS API**: `ec2.v1.DescribeSnapshotAttributeResult`
890/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeSnapshotAttributeResult>
891///
892/// ## Coverage
893/// 2 of 3 fields included.
894/// Omitted fields:
895/// - `ProductCodes` — not selected in manifest
896#[derive(Debug, Clone, Default, Serialize, Deserialize)]
897pub struct DescribeSnapshotAttributeResponse {
898    /// The ID of the EBS snapshot.
899    #[serde(rename(serialize = "SnapshotId", deserialize = "snapshotId"))]
900    #[serde(skip_serializing_if = "Option::is_none")]
901    pub snapshot_id: Option<String>,
902
903    /// The users and groups that have the permissions for creating volumes from the snapshot.
904    #[serde(rename(
905        serialize = "CreateVolumePermission",
906        deserialize = "createVolumePermission"
907    ))]
908    #[serde(default)]
909    #[serde(skip_serializing_if = "Vec::is_empty")]
910    pub create_volume_permissions: Vec<CreateVolumePermission>,
911}
912
913impl DescribeSnapshotAttributeResponse {
914    #[cfg(any(test, feature = "test-support"))]
915    /// Create a fixture instance for testing.
916    pub fn fixture() -> Self {
917        Self {
918            snapshot_id: Some("test-snapshot_id".into()),
919            create_volume_permissions: vec![],
920        }
921    }
922}
923
924/// Describes the user or group to be added or removed from the list of create volume
925/// permissions for a volume.
926///
927/// **AWS API**: `ec2.v1.CreateVolumePermission`
928/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//CreateVolumePermission>
929#[derive(Debug, Clone, Default, Serialize, Deserialize)]
930pub struct CreateVolumePermission {
931    /// The group to be added or removed. The possible value is all.
932    #[serde(rename(serialize = "Group", deserialize = "group"))]
933    #[serde(skip_serializing_if = "Option::is_none")]
934    pub group: Option<String>,
935
936    /// The ID of the Amazon Web Services account to be added or removed.
937    #[serde(rename(serialize = "UserId", deserialize = "userId"))]
938    #[serde(skip_serializing_if = "Option::is_none")]
939    pub user_id: Option<String>,
940}
941
942impl CreateVolumePermission {
943    #[cfg(any(test, feature = "test-support"))]
944    /// Create a fixture instance for testing.
945    pub fn fixture() -> Self {
946        Self {
947            group: Some("test-group".into()),
948            user_id: Some("test-user_id".into()),
949        }
950    }
951}
952
953///
954/// **AWS API**: `ec2.v1.DescribeImagesResult`
955/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeImagesResult>
956///
957/// ## Coverage
958/// 1 of 2 fields included.
959/// Omitted fields:
960/// - `NextToken` — not selected in manifest
961#[derive(Debug, Clone, Default, Serialize, Deserialize)]
962pub struct DescribeImagesResponse {
963    /// Information about the images.
964    #[serde(rename(serialize = "ImagesSet", deserialize = "imagesSet"))]
965    #[serde(default)]
966    #[serde(skip_serializing_if = "Vec::is_empty")]
967    pub images: Vec<Image>,
968}
969
970impl DescribeImagesResponse {
971    #[cfg(any(test, feature = "test-support"))]
972    /// Create a fixture instance for testing.
973    pub fn fixture() -> Self {
974        Self { images: vec![] }
975    }
976}
977
978/// Describes an image.
979///
980/// **AWS API**: `ec2.v1.Image`
981/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//Image>
982///
983/// ## Coverage
984/// 10 of 37 fields included.
985/// Omitted fields:
986/// - `UsageOperation` — not selected in manifest
987/// - `EnaSupport` — not selected in manifest
988/// - `Hypervisor` — not selected in manifest
989/// - `ImageOwnerAlias` — not selected in manifest
990/// - `RootDeviceName` — not selected in manifest
991/// - `RootDeviceType` — not selected in manifest
992/// - `SriovNetSupport` — not selected in manifest
993/// - `StateReason` — not selected in manifest
994/// - `VirtualizationType` — not selected in manifest
995/// - `BootMode` — not selected in manifest
996/// - `TpmSupport` — not selected in manifest
997/// - `DeprecationTime` — not selected in manifest
998/// - `ImdsSupport` — not selected in manifest
999/// - `SourceInstanceId` — not selected in manifest
1000/// - `DeregistrationProtection` — not selected in manifest
1001/// - `LastLaunchedTime` — not selected in manifest
1002/// - `ImageAllowed` — not selected in manifest
1003/// - `SourceImageId` — not selected in manifest
1004/// - `SourceImageRegion` — not selected in manifest
1005/// - `FreeTierEligible` — not selected in manifest
1006/// - `ImageLocation` — not selected in manifest
1007/// - `OwnerId` — not selected in manifest
1008/// - `ProductCodes` — not selected in manifest
1009/// - `Architecture` — not selected in manifest
1010/// - `KernelId` — not selected in manifest
1011/// - `RamdiskId` — not selected in manifest
1012/// - `Platform` — not selected in manifest
1013#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1014pub struct Image {
1015    /// The ID of the AMI.
1016    #[serde(rename(serialize = "ImageId", deserialize = "imageId"))]
1017    #[serde(skip_serializing_if = "Option::is_none")]
1018    pub image_id: Option<String>,
1019
1020    /// The name of the AMI that was provided during image creation.
1021    #[serde(rename(serialize = "Name", deserialize = "name"))]
1022    #[serde(skip_serializing_if = "Option::is_none")]
1023    pub name: Option<String>,
1024
1025    /// The current state of the AMI. If the state is available, the image is successfully
1026    /// registered and can be used to launch an instance.
1027    #[serde(rename(serialize = "ImageState", deserialize = "imageState"))]
1028    #[serde(skip_serializing_if = "Option::is_none")]
1029    pub state: Option<String>,
1030
1031    /// Indicates whether the image has public launch permissions. The value is true if this
1032    /// image has public launch permissions or false if it has only implicit and explicit launch
1033    /// permissions.
1034    #[serde(rename(serialize = "IsPublic", deserialize = "isPublic"))]
1035    #[serde(skip_serializing_if = "Option::is_none")]
1036    pub public: Option<bool>,
1037
1038    /// The type of image.
1039    #[serde(rename(serialize = "ImageType", deserialize = "imageType"))]
1040    #[serde(skip_serializing_if = "Option::is_none")]
1041    pub image_type: Option<String>,
1042
1043    /// The platform details associated with the billing code of the AMI. For more information,
1044    /// see Understand AMI billing information in the Amazon EC2 User Guide.
1045    #[serde(rename(serialize = "PlatformDetails", deserialize = "platformDetails"))]
1046    #[serde(skip_serializing_if = "Option::is_none")]
1047    pub platform_details: Option<String>,
1048
1049    /// The date and time the image was created.
1050    #[serde(rename(serialize = "CreationDate", deserialize = "creationDate"))]
1051    #[serde(skip_serializing_if = "Option::is_none")]
1052    pub creation_date: Option<String>,
1053
1054    /// The description of the AMI that was provided during image creation.
1055    #[serde(rename(serialize = "Description", deserialize = "description"))]
1056    #[serde(skip_serializing_if = "Option::is_none")]
1057    pub description: Option<String>,
1058
1059    /// Any block device mapping entries.
1060    #[serde(rename(serialize = "BlockDeviceMapping", deserialize = "blockDeviceMapping"))]
1061    #[serde(default)]
1062    #[serde(skip_serializing_if = "Vec::is_empty")]
1063    pub block_device_mappings: Vec<BlockDeviceMapping>,
1064
1065    /// Any tags assigned to the image.
1066    #[serde(rename(serialize = "TagSet", deserialize = "tagSet"))]
1067    #[serde(default)]
1068    #[serde(skip_serializing_if = "Vec::is_empty")]
1069    pub tags: Vec<Tag>,
1070}
1071
1072impl Image {
1073    #[cfg(any(test, feature = "test-support"))]
1074    /// Create a fixture instance for testing.
1075    pub fn fixture() -> Self {
1076        Self {
1077            image_id: Some("test-image_id".into()),
1078            name: Some("test-name".into()),
1079            state: Some("test-state".into()),
1080            public: Some(false),
1081            image_type: Some("test-image_type".into()),
1082            platform_details: Some("test-platform_details".into()),
1083            creation_date: Some("test-creation_date".into()),
1084            description: Some("test-description".into()),
1085            block_device_mappings: vec![],
1086            tags: vec![],
1087        }
1088    }
1089}
1090
1091/// Describes a block device mapping, which defines the EBS volumes and instance store volumes
1092/// to attach to an instance at launch.
1093///
1094/// **AWS API**: `ec2.v1.BlockDeviceMapping`
1095/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//BlockDeviceMapping>
1096///
1097/// ## Coverage
1098/// 2 of 4 fields included.
1099/// Omitted fields:
1100/// - `NoDevice` — not selected in manifest
1101/// - `VirtualName` — not selected in manifest
1102#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1103pub struct BlockDeviceMapping {
1104    /// The device name. For available device names, see Device names for volumes.
1105    #[serde(rename(serialize = "DeviceName", deserialize = "deviceName"))]
1106    #[serde(skip_serializing_if = "Option::is_none")]
1107    pub device_name: Option<String>,
1108
1109    /// Parameters used to automatically set up EBS volumes when the instance is launched.
1110    #[serde(rename(serialize = "Ebs", deserialize = "ebs"))]
1111    #[serde(skip_serializing_if = "Option::is_none")]
1112    pub ebs: Option<EbsBlockDevice>,
1113}
1114
1115impl BlockDeviceMapping {
1116    #[cfg(any(test, feature = "test-support"))]
1117    /// Create a fixture instance for testing.
1118    pub fn fixture() -> Self {
1119        Self {
1120            device_name: Some("test-device_name".into()),
1121            ebs: Some(EbsBlockDevice::fixture()),
1122        }
1123    }
1124}
1125
1126/// Describes a block device for an EBS volume.
1127///
1128/// **AWS API**: `ec2.v1.EbsBlockDevice`
1129/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//EbsBlockDevice>
1130///
1131/// ## Coverage
1132/// 4 of 13 fields included.
1133/// Omitted fields:
1134/// - `DeleteOnTermination` — not selected in manifest
1135/// - `Iops` — not selected in manifest
1136/// - `KmsKeyId` — not selected in manifest
1137/// - `Throughput` — not selected in manifest
1138/// - `OutpostArn` — not selected in manifest
1139/// - `AvailabilityZone` — not selected in manifest
1140/// - `VolumeInitializationRate` — not selected in manifest
1141/// - `AvailabilityZoneId` — not selected in manifest
1142/// - `EbsCardIndex` — not selected in manifest
1143#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1144pub struct EbsBlockDevice {
1145    /// The ID of the snapshot.
1146    #[serde(rename(serialize = "SnapshotId", deserialize = "snapshotId"))]
1147    #[serde(skip_serializing_if = "Option::is_none")]
1148    pub snapshot_id: Option<String>,
1149
1150    /// The size of the volume, in GiBs. You must specify either a snapshot ID or a volume size.
1151    /// If you specify a snapshot, the default is the snapshot size. You can specify a volume
1152    /// size that is equal to or larger than the snapshot size. The following are the supported
1153    /// sizes for each volume type: gp2: 1 - 16,384 GiB gp3: 1 - 65,536 GiB io1: 4 - 16,384 GiB
1154    /// io2: 4 - 65,536 GiB st1 and sc1: 125 - 16,384 GiB standard: 1 - 1024 GiB
1155    #[serde(rename(serialize = "VolumeSize", deserialize = "volumeSize"))]
1156    #[serde(skip_serializing_if = "Option::is_none")]
1157    pub volume_size: Option<i32>,
1158
1159    /// The volume type. For more information, see Amazon EBS volume types in the Amazon EBS
1160    /// User Guide.
1161    #[serde(rename(serialize = "VolumeType", deserialize = "volumeType"))]
1162    #[serde(skip_serializing_if = "Option::is_none")]
1163    pub volume_type: Option<String>,
1164
1165    /// Indicates whether the encryption state of an EBS volume is changed while being restored
1166    /// from a backing snapshot. The effect of setting the encryption state to true depends on
1167    /// the volume origin (new or from a snapshot), starting encryption state, ownership, and
1168    /// whether encryption by default is enabled. For more information, see Amazon EBS
1169    /// encryption in the Amazon EBS User Guide. In no case can you remove encryption from an
1170    /// encrypted volume. Encrypted volumes can only be attached to instances that support
1171    /// Amazon EBS encryption. For more information, see Supported instance types. This
1172    /// parameter is not returned by DescribeImageAttribute. For CreateImage and RegisterImage,
1173    /// whether you can include this parameter, and the allowed values differ depending on the
1174    /// type of block device mapping you are creating. If you are creating a block device
1175    /// mapping for a new (empty) volume, you can include this parameter, and specify either
1176    /// true for an encrypted volume, or false for an unencrypted volume. If you omit this
1177    /// parameter, it defaults to false (unencrypted). If you are creating a block device
1178    /// mapping from an existing encrypted or unencrypted snapshot, you must omit this
1179    /// parameter. If you include this parameter, the request will fail, regardless of the value
1180    /// that you specify. If you are creating a block device mapping from an existing
1181    /// unencrypted volume, you can include this parameter, but you must specify false. If you
1182    /// specify true, the request will fail. In this case, we recommend that you omit the
1183    /// parameter. If you are creating a block device mapping from an existing encrypted volume,
1184    /// you can include this parameter, and specify either true or false. However, if you
1185    /// specify false, the parameter is ignored and the block device mapping is always
1186    /// encrypted. In this case, we recommend that you omit the parameter.
1187    #[serde(rename(serialize = "Encrypted", deserialize = "encrypted"))]
1188    #[serde(skip_serializing_if = "Option::is_none")]
1189    pub encrypted: Option<bool>,
1190}
1191
1192impl EbsBlockDevice {
1193    #[cfg(any(test, feature = "test-support"))]
1194    /// Create a fixture instance for testing.
1195    pub fn fixture() -> Self {
1196        Self {
1197            snapshot_id: Some("test-snapshot_id".into()),
1198            volume_size: Some(100),
1199            volume_type: Some("test-volume_type".into()),
1200            encrypted: Some(false),
1201        }
1202    }
1203}
1204
1205///
1206/// **AWS API**: `ec2.v1.DescribeSecurityGroupsResult`
1207/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeSecurityGroupsResult>
1208#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1209pub struct DescribeSecurityGroupsResponse {
1210    /// Information about the security groups.
1211    #[serde(rename(serialize = "SecurityGroupInfo", deserialize = "securityGroupInfo"))]
1212    #[serde(default)]
1213    #[serde(skip_serializing_if = "Vec::is_empty")]
1214    pub security_groups: Vec<SecurityGroup>,
1215
1216    /// The token to include in another request to get the next page of items. This value is
1217    /// null when there are no more items to return.
1218    #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
1219    #[serde(skip_serializing_if = "Option::is_none")]
1220    pub next_token: Option<String>,
1221}
1222
1223impl DescribeSecurityGroupsResponse {
1224    #[cfg(any(test, feature = "test-support"))]
1225    /// Create a fixture instance for testing.
1226    pub fn fixture() -> Self {
1227        Self {
1228            security_groups: vec![],
1229            next_token: Some("test-next_token".into()),
1230        }
1231    }
1232}
1233
1234/// Describes a security group.
1235///
1236/// **AWS API**: `ec2.v1.SecurityGroup`
1237/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//SecurityGroup>
1238///
1239/// ## Coverage
1240/// 7 of 9 fields included.
1241/// Omitted fields:
1242/// - `SecurityGroupArn` — not selected in manifest
1243/// - `OwnerId` — not selected in manifest
1244#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1245pub struct SecurityGroup {
1246    /// The ID of the security group.
1247    #[serde(rename(serialize = "GroupId", deserialize = "groupId"))]
1248    #[serde(skip_serializing_if = "Option::is_none")]
1249    pub group_id: Option<String>,
1250
1251    /// The name of the security group.
1252    #[serde(rename(serialize = "GroupName", deserialize = "groupName"))]
1253    #[serde(skip_serializing_if = "Option::is_none")]
1254    pub group_name: Option<String>,
1255
1256    /// A description of the security group.
1257    #[serde(rename(serialize = "GroupDescription", deserialize = "groupDescription"))]
1258    #[serde(skip_serializing_if = "Option::is_none")]
1259    pub description: Option<String>,
1260
1261    /// The ID of the VPC for the security group.
1262    #[serde(rename(serialize = "VpcId", deserialize = "vpcId"))]
1263    #[serde(skip_serializing_if = "Option::is_none")]
1264    pub vpc_id: Option<String>,
1265
1266    /// The inbound rules associated with the security group.
1267    #[serde(rename(serialize = "IpPermissions", deserialize = "ipPermissions"))]
1268    #[serde(default)]
1269    #[serde(skip_serializing_if = "Vec::is_empty")]
1270    pub ip_permissions: Vec<IpPermission>,
1271
1272    /// The outbound rules associated with the security group.
1273    #[serde(rename(serialize = "IpPermissionsEgress", deserialize = "ipPermissionsEgress"))]
1274    #[serde(default)]
1275    #[serde(skip_serializing_if = "Vec::is_empty")]
1276    pub ip_permissions_egress: Vec<IpPermission>,
1277
1278    /// Any tags assigned to the security group.
1279    #[serde(rename(serialize = "TagSet", deserialize = "tagSet"))]
1280    #[serde(default)]
1281    #[serde(skip_serializing_if = "Vec::is_empty")]
1282    pub tags: Vec<Tag>,
1283}
1284
1285impl SecurityGroup {
1286    #[cfg(any(test, feature = "test-support"))]
1287    /// Create a fixture instance for testing.
1288    pub fn fixture() -> Self {
1289        Self {
1290            group_id: Some("test-group_id".into()),
1291            group_name: Some("test-group_name".into()),
1292            description: Some("test-description".into()),
1293            vpc_id: Some("test-vpc_id".into()),
1294            ip_permissions: vec![],
1295            ip_permissions_egress: vec![],
1296            tags: vec![],
1297        }
1298    }
1299}
1300
1301/// Describes the permissions for a security group rule.
1302///
1303/// **AWS API**: `ec2.v1.IpPermission`
1304/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//IpPermission>
1305///
1306/// ## Coverage
1307/// 5 of 7 fields included.
1308/// Omitted fields:
1309/// - `UserIdGroupPairs` — not selected in manifest
1310/// - `PrefixListIds` — not selected in manifest
1311#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1312pub struct IpPermission {
1313    /// The IP protocol name (tcp, udp, icmp, icmpv6) or number (see Protocol Numbers). Use -1
1314    /// to specify all protocols. When authorizing security group rules, specifying -1 or a
1315    /// protocol number other than tcp, udp, icmp, or icmpv6 allows traffic on all ports,
1316    /// regardless of any port range you specify. For tcp, udp, and icmp, you must specify a
1317    /// port range. For icmpv6, the port range is optional; if you omit the port range, traffic
1318    /// for all types and codes is allowed.
1319    #[serde(rename(serialize = "IpProtocol", deserialize = "ipProtocol"))]
1320    #[serde(skip_serializing_if = "Option::is_none")]
1321    pub ip_protocol: Option<String>,
1322
1323    /// If the protocol is TCP or UDP, this is the start of the port range. If the protocol is
1324    /// ICMP or ICMPv6, this is the ICMP type or -1 (all ICMP types).
1325    #[serde(rename(serialize = "FromPort", deserialize = "fromPort"))]
1326    #[serde(skip_serializing_if = "Option::is_none")]
1327    pub from_port: Option<i32>,
1328
1329    /// If the protocol is TCP or UDP, this is the end of the port range. If the protocol is
1330    /// ICMP or ICMPv6, this is the ICMP code or -1 (all ICMP codes). If the start port is -1
1331    /// (all ICMP types), then the end port must be -1 (all ICMP codes).
1332    #[serde(rename(serialize = "ToPort", deserialize = "toPort"))]
1333    #[serde(skip_serializing_if = "Option::is_none")]
1334    pub to_port: Option<i32>,
1335
1336    /// The IPv4 address ranges.
1337    #[serde(rename(serialize = "IpRanges", deserialize = "ipRanges"))]
1338    #[serde(default)]
1339    #[serde(skip_serializing_if = "Vec::is_empty")]
1340    pub ip_ranges: Vec<IpRange>,
1341
1342    /// The IPv6 address ranges.
1343    #[serde(rename(serialize = "Ipv6Ranges", deserialize = "ipv6Ranges"))]
1344    #[serde(default)]
1345    #[serde(skip_serializing_if = "Vec::is_empty")]
1346    pub ipv6_ranges: Vec<Ipv6Range>,
1347}
1348
1349impl IpPermission {
1350    #[cfg(any(test, feature = "test-support"))]
1351    /// Create a fixture instance for testing.
1352    pub fn fixture() -> Self {
1353        Self {
1354            ip_protocol: Some("test-ip_protocol".into()),
1355            from_port: Some(100),
1356            to_port: Some(100),
1357            ip_ranges: vec![],
1358            ipv6_ranges: vec![],
1359        }
1360    }
1361}
1362
1363/// Describes an IPv4 address range.
1364///
1365/// **AWS API**: `ec2.v1.IpRange`
1366/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//IpRange>
1367#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1368pub struct IpRange {
1369    /// The IPv4 address range. You can either specify a CIDR block or a source security group,
1370    /// not both. To specify a single IPv4 address, use the /32 prefix length. Amazon Web
1371    /// Services canonicalizes IPv4 and IPv6 CIDRs. For example, if you specify 100.68.0.18/18
1372    /// for the CIDR block, Amazon Web Services canonicalizes the CIDR block to 100.68.0.0/18.
1373    /// Any subsequent DescribeSecurityGroups and DescribeSecurityGroupRules calls will return
1374    /// the canonicalized form of the CIDR block. Additionally, if you attempt to add another
1375    /// rule with the non-canonical form of the CIDR (such as 100.68.0.18/18) and there is
1376    /// already a rule for the canonicalized form of the CIDR block (such as 100.68.0.0/18), the
1377    /// API throws an duplicate rule error.
1378    #[serde(rename(serialize = "CidrIp", deserialize = "cidrIp"))]
1379    #[serde(skip_serializing_if = "Option::is_none")]
1380    pub cidr_ip: Option<String>,
1381
1382    /// A description for the security group rule that references this IPv4 address range.
1383    /// Constraints: Up to 255 characters in length. Allowed characters are a-z, A-Z, 0-9,
1384    /// spaces, and ._-:/()#,@[]+=&amp;;{}!$*
1385    #[serde(rename(serialize = "Description", deserialize = "description"))]
1386    #[serde(skip_serializing_if = "Option::is_none")]
1387    pub description: Option<String>,
1388}
1389
1390impl IpRange {
1391    #[cfg(any(test, feature = "test-support"))]
1392    /// Create a fixture instance for testing.
1393    pub fn fixture() -> Self {
1394        Self {
1395            cidr_ip: Some("test-cidr_ip".into()),
1396            description: Some("test-description".into()),
1397        }
1398    }
1399}
1400
1401/// Describes an IPv6 address range.
1402///
1403/// **AWS API**: `ec2.v1.Ipv6Range`
1404/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//Ipv6Range>
1405#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1406pub struct Ipv6Range {
1407    /// The IPv6 address range. You can either specify a CIDR block or a source security group,
1408    /// not both. To specify a single IPv6 address, use the /128 prefix length. Amazon Web
1409    /// Services canonicalizes IPv4 and IPv6 CIDRs. For example, if you specify 100.68.0.18/18
1410    /// for the CIDR block, Amazon Web Services canonicalizes the CIDR block to 100.68.0.0/18.
1411    /// Any subsequent DescribeSecurityGroups and DescribeSecurityGroupRules calls will return
1412    /// the canonicalized form of the CIDR block. Additionally, if you attempt to add another
1413    /// rule with the non-canonical form of the CIDR (such as 100.68.0.18/18) and there is
1414    /// already a rule for the canonicalized form of the CIDR block (such as 100.68.0.0/18), the
1415    /// API throws an duplicate rule error.
1416    #[serde(rename(serialize = "CidrIpv6", deserialize = "cidrIpv6"))]
1417    #[serde(skip_serializing_if = "Option::is_none")]
1418    pub cidr_ipv6: Option<String>,
1419
1420    /// A description for the security group rule that references this IPv6 address range.
1421    /// Constraints: Up to 255 characters in length. Allowed characters are a-z, A-Z, 0-9,
1422    /// spaces, and ._-:/()#,@[]+=&amp;;{}!$*
1423    #[serde(rename(serialize = "Description", deserialize = "description"))]
1424    #[serde(skip_serializing_if = "Option::is_none")]
1425    pub description: Option<String>,
1426}
1427
1428impl Ipv6Range {
1429    #[cfg(any(test, feature = "test-support"))]
1430    /// Create a fixture instance for testing.
1431    pub fn fixture() -> Self {
1432        Self {
1433            cidr_ipv6: Some("test-cidr_ipv6".into()),
1434            description: Some("test-description".into()),
1435        }
1436    }
1437}
1438
1439///
1440/// **AWS API**: `ec2.v1.DescribeAddressesResult`
1441/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeAddressesResult>
1442#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1443pub struct DescribeAddressesResponse {
1444    /// Information about the Elastic IP addresses.
1445    #[serde(rename(serialize = "AddressesSet", deserialize = "addressesSet"))]
1446    #[serde(default)]
1447    #[serde(skip_serializing_if = "Vec::is_empty")]
1448    pub addresses: Vec<Address>,
1449}
1450
1451impl DescribeAddressesResponse {
1452    #[cfg(any(test, feature = "test-support"))]
1453    /// Create a fixture instance for testing.
1454    pub fn fixture() -> Self {
1455        Self { addresses: vec![] }
1456    }
1457}
1458
1459/// Describes an Elastic IP address, or a carrier IP address.
1460///
1461/// **AWS API**: `ec2.v1.Address`
1462/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//Address>
1463///
1464/// ## Coverage
1465/// 6 of 16 fields included.
1466/// Omitted fields:
1467/// - `NetworkInterfaceOwnerId` — not selected in manifest
1468/// - `PrivateIpAddress` — not selected in manifest
1469/// - `Tags` — not selected in manifest
1470/// - `PublicIpv4Pool` — not selected in manifest
1471/// - `NetworkBorderGroup` — not selected in manifest
1472/// - `CustomerOwnedIp` — not selected in manifest
1473/// - `CustomerOwnedIpv4Pool` — not selected in manifest
1474/// - `CarrierIp` — not selected in manifest
1475/// - `SubnetId` — not selected in manifest
1476/// - `ServiceManaged` — not selected in manifest
1477#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1478pub struct Address {
1479    /// The ID representing the allocation of the address.
1480    #[serde(rename(serialize = "AllocationId", deserialize = "allocationId"))]
1481    #[serde(skip_serializing_if = "Option::is_none")]
1482    pub allocation_id: Option<String>,
1483
1484    /// The Elastic IP address.
1485    #[serde(rename(serialize = "PublicIp", deserialize = "publicIp"))]
1486    #[serde(skip_serializing_if = "Option::is_none")]
1487    pub public_ip: Option<String>,
1488
1489    /// The ID of the instance that the address is associated with (if any).
1490    #[serde(rename(serialize = "InstanceId", deserialize = "instanceId"))]
1491    #[serde(skip_serializing_if = "Option::is_none")]
1492    pub instance_id: Option<String>,
1493
1494    /// The ID representing the association of the address with an instance.
1495    #[serde(rename(serialize = "AssociationId", deserialize = "associationId"))]
1496    #[serde(skip_serializing_if = "Option::is_none")]
1497    pub association_id: Option<String>,
1498
1499    /// The ID of the network interface.
1500    #[serde(rename(serialize = "NetworkInterfaceId", deserialize = "networkInterfaceId"))]
1501    #[serde(skip_serializing_if = "Option::is_none")]
1502    pub network_interface_id: Option<String>,
1503
1504    /// The network (vpc).
1505    #[serde(rename(serialize = "Domain", deserialize = "domain"))]
1506    #[serde(skip_serializing_if = "Option::is_none")]
1507    pub domain: Option<String>,
1508}
1509
1510impl Address {
1511    #[cfg(any(test, feature = "test-support"))]
1512    /// Create a fixture instance for testing.
1513    pub fn fixture() -> Self {
1514        Self {
1515            allocation_id: Some("test-allocation_id".into()),
1516            public_ip: Some("test-public_ip".into()),
1517            instance_id: Some("test-instance_id".into()),
1518            association_id: Some("test-association_id".into()),
1519            network_interface_id: Some("test-network_interface_id".into()),
1520            domain: Some("test-domain".into()),
1521        }
1522    }
1523}
1524
1525///
1526/// **AWS API**: `ec2.v1.DescribeNatGatewaysResult`
1527/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeNatGatewaysResult>
1528#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1529pub struct DescribeNatGatewaysResponse {
1530    /// Information about the NAT gateways.
1531    #[serde(rename(serialize = "NatGatewaySet", deserialize = "natGatewaySet"))]
1532    #[serde(default)]
1533    #[serde(skip_serializing_if = "Vec::is_empty")]
1534    pub nat_gateways: Vec<NatGateway>,
1535
1536    /// The token to include in another request to get the next page of items. This value is
1537    /// null when there are no more items to return.
1538    #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
1539    #[serde(skip_serializing_if = "Option::is_none")]
1540    pub next_token: Option<String>,
1541}
1542
1543impl DescribeNatGatewaysResponse {
1544    #[cfg(any(test, feature = "test-support"))]
1545    /// Create a fixture instance for testing.
1546    pub fn fixture() -> Self {
1547        Self {
1548            nat_gateways: vec![],
1549            next_token: Some("test-next_token".into()),
1550        }
1551    }
1552}
1553
1554/// Describes a NAT gateway.
1555///
1556/// **AWS API**: `ec2.v1.NatGateway`
1557/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//NatGateway>
1558///
1559/// ## Coverage
1560/// 6 of 17 fields included.
1561/// Omitted fields:
1562/// - `DeleteTime` — not selected in manifest
1563/// - `FailureCode` — not selected in manifest
1564/// - `FailureMessage` — not selected in manifest
1565/// - `ProvisionedBandwidth` — not selected in manifest
1566/// - `Tags` — not selected in manifest
1567/// - `ConnectivityType` — not selected in manifest
1568/// - `AvailabilityMode` — not selected in manifest
1569/// - `AutoScalingIps` — not selected in manifest
1570/// - `AutoProvisionZones` — not selected in manifest
1571/// - `AttachedAppliances` — not selected in manifest
1572/// - `RouteTableId` — not selected in manifest
1573#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1574pub struct NatGateway {
1575    /// The ID of the NAT gateway.
1576    #[serde(rename(serialize = "NatGatewayId", deserialize = "natGatewayId"))]
1577    #[serde(skip_serializing_if = "Option::is_none")]
1578    pub nat_gateway_id: Option<String>,
1579
1580    /// The state of the NAT gateway. pending: The NAT gateway is being created and is not ready
1581    /// to process traffic. failed: The NAT gateway could not be created. Check the failureCode
1582    /// and failureMessage fields for the reason. available: The NAT gateway is able to process
1583    /// traffic. This status remains until you delete the NAT gateway, and does not indicate the
1584    /// health of the NAT gateway. deleting: The NAT gateway is in the process of being
1585    /// terminated and may still be processing traffic. deleted: The NAT gateway has been
1586    /// terminated and is no longer processing traffic.
1587    #[serde(rename(serialize = "State", deserialize = "state"))]
1588    #[serde(skip_serializing_if = "Option::is_none")]
1589    pub state: Option<String>,
1590
1591    /// The ID of the subnet in which the NAT gateway is located.
1592    #[serde(rename(serialize = "SubnetId", deserialize = "subnetId"))]
1593    #[serde(skip_serializing_if = "Option::is_none")]
1594    pub subnet_id: Option<String>,
1595
1596    /// The ID of the VPC in which the NAT gateway is located.
1597    #[serde(rename(serialize = "VpcId", deserialize = "vpcId"))]
1598    #[serde(skip_serializing_if = "Option::is_none")]
1599    pub vpc_id: Option<String>,
1600
1601    /// Information about the IP addresses and network interface associated with the NAT
1602    /// gateway.
1603    #[serde(rename(
1604        serialize = "NatGatewayAddressSet",
1605        deserialize = "natGatewayAddressSet"
1606    ))]
1607    #[serde(default)]
1608    #[serde(skip_serializing_if = "Vec::is_empty")]
1609    pub nat_gateway_addresses: Vec<NatGatewayAddress>,
1610
1611    /// The date and time the NAT gateway was created.
1612    #[serde(rename(serialize = "CreateTime", deserialize = "createTime"))]
1613    #[serde(skip_serializing_if = "Option::is_none")]
1614    pub create_time: Option<String>,
1615}
1616
1617impl NatGateway {
1618    #[cfg(any(test, feature = "test-support"))]
1619    /// Create a fixture instance for testing.
1620    pub fn fixture() -> Self {
1621        Self {
1622            nat_gateway_id: Some("test-nat_gateway_id".into()),
1623            state: Some("test-state".into()),
1624            subnet_id: Some("test-subnet_id".into()),
1625            vpc_id: Some("test-vpc_id".into()),
1626            nat_gateway_addresses: vec![],
1627            create_time: Some("test-create_time".into()),
1628        }
1629    }
1630}
1631
1632/// Describes the IP addresses and network interface associated with a NAT gateway.
1633///
1634/// **AWS API**: `ec2.v1.NatGatewayAddress`
1635/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//NatGatewayAddress>
1636///
1637/// ## Coverage
1638/// 2 of 10 fields included.
1639/// Omitted fields:
1640/// - `NetworkInterfaceId` — not selected in manifest
1641/// - `PrivateIp` — not selected in manifest
1642/// - `AssociationId` — not selected in manifest
1643/// - `IsPrimary` — not selected in manifest
1644/// - `FailureMessage` — not selected in manifest
1645/// - `Status` — not selected in manifest
1646/// - `AvailabilityZone` — not selected in manifest
1647/// - `AvailabilityZoneId` — not selected in manifest
1648#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1649pub struct NatGatewayAddress {
1650    /// [Public NAT gateway only] The allocation ID of the Elastic IP address that's associated
1651    /// with the NAT gateway.
1652    #[serde(rename(serialize = "AllocationId", deserialize = "allocationId"))]
1653    #[serde(skip_serializing_if = "Option::is_none")]
1654    pub allocation_id: Option<String>,
1655
1656    /// [Public NAT gateway only] The Elastic IP address associated with the NAT gateway.
1657    #[serde(rename(serialize = "PublicIp", deserialize = "publicIp"))]
1658    #[serde(skip_serializing_if = "Option::is_none")]
1659    pub public_ip: Option<String>,
1660}
1661
1662impl NatGatewayAddress {
1663    #[cfg(any(test, feature = "test-support"))]
1664    /// Create a fixture instance for testing.
1665    pub fn fixture() -> Self {
1666        Self {
1667            allocation_id: Some("test-allocation_id".into()),
1668            public_ip: Some("test-public_ip".into()),
1669        }
1670    }
1671}
1672
1673/// Contains the output of DescribeRouteTables.
1674///
1675/// **AWS API**: `ec2.v1.DescribeRouteTablesResult`
1676/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeRouteTablesResult>
1677#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1678pub struct DescribeRouteTablesResponse {
1679    /// Information about the route tables.
1680    #[serde(rename(serialize = "RouteTableSet", deserialize = "routeTableSet"))]
1681    #[serde(default)]
1682    #[serde(skip_serializing_if = "Vec::is_empty")]
1683    pub route_tables: Vec<RouteTable>,
1684
1685    /// The token to include in another request to get the next page of items. This value is
1686    /// null when there are no more items to return.
1687    #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
1688    #[serde(skip_serializing_if = "Option::is_none")]
1689    pub next_token: Option<String>,
1690}
1691
1692impl DescribeRouteTablesResponse {
1693    #[cfg(any(test, feature = "test-support"))]
1694    /// Create a fixture instance for testing.
1695    pub fn fixture() -> Self {
1696        Self {
1697            route_tables: vec![],
1698            next_token: Some("test-next_token".into()),
1699        }
1700    }
1701}
1702
1703/// Describes a route table.
1704///
1705/// **AWS API**: `ec2.v1.RouteTable`
1706/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//RouteTable>
1707///
1708/// ## Coverage
1709/// 4 of 7 fields included.
1710/// Omitted fields:
1711/// - `PropagatingVgws` — not selected in manifest
1712/// - `Tags` — not selected in manifest
1713/// - `OwnerId` — not selected in manifest
1714#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1715pub struct RouteTable {
1716    /// The ID of the route table.
1717    #[serde(rename(serialize = "RouteTableId", deserialize = "routeTableId"))]
1718    #[serde(skip_serializing_if = "Option::is_none")]
1719    pub route_table_id: Option<String>,
1720
1721    /// The ID of the VPC.
1722    #[serde(rename(serialize = "VpcId", deserialize = "vpcId"))]
1723    #[serde(skip_serializing_if = "Option::is_none")]
1724    pub vpc_id: Option<String>,
1725
1726    /// The routes in the route table.
1727    #[serde(rename(serialize = "RouteSet", deserialize = "routeSet"))]
1728    #[serde(default)]
1729    #[serde(skip_serializing_if = "Vec::is_empty")]
1730    pub routes: Vec<Route>,
1731
1732    /// The associations between the route table and your subnets or gateways.
1733    #[serde(rename(serialize = "AssociationSet", deserialize = "associationSet"))]
1734    #[serde(default)]
1735    #[serde(skip_serializing_if = "Vec::is_empty")]
1736    pub associations: Vec<RouteTableAssociation>,
1737}
1738
1739impl RouteTable {
1740    #[cfg(any(test, feature = "test-support"))]
1741    /// Create a fixture instance for testing.
1742    pub fn fixture() -> Self {
1743        Self {
1744            route_table_id: Some("test-route_table_id".into()),
1745            vpc_id: Some("test-vpc_id".into()),
1746            routes: vec![],
1747            associations: vec![],
1748        }
1749    }
1750}
1751
1752/// Describes a route in a route table.
1753///
1754/// **AWS API**: `ec2.v1.Route`
1755/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//Route>
1756///
1757/// ## Coverage
1758/// 4 of 18 fields included.
1759/// Omitted fields:
1760/// - `DestinationIpv6CidrBlock` — not selected in manifest
1761/// - `DestinationPrefixListId` — not selected in manifest
1762/// - `EgressOnlyInternetGatewayId` — not selected in manifest
1763/// - `InstanceId` — not selected in manifest
1764/// - `InstanceOwnerId` — not selected in manifest
1765/// - `TransitGatewayId` — not selected in manifest
1766/// - `LocalGatewayId` — not selected in manifest
1767/// - `CarrierGatewayId` — not selected in manifest
1768/// - `NetworkInterfaceId` — not selected in manifest
1769/// - `Origin` — not selected in manifest
1770/// - `VpcPeeringConnectionId` — not selected in manifest
1771/// - `CoreNetworkArn` — not selected in manifest
1772/// - `OdbNetworkArn` — not selected in manifest
1773/// - `IpAddress` — not selected in manifest
1774#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1775pub struct Route {
1776    /// The IPv4 CIDR block used for the destination match.
1777    #[serde(rename(
1778        serialize = "DestinationCidrBlock",
1779        deserialize = "destinationCidrBlock"
1780    ))]
1781    #[serde(skip_serializing_if = "Option::is_none")]
1782    pub destination_cidr_block: Option<String>,
1783
1784    /// The ID of a NAT gateway.
1785    #[serde(rename(serialize = "NatGatewayId", deserialize = "natGatewayId"))]
1786    #[serde(skip_serializing_if = "Option::is_none")]
1787    pub nat_gateway_id: Option<String>,
1788
1789    /// The ID of a gateway attached to your VPC.
1790    #[serde(rename(serialize = "GatewayId", deserialize = "gatewayId"))]
1791    #[serde(skip_serializing_if = "Option::is_none")]
1792    pub gateway_id: Option<String>,
1793
1794    /// The state of the route. The blackhole state indicates that the route's target isn't
1795    /// available (for example, the specified gateway isn't attached to the VPC, or the
1796    /// specified NAT instance has been terminated).
1797    #[serde(rename(serialize = "State", deserialize = "state"))]
1798    #[serde(skip_serializing_if = "Option::is_none")]
1799    pub state: Option<String>,
1800}
1801
1802impl Route {
1803    #[cfg(any(test, feature = "test-support"))]
1804    /// Create a fixture instance for testing.
1805    pub fn fixture() -> Self {
1806        Self {
1807            destination_cidr_block: Some("test-destination_cidr_block".into()),
1808            nat_gateway_id: Some("test-nat_gateway_id".into()),
1809            gateway_id: Some("test-gateway_id".into()),
1810            state: Some("test-state".into()),
1811        }
1812    }
1813}
1814
1815/// Describes an association between a route table and a subnet or gateway.
1816///
1817/// **AWS API**: `ec2.v1.RouteTableAssociation`
1818/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//RouteTableAssociation>
1819///
1820/// ## Coverage
1821/// 2 of 7 fields included.
1822/// Omitted fields:
1823/// - `RouteTableAssociationId` — not selected in manifest
1824/// - `RouteTableId` — not selected in manifest
1825/// - `GatewayId` — not selected in manifest
1826/// - `PublicIpv4Pool` — not selected in manifest
1827/// - `AssociationState` — not selected in manifest
1828#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1829pub struct RouteTableAssociation {
1830    /// The ID of the subnet. A subnet ID is not returned for an implicit association.
1831    #[serde(rename(serialize = "SubnetId", deserialize = "subnetId"))]
1832    #[serde(skip_serializing_if = "Option::is_none")]
1833    pub subnet_id: Option<String>,
1834
1835    /// Indicates whether this is the main route table.
1836    #[serde(rename(serialize = "Main", deserialize = "main"))]
1837    #[serde(skip_serializing_if = "Option::is_none")]
1838    pub main: Option<bool>,
1839}
1840
1841impl RouteTableAssociation {
1842    #[cfg(any(test, feature = "test-support"))]
1843    /// Create a fixture instance for testing.
1844    pub fn fixture() -> Self {
1845        Self {
1846            subnet_id: Some("test-subnet_id".into()),
1847            main: Some(false),
1848        }
1849    }
1850}
1851
1852///
1853/// **AWS API**: `ec2.v1.DescribeNetworkAclsResult`
1854/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeNetworkAclsResult>
1855#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1856pub struct DescribeNetworkAclsResponse {
1857    /// Information about the network ACLs.
1858    #[serde(rename(serialize = "NetworkAclSet", deserialize = "networkAclSet"))]
1859    #[serde(default)]
1860    #[serde(skip_serializing_if = "Vec::is_empty")]
1861    pub network_acls: Vec<NetworkAcl>,
1862
1863    /// The token to include in another request to get the next page of items. This value is
1864    /// null when there are no more items to return.
1865    #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
1866    #[serde(skip_serializing_if = "Option::is_none")]
1867    pub next_token: Option<String>,
1868}
1869
1870impl DescribeNetworkAclsResponse {
1871    #[cfg(any(test, feature = "test-support"))]
1872    /// Create a fixture instance for testing.
1873    pub fn fixture() -> Self {
1874        Self {
1875            network_acls: vec![],
1876            next_token: Some("test-next_token".into()),
1877        }
1878    }
1879}
1880
1881/// Describes a network ACL.
1882///
1883/// **AWS API**: `ec2.v1.NetworkAcl`
1884/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//NetworkAcl>
1885///
1886/// ## Coverage
1887/// 4 of 7 fields included.
1888/// Omitted fields:
1889/// - `Associations` — not selected in manifest
1890/// - `Tags` — not selected in manifest
1891/// - `OwnerId` — not selected in manifest
1892#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1893pub struct NetworkAcl {
1894    /// The ID of the network ACL.
1895    #[serde(rename(serialize = "NetworkAclId", deserialize = "networkAclId"))]
1896    #[serde(skip_serializing_if = "Option::is_none")]
1897    pub network_acl_id: Option<String>,
1898
1899    /// The ID of the VPC for the network ACL.
1900    #[serde(rename(serialize = "VpcId", deserialize = "vpcId"))]
1901    #[serde(skip_serializing_if = "Option::is_none")]
1902    pub vpc_id: Option<String>,
1903
1904    /// Indicates whether this is the default network ACL for the VPC.
1905    #[serde(rename(serialize = "Default", deserialize = "default"))]
1906    #[serde(skip_serializing_if = "Option::is_none")]
1907    pub is_default: Option<bool>,
1908
1909    /// The entries (rules) in the network ACL.
1910    #[serde(rename(serialize = "EntrySet", deserialize = "entrySet"))]
1911    #[serde(default)]
1912    #[serde(skip_serializing_if = "Vec::is_empty")]
1913    pub entries: Vec<NetworkAclEntry>,
1914}
1915
1916impl NetworkAcl {
1917    #[cfg(any(test, feature = "test-support"))]
1918    /// Create a fixture instance for testing.
1919    pub fn fixture() -> Self {
1920        Self {
1921            network_acl_id: Some("test-network_acl_id".into()),
1922            vpc_id: Some("test-vpc_id".into()),
1923            is_default: Some(false),
1924            entries: vec![],
1925        }
1926    }
1927}
1928
1929/// Describes an entry in a network ACL.
1930///
1931/// **AWS API**: `ec2.v1.NetworkAclEntry`
1932/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//NetworkAclEntry>
1933///
1934/// ## Coverage
1935/// 6 of 8 fields included.
1936/// Omitted fields:
1937/// - `IcmpTypeCode` — not selected in manifest
1938/// - `Ipv6CidrBlock` — not selected in manifest
1939#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1940pub struct NetworkAclEntry {
1941    /// The rule number for the entry. ACL entries are processed in ascending order by rule
1942    /// number.
1943    #[serde(rename(serialize = "RuleNumber", deserialize = "ruleNumber"))]
1944    #[serde(skip_serializing_if = "Option::is_none")]
1945    pub rule_number: Option<i32>,
1946
1947    /// The protocol number. A value of "-1" means all protocols.
1948    #[serde(rename(serialize = "Protocol", deserialize = "protocol"))]
1949    #[serde(skip_serializing_if = "Option::is_none")]
1950    pub protocol: Option<String>,
1951
1952    /// Indicates whether to allow or deny the traffic that matches the rule.
1953    #[serde(rename(serialize = "RuleAction", deserialize = "ruleAction"))]
1954    #[serde(skip_serializing_if = "Option::is_none")]
1955    pub rule_action: Option<String>,
1956
1957    /// Indicates whether the rule is an egress rule (applied to traffic leaving the subnet).
1958    #[serde(rename(serialize = "Egress", deserialize = "egress"))]
1959    #[serde(skip_serializing_if = "Option::is_none")]
1960    pub egress: Option<bool>,
1961
1962    /// The IPv4 network range to allow or deny, in CIDR notation.
1963    #[serde(rename(serialize = "CidrBlock", deserialize = "cidrBlock"))]
1964    #[serde(skip_serializing_if = "Option::is_none")]
1965    pub cidr_block: Option<String>,
1966
1967    /// TCP or UDP protocols: The range of ports the rule applies to.
1968    #[serde(rename(serialize = "PortRange", deserialize = "portRange"))]
1969    #[serde(skip_serializing_if = "Option::is_none")]
1970    pub port_range: Option<PortRange>,
1971}
1972
1973impl NetworkAclEntry {
1974    #[cfg(any(test, feature = "test-support"))]
1975    /// Create a fixture instance for testing.
1976    pub fn fixture() -> Self {
1977        Self {
1978            rule_number: Some(100),
1979            protocol: Some("test-protocol".into()),
1980            rule_action: Some("test-rule_action".into()),
1981            egress: Some(false),
1982            cidr_block: Some("test-cidr_block".into()),
1983            port_range: Some(PortRange::fixture()),
1984        }
1985    }
1986}
1987
1988/// Describes a range of ports.
1989///
1990/// **AWS API**: `ec2.v1.PortRange`
1991/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//PortRange>
1992#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1993pub struct PortRange {
1994    /// The first port in the range.
1995    #[serde(rename(serialize = "From", deserialize = "from"))]
1996    #[serde(skip_serializing_if = "Option::is_none")]
1997    pub from: Option<i32>,
1998
1999    /// The last port in the range.
2000    #[serde(rename(serialize = "To", deserialize = "to"))]
2001    #[serde(skip_serializing_if = "Option::is_none")]
2002    pub to: Option<i32>,
2003}
2004
2005impl PortRange {
2006    #[cfg(any(test, feature = "test-support"))]
2007    /// Create a fixture instance for testing.
2008    pub fn fixture() -> Self {
2009        Self {
2010            from: Some(100),
2011            to: Some(100),
2012        }
2013    }
2014}
2015
2016///
2017/// **AWS API**: `ec2.v1.DescribeFlowLogsResult`
2018/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeFlowLogsResult>
2019#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2020pub struct DescribeFlowLogsResponse {
2021    /// Information about the flow logs.
2022    #[serde(rename(serialize = "FlowLogSet", deserialize = "flowLogSet"))]
2023    #[serde(default)]
2024    #[serde(skip_serializing_if = "Vec::is_empty")]
2025    pub flow_logs: Vec<FlowLog>,
2026
2027    /// The token to request the next page of items. This value is null when there are no more
2028    /// items to return.
2029    #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
2030    #[serde(skip_serializing_if = "Option::is_none")]
2031    pub next_token: Option<String>,
2032}
2033
2034impl DescribeFlowLogsResponse {
2035    #[cfg(any(test, feature = "test-support"))]
2036    /// Create a fixture instance for testing.
2037    pub fn fixture() -> Self {
2038        Self {
2039            flow_logs: vec![],
2040            next_token: Some("test-next_token".into()),
2041        }
2042    }
2043}
2044
2045/// Describes a flow log.
2046///
2047/// **AWS API**: `ec2.v1.FlowLog`
2048/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//FlowLog>
2049///
2050/// ## Coverage
2051/// 5 of 16 fields included.
2052/// Omitted fields:
2053/// - `CreationTime` — not selected in manifest
2054/// - `DeliverLogsErrorMessage` — not selected in manifest
2055/// - `DeliverLogsPermissionArn` — not selected in manifest
2056/// - `DeliverCrossAccountRole` — not selected in manifest
2057/// - `DeliverLogsStatus` — not selected in manifest
2058/// - `LogDestinationType` — not selected in manifest
2059/// - `LogDestination` — not selected in manifest
2060/// - `LogFormat` — not selected in manifest
2061/// - `Tags` — not selected in manifest
2062/// - `MaxAggregationInterval` — not selected in manifest
2063/// - `DestinationOptions` — not selected in manifest
2064#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2065pub struct FlowLog {
2066    /// The ID of the flow log.
2067    #[serde(rename(serialize = "FlowLogId", deserialize = "flowLogId"))]
2068    #[serde(skip_serializing_if = "Option::is_none")]
2069    pub flow_log_id: Option<String>,
2070
2071    /// The ID of the resource being monitored.
2072    #[serde(rename(serialize = "ResourceId", deserialize = "resourceId"))]
2073    #[serde(skip_serializing_if = "Option::is_none")]
2074    pub resource_id: Option<String>,
2075
2076    /// The type of traffic captured for the flow log.
2077    #[serde(rename(serialize = "TrafficType", deserialize = "trafficType"))]
2078    #[serde(skip_serializing_if = "Option::is_none")]
2079    pub traffic_type: Option<String>,
2080
2081    /// The name of the flow log group.
2082    #[serde(rename(serialize = "LogGroupName", deserialize = "logGroupName"))]
2083    #[serde(skip_serializing_if = "Option::is_none")]
2084    pub log_group_name: Option<String>,
2085
2086    /// The status of the flow log (ACTIVE).
2087    #[serde(rename(serialize = "FlowLogStatus", deserialize = "flowLogStatus"))]
2088    #[serde(skip_serializing_if = "Option::is_none")]
2089    pub flow_log_status: Option<String>,
2090}
2091
2092impl FlowLog {
2093    #[cfg(any(test, feature = "test-support"))]
2094    /// Create a fixture instance for testing.
2095    pub fn fixture() -> Self {
2096        Self {
2097            flow_log_id: Some("test-flow_log_id".into()),
2098            resource_id: Some("test-resource_id".into()),
2099            traffic_type: Some("test-traffic_type".into()),
2100            log_group_name: Some("test-log_group_name".into()),
2101            flow_log_status: Some("test-flow_log_status".into()),
2102        }
2103    }
2104}
2105
2106///
2107/// **AWS API**: `ec2.v1.DescribeVpcsResult`
2108/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeVpcsResult>
2109#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2110pub struct DescribeVpcsResponse {
2111    /// Information about the VPCs.
2112    #[serde(rename(serialize = "VpcSet", deserialize = "vpcSet"))]
2113    #[serde(default)]
2114    #[serde(skip_serializing_if = "Vec::is_empty")]
2115    pub vpcs: Vec<Vpc>,
2116
2117    /// The token to include in another request to get the next page of items. This value is
2118    /// null when there are no more items to return.
2119    #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
2120    #[serde(skip_serializing_if = "Option::is_none")]
2121    pub next_token: Option<String>,
2122}
2123
2124impl DescribeVpcsResponse {
2125    #[cfg(any(test, feature = "test-support"))]
2126    /// Create a fixture instance for testing.
2127    pub fn fixture() -> Self {
2128        Self {
2129            vpcs: vec![],
2130            next_token: Some("test-next_token".into()),
2131        }
2132    }
2133}
2134
2135/// Describes a VPC.
2136///
2137/// **AWS API**: `ec2.v1.Vpc`
2138/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//Vpc>
2139///
2140/// ## Coverage
2141/// 4 of 12 fields included.
2142/// Omitted fields:
2143/// - `OwnerId` — not selected in manifest
2144/// - `InstanceTenancy` — not selected in manifest
2145/// - `Ipv6CidrBlockAssociationSet` — not selected in manifest
2146/// - `CidrBlockAssociationSet` — not selected in manifest
2147/// - `EncryptionControl` — not selected in manifest
2148/// - `Tags` — not selected in manifest
2149/// - `BlockPublicAccessStates` — not selected in manifest
2150/// - `DhcpOptionsId` — not selected in manifest
2151#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2152pub struct Vpc {
2153    /// The ID of the VPC.
2154    #[serde(rename(serialize = "VpcId", deserialize = "vpcId"))]
2155    #[serde(skip_serializing_if = "Option::is_none")]
2156    pub vpc_id: Option<String>,
2157
2158    /// The primary IPv4 CIDR block for the VPC.
2159    #[serde(rename(serialize = "CidrBlock", deserialize = "cidrBlock"))]
2160    #[serde(skip_serializing_if = "Option::is_none")]
2161    pub cidr_block: Option<String>,
2162
2163    /// The current state of the VPC.
2164    #[serde(rename(serialize = "State", deserialize = "state"))]
2165    #[serde(skip_serializing_if = "Option::is_none")]
2166    pub state: Option<String>,
2167
2168    /// Indicates whether the VPC is the default VPC.
2169    #[serde(rename(serialize = "IsDefault", deserialize = "isDefault"))]
2170    #[serde(skip_serializing_if = "Option::is_none")]
2171    pub is_default: Option<bool>,
2172}
2173
2174impl Vpc {
2175    #[cfg(any(test, feature = "test-support"))]
2176    /// Create a fixture instance for testing.
2177    pub fn fixture() -> Self {
2178        Self {
2179            vpc_id: Some("test-vpc_id".into()),
2180            cidr_block: Some("test-cidr_block".into()),
2181            state: Some("test-state".into()),
2182            is_default: Some(false),
2183        }
2184    }
2185}
2186
2187///
2188/// **AWS API**: `ec2.v1.DescribeVpcEndpointsResult`
2189/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeVpcEndpointsResult>
2190#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2191pub struct DescribeVpcEndpointsResponse {
2192    /// Information about the VPC endpoints.
2193    #[serde(rename(serialize = "VpcEndpointSet", deserialize = "vpcEndpointSet"))]
2194    #[serde(default)]
2195    #[serde(skip_serializing_if = "Vec::is_empty")]
2196    pub vpc_endpoints: Vec<VpcEndpoint>,
2197
2198    /// The token to use when requesting the next set of items. If there are no additional items
2199    /// to return, the string is empty.
2200    #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
2201    #[serde(skip_serializing_if = "Option::is_none")]
2202    pub next_token: Option<String>,
2203}
2204
2205impl DescribeVpcEndpointsResponse {
2206    #[cfg(any(test, feature = "test-support"))]
2207    /// Create a fixture instance for testing.
2208    pub fn fixture() -> Self {
2209        Self {
2210            vpc_endpoints: vec![],
2211            next_token: Some("test-next_token".into()),
2212        }
2213    }
2214}
2215
2216/// Describes a VPC endpoint.
2217///
2218/// **AWS API**: `ec2.v1.VpcEndpoint`
2219/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//VpcEndpoint>
2220///
2221/// ## Coverage
2222/// 6 of 25 fields included.
2223/// Omitted fields:
2224/// - `VpcEndpointType` — not selected in manifest
2225/// - `PolicyDocument` — not selected in manifest
2226/// - `Groups` — not selected in manifest
2227/// - `IpAddressType` — not selected in manifest
2228/// - `DnsOptions` — not selected in manifest
2229/// - `PrivateDnsEnabled` — not selected in manifest
2230/// - `RequesterManaged` — not selected in manifest
2231/// - `NetworkInterfaceIds` — not selected in manifest
2232/// - `DnsEntries` — not selected in manifest
2233/// - `CreationTimestamp` — not selected in manifest
2234/// - `Tags` — not selected in manifest
2235/// - `OwnerId` — not selected in manifest
2236/// - `LastError` — not selected in manifest
2237/// - `Ipv4Prefixes` — not selected in manifest
2238/// - `Ipv6Prefixes` — not selected in manifest
2239/// - `FailureReason` — not selected in manifest
2240/// - `ServiceNetworkArn` — not selected in manifest
2241/// - `ResourceConfigurationArn` — not selected in manifest
2242/// - `ServiceRegion` — not selected in manifest
2243#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2244pub struct VpcEndpoint {
2245    /// The ID of the endpoint.
2246    #[serde(rename(serialize = "VpcEndpointId", deserialize = "vpcEndpointId"))]
2247    #[serde(skip_serializing_if = "Option::is_none")]
2248    pub vpc_endpoint_id: Option<String>,
2249
2250    /// The ID of the VPC to which the endpoint is associated.
2251    #[serde(rename(serialize = "VpcId", deserialize = "vpcId"))]
2252    #[serde(skip_serializing_if = "Option::is_none")]
2253    pub vpc_id: Option<String>,
2254
2255    /// The name of the service to which the endpoint is associated.
2256    #[serde(rename(serialize = "ServiceName", deserialize = "serviceName"))]
2257    #[serde(skip_serializing_if = "Option::is_none")]
2258    pub service_name: Option<String>,
2259
2260    /// The state of the endpoint.
2261    #[serde(rename(serialize = "State", deserialize = "state"))]
2262    #[serde(skip_serializing_if = "Option::is_none")]
2263    pub state: Option<String>,
2264
2265    /// (Gateway endpoint) The IDs of the route tables associated with the endpoint.
2266    #[serde(rename(serialize = "RouteTableIdSet", deserialize = "routeTableIdSet"))]
2267    #[serde(default)]
2268    #[serde(skip_serializing_if = "Vec::is_empty")]
2269    pub route_table_ids: Vec<String>,
2270
2271    /// (Interface endpoint) The subnets for the endpoint.
2272    #[serde(rename(serialize = "SubnetIdSet", deserialize = "subnetIdSet"))]
2273    #[serde(default)]
2274    #[serde(skip_serializing_if = "Vec::is_empty")]
2275    pub subnet_ids: Vec<String>,
2276}
2277
2278impl VpcEndpoint {
2279    #[cfg(any(test, feature = "test-support"))]
2280    /// Create a fixture instance for testing.
2281    pub fn fixture() -> Self {
2282        Self {
2283            vpc_endpoint_id: Some("test-vpc_endpoint_id".into()),
2284            vpc_id: Some("test-vpc_id".into()),
2285            service_name: Some("test-service_name".into()),
2286            state: Some("test-state".into()),
2287            route_table_ids: vec![],
2288            subnet_ids: vec![],
2289        }
2290    }
2291}
2292
2293///
2294/// **AWS API**: `ec2.v1.DescribeVpcPeeringConnectionsResult`
2295/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeVpcPeeringConnectionsResult>
2296#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2297pub struct DescribeVpcPeeringConnectionsResponse {
2298    /// Information about the VPC peering connections.
2299    #[serde(rename(
2300        serialize = "VpcPeeringConnectionSet",
2301        deserialize = "vpcPeeringConnectionSet"
2302    ))]
2303    #[serde(default)]
2304    #[serde(skip_serializing_if = "Vec::is_empty")]
2305    pub vpc_peering_connections: Vec<VpcPeeringConnection>,
2306
2307    /// The token to include in another request to get the next page of items. This value is
2308    /// null when there are no more items to return.
2309    #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
2310    #[serde(skip_serializing_if = "Option::is_none")]
2311    pub next_token: Option<String>,
2312}
2313
2314impl DescribeVpcPeeringConnectionsResponse {
2315    #[cfg(any(test, feature = "test-support"))]
2316    /// Create a fixture instance for testing.
2317    pub fn fixture() -> Self {
2318        Self {
2319            vpc_peering_connections: vec![],
2320            next_token: Some("test-next_token".into()),
2321        }
2322    }
2323}
2324
2325/// Describes a VPC peering connection.
2326///
2327/// **AWS API**: `ec2.v1.VpcPeeringConnection`
2328/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//VpcPeeringConnection>
2329///
2330/// ## Coverage
2331/// 4 of 6 fields included.
2332/// Omitted fields:
2333/// - `ExpirationTime` — not selected in manifest
2334/// - `Tags` — not selected in manifest
2335#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2336pub struct VpcPeeringConnection {
2337    /// The ID of the VPC peering connection.
2338    #[serde(rename(
2339        serialize = "VpcPeeringConnectionId",
2340        deserialize = "vpcPeeringConnectionId"
2341    ))]
2342    #[serde(skip_serializing_if = "Option::is_none")]
2343    pub vpc_peering_connection_id: Option<String>,
2344
2345    /// The status of the VPC peering connection.
2346    #[serde(rename(serialize = "Status", deserialize = "status"))]
2347    #[serde(skip_serializing_if = "Option::is_none")]
2348    pub status: Option<VpcPeeringConnectionStateReason>,
2349
2350    /// Information about the accepter VPC. CIDR block information is only returned when
2351    /// describing an active VPC peering connection.
2352    #[serde(rename(serialize = "AccepterVpcInfo", deserialize = "accepterVpcInfo"))]
2353    #[serde(skip_serializing_if = "Option::is_none")]
2354    pub accepter_vpc_info: Option<VpcPeeringConnectionVpcInfo>,
2355
2356    /// Information about the requester VPC. CIDR block information is only returned when
2357    /// describing an active VPC peering connection.
2358    #[serde(rename(serialize = "RequesterVpcInfo", deserialize = "requesterVpcInfo"))]
2359    #[serde(skip_serializing_if = "Option::is_none")]
2360    pub requester_vpc_info: Option<VpcPeeringConnectionVpcInfo>,
2361}
2362
2363impl VpcPeeringConnection {
2364    #[cfg(any(test, feature = "test-support"))]
2365    /// Create a fixture instance for testing.
2366    pub fn fixture() -> Self {
2367        Self {
2368            vpc_peering_connection_id: Some("test-vpc_peering_connection_id".into()),
2369            status: Some(VpcPeeringConnectionStateReason::fixture()),
2370            accepter_vpc_info: Some(VpcPeeringConnectionVpcInfo::fixture()),
2371            requester_vpc_info: Some(VpcPeeringConnectionVpcInfo::fixture()),
2372        }
2373    }
2374}
2375
2376/// Describes the status of a VPC peering connection.
2377///
2378/// **AWS API**: `ec2.v1.VpcPeeringConnectionStateReason`
2379/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//VpcPeeringConnectionStateReason>
2380#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2381pub struct VpcPeeringConnectionStateReason {
2382    /// The status of the VPC peering connection.
2383    #[serde(rename(serialize = "Code", deserialize = "code"))]
2384    #[serde(skip_serializing_if = "Option::is_none")]
2385    pub code: Option<String>,
2386
2387    /// A message that provides more information about the status, if applicable.
2388    #[serde(rename(serialize = "Message", deserialize = "message"))]
2389    #[serde(skip_serializing_if = "Option::is_none")]
2390    pub message: Option<String>,
2391}
2392
2393impl VpcPeeringConnectionStateReason {
2394    #[cfg(any(test, feature = "test-support"))]
2395    /// Create a fixture instance for testing.
2396    pub fn fixture() -> Self {
2397        Self {
2398            code: Some("test-code".into()),
2399            message: Some("test-message".into()),
2400        }
2401    }
2402}
2403
2404/// Describes a VPC in a VPC peering connection.
2405///
2406/// **AWS API**: `ec2.v1.VpcPeeringConnectionVpcInfo`
2407/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//VpcPeeringConnectionVpcInfo>
2408///
2409/// ## Coverage
2410/// 4 of 7 fields included.
2411/// Omitted fields:
2412/// - `Ipv6CidrBlockSet` — not selected in manifest
2413/// - `CidrBlockSet` — not selected in manifest
2414/// - `PeeringOptions` — not selected in manifest
2415#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2416pub struct VpcPeeringConnectionVpcInfo {
2417    /// The ID of the VPC.
2418    #[serde(rename(serialize = "VpcId", deserialize = "vpcId"))]
2419    #[serde(skip_serializing_if = "Option::is_none")]
2420    pub vpc_id: Option<String>,
2421
2422    /// The ID of the Amazon Web Services account that owns the VPC.
2423    #[serde(rename(serialize = "OwnerId", deserialize = "ownerId"))]
2424    #[serde(skip_serializing_if = "Option::is_none")]
2425    pub owner_id: Option<String>,
2426
2427    /// The IPv4 CIDR block for the VPC.
2428    #[serde(rename(serialize = "CidrBlock", deserialize = "cidrBlock"))]
2429    #[serde(skip_serializing_if = "Option::is_none")]
2430    pub cidr_block: Option<String>,
2431
2432    /// The Region in which the VPC is located.
2433    #[serde(rename(serialize = "Region", deserialize = "region"))]
2434    #[serde(skip_serializing_if = "Option::is_none")]
2435    pub region: Option<String>,
2436}
2437
2438impl VpcPeeringConnectionVpcInfo {
2439    #[cfg(any(test, feature = "test-support"))]
2440    /// Create a fixture instance for testing.
2441    pub fn fixture() -> Self {
2442        Self {
2443            vpc_id: Some("test-vpc_id".into()),
2444            owner_id: Some("test-owner_id".into()),
2445            cidr_block: Some("test-cidr_block".into()),
2446            region: Some("test-region".into()),
2447        }
2448    }
2449}
2450
2451///
2452/// **AWS API**: `ec2.v1.DescribeLaunchTemplatesResult`
2453/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeLaunchTemplatesResult>
2454#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2455pub struct DescribeLaunchTemplatesResponse {
2456    /// Information about the launch templates.
2457    #[serde(rename(serialize = "LaunchTemplates", deserialize = "launchTemplates"))]
2458    #[serde(default)]
2459    #[serde(skip_serializing_if = "Vec::is_empty")]
2460    pub launch_templates: Vec<LaunchTemplate>,
2461
2462    /// The token to use to retrieve the next page of results. This value is null when there are
2463    /// no more results to return.
2464    #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
2465    #[serde(skip_serializing_if = "Option::is_none")]
2466    pub next_token: Option<String>,
2467}
2468
2469impl DescribeLaunchTemplatesResponse {
2470    #[cfg(any(test, feature = "test-support"))]
2471    /// Create a fixture instance for testing.
2472    pub fn fixture() -> Self {
2473        Self {
2474            launch_templates: vec![],
2475            next_token: Some("test-next_token".into()),
2476        }
2477    }
2478}
2479
2480/// Describes a launch template.
2481///
2482/// **AWS API**: `ec2.v1.LaunchTemplate`
2483/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//LaunchTemplate>
2484///
2485/// ## Coverage
2486/// 2 of 8 fields included.
2487/// Omitted fields:
2488/// - `CreateTime` — not selected in manifest
2489/// - `CreatedBy` — not selected in manifest
2490/// - `DefaultVersionNumber` — not selected in manifest
2491/// - `LatestVersionNumber` — not selected in manifest
2492/// - `Tags` — not selected in manifest
2493/// - `Operator` — not selected in manifest
2494#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2495pub struct LaunchTemplate {
2496    /// The ID of the launch template.
2497    #[serde(rename(serialize = "LaunchTemplateId", deserialize = "launchTemplateId"))]
2498    #[serde(skip_serializing_if = "Option::is_none")]
2499    pub launch_template_id: Option<String>,
2500
2501    /// The name of the launch template.
2502    #[serde(rename(serialize = "LaunchTemplateName", deserialize = "launchTemplateName"))]
2503    #[serde(skip_serializing_if = "Option::is_none")]
2504    pub launch_template_name: Option<String>,
2505}
2506
2507impl LaunchTemplate {
2508    #[cfg(any(test, feature = "test-support"))]
2509    /// Create a fixture instance for testing.
2510    pub fn fixture() -> Self {
2511        Self {
2512            launch_template_id: Some("test-launch_template_id".into()),
2513            launch_template_name: Some("test-launch_template_name".into()),
2514        }
2515    }
2516}
2517
2518///
2519/// **AWS API**: `ec2.v1.DescribeLaunchTemplateVersionsResult`
2520/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeLaunchTemplateVersionsResult>
2521#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2522pub struct DescribeLaunchTemplateVersionsResponse {
2523    /// Information about the launch template versions.
2524    #[serde(rename(
2525        serialize = "LaunchTemplateVersionSet",
2526        deserialize = "launchTemplateVersionSet"
2527    ))]
2528    #[serde(default)]
2529    #[serde(skip_serializing_if = "Vec::is_empty")]
2530    pub launch_template_versions: Vec<LaunchTemplateVersion>,
2531
2532    /// The token to use to retrieve the next page of results. This value is null when there are
2533    /// no more results to return.
2534    #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
2535    #[serde(skip_serializing_if = "Option::is_none")]
2536    pub next_token: Option<String>,
2537}
2538
2539impl DescribeLaunchTemplateVersionsResponse {
2540    #[cfg(any(test, feature = "test-support"))]
2541    /// Create a fixture instance for testing.
2542    pub fn fixture() -> Self {
2543        Self {
2544            launch_template_versions: vec![],
2545            next_token: Some("test-next_token".into()),
2546        }
2547    }
2548}
2549
2550/// Describes a launch template version.
2551///
2552/// **AWS API**: `ec2.v1.LaunchTemplateVersion`
2553/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//LaunchTemplateVersion>
2554///
2555/// ## Coverage
2556/// 4 of 9 fields included.
2557/// Omitted fields:
2558/// - `VersionDescription` — not selected in manifest
2559/// - `CreateTime` — not selected in manifest
2560/// - `CreatedBy` — not selected in manifest
2561/// - `DefaultVersion` — not selected in manifest
2562/// - `Operator` — not selected in manifest
2563#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2564pub struct LaunchTemplateVersion {
2565    /// The ID of the launch template.
2566    #[serde(rename(serialize = "LaunchTemplateId", deserialize = "launchTemplateId"))]
2567    #[serde(skip_serializing_if = "Option::is_none")]
2568    pub launch_template_id: Option<String>,
2569
2570    /// The name of the launch template.
2571    #[serde(rename(serialize = "LaunchTemplateName", deserialize = "launchTemplateName"))]
2572    #[serde(skip_serializing_if = "Option::is_none")]
2573    pub launch_template_name: Option<String>,
2574
2575    /// The version number.
2576    #[serde(rename(serialize = "VersionNumber", deserialize = "versionNumber"))]
2577    #[serde(skip_serializing_if = "Option::is_none")]
2578    pub version_number: Option<i64>,
2579
2580    /// Information about the launch template.
2581    #[serde(rename(serialize = "LaunchTemplateData", deserialize = "launchTemplateData"))]
2582    #[serde(skip_serializing_if = "Option::is_none")]
2583    pub launch_template_data: Option<ResponseLaunchTemplateData>,
2584}
2585
2586impl LaunchTemplateVersion {
2587    #[cfg(any(test, feature = "test-support"))]
2588    /// Create a fixture instance for testing.
2589    pub fn fixture() -> Self {
2590        Self {
2591            launch_template_id: Some("test-launch_template_id".into()),
2592            launch_template_name: Some("test-launch_template_name".into()),
2593            version_number: Some(100),
2594            launch_template_data: Some(ResponseLaunchTemplateData::fixture()),
2595        }
2596    }
2597}
2598
2599/// The information for a launch template.
2600///
2601/// **AWS API**: `ec2.v1.ResponseLaunchTemplateData`
2602/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//ResponseLaunchTemplateData>
2603///
2604/// ## Coverage
2605/// 4 of 34 fields included.
2606/// Omitted fields:
2607/// - `KernelId` — not selected in manifest
2608/// - `EbsOptimized` — not selected in manifest
2609/// - `IamInstanceProfile` — not selected in manifest
2610/// - `BlockDeviceMappings` — not selected in manifest
2611/// - `KeyName` — not selected in manifest
2612/// - `Monitoring` — not selected in manifest
2613/// - `Placement` — not selected in manifest
2614/// - `RamDiskId` — not selected in manifest
2615/// - `DisableApiTermination` — not selected in manifest
2616/// - `InstanceInitiatedShutdownBehavior` — not selected in manifest
2617/// - `UserData` — not selected in manifest
2618/// - `TagSpecifications` — not selected in manifest
2619/// - `ElasticGpuSpecifications` — not selected in manifest
2620/// - `ElasticInferenceAccelerators` — not selected in manifest
2621/// - `SecurityGroupIds` — not selected in manifest
2622/// - `SecurityGroups` — not selected in manifest
2623/// - `InstanceMarketOptions` — not selected in manifest
2624/// - `CreditSpecification` — not selected in manifest
2625/// - `CpuOptions` — not selected in manifest
2626/// - `CapacityReservationSpecification` — not selected in manifest
2627/// - `LicenseSpecifications` — not selected in manifest
2628/// - `HibernationOptions` — not selected in manifest
2629/// - `EnclaveOptions` — not selected in manifest
2630/// - `InstanceRequirements` — not selected in manifest
2631/// - `PrivateDnsNameOptions` — not selected in manifest
2632/// - `MaintenanceOptions` — not selected in manifest
2633/// - `DisableApiStop` — not selected in manifest
2634/// - `Operator` — not selected in manifest
2635/// - `NetworkPerformanceOptions` — not selected in manifest
2636/// - `SecondaryInterfaces` — not selected in manifest
2637#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2638pub struct ResponseLaunchTemplateData {
2639    /// The ID of the AMI or a Systems Manager parameter. The Systems Manager parameter will
2640    /// resolve to the ID of the AMI at instance launch. The value depends on what you specified
2641    /// in the request. The possible values are: If an AMI ID was specified in the request, then
2642    /// this is the AMI ID. If a Systems Manager parameter was specified in the request, and
2643    /// ResolveAlias was configured as true, then this is the AMI ID that the parameter is
2644    /// mapped to in the Parameter Store. If a Systems Manager parameter was specified in the
2645    /// request, and ResolveAlias was configured as false, then this is the parameter value. For
2646    /// more information, see Use a Systems Manager parameter instead of an AMI ID in the Amazon
2647    /// EC2 User Guide.
2648    #[serde(rename(serialize = "ImageId", deserialize = "imageId"))]
2649    #[serde(skip_serializing_if = "Option::is_none")]
2650    pub image_id: Option<String>,
2651
2652    /// The instance type.
2653    #[serde(rename(serialize = "InstanceType", deserialize = "instanceType"))]
2654    #[serde(skip_serializing_if = "Option::is_none")]
2655    pub instance_type: Option<String>,
2656
2657    /// The metadata options for the instance. For more information, see Configure the Instance
2658    /// Metadata Service options in the Amazon EC2 User Guide.
2659    #[serde(rename(serialize = "MetadataOptions", deserialize = "metadataOptions"))]
2660    #[serde(skip_serializing_if = "Option::is_none")]
2661    pub metadata_options: Option<LaunchTemplateInstanceMetadataOptions>,
2662
2663    /// The network interfaces.
2664    #[serde(rename(serialize = "NetworkInterfaceSet", deserialize = "networkInterfaceSet"))]
2665    #[serde(default)]
2666    #[serde(skip_serializing_if = "Vec::is_empty")]
2667    pub network_interfaces: Vec<LaunchTemplateInstanceNetworkInterfaceSpecification>,
2668}
2669
2670impl ResponseLaunchTemplateData {
2671    #[cfg(any(test, feature = "test-support"))]
2672    /// Create a fixture instance for testing.
2673    pub fn fixture() -> Self {
2674        Self {
2675            image_id: Some("test-image_id".into()),
2676            instance_type: Some("test-instance_type".into()),
2677            metadata_options: Some(LaunchTemplateInstanceMetadataOptions::fixture()),
2678            network_interfaces: vec![],
2679        }
2680    }
2681}
2682
2683/// The metadata options for the instance. For more information, see Use instance metadata to
2684/// manage your EC2 instance in the Amazon EC2 User Guide.
2685///
2686/// **AWS API**: `ec2.v1.LaunchTemplateInstanceMetadataOptions`
2687/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//LaunchTemplateInstanceMetadataOptions>
2688///
2689/// ## Coverage
2690/// 1 of 6 fields included.
2691/// Omitted fields:
2692/// - `State` — not selected in manifest
2693/// - `HttpPutResponseHopLimit` — not selected in manifest
2694/// - `HttpEndpoint` — not selected in manifest
2695/// - `HttpProtocolIpv6` — not selected in manifest
2696/// - `InstanceMetadataTags` — not selected in manifest
2697#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2698pub struct LaunchTemplateInstanceMetadataOptions {
2699    /// Indicates whether IMDSv2 is required. optional
2700    /// - IMDSv2 is optional. You can choose whether to send a session token in your instance
2701    ///   metadata retrieval requests. If you retrieve IAM role credentials without a session
2702    ///   token, you receive the IMDSv1 role credentials. If you retrieve IAM role credentials
2703    ///   using a valid session token, you receive the IMDSv2 role credentials. required
2704    /// - IMDSv2 is required. You must send a session token in your instance metadata retrieval
2705    ///   requests. With this option, retrieving the IAM role credentials always returns IMDSv2
2706    ///   credentials; IMDSv1 credentials are not available.
2707    #[serde(rename(serialize = "HttpTokens", deserialize = "httpTokens"))]
2708    #[serde(skip_serializing_if = "Option::is_none")]
2709    pub http_tokens: Option<String>,
2710}
2711
2712impl LaunchTemplateInstanceMetadataOptions {
2713    #[cfg(any(test, feature = "test-support"))]
2714    /// Create a fixture instance for testing.
2715    pub fn fixture() -> Self {
2716        Self {
2717            http_tokens: Some("test-http_tokens".into()),
2718        }
2719    }
2720}
2721
2722/// Describes a network interface.
2723///
2724/// **AWS API**: `ec2.v1.LaunchTemplateInstanceNetworkInterfaceSpecification`
2725/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//LaunchTemplateInstanceNetworkInterfaceSpecification>
2726///
2727/// ## Coverage
2728/// 1 of 23 fields included.
2729/// Omitted fields:
2730/// - `AssociateCarrierIpAddress` — not selected in manifest
2731/// - `DeleteOnTermination` — not selected in manifest
2732/// - `Description` — not selected in manifest
2733/// - `DeviceIndex` — not selected in manifest
2734/// - `Groups` — not selected in manifest
2735/// - `InterfaceType` — not selected in manifest
2736/// - `Ipv6AddressCount` — not selected in manifest
2737/// - `Ipv6Addresses` — not selected in manifest
2738/// - `NetworkInterfaceId` — not selected in manifest
2739/// - `PrivateIpAddress` — not selected in manifest
2740/// - `PrivateIpAddresses` — not selected in manifest
2741/// - `SecondaryPrivateIpAddressCount` — not selected in manifest
2742/// - `SubnetId` — not selected in manifest
2743/// - `NetworkCardIndex` — not selected in manifest
2744/// - `Ipv4Prefixes` — not selected in manifest
2745/// - `Ipv4PrefixCount` — not selected in manifest
2746/// - `Ipv6Prefixes` — not selected in manifest
2747/// - `Ipv6PrefixCount` — not selected in manifest
2748/// - `PrimaryIpv6` — not selected in manifest
2749/// - `EnaSrdSpecification` — not selected in manifest
2750/// - `ConnectionTrackingSpecification` — not selected in manifest
2751/// - `EnaQueueCount` — not selected in manifest
2752#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2753pub struct LaunchTemplateInstanceNetworkInterfaceSpecification {
2754    /// Indicates whether to associate a public IPv4 address with eth0 for a new network
2755    /// interface. Amazon Web Services charges for all public IPv4 addresses, including public
2756    /// IPv4 addresses associated with running instances and Elastic IP addresses. For more
2757    /// information, see the Public IPv4 Address tab on the Amazon VPC pricing page.
2758    #[serde(rename(
2759        serialize = "AssociatePublicIpAddress",
2760        deserialize = "associatePublicIpAddress"
2761    ))]
2762    #[serde(skip_serializing_if = "Option::is_none")]
2763    pub associate_public_ip_address: Option<bool>,
2764}
2765
2766impl LaunchTemplateInstanceNetworkInterfaceSpecification {
2767    #[cfg(any(test, feature = "test-support"))]
2768    /// Create a fixture instance for testing.
2769    pub fn fixture() -> Self {
2770        Self {
2771            associate_public_ip_address: Some(false),
2772        }
2773    }
2774}
2775
2776///
2777/// **AWS API**: `ec2.v1.GetEbsEncryptionByDefaultResult`
2778/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//GetEbsEncryptionByDefaultResult>
2779///
2780/// ## Coverage
2781/// 1 of 2 fields included.
2782/// Omitted fields:
2783/// - `SseType` — not selected in manifest
2784#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2785pub struct GetEbsEncryptionByDefaultResponse {
2786    /// Indicates whether encryption by default is enabled.
2787    #[serde(rename(
2788        serialize = "EbsEncryptionByDefault",
2789        deserialize = "ebsEncryptionByDefault"
2790    ))]
2791    #[serde(skip_serializing_if = "Option::is_none")]
2792    pub ebs_encryption_by_default: Option<bool>,
2793}
2794
2795impl GetEbsEncryptionByDefaultResponse {
2796    #[cfg(any(test, feature = "test-support"))]
2797    /// Create a fixture instance for testing.
2798    pub fn fixture() -> Self {
2799        Self {
2800            ebs_encryption_by_default: Some(false),
2801        }
2802    }
2803}
2804
2805///
2806/// **AWS API**: `ec2.v1.EnableEbsEncryptionByDefaultResult`
2807/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//EnableEbsEncryptionByDefaultResult>
2808#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2809pub struct EnableEbsEncryptionByDefaultResponse {
2810    /// The updated status of encryption by default.
2811    #[serde(rename(
2812        serialize = "EbsEncryptionByDefault",
2813        deserialize = "ebsEncryptionByDefault"
2814    ))]
2815    #[serde(skip_serializing_if = "Option::is_none")]
2816    pub ebs_encryption_by_default: Option<bool>,
2817}
2818
2819impl EnableEbsEncryptionByDefaultResponse {
2820    #[cfg(any(test, feature = "test-support"))]
2821    /// Create a fixture instance for testing.
2822    pub fn fixture() -> Self {
2823        Self {
2824            ebs_encryption_by_default: Some(false),
2825        }
2826    }
2827}
2828
2829///
2830/// **AWS API**: `ec2.v1.EnableSnapshotBlockPublicAccessResult`
2831/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//EnableSnapshotBlockPublicAccessResult>
2832#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2833pub struct EnableSnapshotBlockPublicAccessResponse {
2834    /// The state of block public access for snapshots for the account and Region. Returns
2835    /// either block-all-sharing or block-new-sharing if the request succeeds.
2836    #[serde(rename(serialize = "State", deserialize = "state"))]
2837    #[serde(skip_serializing_if = "Option::is_none")]
2838    pub state: Option<String>,
2839}
2840
2841impl EnableSnapshotBlockPublicAccessResponse {
2842    #[cfg(any(test, feature = "test-support"))]
2843    /// Create a fixture instance for testing.
2844    pub fn fixture() -> Self {
2845        Self {
2846            state: Some("test-state".into()),
2847        }
2848    }
2849}
2850
2851///
2852/// **AWS API**: `ec2.v1.EnableImageBlockPublicAccessResult`
2853/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//EnableImageBlockPublicAccessResult>
2854#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2855pub struct EnableImageBlockPublicAccessResponse {
2856    /// Returns block-new-sharing if the request succeeds; otherwise, it returns an error.
2857    #[serde(rename(
2858        serialize = "ImageBlockPublicAccessState",
2859        deserialize = "imageBlockPublicAccessState"
2860    ))]
2861    #[serde(skip_serializing_if = "Option::is_none")]
2862    pub image_block_public_access_state: Option<String>,
2863}
2864
2865impl EnableImageBlockPublicAccessResponse {
2866    #[cfg(any(test, feature = "test-support"))]
2867    /// Create a fixture instance for testing.
2868    pub fn fixture() -> Self {
2869        Self {
2870            image_block_public_access_state: Some("test-image_block_public_access_state".into()),
2871        }
2872    }
2873}
2874
2875///
2876/// **AWS API**: `ec2.v1.TerminateInstancesResult`
2877/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//TerminateInstancesResult>
2878#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2879pub struct TerminateInstancesResponse {
2880    /// Information about the terminated instances.
2881    #[serde(rename(serialize = "InstancesSet", deserialize = "instancesSet"))]
2882    #[serde(default)]
2883    #[serde(skip_serializing_if = "Vec::is_empty")]
2884    pub terminating_instances: Vec<InstanceStateChange>,
2885}
2886
2887impl TerminateInstancesResponse {
2888    #[cfg(any(test, feature = "test-support"))]
2889    /// Create a fixture instance for testing.
2890    pub fn fixture() -> Self {
2891        Self {
2892            terminating_instances: vec![],
2893        }
2894    }
2895}
2896
2897/// Describes an instance state change.
2898///
2899/// **AWS API**: `ec2.v1.InstanceStateChange`
2900/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//InstanceStateChange>
2901#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2902pub struct InstanceStateChange {
2903    /// The ID of the instance.
2904    #[serde(rename(serialize = "InstanceId", deserialize = "instanceId"))]
2905    #[serde(skip_serializing_if = "Option::is_none")]
2906    pub instance_id: Option<String>,
2907
2908    /// The current state of the instance.
2909    #[serde(rename(serialize = "CurrentState", deserialize = "currentState"))]
2910    #[serde(skip_serializing_if = "Option::is_none")]
2911    pub current_state: Option<InstanceState>,
2912
2913    /// The previous state of the instance.
2914    #[serde(rename(serialize = "PreviousState", deserialize = "previousState"))]
2915    #[serde(skip_serializing_if = "Option::is_none")]
2916    pub previous_state: Option<InstanceState>,
2917}
2918
2919impl InstanceStateChange {
2920    #[cfg(any(test, feature = "test-support"))]
2921    /// Create a fixture instance for testing.
2922    pub fn fixture() -> Self {
2923        Self {
2924            instance_id: Some("test-instance_id".into()),
2925            current_state: Some(InstanceState::fixture()),
2926            previous_state: Some(InstanceState::fixture()),
2927        }
2928    }
2929}
2930
2931///
2932/// **AWS API**: `ec2.v1.StopInstancesResult`
2933/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//StopInstancesResult>
2934#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2935pub struct StopInstancesResponse {
2936    /// Information about the stopped instances.
2937    #[serde(rename(serialize = "InstancesSet", deserialize = "instancesSet"))]
2938    #[serde(default)]
2939    #[serde(skip_serializing_if = "Vec::is_empty")]
2940    pub stopping_instances: Vec<InstanceStateChange>,
2941}
2942
2943impl StopInstancesResponse {
2944    #[cfg(any(test, feature = "test-support"))]
2945    /// Create a fixture instance for testing.
2946    pub fn fixture() -> Self {
2947        Self {
2948            stopping_instances: vec![],
2949        }
2950    }
2951}
2952
2953///
2954/// **AWS API**: `ec2.v1.StartInstancesResult`
2955/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//StartInstancesResult>
2956#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2957pub struct StartInstancesResponse {
2958    /// Information about the started instances.
2959    #[serde(rename(serialize = "InstancesSet", deserialize = "instancesSet"))]
2960    #[serde(default)]
2961    #[serde(skip_serializing_if = "Vec::is_empty")]
2962    pub starting_instances: Vec<InstanceStateChange>,
2963}
2964
2965impl StartInstancesResponse {
2966    #[cfg(any(test, feature = "test-support"))]
2967    /// Create a fixture instance for testing.
2968    pub fn fixture() -> Self {
2969        Self {
2970            starting_instances: vec![],
2971        }
2972    }
2973}
2974
2975///
2976/// **AWS API**: `ec2.v1.ModifyInstanceMetadataOptionsResult`
2977/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//ModifyInstanceMetadataOptionsResult>
2978#[derive(Debug, Clone, Default, Serialize, Deserialize)]
2979pub struct ModifyInstanceMetadataOptionsResponse {
2980    /// The ID of the instance.
2981    #[serde(rename(serialize = "InstanceId", deserialize = "instanceId"))]
2982    #[serde(skip_serializing_if = "Option::is_none")]
2983    pub instance_id: Option<String>,
2984
2985    /// The metadata options for the instance.
2986    #[serde(rename(
2987        serialize = "InstanceMetadataOptions",
2988        deserialize = "instanceMetadataOptions"
2989    ))]
2990    #[serde(skip_serializing_if = "Option::is_none")]
2991    pub instance_metadata_options: Option<InstanceMetadataOptionsResponse>,
2992}
2993
2994impl ModifyInstanceMetadataOptionsResponse {
2995    #[cfg(any(test, feature = "test-support"))]
2996    /// Create a fixture instance for testing.
2997    pub fn fixture() -> Self {
2998        Self {
2999            instance_id: Some("test-instance_id".into()),
3000            instance_metadata_options: Some(InstanceMetadataOptionsResponse::fixture()),
3001        }
3002    }
3003}
3004
3005///
3006/// **AWS API**: `ec2.v1.MonitorInstancesResult`
3007/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//MonitorInstancesResult>
3008#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3009pub struct MonitorInstancesResponse {
3010    /// The monitoring information.
3011    #[serde(rename(serialize = "InstancesSet", deserialize = "instancesSet"))]
3012    #[serde(default)]
3013    #[serde(skip_serializing_if = "Vec::is_empty")]
3014    pub instance_monitorings: Vec<InstanceMonitoring>,
3015}
3016
3017impl MonitorInstancesResponse {
3018    #[cfg(any(test, feature = "test-support"))]
3019    /// Create a fixture instance for testing.
3020    pub fn fixture() -> Self {
3021        Self {
3022            instance_monitorings: vec![],
3023        }
3024    }
3025}
3026
3027/// Describes the monitoring of an instance.
3028///
3029/// **AWS API**: `ec2.v1.InstanceMonitoring`
3030/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//InstanceMonitoring>
3031#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3032pub struct InstanceMonitoring {
3033    /// The ID of the instance.
3034    #[serde(rename(serialize = "InstanceId", deserialize = "instanceId"))]
3035    #[serde(skip_serializing_if = "Option::is_none")]
3036    pub instance_id: Option<String>,
3037
3038    /// The monitoring for the instance.
3039    #[serde(rename(serialize = "Monitoring", deserialize = "monitoring"))]
3040    #[serde(skip_serializing_if = "Option::is_none")]
3041    pub monitoring: Option<Monitoring>,
3042}
3043
3044impl InstanceMonitoring {
3045    #[cfg(any(test, feature = "test-support"))]
3046    /// Create a fixture instance for testing.
3047    pub fn fixture() -> Self {
3048        Self {
3049            instance_id: Some("test-instance_id".into()),
3050            monitoring: Some(Monitoring::fixture()),
3051        }
3052    }
3053}
3054
3055///
3056/// **AWS API**: `ec2.v1.AssociateIamInstanceProfileResult`
3057/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//AssociateIamInstanceProfileResult>
3058#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3059pub struct AssociateIamInstanceProfileResponse {
3060    /// Information about the IAM instance profile association.
3061    #[serde(rename(
3062        serialize = "IamInstanceProfileAssociation",
3063        deserialize = "iamInstanceProfileAssociation"
3064    ))]
3065    #[serde(skip_serializing_if = "Option::is_none")]
3066    pub iam_instance_profile_association: Option<IamInstanceProfileAssociation>,
3067}
3068
3069impl AssociateIamInstanceProfileResponse {
3070    #[cfg(any(test, feature = "test-support"))]
3071    /// Create a fixture instance for testing.
3072    pub fn fixture() -> Self {
3073        Self {
3074            iam_instance_profile_association: Some(IamInstanceProfileAssociation::fixture()),
3075        }
3076    }
3077}
3078
3079/// Describes an association between an IAM instance profile and an instance.
3080///
3081/// **AWS API**: `ec2.v1.IamInstanceProfileAssociation`
3082/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//IamInstanceProfileAssociation>
3083///
3084/// ## Coverage
3085/// 4 of 5 fields included.
3086/// Omitted fields:
3087/// - `Timestamp` — not selected in manifest
3088#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3089pub struct IamInstanceProfileAssociation {
3090    /// The ID of the association.
3091    #[serde(rename(serialize = "AssociationId", deserialize = "associationId"))]
3092    #[serde(skip_serializing_if = "Option::is_none")]
3093    pub association_id: Option<String>,
3094
3095    /// The ID of the instance.
3096    #[serde(rename(serialize = "InstanceId", deserialize = "instanceId"))]
3097    #[serde(skip_serializing_if = "Option::is_none")]
3098    pub instance_id: Option<String>,
3099
3100    /// The IAM instance profile.
3101    #[serde(rename(serialize = "IamInstanceProfile", deserialize = "iamInstanceProfile"))]
3102    #[serde(skip_serializing_if = "Option::is_none")]
3103    pub iam_instance_profile: Option<IamInstanceProfile>,
3104
3105    /// The state of the association.
3106    #[serde(rename(serialize = "State", deserialize = "state"))]
3107    #[serde(skip_serializing_if = "Option::is_none")]
3108    pub state: Option<String>,
3109}
3110
3111impl IamInstanceProfileAssociation {
3112    #[cfg(any(test, feature = "test-support"))]
3113    /// Create a fixture instance for testing.
3114    pub fn fixture() -> Self {
3115        Self {
3116            association_id: Some("test-association_id".into()),
3117            instance_id: Some("test-instance_id".into()),
3118            iam_instance_profile: Some(IamInstanceProfile::fixture()),
3119            state: Some("test-state".into()),
3120        }
3121    }
3122}
3123
3124///
3125/// **AWS API**: `ec2.v1.ModifyVolumeResult`
3126/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//ModifyVolumeResult>
3127#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3128pub struct ModifyVolumeResponse {
3129    /// Information about the volume modification.
3130    #[serde(rename(serialize = "VolumeModification", deserialize = "volumeModification"))]
3131    #[serde(skip_serializing_if = "Option::is_none")]
3132    pub volume_modification: Option<VolumeModification>,
3133}
3134
3135impl ModifyVolumeResponse {
3136    #[cfg(any(test, feature = "test-support"))]
3137    /// Create a fixture instance for testing.
3138    pub fn fixture() -> Self {
3139        Self {
3140            volume_modification: Some(VolumeModification::fixture()),
3141        }
3142    }
3143}
3144
3145/// Describes the modification status of an EBS volume.
3146///
3147/// **AWS API**: `ec2.v1.VolumeModification`
3148/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//VolumeModification>
3149///
3150/// ## Coverage
3151/// 5 of 16 fields included.
3152/// Omitted fields:
3153/// - `StatusMessage` — not selected in manifest
3154/// - `TargetSize` — not selected in manifest
3155/// - `TargetMultiAttachEnabled` — not selected in manifest
3156/// - `OriginalSize` — not selected in manifest
3157/// - `OriginalIops` — not selected in manifest
3158/// - `OriginalVolumeType` — not selected in manifest
3159/// - `OriginalThroughput` — not selected in manifest
3160/// - `OriginalMultiAttachEnabled` — not selected in manifest
3161/// - `Progress` — not selected in manifest
3162/// - `StartTime` — not selected in manifest
3163/// - `EndTime` — not selected in manifest
3164#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3165pub struct VolumeModification {
3166    /// The ID of the volume.
3167    #[serde(rename(serialize = "VolumeId", deserialize = "volumeId"))]
3168    #[serde(skip_serializing_if = "Option::is_none")]
3169    pub volume_id: Option<String>,
3170
3171    /// The current modification state.
3172    #[serde(rename(serialize = "ModificationState", deserialize = "modificationState"))]
3173    #[serde(skip_serializing_if = "Option::is_none")]
3174    pub modification_state: Option<String>,
3175
3176    /// The target EBS volume type of the volume.
3177    #[serde(rename(serialize = "TargetVolumeType", deserialize = "targetVolumeType"))]
3178    #[serde(skip_serializing_if = "Option::is_none")]
3179    pub target_volume_type: Option<String>,
3180
3181    /// The target IOPS rate of the volume.
3182    #[serde(rename(serialize = "TargetIops", deserialize = "targetIops"))]
3183    #[serde(skip_serializing_if = "Option::is_none")]
3184    pub target_iops: Option<i32>,
3185
3186    /// The target throughput of the volume, in MiB/s.
3187    #[serde(rename(serialize = "TargetThroughput", deserialize = "targetThroughput"))]
3188    #[serde(skip_serializing_if = "Option::is_none")]
3189    pub target_throughput: Option<i32>,
3190}
3191
3192impl VolumeModification {
3193    #[cfg(any(test, feature = "test-support"))]
3194    /// Create a fixture instance for testing.
3195    pub fn fixture() -> Self {
3196        Self {
3197            volume_id: Some("test-volume_id".into()),
3198            modification_state: Some("test-modification_state".into()),
3199            target_volume_type: Some("test-target_volume_type".into()),
3200            target_iops: Some(100),
3201            target_throughput: Some(100),
3202        }
3203    }
3204}
3205
3206///
3207/// **AWS API**: `ec2.v1.DeleteNatGatewayResult`
3208/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DeleteNatGatewayResult>
3209#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3210pub struct DeleteNatGatewayResponse {
3211    /// The ID of the NAT gateway.
3212    #[serde(rename(serialize = "NatGatewayId", deserialize = "natGatewayId"))]
3213    #[serde(skip_serializing_if = "Option::is_none")]
3214    pub nat_gateway_id: Option<String>,
3215}
3216
3217impl DeleteNatGatewayResponse {
3218    #[cfg(any(test, feature = "test-support"))]
3219    /// Create a fixture instance for testing.
3220    pub fn fixture() -> Self {
3221        Self {
3222            nat_gateway_id: Some("test-nat_gateway_id".into()),
3223        }
3224    }
3225}
3226
3227///
3228/// **AWS API**: `ec2.v1.DeleteVpcEndpointsResult`
3229/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DeleteVpcEndpointsResult>
3230#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3231pub struct DeleteVpcEndpointsResponse {
3232    /// Information about the VPC endpoints that were not successfully deleted.
3233    #[serde(rename(serialize = "Unsuccessful", deserialize = "unsuccessful"))]
3234    #[serde(default)]
3235    #[serde(skip_serializing_if = "Vec::is_empty")]
3236    pub unsuccessful: Vec<UnsuccessfulItem>,
3237}
3238
3239impl DeleteVpcEndpointsResponse {
3240    #[cfg(any(test, feature = "test-support"))]
3241    /// Create a fixture instance for testing.
3242    pub fn fixture() -> Self {
3243        Self {
3244            unsuccessful: vec![],
3245        }
3246    }
3247}
3248
3249/// Information about items that were not successfully processed in a batch call.
3250///
3251/// **AWS API**: `ec2.v1.UnsuccessfulItem`
3252/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//UnsuccessfulItem>
3253#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3254pub struct UnsuccessfulItem {
3255    /// The ID of the resource.
3256    #[serde(rename(serialize = "ResourceId", deserialize = "resourceId"))]
3257    #[serde(skip_serializing_if = "Option::is_none")]
3258    pub resource_id: Option<String>,
3259
3260    /// Information about the error.
3261    #[serde(rename(serialize = "Error", deserialize = "error"))]
3262    #[serde(skip_serializing_if = "Option::is_none")]
3263    pub error: Option<UnsuccessfulItemError>,
3264}
3265
3266impl UnsuccessfulItem {
3267    #[cfg(any(test, feature = "test-support"))]
3268    /// Create a fixture instance for testing.
3269    pub fn fixture() -> Self {
3270        Self {
3271            resource_id: Some("test-resource_id".into()),
3272            error: Some(UnsuccessfulItemError::fixture()),
3273        }
3274    }
3275}
3276
3277/// Information about the error that occurred. For more information about errors, see Error
3278/// codes.
3279///
3280/// **AWS API**: `ec2.v1.UnsuccessfulItemError`
3281/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//UnsuccessfulItemError>
3282#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3283pub struct UnsuccessfulItemError {
3284    /// The error code.
3285    #[serde(rename(serialize = "Code", deserialize = "code"))]
3286    #[serde(skip_serializing_if = "Option::is_none")]
3287    pub code: Option<String>,
3288
3289    /// The error message accompanying the error code.
3290    #[serde(rename(serialize = "Message", deserialize = "message"))]
3291    #[serde(skip_serializing_if = "Option::is_none")]
3292    pub message: Option<String>,
3293}
3294
3295impl UnsuccessfulItemError {
3296    #[cfg(any(test, feature = "test-support"))]
3297    /// Create a fixture instance for testing.
3298    pub fn fixture() -> Self {
3299        Self {
3300            code: Some("test-code".into()),
3301            message: Some("test-message".into()),
3302        }
3303    }
3304}
3305
3306///
3307/// **AWS API**: `ec2.v1.CreateFlowLogsResult`
3308/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//CreateFlowLogsResult>
3309///
3310/// ## Coverage
3311/// 2 of 3 fields included.
3312/// Omitted fields:
3313/// - `ClientToken` — not selected in manifest
3314#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3315pub struct CreateFlowLogsResponse {
3316    /// The IDs of the flow logs.
3317    #[serde(rename(serialize = "FlowLogIdSet", deserialize = "flowLogIdSet"))]
3318    #[serde(default)]
3319    #[serde(skip_serializing_if = "Vec::is_empty")]
3320    pub flow_log_ids: Vec<String>,
3321
3322    /// Information about the flow logs that could not be created successfully.
3323    #[serde(rename(serialize = "Unsuccessful", deserialize = "unsuccessful"))]
3324    #[serde(default)]
3325    #[serde(skip_serializing_if = "Vec::is_empty")]
3326    pub unsuccessful: Vec<UnsuccessfulItem>,
3327}
3328
3329impl CreateFlowLogsResponse {
3330    #[cfg(any(test, feature = "test-support"))]
3331    /// Create a fixture instance for testing.
3332    pub fn fixture() -> Self {
3333        Self {
3334            flow_log_ids: vec![],
3335            unsuccessful: vec![],
3336        }
3337    }
3338}
3339
3340///
3341/// **AWS API**: `ec2.v1.RevokeSecurityGroupIngressResult`
3342/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//RevokeSecurityGroupIngressResult>
3343///
3344/// ## Coverage
3345/// 1 of 3 fields included.
3346/// Omitted fields:
3347/// - `Return` — not selected in manifest
3348/// - `RevokedSecurityGroupRules` — not selected in manifest
3349#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3350pub struct RevokeSecurityGroupIngressResponse {
3351    /// The inbound rules that were unknown to the service. In some cases,
3352    /// unknownIpPermissionSet might be in a different format from the request parameter.
3353    #[serde(rename(
3354        serialize = "UnknownIpPermissionSet",
3355        deserialize = "unknownIpPermissionSet"
3356    ))]
3357    #[serde(default)]
3358    #[serde(skip_serializing_if = "Vec::is_empty")]
3359    pub unknown_ip_permissions: Vec<IpPermission>,
3360}
3361
3362impl RevokeSecurityGroupIngressResponse {
3363    #[cfg(any(test, feature = "test-support"))]
3364    /// Create a fixture instance for testing.
3365    pub fn fixture() -> Self {
3366        Self {
3367            unknown_ip_permissions: vec![],
3368        }
3369    }
3370}
3371
3372///
3373/// **AWS API**: `ec2.v1.RevokeSecurityGroupEgressResult`
3374/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//RevokeSecurityGroupEgressResult>
3375///
3376/// ## Coverage
3377/// 1 of 3 fields included.
3378/// Omitted fields:
3379/// - `Return` — not selected in manifest
3380/// - `RevokedSecurityGroupRules` — not selected in manifest
3381#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3382pub struct RevokeSecurityGroupEgressResponse {
3383    /// The outbound rules that were unknown to the service. In some cases,
3384    /// unknownIpPermissionSet might be in a different format from the request parameter.
3385    #[serde(rename(
3386        serialize = "UnknownIpPermissionSet",
3387        deserialize = "unknownIpPermissionSet"
3388    ))]
3389    #[serde(default)]
3390    #[serde(skip_serializing_if = "Vec::is_empty")]
3391    pub unknown_ip_permissions: Vec<IpPermission>,
3392}
3393
3394impl RevokeSecurityGroupEgressResponse {
3395    #[cfg(any(test, feature = "test-support"))]
3396    /// Create a fixture instance for testing.
3397    pub fn fixture() -> Self {
3398        Self {
3399            unknown_ip_permissions: vec![],
3400        }
3401    }
3402}
3403
3404///
3405/// **AWS API**: `ec2.v1.AuthorizeSecurityGroupIngressResult`
3406/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//AuthorizeSecurityGroupIngressResult>
3407///
3408/// ## Coverage
3409/// 1 of 2 fields included.
3410/// Omitted fields:
3411/// - `Return` — not selected in manifest
3412#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3413pub struct AuthorizeSecurityGroupIngressResponse {
3414    /// Information about the inbound (ingress) security group rules that were added.
3415    #[serde(rename(
3416        serialize = "SecurityGroupRuleSet",
3417        deserialize = "securityGroupRuleSet"
3418    ))]
3419    #[serde(default)]
3420    #[serde(skip_serializing_if = "Vec::is_empty")]
3421    pub security_group_rules: Vec<SecurityGroupRule>,
3422}
3423
3424impl AuthorizeSecurityGroupIngressResponse {
3425    #[cfg(any(test, feature = "test-support"))]
3426    /// Create a fixture instance for testing.
3427    pub fn fixture() -> Self {
3428        Self {
3429            security_group_rules: vec![],
3430        }
3431    }
3432}
3433
3434/// Describes a security group rule.
3435///
3436/// **AWS API**: `ec2.v1.SecurityGroupRule`
3437/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//SecurityGroupRule>
3438///
3439/// ## Coverage
3440/// 6 of 14 fields included.
3441/// Omitted fields:
3442/// - `GroupOwnerId` — not selected in manifest
3443/// - `IsEgress` — not selected in manifest
3444/// - `CidrIpv6` — not selected in manifest
3445/// - `PrefixListId` — not selected in manifest
3446/// - `ReferencedGroupInfo` — not selected in manifest
3447/// - `Description` — not selected in manifest
3448/// - `Tags` — not selected in manifest
3449/// - `SecurityGroupRuleArn` — not selected in manifest
3450#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3451pub struct SecurityGroupRule {
3452    /// The ID of the security group rule.
3453    #[serde(rename(serialize = "SecurityGroupRuleId", deserialize = "securityGroupRuleId"))]
3454    #[serde(skip_serializing_if = "Option::is_none")]
3455    pub security_group_rule_id: Option<String>,
3456
3457    /// The ID of the security group.
3458    #[serde(rename(serialize = "GroupId", deserialize = "groupId"))]
3459    #[serde(skip_serializing_if = "Option::is_none")]
3460    pub group_id: Option<String>,
3461
3462    /// The IP protocol name (tcp, udp, icmp, icmpv6) or number (see Protocol Numbers). Use -1
3463    /// to specify all protocols.
3464    #[serde(rename(serialize = "IpProtocol", deserialize = "ipProtocol"))]
3465    #[serde(skip_serializing_if = "Option::is_none")]
3466    pub ip_protocol: Option<String>,
3467
3468    /// If the protocol is TCP or UDP, this is the start of the port range. If the protocol is
3469    /// ICMP or ICMPv6, this is the ICMP type or -1 (all ICMP types).
3470    #[serde(rename(serialize = "FromPort", deserialize = "fromPort"))]
3471    #[serde(skip_serializing_if = "Option::is_none")]
3472    pub from_port: Option<i32>,
3473
3474    /// If the protocol is TCP or UDP, this is the end of the port range. If the protocol is
3475    /// ICMP or ICMPv6, this is the ICMP code or -1 (all ICMP codes). If the start port is -1
3476    /// (all ICMP types), then the end port must be -1 (all ICMP codes).
3477    #[serde(rename(serialize = "ToPort", deserialize = "toPort"))]
3478    #[serde(skip_serializing_if = "Option::is_none")]
3479    pub to_port: Option<i32>,
3480
3481    /// The IPv4 CIDR range.
3482    #[serde(rename(serialize = "CidrIpv4", deserialize = "cidrIpv4"))]
3483    #[serde(skip_serializing_if = "Option::is_none")]
3484    pub cidr_ipv4: Option<String>,
3485}
3486
3487impl SecurityGroupRule {
3488    #[cfg(any(test, feature = "test-support"))]
3489    /// Create a fixture instance for testing.
3490    pub fn fixture() -> Self {
3491        Self {
3492            security_group_rule_id: Some("test-security_group_rule_id".into()),
3493            group_id: Some("test-group_id".into()),
3494            ip_protocol: Some("test-ip_protocol".into()),
3495            from_port: Some(100),
3496            to_port: Some(100),
3497            cidr_ipv4: Some("test-cidr_ipv4".into()),
3498        }
3499    }
3500}
3501
3502///
3503/// **AWS API**: `ec2.v1.DeleteSecurityGroupResult`
3504/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DeleteSecurityGroupResult>
3505///
3506/// ## Coverage
3507/// 1 of 2 fields included.
3508/// Omitted fields:
3509/// - `Return` — not selected in manifest
3510#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3511pub struct DeleteSecurityGroupResponse {
3512    /// The ID of the deleted security group.
3513    #[serde(rename(serialize = "GroupId", deserialize = "groupId"))]
3514    #[serde(skip_serializing_if = "Option::is_none")]
3515    pub group_id: Option<String>,
3516}
3517
3518impl DeleteSecurityGroupResponse {
3519    #[cfg(any(test, feature = "test-support"))]
3520    /// Create a fixture instance for testing.
3521    pub fn fixture() -> Self {
3522        Self {
3523            group_id: Some("test-group_id".into()),
3524        }
3525    }
3526}
3527
3528///
3529/// **AWS API**: `ec2.v1.DeregisterImageResult`
3530/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DeregisterImageResult>
3531///
3532/// ## Coverage
3533/// 1 of 2 fields included.
3534/// Omitted fields:
3535/// - `Return` — not selected in manifest
3536#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3537pub struct DeregisterImageResponse {
3538    /// The deletion result for each snapshot associated with the AMI, including the snapshot ID
3539    /// and its success or error code.
3540    #[serde(rename(
3541        serialize = "DeleteSnapshotResultSet",
3542        deserialize = "deleteSnapshotResultSet"
3543    ))]
3544    #[serde(default)]
3545    #[serde(skip_serializing_if = "Vec::is_empty")]
3546    pub delete_snapshot_results: Vec<DeleteSnapshotReturnCode>,
3547}
3548
3549impl DeregisterImageResponse {
3550    #[cfg(any(test, feature = "test-support"))]
3551    /// Create a fixture instance for testing.
3552    pub fn fixture() -> Self {
3553        Self {
3554            delete_snapshot_results: vec![],
3555        }
3556    }
3557}
3558
3559///
3560/// **AWS API**: `ec2.v1.DescribeInstancesRequest`
3561/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeInstancesRequest>
3562///
3563/// ## Coverage
3564/// 3 of 5 fields included.
3565/// Omitted fields:
3566/// - `DryRun` — not selected in manifest
3567/// - `Filters` — not selected in manifest
3568#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3569pub struct DescribeInstancesRequest {
3570    /// The instance IDs. Default: Describes all your instances.
3571    #[serde(rename = "InstanceId")]
3572    #[serde(default)]
3573    #[serde(skip_serializing_if = "Vec::is_empty")]
3574    pub instance_ids: Vec<String>,
3575
3576    /// The token returned from a previous paginated request. Pagination continues from the end
3577    /// of the items returned by the previous request.
3578    #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
3579    #[serde(skip_serializing_if = "Option::is_none")]
3580    pub next_token: Option<String>,
3581
3582    /// The maximum number of items to return for this request. To get the next page of items,
3583    /// make another request with the token returned in the output. For more information, see
3584    /// Pagination. You cannot specify this parameter and the instance IDs parameter in the same
3585    /// request.
3586    #[serde(rename(serialize = "MaxResults", deserialize = "maxResults"))]
3587    #[serde(skip_serializing_if = "Option::is_none")]
3588    pub max_results: Option<i32>,
3589}
3590
3591impl DescribeInstancesRequest {
3592    #[cfg(any(test, feature = "test-support"))]
3593    /// Create a fixture instance for testing.
3594    pub fn fixture() -> Self {
3595        Self {
3596            instance_ids: vec![],
3597            next_token: Some("test-next_token".into()),
3598            max_results: Some(100),
3599        }
3600    }
3601}
3602
3603///
3604/// **AWS API**: `ec2.v1.DescribeVolumesRequest`
3605/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeVolumesRequest>
3606///
3607/// ## Coverage
3608/// 3 of 5 fields included.
3609/// Omitted fields:
3610/// - `DryRun` — not selected in manifest
3611/// - `Filters` — not selected in manifest
3612#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3613pub struct DescribeVolumesRequest {
3614    /// The volume IDs. If not specified, then all volumes are included in the response.
3615    #[serde(rename = "VolumeId")]
3616    #[serde(default)]
3617    #[serde(skip_serializing_if = "Vec::is_empty")]
3618    pub volume_ids: Vec<String>,
3619
3620    /// The token returned from a previous paginated request. Pagination continues from the end
3621    /// of the items returned by the previous request.
3622    #[serde(rename(serialize = "NextToken", deserialize = "nextToken"))]
3623    #[serde(skip_serializing_if = "Option::is_none")]
3624    pub next_token: Option<String>,
3625
3626    /// The maximum number of items to return for this request. To get the next page of items,
3627    /// make another request with the token returned in the output. For more information, see
3628    /// Pagination.
3629    #[serde(rename(serialize = "MaxResults", deserialize = "maxResults"))]
3630    #[serde(skip_serializing_if = "Option::is_none")]
3631    pub max_results: Option<i32>,
3632}
3633
3634impl DescribeVolumesRequest {
3635    #[cfg(any(test, feature = "test-support"))]
3636    /// Create a fixture instance for testing.
3637    pub fn fixture() -> Self {
3638        Self {
3639            volume_ids: vec![],
3640            next_token: Some("test-next_token".into()),
3641            max_results: Some(100),
3642        }
3643    }
3644}
3645
3646///
3647/// **AWS API**: `ec2.v1.DescribeSnapshotsRequest`
3648/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeSnapshotsRequest>
3649///
3650/// ## Coverage
3651/// 4 of 7 fields included.
3652/// Omitted fields:
3653/// - `RestorableByUserIds` — not selected in manifest
3654/// - `DryRun` — not selected in manifest
3655/// - `Filters` — not selected in manifest
3656#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3657pub struct DescribeSnapshotsRequest {
3658    /// Scopes the results to snapshots with the specified owners. You can specify a combination
3659    /// of Amazon Web Services account IDs, self, and amazon.
3660    #[serde(rename = "Owner")]
3661    #[serde(default)]
3662    #[serde(skip_serializing_if = "Vec::is_empty")]
3663    pub owner_ids: Vec<String>,
3664
3665    /// The snapshot IDs. Default: Describes the snapshots for which you have create volume
3666    /// permissions.
3667    #[serde(rename = "SnapshotId")]
3668    #[serde(default)]
3669    #[serde(skip_serializing_if = "Vec::is_empty")]
3670    pub snapshot_ids: Vec<String>,
3671
3672    /// The token returned from a previous paginated request. Pagination continues from the end
3673    /// of the items returned by the previous request.
3674    #[serde(rename = "NextToken")]
3675    #[serde(skip_serializing_if = "Option::is_none")]
3676    pub next_token: Option<String>,
3677
3678    /// The maximum number of items to return for this request. To get the next page of items,
3679    /// make another request with the token returned in the output. For more information, see
3680    /// Pagination.
3681    #[serde(rename = "MaxResults")]
3682    #[serde(skip_serializing_if = "Option::is_none")]
3683    pub max_results: Option<i32>,
3684}
3685
3686impl DescribeSnapshotsRequest {
3687    #[cfg(any(test, feature = "test-support"))]
3688    /// Create a fixture instance for testing.
3689    pub fn fixture() -> Self {
3690        Self {
3691            owner_ids: vec![],
3692            snapshot_ids: vec![],
3693            next_token: Some("test-next_token".into()),
3694            max_results: Some(100),
3695        }
3696    }
3697}
3698
3699///
3700/// **AWS API**: `ec2.v1.DescribeImagesRequest`
3701/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeImagesRequest>
3702///
3703/// ## Coverage
3704/// 2 of 9 fields included.
3705/// Omitted fields:
3706/// - `ExecutableUsers` — not selected in manifest
3707/// - `IncludeDeprecated` — not selected in manifest
3708/// - `IncludeDisabled` — not selected in manifest
3709/// - `MaxResults` — not selected in manifest
3710/// - `NextToken` — not selected in manifest
3711/// - `DryRun` — not selected in manifest
3712/// - `Filters` — not selected in manifest
3713#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3714pub struct DescribeImagesRequest {
3715    /// Scopes the results to images with the specified owners. You can specify a combination of
3716    /// Amazon Web Services account IDs, self, amazon, aws-backup-vault, and aws-marketplace. If
3717    /// you omit this parameter, the results include all images for which you have launch
3718    /// permissions, regardless of ownership.
3719    #[serde(rename = "Owner")]
3720    #[serde(default)]
3721    #[serde(skip_serializing_if = "Vec::is_empty")]
3722    pub owners: Vec<String>,
3723
3724    /// The image IDs. Default: Describes all images available to you.
3725    #[serde(rename = "ImageId")]
3726    #[serde(default)]
3727    #[serde(skip_serializing_if = "Vec::is_empty")]
3728    pub image_ids: Vec<String>,
3729}
3730
3731impl DescribeImagesRequest {
3732    #[cfg(any(test, feature = "test-support"))]
3733    /// Create a fixture instance for testing.
3734    pub fn fixture() -> Self {
3735        Self {
3736            owners: vec![],
3737            image_ids: vec![],
3738        }
3739    }
3740}
3741
3742///
3743/// **AWS API**: `ec2.v1.DescribeSecurityGroupsRequest`
3744/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeSecurityGroupsRequest>
3745///
3746/// ## Coverage
3747/// 3 of 6 fields included.
3748/// Omitted fields:
3749/// - `GroupNames` — not selected in manifest
3750/// - `DryRun` — not selected in manifest
3751/// - `Filters` — not selected in manifest
3752#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3753pub struct DescribeSecurityGroupsRequest {
3754    /// The IDs of the security groups. Required for security groups in a nondefault VPC.
3755    /// Default: Describes all of your security groups.
3756    #[serde(rename = "GroupId")]
3757    #[serde(default)]
3758    #[serde(skip_serializing_if = "Vec::is_empty")]
3759    pub group_ids: Vec<String>,
3760
3761    /// The token returned from a previous paginated request. Pagination continues from the end
3762    /// of the items returned by the previous request.
3763    #[serde(rename = "NextToken")]
3764    #[serde(skip_serializing_if = "Option::is_none")]
3765    pub next_token: Option<String>,
3766
3767    /// The maximum number of items to return for this request. To get the next page of items,
3768    /// make another request with the token returned in the output. This value can be between 5
3769    /// and 1000. If this parameter is not specified, then all items are returned. For more
3770    /// information, see Pagination.
3771    #[serde(rename = "MaxResults")]
3772    #[serde(skip_serializing_if = "Option::is_none")]
3773    pub max_results: Option<i32>,
3774}
3775
3776impl DescribeSecurityGroupsRequest {
3777    #[cfg(any(test, feature = "test-support"))]
3778    /// Create a fixture instance for testing.
3779    pub fn fixture() -> Self {
3780        Self {
3781            group_ids: vec![],
3782            next_token: Some("test-next_token".into()),
3783            max_results: Some(100),
3784        }
3785    }
3786}
3787
3788///
3789/// **AWS API**: `ec2.v1.DescribeAddressesRequest`
3790/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeAddressesRequest>
3791///
3792/// ## Coverage
3793/// 2 of 4 fields included.
3794/// Omitted fields:
3795/// - `DryRun` — not selected in manifest
3796/// - `Filters` — not selected in manifest
3797#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3798pub struct DescribeAddressesRequest {
3799    /// Information about the allocation IDs.
3800    #[serde(rename = "AllocationId")]
3801    #[serde(default)]
3802    #[serde(skip_serializing_if = "Vec::is_empty")]
3803    pub allocation_ids: Vec<String>,
3804
3805    /// One or more Elastic IP addresses. Default: Describes all your Elastic IP addresses.
3806    #[serde(rename = "PublicIp")]
3807    #[serde(default)]
3808    #[serde(skip_serializing_if = "Vec::is_empty")]
3809    pub public_ips: Vec<String>,
3810}
3811
3812impl DescribeAddressesRequest {
3813    #[cfg(any(test, feature = "test-support"))]
3814    /// Create a fixture instance for testing.
3815    pub fn fixture() -> Self {
3816        Self {
3817            allocation_ids: vec![],
3818            public_ips: vec![],
3819        }
3820    }
3821}
3822
3823///
3824/// **AWS API**: `ec2.v1.DescribeNatGatewaysRequest`
3825/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeNatGatewaysRequest>
3826///
3827/// ## Coverage
3828/// 3 of 5 fields included.
3829/// Omitted fields:
3830/// - `DryRun` — not selected in manifest
3831/// - `Filter` — not selected in manifest
3832#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3833pub struct DescribeNatGatewaysRequest {
3834    /// The IDs of the NAT gateways.
3835    #[serde(rename = "NatGatewayId")]
3836    #[serde(default)]
3837    #[serde(skip_serializing_if = "Vec::is_empty")]
3838    pub nat_gateway_ids: Vec<String>,
3839
3840    /// The token returned from a previous paginated request. Pagination continues from the end
3841    /// of the items returned by the previous request.
3842    #[serde(rename = "NextToken")]
3843    #[serde(skip_serializing_if = "Option::is_none")]
3844    pub next_token: Option<String>,
3845
3846    /// The maximum number of items to return for this request. To get the next page of items,
3847    /// make another request with the token returned in the output. For more information, see
3848    /// Pagination.
3849    #[serde(rename = "MaxResults")]
3850    #[serde(skip_serializing_if = "Option::is_none")]
3851    pub max_results: Option<i32>,
3852}
3853
3854impl DescribeNatGatewaysRequest {
3855    #[cfg(any(test, feature = "test-support"))]
3856    /// Create a fixture instance for testing.
3857    pub fn fixture() -> Self {
3858        Self {
3859            nat_gateway_ids: vec![],
3860            next_token: Some("test-next_token".into()),
3861            max_results: Some(100),
3862        }
3863    }
3864}
3865
3866///
3867/// **AWS API**: `ec2.v1.DescribeRouteTablesRequest`
3868/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeRouteTablesRequest>
3869///
3870/// ## Coverage
3871/// 3 of 5 fields included.
3872/// Omitted fields:
3873/// - `DryRun` — not selected in manifest
3874/// - `Filters` — not selected in manifest
3875#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3876pub struct DescribeRouteTablesRequest {
3877    /// The IDs of the route tables.
3878    #[serde(rename = "RouteTableId")]
3879    #[serde(default)]
3880    #[serde(skip_serializing_if = "Vec::is_empty")]
3881    pub route_table_ids: Vec<String>,
3882
3883    /// The token returned from a previous paginated request. Pagination continues from the end
3884    /// of the items returned by the previous request.
3885    #[serde(rename = "NextToken")]
3886    #[serde(skip_serializing_if = "Option::is_none")]
3887    pub next_token: Option<String>,
3888
3889    /// The maximum number of items to return for this request. To get the next page of items,
3890    /// make another request with the token returned in the output. For more information, see
3891    /// Pagination.
3892    #[serde(rename = "MaxResults")]
3893    #[serde(skip_serializing_if = "Option::is_none")]
3894    pub max_results: Option<i32>,
3895}
3896
3897impl DescribeRouteTablesRequest {
3898    #[cfg(any(test, feature = "test-support"))]
3899    /// Create a fixture instance for testing.
3900    pub fn fixture() -> Self {
3901        Self {
3902            route_table_ids: vec![],
3903            next_token: Some("test-next_token".into()),
3904            max_results: Some(100),
3905        }
3906    }
3907}
3908
3909///
3910/// **AWS API**: `ec2.v1.DescribeNetworkAclsRequest`
3911/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeNetworkAclsRequest>
3912///
3913/// ## Coverage
3914/// 3 of 5 fields included.
3915/// Omitted fields:
3916/// - `DryRun` — not selected in manifest
3917/// - `Filters` — not selected in manifest
3918#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3919pub struct DescribeNetworkAclsRequest {
3920    /// The IDs of the network ACLs.
3921    #[serde(rename = "NetworkAclId")]
3922    #[serde(default)]
3923    #[serde(skip_serializing_if = "Vec::is_empty")]
3924    pub network_acl_ids: Vec<String>,
3925
3926    /// The token returned from a previous paginated request. Pagination continues from the end
3927    /// of the items returned by the previous request.
3928    #[serde(rename = "NextToken")]
3929    #[serde(skip_serializing_if = "Option::is_none")]
3930    pub next_token: Option<String>,
3931
3932    /// The maximum number of items to return for this request. To get the next page of items,
3933    /// make another request with the token returned in the output. For more information, see
3934    /// Pagination.
3935    #[serde(rename = "MaxResults")]
3936    #[serde(skip_serializing_if = "Option::is_none")]
3937    pub max_results: Option<i32>,
3938}
3939
3940impl DescribeNetworkAclsRequest {
3941    #[cfg(any(test, feature = "test-support"))]
3942    /// Create a fixture instance for testing.
3943    pub fn fixture() -> Self {
3944        Self {
3945            network_acl_ids: vec![],
3946            next_token: Some("test-next_token".into()),
3947            max_results: Some(100),
3948        }
3949    }
3950}
3951
3952///
3953/// **AWS API**: `ec2.v1.DescribeFlowLogsRequest`
3954/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeFlowLogsRequest>
3955///
3956/// ## Coverage
3957/// 3 of 5 fields included.
3958/// Omitted fields:
3959/// - `DryRun` — not selected in manifest
3960/// - `Filter` — not selected in manifest
3961#[derive(Debug, Clone, Default, Serialize, Deserialize)]
3962pub struct DescribeFlowLogsRequest {
3963    /// One or more flow log IDs. Constraint: Maximum of 1000 flow log IDs.
3964    #[serde(rename = "FlowLogId")]
3965    #[serde(default)]
3966    #[serde(skip_serializing_if = "Vec::is_empty")]
3967    pub flow_log_ids: Vec<String>,
3968
3969    /// The token to request the next page of items. Pagination continues from the end of the
3970    /// items returned by the previous request.
3971    #[serde(rename = "NextToken")]
3972    #[serde(skip_serializing_if = "Option::is_none")]
3973    pub next_token: Option<String>,
3974
3975    /// The maximum number of items to return for this request. To get the next page of items,
3976    /// make another request with the token returned in the output. For more information, see
3977    /// Pagination.
3978    #[serde(rename = "MaxResults")]
3979    #[serde(skip_serializing_if = "Option::is_none")]
3980    pub max_results: Option<i32>,
3981}
3982
3983impl DescribeFlowLogsRequest {
3984    #[cfg(any(test, feature = "test-support"))]
3985    /// Create a fixture instance for testing.
3986    pub fn fixture() -> Self {
3987        Self {
3988            flow_log_ids: vec![],
3989            next_token: Some("test-next_token".into()),
3990            max_results: Some(100),
3991        }
3992    }
3993}
3994
3995///
3996/// **AWS API**: `ec2.v1.DescribeVpcsRequest`
3997/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeVpcsRequest>
3998///
3999/// ## Coverage
4000/// 3 of 5 fields included.
4001/// Omitted fields:
4002/// - `Filters` — not selected in manifest
4003/// - `DryRun` — not selected in manifest
4004#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4005pub struct DescribeVpcsRequest {
4006    /// The IDs of the VPCs.
4007    #[serde(rename = "VpcId")]
4008    #[serde(default)]
4009    #[serde(skip_serializing_if = "Vec::is_empty")]
4010    pub vpc_ids: Vec<String>,
4011
4012    /// The token returned from a previous paginated request. Pagination continues from the end
4013    /// of the items returned by the previous request.
4014    #[serde(rename = "NextToken")]
4015    #[serde(skip_serializing_if = "Option::is_none")]
4016    pub next_token: Option<String>,
4017
4018    /// The maximum number of items to return for this request. To get the next page of items,
4019    /// make another request with the token returned in the output. For more information, see
4020    /// Pagination.
4021    #[serde(rename = "MaxResults")]
4022    #[serde(skip_serializing_if = "Option::is_none")]
4023    pub max_results: Option<i32>,
4024}
4025
4026impl DescribeVpcsRequest {
4027    #[cfg(any(test, feature = "test-support"))]
4028    /// Create a fixture instance for testing.
4029    pub fn fixture() -> Self {
4030        Self {
4031            vpc_ids: vec![],
4032            next_token: Some("test-next_token".into()),
4033            max_results: Some(100),
4034        }
4035    }
4036}
4037
4038///
4039/// **AWS API**: `ec2.v1.DescribeVpcEndpointsRequest`
4040/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeVpcEndpointsRequest>
4041///
4042/// ## Coverage
4043/// 3 of 5 fields included.
4044/// Omitted fields:
4045/// - `DryRun` — not selected in manifest
4046/// - `Filters` — not selected in manifest
4047#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4048pub struct DescribeVpcEndpointsRequest {
4049    /// The IDs of the VPC endpoints.
4050    #[serde(rename = "VpcEndpointId")]
4051    #[serde(default)]
4052    #[serde(skip_serializing_if = "Vec::is_empty")]
4053    pub vpc_endpoint_ids: Vec<String>,
4054
4055    /// The token for the next set of items to return. (You received this token from a prior
4056    /// call.)
4057    #[serde(rename = "NextToken")]
4058    #[serde(skip_serializing_if = "Option::is_none")]
4059    pub next_token: Option<String>,
4060
4061    /// The maximum number of items to return for this request. The request returns a token that
4062    /// you can specify in a subsequent call to get the next set of results. Constraint: If the
4063    /// value is greater than 1,000, we return only 1,000 items.
4064    #[serde(rename = "MaxResults")]
4065    #[serde(skip_serializing_if = "Option::is_none")]
4066    pub max_results: Option<i32>,
4067}
4068
4069impl DescribeVpcEndpointsRequest {
4070    #[cfg(any(test, feature = "test-support"))]
4071    /// Create a fixture instance for testing.
4072    pub fn fixture() -> Self {
4073        Self {
4074            vpc_endpoint_ids: vec![],
4075            next_token: Some("test-next_token".into()),
4076            max_results: Some(100),
4077        }
4078    }
4079}
4080
4081///
4082/// **AWS API**: `ec2.v1.DescribeVpcPeeringConnectionsRequest`
4083/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeVpcPeeringConnectionsRequest>
4084///
4085/// ## Coverage
4086/// 3 of 5 fields included.
4087/// Omitted fields:
4088/// - `DryRun` — not selected in manifest
4089/// - `Filters` — not selected in manifest
4090#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4091pub struct DescribeVpcPeeringConnectionsRequest {
4092    /// The IDs of the VPC peering connections. Default: Describes all your VPC peering
4093    /// connections.
4094    #[serde(rename = "VpcPeeringConnectionId")]
4095    #[serde(default)]
4096    #[serde(skip_serializing_if = "Vec::is_empty")]
4097    pub vpc_peering_connection_ids: Vec<String>,
4098
4099    /// The token returned from a previous paginated request. Pagination continues from the end
4100    /// of the items returned by the previous request.
4101    #[serde(rename = "NextToken")]
4102    #[serde(skip_serializing_if = "Option::is_none")]
4103    pub next_token: Option<String>,
4104
4105    /// The maximum number of items to return for this request. To get the next page of items,
4106    /// make another request with the token returned in the output. For more information, see
4107    /// Pagination.
4108    #[serde(rename = "MaxResults")]
4109    #[serde(skip_serializing_if = "Option::is_none")]
4110    pub max_results: Option<i32>,
4111}
4112
4113impl DescribeVpcPeeringConnectionsRequest {
4114    #[cfg(any(test, feature = "test-support"))]
4115    /// Create a fixture instance for testing.
4116    pub fn fixture() -> Self {
4117        Self {
4118            vpc_peering_connection_ids: vec![],
4119            next_token: Some("test-next_token".into()),
4120            max_results: Some(100),
4121        }
4122    }
4123}
4124
4125///
4126/// **AWS API**: `ec2.v1.DescribeLaunchTemplatesRequest`
4127/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeLaunchTemplatesRequest>
4128///
4129/// ## Coverage
4130/// 3 of 6 fields included.
4131/// Omitted fields:
4132/// - `DryRun` — not selected in manifest
4133/// - `LaunchTemplateNames` — not selected in manifest
4134/// - `Filters` — not selected in manifest
4135#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4136pub struct DescribeLaunchTemplatesRequest {
4137    /// One or more launch template IDs.
4138    #[serde(rename = "LaunchTemplateId")]
4139    #[serde(default)]
4140    #[serde(skip_serializing_if = "Vec::is_empty")]
4141    pub launch_template_ids: Vec<String>,
4142
4143    /// The token to request the next page of results.
4144    #[serde(rename = "NextToken")]
4145    #[serde(skip_serializing_if = "Option::is_none")]
4146    pub next_token: Option<String>,
4147
4148    /// The maximum number of results to return in a single call. To retrieve the remaining
4149    /// results, make another call with the returned NextToken value. This value can be between
4150    /// 1 and 200.
4151    #[serde(rename = "MaxResults")]
4152    #[serde(skip_serializing_if = "Option::is_none")]
4153    pub max_results: Option<i32>,
4154}
4155
4156impl DescribeLaunchTemplatesRequest {
4157    #[cfg(any(test, feature = "test-support"))]
4158    /// Create a fixture instance for testing.
4159    pub fn fixture() -> Self {
4160        Self {
4161            launch_template_ids: vec![],
4162            next_token: Some("test-next_token".into()),
4163            max_results: Some(100),
4164        }
4165    }
4166}
4167
4168///
4169/// **AWS API**: `ec2.v1.DescribeLaunchTemplateVersionsRequest`
4170/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeLaunchTemplateVersionsRequest>
4171///
4172/// ## Coverage
4173/// 4 of 10 fields included.
4174/// Omitted fields:
4175/// - `DryRun` — not selected in manifest
4176/// - `LaunchTemplateName` — not selected in manifest
4177/// - `MinVersion` — not selected in manifest
4178/// - `MaxVersion` — not selected in manifest
4179/// - `Filters` — not selected in manifest
4180/// - `ResolveAlias` — not selected in manifest
4181#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4182pub struct DescribeLaunchTemplateVersionsRequest {
4183    /// The ID of the launch template. To describe one or more versions of a specified launch
4184    /// template, you must specify either the launch template ID or the launch template name,
4185    /// but not both. To describe all the latest or default launch template versions in your
4186    /// account, you must omit this parameter.
4187    #[serde(rename = "LaunchTemplateId")]
4188    #[serde(skip_serializing_if = "Option::is_none")]
4189    pub launch_template_id: Option<String>,
4190
4191    /// One or more versions of the launch template. Valid values depend on whether you are
4192    /// describing a specified launch template (by ID or name) or all launch templates in your
4193    /// account. To describe one or more versions of a specified launch template, valid values
4194    /// are $Latest, $Default, and numbers. To describe all launch templates in your account
4195    /// that are defined as the latest version, the valid value is $Latest. To describe all
4196    /// launch templates in your account that are defined as the default version, the valid
4197    /// value is $Default. You can specify $Latest and $Default in the same request. You cannot
4198    /// specify numbers.
4199    #[serde(rename = "LaunchTemplateVersion")]
4200    #[serde(default)]
4201    #[serde(skip_serializing_if = "Vec::is_empty")]
4202    pub versions: Vec<String>,
4203
4204    /// The token to request the next page of results.
4205    #[serde(rename = "NextToken")]
4206    #[serde(skip_serializing_if = "Option::is_none")]
4207    pub next_token: Option<String>,
4208
4209    /// The maximum number of results to return in a single call. To retrieve the remaining
4210    /// results, make another call with the returned NextToken value. This value can be between
4211    /// 1 and 200.
4212    #[serde(rename = "MaxResults")]
4213    #[serde(skip_serializing_if = "Option::is_none")]
4214    pub max_results: Option<i32>,
4215}
4216
4217impl DescribeLaunchTemplateVersionsRequest {
4218    #[cfg(any(test, feature = "test-support"))]
4219    /// Create a fixture instance for testing.
4220    pub fn fixture() -> Self {
4221        Self {
4222            launch_template_id: Some("test-launch_template_id".into()),
4223            versions: vec![],
4224            next_token: Some("test-next_token".into()),
4225            max_results: Some(100),
4226        }
4227    }
4228}
4229
4230///
4231/// **AWS API**: `ec2.v1.DescribeSnapshotAttributeRequest`
4232/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DescribeSnapshotAttributeRequest>
4233///
4234/// ## Coverage
4235/// 2 of 3 fields included.
4236/// Omitted fields:
4237/// - `DryRun` — not selected in manifest
4238#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4239pub struct DescribeSnapshotAttributeRequest {
4240    /// The ID of the EBS snapshot.
4241    #[serde(rename = "SnapshotId")]
4242    pub snapshot_id: String,
4243
4244    /// The snapshot attribute you would like to view.
4245    #[serde(rename = "Attribute")]
4246    pub attribute: String,
4247}
4248
4249impl DescribeSnapshotAttributeRequest {
4250    #[cfg(any(test, feature = "test-support"))]
4251    /// Create a fixture instance for testing.
4252    pub fn fixture() -> Self {
4253        Self {
4254            snapshot_id: "test-snapshot_id".into(),
4255            attribute: "test-attribute".into(),
4256        }
4257    }
4258}
4259
4260///
4261/// **AWS API**: `ec2.v1.GetEbsEncryptionByDefaultRequest`
4262/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//GetEbsEncryptionByDefaultRequest>
4263#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4264pub struct GetEbsEncryptionByDefaultRequest {
4265    /// Checks whether you have the required permissions for the action, without actually making
4266    /// the request, and provides an error response. If you have the required permissions, the
4267    /// error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.
4268    #[serde(rename = "DryRun")]
4269    #[serde(skip_serializing_if = "Option::is_none")]
4270    pub dry_run: Option<bool>,
4271}
4272
4273impl GetEbsEncryptionByDefaultRequest {
4274    #[cfg(any(test, feature = "test-support"))]
4275    /// Create a fixture instance for testing.
4276    pub fn fixture() -> Self {
4277        Self {
4278            dry_run: Some(false),
4279        }
4280    }
4281}
4282
4283///
4284/// **AWS API**: `ec2.v1.TerminateInstancesRequest`
4285/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//TerminateInstancesRequest>
4286///
4287/// ## Coverage
4288/// 1 of 4 fields included.
4289/// Omitted fields:
4290/// - `Force` — not selected in manifest
4291/// - `SkipOsShutdown` — not selected in manifest
4292/// - `DryRun` — not selected in manifest
4293#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4294pub struct TerminateInstancesRequest {
4295    /// The IDs of the instances. Constraints: Up to 1000 instance IDs. We recommend breaking up
4296    /// this request into smaller batches.
4297    #[serde(rename = "InstanceId")]
4298    #[serde(default)]
4299    pub instance_ids: Vec<String>,
4300}
4301
4302impl TerminateInstancesRequest {
4303    #[cfg(any(test, feature = "test-support"))]
4304    /// Create a fixture instance for testing.
4305    pub fn fixture() -> Self {
4306        Self {
4307            instance_ids: vec![],
4308        }
4309    }
4310}
4311
4312///
4313/// **AWS API**: `ec2.v1.StopInstancesRequest`
4314/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//StopInstancesRequest>
4315///
4316/// ## Coverage
4317/// 1 of 5 fields included.
4318/// Omitted fields:
4319/// - `Hibernate` — not selected in manifest
4320/// - `SkipOsShutdown` — not selected in manifest
4321/// - `DryRun` — not selected in manifest
4322/// - `Force` — not selected in manifest
4323#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4324pub struct StopInstancesRequest {
4325    /// The IDs of the instances.
4326    #[serde(rename = "InstanceId")]
4327    #[serde(default)]
4328    pub instance_ids: Vec<String>,
4329}
4330
4331impl StopInstancesRequest {
4332    #[cfg(any(test, feature = "test-support"))]
4333    /// Create a fixture instance for testing.
4334    pub fn fixture() -> Self {
4335        Self {
4336            instance_ids: vec![],
4337        }
4338    }
4339}
4340
4341///
4342/// **AWS API**: `ec2.v1.StartInstancesRequest`
4343/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//StartInstancesRequest>
4344///
4345/// ## Coverage
4346/// 1 of 3 fields included.
4347/// Omitted fields:
4348/// - `AdditionalInfo` — not selected in manifest
4349/// - `DryRun` — not selected in manifest
4350#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4351pub struct StartInstancesRequest {
4352    /// The IDs of the instances.
4353    #[serde(rename = "InstanceId")]
4354    #[serde(default)]
4355    pub instance_ids: Vec<String>,
4356}
4357
4358impl StartInstancesRequest {
4359    #[cfg(any(test, feature = "test-support"))]
4360    /// Create a fixture instance for testing.
4361    pub fn fixture() -> Self {
4362        Self {
4363            instance_ids: vec![],
4364        }
4365    }
4366}
4367
4368///
4369/// **AWS API**: `ec2.v1.ModifyInstanceAttributeRequest`
4370/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//ModifyInstanceAttributeRequest>
4371///
4372/// ## Coverage
4373/// 1 of 17 fields included.
4374/// Omitted fields:
4375/// - `SourceDestCheck` — not selected in manifest
4376/// - `DisableApiStop` — not selected in manifest
4377/// - `DryRun` — not selected in manifest
4378/// - `Attribute` — not selected in manifest
4379/// - `Value` — not selected in manifest
4380/// - `BlockDeviceMappings` — not selected in manifest
4381/// - `DisableApiTermination` — not selected in manifest
4382/// - `InstanceType` — not selected in manifest
4383/// - `Kernel` — not selected in manifest
4384/// - `Ramdisk` — not selected in manifest
4385/// - `UserData` — not selected in manifest
4386/// - `InstanceInitiatedShutdownBehavior` — not selected in manifest
4387/// - `Groups` — not selected in manifest
4388/// - `EbsOptimized` — not selected in manifest
4389/// - `SriovNetSupport` — not selected in manifest
4390/// - `EnaSupport` — not selected in manifest
4391#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4392pub struct ModifyInstanceAttributeRequest {
4393    /// The ID of the instance.
4394    #[serde(rename(serialize = "InstanceId", deserialize = "instanceId"))]
4395    pub instance_id: String,
4396}
4397
4398impl ModifyInstanceAttributeRequest {
4399    #[cfg(any(test, feature = "test-support"))]
4400    /// Create a fixture instance for testing.
4401    pub fn fixture() -> Self {
4402        Self {
4403            instance_id: "test-instance_id".into(),
4404        }
4405    }
4406}
4407
4408///
4409/// **AWS API**: `ec2.v1.ModifyInstanceMetadataOptionsRequest`
4410/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//ModifyInstanceMetadataOptionsRequest>
4411///
4412/// ## Coverage
4413/// 3 of 7 fields included.
4414/// Omitted fields:
4415/// - `HttpPutResponseHopLimit` — not selected in manifest
4416/// - `DryRun` — not selected in manifest
4417/// - `HttpProtocolIpv6` — not selected in manifest
4418/// - `InstanceMetadataTags` — not selected in manifest
4419#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4420pub struct ModifyInstanceMetadataOptionsRequest {
4421    /// The ID of the instance.
4422    #[serde(rename = "InstanceId")]
4423    pub instance_id: String,
4424
4425    /// Indicates whether IMDSv2 is required. optional
4426    /// - IMDSv2 is optional. You can choose whether to send a session token in your instance
4427    ///   metadata retrieval requests. If you retrieve IAM role credentials without a session
4428    ///   token, you receive the IMDSv1 role credentials. If you retrieve IAM role credentials
4429    ///   using a valid session token, you receive the IMDSv2 role credentials. required
4430    /// - IMDSv2 is required. You must send a session token in your instance metadata retrieval
4431    ///   requests. With this option, retrieving the IAM role credentials always returns IMDSv2
4432    ///   credentials; IMDSv1 credentials are not available. Default: If the value of
4433    ///   ImdsSupport for the Amazon Machine Image (AMI) for your instance is v2.0 and the
4434    ///   account level default is set to no-preference, the default is required. If the value
4435    ///   of ImdsSupport for the Amazon Machine Image (AMI) for your instance is v2.0, but the
4436    ///   account level default is set to V1 or V2, the default is optional. The default value
4437    ///   can also be affected by other combinations of parameters. For more information, see
4438    ///   Order of precedence for instance metadata options in the Amazon EC2 User Guide.
4439    #[serde(rename = "HttpTokens")]
4440    #[serde(skip_serializing_if = "Option::is_none")]
4441    pub http_tokens: Option<String>,
4442
4443    /// Enables or disables the HTTP metadata endpoint on your instances. If this parameter is
4444    /// not specified, the existing state is maintained. If you specify a value of disabled, you
4445    /// cannot access your instance metadata.
4446    #[serde(rename = "HttpEndpoint")]
4447    #[serde(skip_serializing_if = "Option::is_none")]
4448    pub http_endpoint: Option<String>,
4449}
4450
4451impl ModifyInstanceMetadataOptionsRequest {
4452    #[cfg(any(test, feature = "test-support"))]
4453    /// Create a fixture instance for testing.
4454    pub fn fixture() -> Self {
4455        Self {
4456            instance_id: "test-instance_id".into(),
4457            http_tokens: Some("test-http_tokens".into()),
4458            http_endpoint: Some("test-http_endpoint".into()),
4459        }
4460    }
4461}
4462
4463///
4464/// **AWS API**: `ec2.v1.MonitorInstancesRequest`
4465/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//MonitorInstancesRequest>
4466///
4467/// ## Coverage
4468/// 1 of 2 fields included.
4469/// Omitted fields:
4470/// - `DryRun` — not selected in manifest
4471#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4472pub struct MonitorInstancesRequest {
4473    /// The IDs of the instances.
4474    #[serde(rename = "InstanceId")]
4475    #[serde(default)]
4476    pub instance_ids: Vec<String>,
4477}
4478
4479impl MonitorInstancesRequest {
4480    #[cfg(any(test, feature = "test-support"))]
4481    /// Create a fixture instance for testing.
4482    pub fn fixture() -> Self {
4483        Self {
4484            instance_ids: vec![],
4485        }
4486    }
4487}
4488
4489///
4490/// **AWS API**: `ec2.v1.AssociateIamInstanceProfileRequest`
4491/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//AssociateIamInstanceProfileRequest>
4492#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4493pub struct AssociateIamInstanceProfileRequest {
4494    /// The IAM instance profile.
4495    #[serde(rename = "IamInstanceProfile")]
4496    pub iam_instance_profile: IamInstanceProfileSpecification,
4497
4498    /// The ID of the instance.
4499    #[serde(rename = "InstanceId")]
4500    pub instance_id: String,
4501}
4502
4503impl AssociateIamInstanceProfileRequest {
4504    #[cfg(any(test, feature = "test-support"))]
4505    /// Create a fixture instance for testing.
4506    pub fn fixture() -> Self {
4507        Self {
4508            iam_instance_profile: IamInstanceProfileSpecification::fixture(),
4509            instance_id: "test-instance_id".into(),
4510        }
4511    }
4512}
4513
4514/// Describes an IAM instance profile.
4515///
4516/// **AWS API**: `ec2.v1.IamInstanceProfileSpecification`
4517/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//IamInstanceProfileSpecification>
4518#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4519pub struct IamInstanceProfileSpecification {
4520    /// The Amazon Resource Name (ARN) of the instance profile.
4521    #[serde(rename(serialize = "Arn", deserialize = "arn"))]
4522    #[serde(skip_serializing_if = "Option::is_none")]
4523    pub arn: Option<String>,
4524
4525    /// The name of the instance profile.
4526    #[serde(rename(serialize = "Name", deserialize = "name"))]
4527    #[serde(skip_serializing_if = "Option::is_none")]
4528    pub name: Option<String>,
4529}
4530
4531impl IamInstanceProfileSpecification {
4532    #[cfg(any(test, feature = "test-support"))]
4533    /// Create a fixture instance for testing.
4534    pub fn fixture() -> Self {
4535        Self {
4536            arn: Some("test-arn".into()),
4537            name: Some("test-name".into()),
4538        }
4539    }
4540}
4541
4542///
4543/// **AWS API**: `ec2.v1.DetachVolumeRequest`
4544/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DetachVolumeRequest>
4545///
4546/// ## Coverage
4547/// 2 of 5 fields included.
4548/// Omitted fields:
4549/// - `Device` — not selected in manifest
4550/// - `Force` — not selected in manifest
4551/// - `DryRun` — not selected in manifest
4552#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4553pub struct DetachVolumeRequest {
4554    /// The ID of the volume.
4555    #[serde(rename = "VolumeId")]
4556    pub volume_id: String,
4557
4558    /// The ID of the instance. If you are detaching a Multi-Attach enabled volume, you must
4559    /// specify an instance ID.
4560    #[serde(rename = "InstanceId")]
4561    #[serde(skip_serializing_if = "Option::is_none")]
4562    pub instance_id: Option<String>,
4563}
4564
4565impl DetachVolumeRequest {
4566    #[cfg(any(test, feature = "test-support"))]
4567    /// Create a fixture instance for testing.
4568    pub fn fixture() -> Self {
4569        Self {
4570            volume_id: "test-volume_id".into(),
4571            instance_id: Some("test-instance_id".into()),
4572        }
4573    }
4574}
4575
4576///
4577/// **AWS API**: `ec2.v1.DeleteVolumeRequest`
4578/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DeleteVolumeRequest>
4579///
4580/// ## Coverage
4581/// 1 of 2 fields included.
4582/// Omitted fields:
4583/// - `DryRun` — not selected in manifest
4584#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4585pub struct DeleteVolumeRequest {
4586    /// The ID of the volume.
4587    #[serde(rename = "VolumeId")]
4588    pub volume_id: String,
4589}
4590
4591impl DeleteVolumeRequest {
4592    #[cfg(any(test, feature = "test-support"))]
4593    /// Create a fixture instance for testing.
4594    pub fn fixture() -> Self {
4595        Self {
4596            volume_id: "test-volume_id".into(),
4597        }
4598    }
4599}
4600
4601///
4602/// **AWS API**: `ec2.v1.ModifyVolumeRequest`
4603/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//ModifyVolumeRequest>
4604///
4605/// ## Coverage
4606/// 4 of 7 fields included.
4607/// Omitted fields:
4608/// - `DryRun` — not selected in manifest
4609/// - `Size` — not selected in manifest
4610/// - `MultiAttachEnabled` — not selected in manifest
4611#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4612pub struct ModifyVolumeRequest {
4613    /// The ID of the volume.
4614    #[serde(rename = "VolumeId")]
4615    pub volume_id: String,
4616
4617    /// The target EBS volume type of the volume. For more information, see Amazon EBS volume
4618    /// types in the Amazon EBS User Guide. Default: The existing type is retained.
4619    #[serde(rename = "VolumeType")]
4620    #[serde(skip_serializing_if = "Option::is_none")]
4621    pub volume_type: Option<String>,
4622
4623    /// The target IOPS rate of the volume. This parameter is valid only for gp3, io1, and io2
4624    /// volumes. The following are the supported values for each volume type: gp3: 3,000 -
4625    /// 80,000 IOPS io1: 100 - 64,000 IOPS io2: 100 - 256,000 IOPS Instances built on the Nitro
4626    /// System can support up to 256,000 IOPS. Other instances can support up to 32,000 IOPS.
4627    /// Default: The existing value is retained if you keep the same volume type. If you change
4628    /// the volume type to io1, io2, or gp3, the default is 3,000.
4629    #[serde(rename = "Iops")]
4630    #[serde(skip_serializing_if = "Option::is_none")]
4631    pub iops: Option<i32>,
4632
4633    /// The target throughput of the volume, in MiB/s. This parameter is valid only for gp3
4634    /// volumes. The maximum value is 2,000. Default: The existing value is retained if the
4635    /// source and target volume type is gp3. Otherwise, the default value is 125. Valid Range:
4636    /// Minimum value of 125. Maximum value of 2,000.
4637    #[serde(rename = "Throughput")]
4638    #[serde(skip_serializing_if = "Option::is_none")]
4639    pub throughput: Option<i32>,
4640}
4641
4642impl ModifyVolumeRequest {
4643    #[cfg(any(test, feature = "test-support"))]
4644    /// Create a fixture instance for testing.
4645    pub fn fixture() -> Self {
4646        Self {
4647            volume_id: "test-volume_id".into(),
4648            volume_type: Some("test-volume_type".into()),
4649            iops: Some(100),
4650            throughput: Some(100),
4651        }
4652    }
4653}
4654
4655///
4656/// **AWS API**: `ec2.v1.CreateSnapshotRequest`
4657/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//CreateSnapshotRequest>
4658///
4659/// ## Coverage
4660/// 2 of 6 fields included.
4661/// Omitted fields:
4662/// - `OutpostArn` — not selected in manifest
4663/// - `TagSpecifications` — not selected in manifest
4664/// - `Location` — not selected in manifest
4665/// - `DryRun` — not selected in manifest
4666#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4667pub struct CreateSnapshotRequest {
4668    /// The ID of the Amazon EBS volume.
4669    #[serde(rename = "VolumeId")]
4670    pub volume_id: String,
4671
4672    /// A description for the snapshot.
4673    #[serde(rename = "Description")]
4674    #[serde(skip_serializing_if = "Option::is_none")]
4675    pub description: Option<String>,
4676}
4677
4678impl CreateSnapshotRequest {
4679    #[cfg(any(test, feature = "test-support"))]
4680    /// Create a fixture instance for testing.
4681    pub fn fixture() -> Self {
4682        Self {
4683            volume_id: "test-volume_id".into(),
4684            description: Some("test-description".into()),
4685        }
4686    }
4687}
4688
4689///
4690/// **AWS API**: `ec2.v1.DeleteSnapshotRequest`
4691/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DeleteSnapshotRequest>
4692///
4693/// ## Coverage
4694/// 1 of 2 fields included.
4695/// Omitted fields:
4696/// - `DryRun` — not selected in manifest
4697#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4698pub struct DeleteSnapshotRequest {
4699    /// The ID of the EBS snapshot.
4700    #[serde(rename = "SnapshotId")]
4701    pub snapshot_id: String,
4702}
4703
4704impl DeleteSnapshotRequest {
4705    #[cfg(any(test, feature = "test-support"))]
4706    /// Create a fixture instance for testing.
4707    pub fn fixture() -> Self {
4708        Self {
4709            snapshot_id: "test-snapshot_id".into(),
4710        }
4711    }
4712}
4713
4714///
4715/// **AWS API**: `ec2.v1.ModifySnapshotAttributeRequest`
4716/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//ModifySnapshotAttributeRequest>
4717///
4718/// ## Coverage
4719/// 3 of 7 fields included.
4720/// Omitted fields:
4721/// - `GroupNames` — not selected in manifest
4722/// - `OperationType` — not selected in manifest
4723/// - `UserIds` — not selected in manifest
4724/// - `DryRun` — not selected in manifest
4725#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4726pub struct ModifySnapshotAttributeRequest {
4727    /// The ID of the snapshot.
4728    #[serde(rename = "SnapshotId")]
4729    pub snapshot_id: String,
4730
4731    /// The snapshot attribute to modify. Only volume creation permissions can be modified.
4732    #[serde(rename = "Attribute")]
4733    #[serde(skip_serializing_if = "Option::is_none")]
4734    pub attribute: Option<String>,
4735
4736    /// A JSON representation of the snapshot attribute modification.
4737    #[serde(rename = "CreateVolumePermission")]
4738    #[serde(skip_serializing_if = "Option::is_none")]
4739    pub create_volume_permission: Option<CreateVolumePermissionModifications>,
4740}
4741
4742impl ModifySnapshotAttributeRequest {
4743    #[cfg(any(test, feature = "test-support"))]
4744    /// Create a fixture instance for testing.
4745    pub fn fixture() -> Self {
4746        Self {
4747            snapshot_id: "test-snapshot_id".into(),
4748            attribute: Some("test-attribute".into()),
4749            create_volume_permission: Some(CreateVolumePermissionModifications::fixture()),
4750        }
4751    }
4752}
4753
4754/// Describes modifications to the list of create volume permissions for a volume.
4755///
4756/// **AWS API**: `ec2.v1.CreateVolumePermissionModifications`
4757/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//CreateVolumePermissionModifications>
4758#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4759pub struct CreateVolumePermissionModifications {
4760    /// Adds the specified Amazon Web Services account ID or group to the list.
4761    #[serde(rename = "Add")]
4762    #[serde(default)]
4763    #[serde(skip_serializing_if = "Vec::is_empty")]
4764    pub add: Vec<CreateVolumePermission>,
4765
4766    /// Removes the specified Amazon Web Services account ID or group from the list.
4767    #[serde(rename = "Remove")]
4768    #[serde(default)]
4769    #[serde(skip_serializing_if = "Vec::is_empty")]
4770    pub remove: Vec<CreateVolumePermission>,
4771}
4772
4773impl CreateVolumePermissionModifications {
4774    #[cfg(any(test, feature = "test-support"))]
4775    /// Create a fixture instance for testing.
4776    pub fn fixture() -> Self {
4777        Self {
4778            add: vec![],
4779            remove: vec![],
4780        }
4781    }
4782}
4783
4784///
4785/// **AWS API**: `ec2.v1.EnableSnapshotBlockPublicAccessRequest`
4786/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//EnableSnapshotBlockPublicAccessRequest>
4787///
4788/// ## Coverage
4789/// 1 of 2 fields included.
4790/// Omitted fields:
4791/// - `DryRun` — not selected in manifest
4792#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4793pub struct EnableSnapshotBlockPublicAccessRequest {
4794    /// The mode in which to enable block public access for snapshots for the Region. Specify
4795    /// one of the following values: block-all-sharing
4796    /// - Prevents all public sharing of snapshots in the Region. Users in the account will no
4797    ///   longer be able to request new public sharing. Additionally, snapshots that are already
4798    ///   publicly shared are treated as private and they are no longer publicly available.
4799    ///   block-new-sharing
4800    /// - Prevents only new public sharing of snapshots in the Region. Users in the account will
4801    ///   no longer be able to request new public sharing. However, snapshots that are already
4802    ///   publicly shared, remain publicly available. unblocked is not a valid value for
4803    ///   EnableSnapshotBlockPublicAccess.
4804    #[serde(rename = "State")]
4805    pub state: String,
4806}
4807
4808impl EnableSnapshotBlockPublicAccessRequest {
4809    #[cfg(any(test, feature = "test-support"))]
4810    /// Create a fixture instance for testing.
4811    pub fn fixture() -> Self {
4812        Self {
4813            state: "test-state".into(),
4814        }
4815    }
4816}
4817
4818///
4819/// **AWS API**: `ec2.v1.ReleaseAddressRequest`
4820/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//ReleaseAddressRequest>
4821///
4822/// ## Coverage
4823/// 1 of 4 fields included.
4824/// Omitted fields:
4825/// - `PublicIp` — not selected in manifest
4826/// - `NetworkBorderGroup` — not selected in manifest
4827/// - `DryRun` — not selected in manifest
4828#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4829pub struct ReleaseAddressRequest {
4830    /// The allocation ID. This parameter is required.
4831    #[serde(rename = "AllocationId")]
4832    #[serde(skip_serializing_if = "Option::is_none")]
4833    pub allocation_id: Option<String>,
4834}
4835
4836impl ReleaseAddressRequest {
4837    #[cfg(any(test, feature = "test-support"))]
4838    /// Create a fixture instance for testing.
4839    pub fn fixture() -> Self {
4840        Self {
4841            allocation_id: Some("test-allocation_id".into()),
4842        }
4843    }
4844}
4845
4846/// Contains the parameters for DeregisterImage.
4847///
4848/// **AWS API**: `ec2.v1.DeregisterImageRequest`
4849/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DeregisterImageRequest>
4850///
4851/// ## Coverage
4852/// 1 of 3 fields included.
4853/// Omitted fields:
4854/// - `DeleteAssociatedSnapshots` — not selected in manifest
4855/// - `DryRun` — not selected in manifest
4856#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4857pub struct DeregisterImageRequest {
4858    /// The ID of the AMI.
4859    #[serde(rename = "ImageId")]
4860    pub image_id: String,
4861}
4862
4863impl DeregisterImageRequest {
4864    #[cfg(any(test, feature = "test-support"))]
4865    /// Create a fixture instance for testing.
4866    pub fn fixture() -> Self {
4867        Self {
4868            image_id: "test-image_id".into(),
4869        }
4870    }
4871}
4872
4873/// Contains the parameters for ModifyImageAttribute.
4874///
4875/// **AWS API**: `ec2.v1.ModifyImageAttributeRequest`
4876/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//ModifyImageAttributeRequest>
4877///
4878/// ## Coverage
4879/// 2 of 13 fields included.
4880/// Omitted fields:
4881/// - `Attribute` — not selected in manifest
4882/// - `Description` — not selected in manifest
4883/// - `OperationType` — not selected in manifest
4884/// - `ProductCodes` — not selected in manifest
4885/// - `UserGroups` — not selected in manifest
4886/// - `UserIds` — not selected in manifest
4887/// - `Value` — not selected in manifest
4888/// - `OrganizationArns` — not selected in manifest
4889/// - `OrganizationalUnitArns` — not selected in manifest
4890/// - `ImdsSupport` — not selected in manifest
4891/// - `DryRun` — not selected in manifest
4892#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4893pub struct ModifyImageAttributeRequest {
4894    /// The ID of the AMI.
4895    #[serde(rename = "ImageId")]
4896    pub image_id: String,
4897
4898    /// A new launch permission for the AMI.
4899    #[serde(rename = "LaunchPermission")]
4900    #[serde(skip_serializing_if = "Option::is_none")]
4901    pub launch_permission: Option<LaunchPermissionModifications>,
4902}
4903
4904impl ModifyImageAttributeRequest {
4905    #[cfg(any(test, feature = "test-support"))]
4906    /// Create a fixture instance for testing.
4907    pub fn fixture() -> Self {
4908        Self {
4909            image_id: "test-image_id".into(),
4910            launch_permission: Some(LaunchPermissionModifications::fixture()),
4911        }
4912    }
4913}
4914
4915/// Describes a launch permission modification.
4916///
4917/// **AWS API**: `ec2.v1.LaunchPermissionModifications`
4918/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//LaunchPermissionModifications>
4919#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4920pub struct LaunchPermissionModifications {
4921    /// The Amazon Web Services account ID, organization ARN, or OU ARN to add to the list of
4922    /// launch permissions for the AMI.
4923    #[serde(rename = "Add")]
4924    #[serde(default)]
4925    #[serde(skip_serializing_if = "Vec::is_empty")]
4926    pub add: Vec<LaunchPermission>,
4927
4928    /// The Amazon Web Services account ID, organization ARN, or OU ARN to remove from the list
4929    /// of launch permissions for the AMI.
4930    #[serde(rename = "Remove")]
4931    #[serde(default)]
4932    #[serde(skip_serializing_if = "Vec::is_empty")]
4933    pub remove: Vec<LaunchPermission>,
4934}
4935
4936impl LaunchPermissionModifications {
4937    #[cfg(any(test, feature = "test-support"))]
4938    /// Create a fixture instance for testing.
4939    pub fn fixture() -> Self {
4940        Self {
4941            add: vec![],
4942            remove: vec![],
4943        }
4944    }
4945}
4946
4947/// Describes a launch permission.
4948///
4949/// **AWS API**: `ec2.v1.LaunchPermission`
4950/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//LaunchPermission>
4951///
4952/// ## Coverage
4953/// 2 of 4 fields included.
4954/// Omitted fields:
4955/// - `OrganizationArn` — not selected in manifest
4956/// - `OrganizationalUnitArn` — not selected in manifest
4957#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4958pub struct LaunchPermission {
4959    /// The name of the group.
4960    #[serde(rename(serialize = "Group", deserialize = "group"))]
4961    #[serde(skip_serializing_if = "Option::is_none")]
4962    pub group: Option<String>,
4963
4964    /// The Amazon Web Services account ID. Constraints: Up to 10 000 account IDs can be
4965    /// specified in a single request.
4966    #[serde(rename(serialize = "UserId", deserialize = "userId"))]
4967    #[serde(skip_serializing_if = "Option::is_none")]
4968    pub user_id: Option<String>,
4969}
4970
4971impl LaunchPermission {
4972    #[cfg(any(test, feature = "test-support"))]
4973    /// Create a fixture instance for testing.
4974    pub fn fixture() -> Self {
4975        Self {
4976            group: Some("test-group".into()),
4977            user_id: Some("test-user_id".into()),
4978        }
4979    }
4980}
4981
4982///
4983/// **AWS API**: `ec2.v1.EnableImageBlockPublicAccessRequest`
4984/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//EnableImageBlockPublicAccessRequest>
4985///
4986/// ## Coverage
4987/// 1 of 2 fields included.
4988/// Omitted fields:
4989/// - `DryRun` — not selected in manifest
4990#[derive(Debug, Clone, Default, Serialize, Deserialize)]
4991pub struct EnableImageBlockPublicAccessRequest {
4992    /// Specify block-new-sharing to enable block public access for AMIs at the account level in
4993    /// the specified Region. This will block any attempt to publicly share your AMIs in the
4994    /// specified Region.
4995    #[serde(rename = "ImageBlockPublicAccessState")]
4996    pub image_block_public_access_state: String,
4997}
4998
4999impl EnableImageBlockPublicAccessRequest {
5000    #[cfg(any(test, feature = "test-support"))]
5001    /// Create a fixture instance for testing.
5002    pub fn fixture() -> Self {
5003        Self {
5004            image_block_public_access_state: "test-image_block_public_access_state".into(),
5005        }
5006    }
5007}
5008
5009///
5010/// **AWS API**: `ec2.v1.RevokeSecurityGroupIngressRequest`
5011/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//RevokeSecurityGroupIngressRequest>
5012///
5013/// ## Coverage
5014/// 2 of 11 fields included.
5015/// Omitted fields:
5016/// - `CidrIp` — not selected in manifest
5017/// - `FromPort` — not selected in manifest
5018/// - `GroupName` — not selected in manifest
5019/// - `IpProtocol` — not selected in manifest
5020/// - `SourceSecurityGroupName` — not selected in manifest
5021/// - `SourceSecurityGroupOwnerId` — not selected in manifest
5022/// - `ToPort` — not selected in manifest
5023/// - `SecurityGroupRuleIds` — not selected in manifest
5024/// - `DryRun` — not selected in manifest
5025#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5026pub struct RevokeSecurityGroupIngressRequest {
5027    /// The ID of the security group.
5028    #[serde(rename = "GroupId")]
5029    #[serde(skip_serializing_if = "Option::is_none")]
5030    pub group_id: Option<String>,
5031
5032    /// The sets of IP permissions. You can't specify a source security group and a CIDR IP
5033    /// address range in the same set of permissions.
5034    #[serde(rename = "IpPermissions")]
5035    #[serde(default)]
5036    #[serde(skip_serializing_if = "Vec::is_empty")]
5037    pub ip_permissions: Vec<IpPermission>,
5038}
5039
5040impl RevokeSecurityGroupIngressRequest {
5041    #[cfg(any(test, feature = "test-support"))]
5042    /// Create a fixture instance for testing.
5043    pub fn fixture() -> Self {
5044        Self {
5045            group_id: Some("test-group_id".into()),
5046            ip_permissions: vec![],
5047        }
5048    }
5049}
5050
5051///
5052/// **AWS API**: `ec2.v1.RevokeSecurityGroupEgressRequest`
5053/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//RevokeSecurityGroupEgressRequest>
5054///
5055/// ## Coverage
5056/// 2 of 10 fields included.
5057/// Omitted fields:
5058/// - `SecurityGroupRuleIds` — not selected in manifest
5059/// - `DryRun` — not selected in manifest
5060/// - `SourceSecurityGroupName` — not selected in manifest
5061/// - `SourceSecurityGroupOwnerId` — not selected in manifest
5062/// - `IpProtocol` — not selected in manifest
5063/// - `FromPort` — not selected in manifest
5064/// - `ToPort` — not selected in manifest
5065/// - `CidrIp` — not selected in manifest
5066#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5067pub struct RevokeSecurityGroupEgressRequest {
5068    /// The ID of the security group.
5069    #[serde(rename(serialize = "GroupId", deserialize = "groupId"))]
5070    pub group_id: String,
5071
5072    /// The sets of IP permissions. You can't specify a destination security group and a CIDR IP
5073    /// address range in the same set of permissions.
5074    #[serde(rename(serialize = "IpPermissions", deserialize = "ipPermissions"))]
5075    #[serde(default)]
5076    #[serde(skip_serializing_if = "Vec::is_empty")]
5077    pub ip_permissions: Vec<IpPermission>,
5078}
5079
5080impl RevokeSecurityGroupEgressRequest {
5081    #[cfg(any(test, feature = "test-support"))]
5082    /// Create a fixture instance for testing.
5083    pub fn fixture() -> Self {
5084        Self {
5085            group_id: "test-group_id".into(),
5086            ip_permissions: vec![],
5087        }
5088    }
5089}
5090
5091///
5092/// **AWS API**: `ec2.v1.AuthorizeSecurityGroupIngressRequest`
5093/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//AuthorizeSecurityGroupIngressRequest>
5094///
5095/// ## Coverage
5096/// 2 of 11 fields included.
5097/// Omitted fields:
5098/// - `CidrIp` — not selected in manifest
5099/// - `FromPort` — not selected in manifest
5100/// - `GroupName` — not selected in manifest
5101/// - `IpProtocol` — not selected in manifest
5102/// - `SourceSecurityGroupName` — not selected in manifest
5103/// - `SourceSecurityGroupOwnerId` — not selected in manifest
5104/// - `ToPort` — not selected in manifest
5105/// - `TagSpecifications` — not selected in manifest
5106/// - `DryRun` — not selected in manifest
5107#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5108pub struct AuthorizeSecurityGroupIngressRequest {
5109    /// The ID of the security group.
5110    #[serde(rename = "GroupId")]
5111    #[serde(skip_serializing_if = "Option::is_none")]
5112    pub group_id: Option<String>,
5113
5114    /// The permissions for the security group rules.
5115    #[serde(rename = "IpPermissions")]
5116    #[serde(default)]
5117    #[serde(skip_serializing_if = "Vec::is_empty")]
5118    pub ip_permissions: Vec<IpPermission>,
5119}
5120
5121impl AuthorizeSecurityGroupIngressRequest {
5122    #[cfg(any(test, feature = "test-support"))]
5123    /// Create a fixture instance for testing.
5124    pub fn fixture() -> Self {
5125        Self {
5126            group_id: Some("test-group_id".into()),
5127            ip_permissions: vec![],
5128        }
5129    }
5130}
5131
5132///
5133/// **AWS API**: `ec2.v1.DeleteSecurityGroupRequest`
5134/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DeleteSecurityGroupRequest>
5135///
5136/// ## Coverage
5137/// 1 of 3 fields included.
5138/// Omitted fields:
5139/// - `GroupName` — not selected in manifest
5140/// - `DryRun` — not selected in manifest
5141#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5142pub struct DeleteSecurityGroupRequest {
5143    /// The ID of the security group.
5144    #[serde(rename = "GroupId")]
5145    #[serde(skip_serializing_if = "Option::is_none")]
5146    pub group_id: Option<String>,
5147}
5148
5149impl DeleteSecurityGroupRequest {
5150    #[cfg(any(test, feature = "test-support"))]
5151    /// Create a fixture instance for testing.
5152    pub fn fixture() -> Self {
5153        Self {
5154            group_id: Some("test-group_id".into()),
5155        }
5156    }
5157}
5158
5159///
5160/// **AWS API**: `ec2.v1.DeleteNatGatewayRequest`
5161/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DeleteNatGatewayRequest>
5162///
5163/// ## Coverage
5164/// 1 of 2 fields included.
5165/// Omitted fields:
5166/// - `DryRun` — not selected in manifest
5167#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5168pub struct DeleteNatGatewayRequest {
5169    /// The ID of the NAT gateway.
5170    #[serde(rename = "NatGatewayId")]
5171    pub nat_gateway_id: String,
5172}
5173
5174impl DeleteNatGatewayRequest {
5175    #[cfg(any(test, feature = "test-support"))]
5176    /// Create a fixture instance for testing.
5177    pub fn fixture() -> Self {
5178        Self {
5179            nat_gateway_id: "test-nat_gateway_id".into(),
5180        }
5181    }
5182}
5183
5184///
5185/// **AWS API**: `ec2.v1.DeleteVpcEndpointsRequest`
5186/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//DeleteVpcEndpointsRequest>
5187///
5188/// ## Coverage
5189/// 1 of 2 fields included.
5190/// Omitted fields:
5191/// - `DryRun` — not selected in manifest
5192#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5193pub struct DeleteVpcEndpointsRequest {
5194    /// The IDs of the VPC endpoints.
5195    #[serde(rename = "VpcEndpointId")]
5196    #[serde(default)]
5197    pub vpc_endpoint_ids: Vec<String>,
5198}
5199
5200impl DeleteVpcEndpointsRequest {
5201    #[cfg(any(test, feature = "test-support"))]
5202    /// Create a fixture instance for testing.
5203    pub fn fixture() -> Self {
5204        Self {
5205            vpc_endpoint_ids: vec![],
5206        }
5207    }
5208}
5209
5210///
5211/// **AWS API**: `ec2.v1.CreateFlowLogsRequest`
5212/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//CreateFlowLogsRequest>
5213///
5214/// ## Coverage
5215/// 5 of 14 fields included.
5216/// Omitted fields:
5217/// - `DryRun` — not selected in manifest
5218/// - `ClientToken` — not selected in manifest
5219/// - `DeliverCrossAccountRole` — not selected in manifest
5220/// - `LogDestinationType` — not selected in manifest
5221/// - `LogDestination` — not selected in manifest
5222/// - `LogFormat` — not selected in manifest
5223/// - `TagSpecifications` — not selected in manifest
5224/// - `MaxAggregationInterval` — not selected in manifest
5225/// - `DestinationOptions` — not selected in manifest
5226#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5227pub struct CreateFlowLogsRequest {
5228    /// The IDs of the resources to monitor. For example, if the resource type is VPC, specify
5229    /// the IDs of the VPCs. Constraints: Maximum of 25 for transit gateway resource types.
5230    /// Maximum of 1000 for the other resource types.
5231    #[serde(rename = "ResourceId")]
5232    #[serde(default)]
5233    pub resource_ids: Vec<String>,
5234
5235    /// The type of resource to monitor.
5236    #[serde(rename = "ResourceType")]
5237    pub resource_type: String,
5238
5239    /// The type of traffic to monitor (accepted traffic, rejected traffic, or all traffic).
5240    /// This parameter is not supported for transit gateway resource types. It is required for
5241    /// the other resource types.
5242    #[serde(rename = "TrafficType")]
5243    pub traffic_type: String,
5244
5245    /// The name of a new or existing CloudWatch Logs log group where Amazon EC2 publishes your
5246    /// flow logs. This parameter is valid only if the destination type is cloud-watch-logs.
5247    #[serde(rename = "LogGroupName")]
5248    #[serde(skip_serializing_if = "Option::is_none")]
5249    pub log_group_name: Option<String>,
5250
5251    /// The ARN of the IAM role that allows Amazon EC2 to publish flow logs to the log
5252    /// destination. This parameter is required if the destination type is cloud-watch-logs, or
5253    /// if the destination type is kinesis-data-firehose and the delivery stream and the
5254    /// resources to monitor are in different accounts.
5255    #[serde(rename = "DeliverLogsPermissionArn")]
5256    #[serde(skip_serializing_if = "Option::is_none")]
5257    pub deliver_logs_permission_arn: Option<String>,
5258}
5259
5260impl CreateFlowLogsRequest {
5261    #[cfg(any(test, feature = "test-support"))]
5262    /// Create a fixture instance for testing.
5263    pub fn fixture() -> Self {
5264        Self {
5265            resource_ids: vec![],
5266            resource_type: "test-resource_type".into(),
5267            traffic_type: "test-traffic_type".into(),
5268            log_group_name: Some("test-log_group_name".into()),
5269            deliver_logs_permission_arn: Some("test-deliver_logs_permission_arn".into()),
5270        }
5271    }
5272}
5273
5274///
5275/// **AWS API**: `ec2.v1.CreateTagsRequest`
5276/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//CreateTagsRequest>
5277///
5278/// ## Coverage
5279/// 2 of 3 fields included.
5280/// Omitted fields:
5281/// - `DryRun` — not selected in manifest
5282#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5283pub struct CreateTagsRequest {
5284    /// The IDs of the resources, separated by spaces. Constraints: Up to 1000 resource IDs. We
5285    /// recommend breaking up this request into smaller batches.
5286    #[serde(rename = "ResourceId")]
5287    #[serde(default)]
5288    pub resources: Vec<String>,
5289
5290    /// The tags. The value parameter is required, but if you don't want the tag to have a
5291    /// value, specify the parameter with no value, and we set the value to an empty string.
5292    #[serde(rename = "Tag")]
5293    #[serde(default)]
5294    pub tags: Vec<Tag>,
5295}
5296
5297impl CreateTagsRequest {
5298    #[cfg(any(test, feature = "test-support"))]
5299    /// Create a fixture instance for testing.
5300    pub fn fixture() -> Self {
5301        Self {
5302            resources: vec![],
5303            tags: vec![],
5304        }
5305    }
5306}
5307
5308///
5309/// **AWS API**: `ec2.v1.EnableEbsEncryptionByDefaultRequest`
5310/// **Reference**: <https://docs.aws.amazon.com/AWSEC2/latest/APIReference//EnableEbsEncryptionByDefaultRequest>
5311#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5312pub struct EnableEbsEncryptionByDefaultRequest {
5313    /// Checks whether you have the required permissions for the action, without actually making
5314    /// the request, and provides an error response. If you have the required permissions, the
5315    /// error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.
5316    #[serde(rename = "DryRun")]
5317    #[serde(skip_serializing_if = "Option::is_none")]
5318    pub dry_run: Option<bool>,
5319}
5320
5321impl EnableEbsEncryptionByDefaultRequest {
5322    #[cfg(any(test, feature = "test-support"))]
5323    /// Create a fixture instance for testing.
5324    pub fn fixture() -> Self {
5325        Self {
5326            dry_run: Some(false),
5327        }
5328    }
5329}
5330
5331// ======================================================================
5332// Auto-generated dependency types (referenced via $ref)
5333// ======================================================================
5334
5335/// The snapshot ID and its deletion result code.
5336///
5337/// **AWS API**: `ec2.v1.DeleteSnapshotReturnCode`
5338///
5339/// *Auto-generated dependency — all fields included.*
5340#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5341pub struct DeleteSnapshotReturnCode {
5342    /// The ID of the snapshot.
5343    #[serde(rename(serialize = "SnapshotId", deserialize = "snapshotId"))]
5344    #[serde(skip_serializing_if = "Option::is_none")]
5345    pub snapshot_id: Option<String>,
5346
5347    /// The result code from the snapshot deletion attempt. Possible values: success
5348    /// - The snapshot was successfully deleted. skipped
5349    /// - The snapshot was not deleted because it's associated with other AMIs. missing-
5350    ///   permissions
5351    /// - The snapshot was not deleted because the role lacks DeleteSnapshot permissions. For
5352    ///   more information, see How Amazon EBS works with IAM. internal-error
5353    /// - The snapshot was not deleted due to a server error. client-error
5354    /// - The snapshot was not deleted due to a client configuration error. For details about an
5355    ///   error, check the DeleteSnapshot event in the CloudTrail event history. For more
5356    ///   information, see View event history in the Amazon Web Services CloudTrail User Guide.
5357    #[serde(rename(serialize = "ReturnCode", deserialize = "returnCode"))]
5358    #[serde(skip_serializing_if = "Option::is_none")]
5359    pub return_code: Option<String>,
5360}
5361
5362impl DeleteSnapshotReturnCode {
5363    #[cfg(any(test, feature = "test-support"))]
5364    /// Create a fixture instance for testing.
5365    pub fn fixture() -> Self {
5366        Self {
5367            snapshot_id: Some("test-snapshot_id".into()),
5368            return_code: Some("test-return_code".into()),
5369        }
5370    }
5371}