Skip to main content

aws_lite_rs/types/
rds.rs

1//! Types for the Amazon Relational Database Service 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**: `rds.v1.DescribeDBInstancesMessage`
10/// **Reference**: <https://docs.aws.amazon.com/AmazonRDS/latest/APIReference//DescribeDBInstancesMessage>
11#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12#[serde(rename_all = "PascalCase")]
13pub struct DescribeDBInstancesRequest {
14    /// The user-supplied instance identifier or the Amazon Resource Name (ARN) of the DB
15    /// instance. If this parameter is specified, information from only the specific DB instance
16    /// is returned. This parameter isn't case-sensitive. Constraints: If supplied, must match
17    /// the identifier of an existing DB instance.
18    #[serde(rename = "DBInstanceIdentifier")]
19    #[serde(skip_serializing_if = "Option::is_none")]
20    pub db_instance_identifier: Option<String>,
21
22    /// A filter that specifies one or more DB instances to describe. Supported Filters: db-
23    /// cluster-id
24    /// - Accepts DB cluster identifiers and DB cluster Amazon Resource Names (ARNs). The
25    ///   results list only includes information about the DB instances associated with the DB
26    ///   clusters identified by these ARNs. db-instance-id
27    /// - Accepts DB instance identifiers and DB instance Amazon Resource Names (ARNs). The
28    ///   results list only includes information about the DB instances identified by these
29    ///   ARNs. dbi-resource-id
30    /// - Accepts DB instance resource identifiers. The results list only includes information
31    ///   about the DB instances identified by these DB instance resource identifiers. domain
32    /// - Accepts Active Directory directory IDs. The results list only includes information
33    ///   about the DB instances associated with these domains. engine
34    /// - Accepts engine names. The results list only includes information about the DB
35    ///   instances for these engines.
36    #[serde(default)]
37    #[serde(skip_serializing_if = "Vec::is_empty")]
38    pub filters: Vec<Filter>,
39
40    /// The maximum number of records to include in the response. If more records exist than the
41    /// specified MaxRecords value, a pagination token called a marker is included in the
42    /// response so that you can retrieve the remaining results. Default: 100 Constraints:
43    /// Minimum 20, maximum 100.
44    #[serde(skip_serializing_if = "Option::is_none")]
45    pub max_records: Option<i32>,
46
47    /// An optional pagination token provided by a previous DescribeDBInstances request. If this
48    /// parameter is specified, the response includes only records beyond the marker, up to the
49    /// value specified by MaxRecords.
50    #[serde(skip_serializing_if = "Option::is_none")]
51    pub marker: Option<String>,
52}
53
54impl DescribeDBInstancesRequest {
55    #[cfg(any(test, feature = "test-support"))]
56    /// Create a fixture instance for testing.
57    pub fn fixture() -> Self {
58        Self {
59            db_instance_identifier: Some("test-db_instance_identifier".into()),
60            filters: vec![],
61            max_records: Some(100),
62            marker: Some("test-marker".into()),
63        }
64    }
65}
66
67/// Contains the result of a successful invocation of the DescribeDBInstances action.
68///
69/// **AWS API**: `rds.v1.DBInstanceMessage`
70/// **Reference**: <https://docs.aws.amazon.com/AmazonRDS/latest/APIReference//DBInstanceMessage>
71#[derive(Debug, Clone, Default, Serialize, Deserialize)]
72#[serde(rename_all = "PascalCase")]
73pub struct DescribeDBInstancesResponse {
74    /// A list of DBInstance instances.
75    #[serde(rename = "DBInstances")]
76    #[serde(default)]
77    #[serde(skip_serializing_if = "Vec::is_empty")]
78    pub db_instances: Vec<DBInstance>,
79
80    /// An optional pagination token provided by a previous request. If this parameter is
81    /// specified, the response includes only records beyond the marker, up to the value
82    /// specified by MaxRecords .
83    #[serde(skip_serializing_if = "Option::is_none")]
84    pub marker: Option<String>,
85}
86
87impl DescribeDBInstancesResponse {
88    #[cfg(any(test, feature = "test-support"))]
89    /// Create a fixture instance for testing.
90    pub fn fixture() -> Self {
91        Self {
92            db_instances: vec![],
93            marker: Some("test-marker".into()),
94        }
95    }
96}
97
98/// Contains the details of an Amazon RDS DB instance. This data type is used as a response
99/// element in the operations CreateDBInstance, CreateDBInstanceReadReplica, DeleteDBInstance,
100/// DescribeDBInstances, ModifyDBInstance, PromoteReadReplica, RebootDBInstance,
101/// RestoreDBInstanceFromDBSnapshot, RestoreDBInstanceFromS3, RestoreDBInstanceToPointInTime,
102/// StartDBInstance, and StopDBInstance.
103///
104/// **AWS API**: `rds.v1.DBInstance`
105/// **Reference**: <https://docs.aws.amazon.com/AmazonRDS/latest/APIReference//DBInstance>
106///
107/// ## Coverage
108/// 24 of 90 fields included.
109/// Omitted fields:
110/// - `DBSecurityGroups` — not selected in manifest
111/// - `VpcSecurityGroups` — not selected in manifest
112/// - `DBParameterGroups` — not selected in manifest
113/// - `DBSubnetGroup` — not selected in manifest
114/// - `UpgradeRolloutOrder` — not selected in manifest
115/// - `PendingModifiedValues` — not selected in manifest
116/// - `LatestRestorableTime` — not selected in manifest
117/// - `ReadReplicaSourceDBInstanceIdentifier` — not selected in manifest
118/// - `ReadReplicaDBInstanceIdentifiers` — not selected in manifest
119/// - `ReadReplicaDBClusterIdentifiers` — not selected in manifest
120/// - `ReplicaMode` — not selected in manifest
121/// - `LicenseModel` — not selected in manifest
122/// - `OptionGroupMemberships` — not selected in manifest
123/// - `CharacterSetName` — not selected in manifest
124/// - `NcharCharacterSetName` — not selected in manifest
125/// - `SecondaryAvailabilityZone` — not selected in manifest
126/// - `StatusInfos` — not selected in manifest
127/// - `TdeCredentialArn` — not selected in manifest
128/// - `DbInstancePort` — not selected in manifest
129/// - `DBClusterIdentifier` — not selected in manifest
130/// - `CACertificateIdentifier` — not selected in manifest
131/// - `DomainMemberships` — not selected in manifest
132/// - `CopyTagsToSnapshot` — not selected in manifest
133/// - `MonitoringInterval` — not selected in manifest
134/// - `EnhancedMonitoringResourceArn` — not selected in manifest
135/// - `MonitoringRoleArn` — not selected in manifest
136/// - `PromotionTier` — not selected in manifest
137/// - `Timezone` — not selected in manifest
138/// - `IAMDatabaseAuthenticationEnabled` — not selected in manifest
139/// - `DatabaseInsightsMode` — not selected in manifest
140/// - `PerformanceInsightsEnabled` — not selected in manifest
141/// - `PerformanceInsightsKMSKeyId` — not selected in manifest
142/// - `PerformanceInsightsRetentionPeriod` — not selected in manifest
143/// - `EnabledCloudwatchLogsExports` — not selected in manifest
144/// - `ProcessorFeatures` — not selected in manifest
145/// - `DeletionProtection` — not selected in manifest
146/// - `AssociatedRoles` — not selected in manifest
147/// - `ListenerEndpoint` — not selected in manifest
148/// - `MaxAllocatedStorage` — not selected in manifest
149/// - `TagList` — not selected in manifest
150/// - `AutomationMode` — not selected in manifest
151/// - `ResumeFullAutomationModeTime` — not selected in manifest
152/// - `CustomerOwnedIpEnabled` — not selected in manifest
153/// - `NetworkType` — not selected in manifest
154/// - `ActivityStreamStatus` — not selected in manifest
155/// - `ActivityStreamKmsKeyId` — not selected in manifest
156/// - `ActivityStreamKinesisStreamName` — not selected in manifest
157/// - `ActivityStreamMode` — not selected in manifest
158/// - `ActivityStreamEngineNativeAuditFieldsIncluded` — not selected in manifest
159/// - `AwsBackupRecoveryPointArn` — not selected in manifest
160/// - `DBInstanceAutomatedBackupsReplications` — not selected in manifest
161/// - `BackupTarget` — not selected in manifest
162/// - `AutomaticRestartTime` — not selected in manifest
163/// - `CustomIamInstanceProfile` — not selected in manifest
164/// - `ActivityStreamPolicyStatus` — not selected in manifest
165/// - `CertificateDetails` — not selected in manifest
166/// - `DBSystemId` — not selected in manifest
167/// - `MasterUserSecret` — not selected in manifest
168/// - `ReadReplicaSourceDBClusterIdentifier` — not selected in manifest
169/// - `PercentProgress` — not selected in manifest
170/// - `MultiTenant` — not selected in manifest
171/// - `DedicatedLogVolume` — not selected in manifest
172/// - `IsStorageConfigUpgradeAvailable` — not selected in manifest
173/// - `EngineLifecycleSupport` — not selected in manifest
174/// - `AdditionalStorageVolumes` — not selected in manifest
175/// - `StorageVolumeStatus` — not selected in manifest
176#[derive(Debug, Clone, Default, Serialize, Deserialize)]
177#[serde(rename_all = "PascalCase")]
178pub struct DBInstance {
179    /// The user-supplied database identifier. This identifier is the unique key that identifies
180    /// a DB instance.
181    #[serde(rename = "DBInstanceIdentifier")]
182    #[serde(skip_serializing_if = "Option::is_none")]
183    pub db_instance_identifier: Option<String>,
184
185    /// The name of the compute and memory capacity class of the DB instance.
186    #[serde(rename = "DBInstanceClass")]
187    #[serde(skip_serializing_if = "Option::is_none")]
188    pub db_instance_class: Option<String>,
189
190    /// The database engine used for this DB instance.
191    #[serde(skip_serializing_if = "Option::is_none")]
192    pub engine: Option<String>,
193
194    /// The current state of this database. For information about DB instance statuses, see
195    /// Viewing DB instance status in the Amazon RDS User Guide.
196    #[serde(rename = "DBInstanceStatus")]
197    #[serde(skip_serializing_if = "Option::is_none")]
198    pub db_instance_status: Option<String>,
199
200    /// The master username for the DB instance.
201    #[serde(skip_serializing_if = "Option::is_none")]
202    pub master_username: Option<String>,
203
204    /// The initial database name that you provided (if required) when you created the DB
205    /// instance. This name is returned for the life of your DB instance. For an RDS for Oracle
206    /// CDB instance, the name identifies the PDB rather than the CDB.
207    #[serde(rename = "DBName")]
208    #[serde(skip_serializing_if = "Option::is_none")]
209    pub db_name: Option<String>,
210
211    /// The connection endpoint for the DB instance. The endpoint might not be shown for
212    /// instances with the status of creating.
213    #[serde(skip_serializing_if = "Option::is_none")]
214    pub endpoint: Option<Endpoint>,
215
216    /// The amount of storage in gibibytes (GiB) allocated for the DB instance.
217    #[serde(skip_serializing_if = "Option::is_none")]
218    pub allocated_storage: Option<i32>,
219
220    /// The date and time when the DB instance was created.
221    #[serde(skip_serializing_if = "Option::is_none")]
222    pub instance_create_time: Option<String>,
223
224    /// The daily time range during which automated backups are created if automated backups are
225    /// enabled, as determined by the BackupRetentionPeriod.
226    #[serde(skip_serializing_if = "Option::is_none")]
227    pub preferred_backup_window: Option<String>,
228
229    /// The number of days for which automatic DB snapshots are retained.
230    #[serde(skip_serializing_if = "Option::is_none")]
231    pub backup_retention_period: Option<i32>,
232
233    /// The name of the Availability Zone where the DB instance is located.
234    #[serde(skip_serializing_if = "Option::is_none")]
235    pub availability_zone: Option<String>,
236
237    /// The weekly time range during which system maintenance can occur, in Universal
238    /// Coordinated Time (UTC).
239    #[serde(skip_serializing_if = "Option::is_none")]
240    pub preferred_maintenance_window: Option<String>,
241
242    /// Indicates whether the DB instance is a Multi-AZ deployment. This setting doesn't apply
243    /// to RDS Custom DB instances.
244    #[serde(rename = "MultiAZ")]
245    #[serde(skip_serializing_if = "Option::is_none")]
246    pub multi_az: Option<bool>,
247
248    /// The version of the database engine.
249    #[serde(skip_serializing_if = "Option::is_none")]
250    pub engine_version: Option<String>,
251
252    /// Indicates whether minor version patches are applied automatically. For more information
253    /// about automatic minor version upgrades, see Automatically upgrading the minor engine
254    /// version.
255    #[serde(skip_serializing_if = "Option::is_none")]
256    pub auto_minor_version_upgrade: Option<bool>,
257
258    /// Indicates whether the DB instance is publicly accessible. When the DB instance is
259    /// publicly accessible and you connect from outside of the DB instance's virtual private
260    /// cloud (VPC), its Domain Name System (DNS) endpoint resolves to the public IP address.
261    /// When you connect from within the same VPC as the DB instance, the endpoint resolves to
262    /// the private IP address. Access to the DB cluster is ultimately controlled by the
263    /// security group it uses. That public access isn't permitted if the security group
264    /// assigned to the DB cluster doesn't permit it. When the DB instance isn't publicly
265    /// accessible, it is an internal DB instance with a DNS name that resolves to a private IP
266    /// address. For more information, see CreateDBInstance.
267    #[serde(skip_serializing_if = "Option::is_none")]
268    pub publicly_accessible: Option<bool>,
269
270    /// The storage type associated with the DB instance.
271    #[serde(skip_serializing_if = "Option::is_none")]
272    pub storage_type: Option<String>,
273
274    /// Indicates whether the DB instance is encrypted.
275    #[serde(skip_serializing_if = "Option::is_none")]
276    pub storage_encrypted: Option<bool>,
277
278    /// If StorageEncrypted is enabled, the Amazon Web Services KMS key identifier for the
279    /// encrypted DB instance. The Amazon Web Services KMS key identifier is the key ARN, key
280    /// ID, alias ARN, or alias name for the KMS key.
281    #[serde(skip_serializing_if = "Option::is_none")]
282    pub kms_key_id: Option<String>,
283
284    /// The Amazon Web Services Region-unique, immutable identifier for the DB instance. This
285    /// identifier is found in Amazon Web Services CloudTrail log entries whenever the Amazon
286    /// Web Services KMS key for the DB instance is accessed.
287    #[serde(skip_serializing_if = "Option::is_none")]
288    pub dbi_resource_id: Option<String>,
289
290    /// The Amazon Resource Name (ARN) for the DB instance.
291    #[serde(rename = "DBInstanceArn")]
292    #[serde(skip_serializing_if = "Option::is_none")]
293    pub db_instance_arn: Option<String>,
294
295    /// The Provisioned IOPS (I/O operations per second) value for the DB instance.
296    #[serde(skip_serializing_if = "Option::is_none")]
297    pub iops: Option<i32>,
298
299    /// The storage throughput for the DB instance. This setting applies only to the gp3 storage
300    /// type.
301    #[serde(skip_serializing_if = "Option::is_none")]
302    pub storage_throughput: Option<i32>,
303}
304
305impl DBInstance {
306    #[cfg(any(test, feature = "test-support"))]
307    /// Create a fixture instance for testing.
308    pub fn fixture() -> Self {
309        Self {
310            db_instance_identifier: Some("test-db_instance_identifier".into()),
311            db_instance_class: Some("test-db_instance_class".into()),
312            engine: Some("test-engine".into()),
313            db_instance_status: Some("test-db_instance_status".into()),
314            master_username: Some("test-master_username".into()),
315            db_name: Some("test-db_name".into()),
316            endpoint: Some(Endpoint::fixture()),
317            allocated_storage: Some(100),
318            instance_create_time: Some("test-instance_create_time".into()),
319            preferred_backup_window: Some("test-preferred_backup_window".into()),
320            backup_retention_period: Some(100),
321            availability_zone: Some("test-availability_zone".into()),
322            preferred_maintenance_window: Some("test-preferred_maintenance_window".into()),
323            multi_az: Some(false),
324            engine_version: Some("test-engine_version".into()),
325            auto_minor_version_upgrade: Some(false),
326            publicly_accessible: Some(false),
327            storage_type: Some("test-storage_type".into()),
328            storage_encrypted: Some(false),
329            kms_key_id: Some("test-kms_key_id".into()),
330            dbi_resource_id: Some("test-dbi_resource_id".into()),
331            db_instance_arn: Some("test-db_instance_arn".into()),
332            iops: Some(100),
333            storage_throughput: Some(100),
334        }
335    }
336}
337
338/// This data type represents the information you need to connect to an Amazon RDS DB instance.
339/// This data type is used as a response element in the following actions: CreateDBInstance
340/// DescribeDBInstances DeleteDBInstance For the data structure that represents Amazon Aurora DB
341/// cluster endpoints, see DBClusterEndpoint.
342///
343/// **AWS API**: `rds.v1.Endpoint`
344/// **Reference**: <https://docs.aws.amazon.com/AmazonRDS/latest/APIReference//Endpoint>
345#[derive(Debug, Clone, Default, Serialize, Deserialize)]
346#[serde(rename_all = "PascalCase")]
347pub struct Endpoint {
348    /// Specifies the DNS address of the DB instance.
349    #[serde(skip_serializing_if = "Option::is_none")]
350    pub address: Option<String>,
351
352    /// Specifies the port that the database engine is listening on.
353    #[serde(skip_serializing_if = "Option::is_none")]
354    pub port: Option<i32>,
355
356    /// Specifies the ID that Amazon Route 53 assigns when you create a hosted zone.
357    #[serde(skip_serializing_if = "Option::is_none")]
358    pub hosted_zone_id: Option<String>,
359}
360
361impl Endpoint {
362    #[cfg(any(test, feature = "test-support"))]
363    /// Create a fixture instance for testing.
364    pub fn fixture() -> Self {
365        Self {
366            address: Some("test-address".into()),
367            port: Some(100),
368            hosted_zone_id: Some("test-hosted_zone_id".into()),
369        }
370    }
371}
372
373/// A filter name and value pair that is used to return a more specific list of results from a
374/// describe operation. Filters can be used to match a set of resources by specific criteria,
375/// such as IDs. The filters supported by a describe operation are documented with the describe
376/// operation. Currently, wildcards are not supported in filters. The following actions can be
377/// filtered: DescribeDBClusterBacktracks DescribeDBClusterEndpoints DescribeDBClusters
378/// DescribeDBInstances DescribeDBRecommendations DescribeDBShardGroups
379/// DescribePendingMaintenanceActions
380///
381/// **AWS API**: `rds.v1.Filter`
382/// **Reference**: <https://docs.aws.amazon.com/AmazonRDS/latest/APIReference//Filter>
383#[derive(Debug, Clone, Default, Serialize, Deserialize)]
384#[serde(rename_all = "PascalCase")]
385pub struct Filter {
386    /// The name of the filter. Filter names are case-sensitive.
387    pub name: String,
388
389    /// One or more filter values. Filter values are case-sensitive.
390    #[serde(default)]
391    pub values: Vec<String>,
392}
393
394impl Filter {
395    #[cfg(any(test, feature = "test-support"))]
396    /// Create a fixture instance for testing.
397    pub fn fixture() -> Self {
398        Self {
399            name: "test-name".into(),
400            values: vec![],
401        }
402    }
403}
404
405///
406/// **AWS API**: `rds.v1.DescribeDBSnapshotsMessage`
407/// **Reference**: <https://docs.aws.amazon.com/AmazonRDS/latest/APIReference//DescribeDBSnapshotsMessage>
408///
409/// ## Coverage
410/// 8 of 9 fields included.
411/// Omitted fields:
412/// - `DbiResourceId` — not selected in manifest
413#[derive(Debug, Clone, Default, Serialize, Deserialize)]
414#[serde(rename_all = "PascalCase")]
415pub struct DescribeDBSnapshotsRequest {
416    /// The ID of the DB instance to retrieve the list of DB snapshots for. This parameter isn't
417    /// case-sensitive. Constraints: If supplied, must match the identifier of an existing
418    /// DBInstance.
419    #[serde(rename = "DBInstanceIdentifier")]
420    #[serde(skip_serializing_if = "Option::is_none")]
421    pub db_instance_identifier: Option<String>,
422
423    /// A specific DB snapshot identifier to describe. This value is stored as a lowercase
424    /// string. Constraints: If supplied, must match the identifier of an existing DBSnapshot.
425    /// If this identifier is for an automated snapshot, the SnapshotType parameter must also be
426    /// specified.
427    #[serde(rename = "DBSnapshotIdentifier")]
428    #[serde(skip_serializing_if = "Option::is_none")]
429    pub db_snapshot_identifier: Option<String>,
430
431    /// The type of snapshots to be returned. You can specify one of the following values:
432    /// automated
433    /// - Return all DB snapshots that have been automatically taken by Amazon RDS for my Amazon
434    ///   Web Services account. manual
435    /// - Return all DB snapshots that have been taken by my Amazon Web Services account. shared
436    /// - Return all manual DB snapshots that have been shared to my Amazon Web Services
437    ///   account. public
438    /// - Return all DB snapshots that have been marked as public. awsbackup
439    /// - Return the DB snapshots managed by the Amazon Web Services Backup service. For
440    ///   information about Amazon Web Services Backup, see the Amazon Web Services Backup
441    ///   Developer Guide. The awsbackup type does not apply to Aurora. If you don't specify a
442    ///   SnapshotType value, then both automated and manual snapshots are returned. Shared and
443    ///   public DB snapshots are not included in the returned results by default. You can
444    ///   include shared snapshots with these results by enabling the IncludeShared parameter.
445    ///   You can include public snapshots with these results by enabling the IncludePublic
446    ///   parameter. The IncludeShared and IncludePublic parameters don't apply for SnapshotType
447    ///   values of manual or automated. The IncludePublic parameter doesn't apply when
448    ///   SnapshotType is set to shared. The IncludeShared parameter doesn't apply when
449    ///   SnapshotType is set to public.
450    #[serde(skip_serializing_if = "Option::is_none")]
451    pub snapshot_type: Option<String>,
452
453    /// A filter that specifies one or more DB snapshots to describe. Supported filters: db-
454    /// instance-id
455    /// - Accepts DB instance identifiers and DB instance Amazon Resource Names (ARNs). db-
456    ///   snapshot-id
457    /// - Accepts DB snapshot identifiers. dbi-resource-id
458    /// - Accepts identifiers of source DB instances. snapshot-type
459    /// - Accepts types of DB snapshots. engine
460    /// - Accepts names of database engines.
461    #[serde(default)]
462    #[serde(skip_serializing_if = "Vec::is_empty")]
463    pub filters: Vec<Filter>,
464
465    /// The maximum number of records to include in the response. If more records exist than the
466    /// specified MaxRecords value, a pagination token called a marker is included in the
467    /// response so that you can retrieve the remaining results. Default: 100 Constraints:
468    /// Minimum 20, maximum 100.
469    #[serde(skip_serializing_if = "Option::is_none")]
470    pub max_records: Option<i32>,
471
472    /// An optional pagination token provided by a previous DescribeDBSnapshots request. If this
473    /// parameter is specified, the response includes only records beyond the marker, up to the
474    /// value specified by MaxRecords.
475    #[serde(skip_serializing_if = "Option::is_none")]
476    pub marker: Option<String>,
477
478    /// Specifies whether to include shared manual DB cluster snapshots from other Amazon Web
479    /// Services accounts that this Amazon Web Services account has been given permission to
480    /// copy or restore. By default, these snapshots are not included. You can give an Amazon
481    /// Web Services account permission to restore a manual DB snapshot from another Amazon Web
482    /// Services account by using the ModifyDBSnapshotAttribute API action. This setting doesn't
483    /// apply to RDS Custom.
484    #[serde(skip_serializing_if = "Option::is_none")]
485    pub include_shared: Option<bool>,
486
487    /// Specifies whether to include manual DB cluster snapshots that are public and can be
488    /// copied or restored by any Amazon Web Services account. By default, the public snapshots
489    /// are not included. You can share a manual DB snapshot as public by using the
490    /// ModifyDBSnapshotAttribute API. This setting doesn't apply to RDS Custom.
491    #[serde(skip_serializing_if = "Option::is_none")]
492    pub include_public: Option<bool>,
493}
494
495impl DescribeDBSnapshotsRequest {
496    #[cfg(any(test, feature = "test-support"))]
497    /// Create a fixture instance for testing.
498    pub fn fixture() -> Self {
499        Self {
500            db_instance_identifier: Some("test-db_instance_identifier".into()),
501            db_snapshot_identifier: Some("test-db_snapshot_identifier".into()),
502            snapshot_type: Some("test-snapshot_type".into()),
503            filters: vec![],
504            max_records: Some(100),
505            marker: Some("test-marker".into()),
506            include_shared: Some(false),
507            include_public: Some(false),
508        }
509    }
510}
511
512/// Contains the result of a successful invocation of the DescribeDBSnapshots action.
513///
514/// **AWS API**: `rds.v1.DBSnapshotMessage`
515/// **Reference**: <https://docs.aws.amazon.com/AmazonRDS/latest/APIReference//DBSnapshotMessage>
516#[derive(Debug, Clone, Default, Serialize, Deserialize)]
517#[serde(rename_all = "PascalCase")]
518pub struct DescribeDBSnapshotsResponse {
519    /// A list of DBSnapshot instances.
520    #[serde(rename = "DBSnapshots")]
521    #[serde(default)]
522    #[serde(skip_serializing_if = "Vec::is_empty")]
523    pub db_snapshots: Vec<DBSnapshot>,
524
525    /// An optional pagination token provided by a previous request. If this parameter is
526    /// specified, the response includes only records beyond the marker, up to the value
527    /// specified by MaxRecords.
528    #[serde(skip_serializing_if = "Option::is_none")]
529    pub marker: Option<String>,
530}
531
532impl DescribeDBSnapshotsResponse {
533    #[cfg(any(test, feature = "test-support"))]
534    /// Create a fixture instance for testing.
535    pub fn fixture() -> Self {
536        Self {
537            db_snapshots: vec![],
538            marker: Some("test-marker".into()),
539        }
540    }
541}
542
543/// Contains the details of an Amazon RDS DB snapshot. This data type is used as a response
544/// element in the DescribeDBSnapshots action.
545///
546/// **AWS API**: `rds.v1.DBSnapshot`
547/// **Reference**: <https://docs.aws.amazon.com/AmazonRDS/latest/APIReference//DBSnapshot>
548///
549/// ## Coverage
550/// 20 of 40 fields included.
551/// Omitted fields:
552/// - `LicenseModel` — not selected in manifest
553/// - `OptionGroupName` — not selected in manifest
554/// - `SourceRegion` — not selected in manifest
555/// - `SourceDBSnapshotIdentifier` — not selected in manifest
556/// - `TdeCredentialArn` — not selected in manifest
557/// - `BackupRetentionPeriod` — not selected in manifest
558/// - `PreferredBackupWindow` — not selected in manifest
559/// - `Timezone` — not selected in manifest
560/// - `IAMDatabaseAuthenticationEnabled` — not selected in manifest
561/// - `ProcessorFeatures` — not selected in manifest
562/// - `DbiResourceId` — not selected in manifest
563/// - `TagList` — not selected in manifest
564/// - `SnapshotTarget` — not selected in manifest
565/// - `OriginalSnapshotCreateTime` — not selected in manifest
566/// - `SnapshotDatabaseTime` — not selected in manifest
567/// - `DBSystemId` — not selected in manifest
568/// - `MultiTenant` — not selected in manifest
569/// - `DedicatedLogVolume` — not selected in manifest
570/// - `AdditionalStorageVolumes` — not selected in manifest
571/// - `SnapshotAvailabilityZone` — not selected in manifest
572#[derive(Debug, Clone, Default, Serialize, Deserialize)]
573#[serde(rename_all = "PascalCase")]
574pub struct DBSnapshot {
575    /// Specifies the identifier for the DB snapshot.
576    #[serde(rename = "DBSnapshotIdentifier")]
577    #[serde(skip_serializing_if = "Option::is_none")]
578    pub db_snapshot_identifier: Option<String>,
579
580    /// Specifies the DB instance identifier of the DB instance this DB snapshot was created
581    /// from.
582    #[serde(rename = "DBInstanceIdentifier")]
583    #[serde(skip_serializing_if = "Option::is_none")]
584    pub db_instance_identifier: Option<String>,
585
586    /// Specifies when the snapshot was taken in Coordinated Universal Time (UTC). Changes for
587    /// the copy when the snapshot is copied.
588    #[serde(skip_serializing_if = "Option::is_none")]
589    pub snapshot_create_time: Option<String>,
590
591    /// Specifies the name of the database engine.
592    #[serde(skip_serializing_if = "Option::is_none")]
593    pub engine: Option<String>,
594
595    /// Specifies the allocated storage size in gibibytes (GiB).
596    #[serde(skip_serializing_if = "Option::is_none")]
597    pub allocated_storage: Option<i32>,
598
599    /// Specifies the status of this DB snapshot.
600    #[serde(skip_serializing_if = "Option::is_none")]
601    pub status: Option<String>,
602
603    /// Specifies the port that the database engine was listening on at the time of the
604    /// snapshot.
605    #[serde(skip_serializing_if = "Option::is_none")]
606    pub port: Option<i32>,
607
608    /// Specifies the name of the Availability Zone the DB instance was located in at the time
609    /// of the DB snapshot.
610    #[serde(skip_serializing_if = "Option::is_none")]
611    pub availability_zone: Option<String>,
612
613    /// Provides the VPC ID associated with the DB snapshot.
614    #[serde(skip_serializing_if = "Option::is_none")]
615    pub vpc_id: Option<String>,
616
617    /// Specifies the time in Coordinated Universal Time (UTC) when the DB instance, from which
618    /// the snapshot was taken, was created.
619    #[serde(skip_serializing_if = "Option::is_none")]
620    pub instance_create_time: Option<String>,
621
622    /// Provides the master username for the DB snapshot.
623    #[serde(skip_serializing_if = "Option::is_none")]
624    pub master_username: Option<String>,
625
626    /// Specifies the version of the database engine.
627    #[serde(skip_serializing_if = "Option::is_none")]
628    pub engine_version: Option<String>,
629
630    /// Provides the type of the DB snapshot.
631    #[serde(skip_serializing_if = "Option::is_none")]
632    pub snapshot_type: Option<String>,
633
634    /// Specifies the Provisioned IOPS (I/O operations per second) value of the DB instance at
635    /// the time of the snapshot.
636    #[serde(skip_serializing_if = "Option::is_none")]
637    pub iops: Option<i32>,
638
639    /// Specifies the storage throughput for the DB snapshot.
640    #[serde(skip_serializing_if = "Option::is_none")]
641    pub storage_throughput: Option<i32>,
642
643    /// Specifies the storage type associated with DB snapshot.
644    #[serde(skip_serializing_if = "Option::is_none")]
645    pub storage_type: Option<String>,
646
647    /// Indicates whether the DB snapshot is encrypted.
648    #[serde(skip_serializing_if = "Option::is_none")]
649    pub encrypted: Option<bool>,
650
651    /// If Encrypted is true, the Amazon Web Services KMS key identifier for the encrypted DB
652    /// snapshot. The Amazon Web Services KMS key identifier is the key ARN, key ID, alias ARN,
653    /// or alias name for the KMS key.
654    #[serde(skip_serializing_if = "Option::is_none")]
655    pub kms_key_id: Option<String>,
656
657    /// The Amazon Resource Name (ARN) for the DB snapshot.
658    #[serde(rename = "DBSnapshotArn")]
659    #[serde(skip_serializing_if = "Option::is_none")]
660    pub db_snapshot_arn: Option<String>,
661
662    /// The percentage of the estimated data that has been transferred.
663    #[serde(skip_serializing_if = "Option::is_none")]
664    pub percent_progress: Option<i32>,
665}
666
667impl DBSnapshot {
668    #[cfg(any(test, feature = "test-support"))]
669    /// Create a fixture instance for testing.
670    pub fn fixture() -> Self {
671        Self {
672            db_snapshot_identifier: Some("test-db_snapshot_identifier".into()),
673            db_instance_identifier: Some("test-db_instance_identifier".into()),
674            snapshot_create_time: Some("test-snapshot_create_time".into()),
675            engine: Some("test-engine".into()),
676            allocated_storage: Some(100),
677            status: Some("test-status".into()),
678            port: Some(100),
679            availability_zone: Some("test-availability_zone".into()),
680            vpc_id: Some("test-vpc_id".into()),
681            instance_create_time: Some("test-instance_create_time".into()),
682            master_username: Some("test-master_username".into()),
683            engine_version: Some("test-engine_version".into()),
684            snapshot_type: Some("test-snapshot_type".into()),
685            iops: Some(100),
686            storage_throughput: Some(100),
687            storage_type: Some("test-storage_type".into()),
688            encrypted: Some(false),
689            kms_key_id: Some("test-kms_key_id".into()),
690            db_snapshot_arn: Some("test-db_snapshot_arn".into()),
691            percent_progress: Some(100),
692        }
693    }
694}
695
696///
697/// **AWS API**: `rds.v1.DescribeDBSnapshotAttributesMessage`
698/// **Reference**: <https://docs.aws.amazon.com/AmazonRDS/latest/APIReference//DescribeDBSnapshotAttributesMessage>
699#[derive(Debug, Clone, Default, Serialize, Deserialize)]
700#[serde(rename_all = "PascalCase")]
701pub struct DescribeDBSnapshotAttributesRequest {
702    /// The identifier for the DB snapshot to describe the attributes for.
703    #[serde(rename = "DBSnapshotIdentifier")]
704    pub db_snapshot_identifier: String,
705}
706
707impl DescribeDBSnapshotAttributesRequest {
708    #[cfg(any(test, feature = "test-support"))]
709    /// Create a fixture instance for testing.
710    pub fn fixture() -> Self {
711        Self {
712            db_snapshot_identifier: "test-db_snapshot_identifier".into(),
713        }
714    }
715}
716
717///
718/// **AWS API**: `rds.v1.DescribeDBSnapshotAttributesResult`
719/// **Reference**: <https://docs.aws.amazon.com/AmazonRDS/latest/APIReference//DescribeDBSnapshotAttributesResult>
720#[derive(Debug, Clone, Default, Serialize, Deserialize)]
721#[serde(rename_all = "PascalCase")]
722pub struct DescribeDBSnapshotAttributesResponse {
723    /// The `DBSnapshotAttributesResult` field.
724    #[serde(rename = "DBSnapshotAttributesResult")]
725    #[serde(skip_serializing_if = "Option::is_none")]
726    pub db_snapshot_attributes_result: Option<DBSnapshotAttributesResult>,
727}
728
729impl DescribeDBSnapshotAttributesResponse {
730    #[cfg(any(test, feature = "test-support"))]
731    /// Create a fixture instance for testing.
732    pub fn fixture() -> Self {
733        Self {
734            db_snapshot_attributes_result: Some(DBSnapshotAttributesResult::fixture()),
735        }
736    }
737}
738
739/// Contains the results of a successful call to the DescribeDBSnapshotAttributes API action.
740/// Manual DB snapshot attributes are used to authorize other Amazon Web Services accounts to
741/// copy or restore a manual DB snapshot. For more information, see the
742/// ModifyDBSnapshotAttribute API action.
743///
744/// **AWS API**: `rds.v1.DBSnapshotAttributesResult`
745/// **Reference**: <https://docs.aws.amazon.com/AmazonRDS/latest/APIReference//DBSnapshotAttributesResult>
746#[derive(Debug, Clone, Default, Serialize, Deserialize)]
747#[serde(rename_all = "PascalCase")]
748pub struct DBSnapshotAttributesResult {
749    /// The identifier of the manual DB snapshot that the attributes apply to.
750    #[serde(rename = "DBSnapshotIdentifier")]
751    #[serde(skip_serializing_if = "Option::is_none")]
752    pub db_snapshot_identifier: Option<String>,
753
754    /// The list of attributes and values for the manual DB snapshot.
755    #[serde(rename = "DBSnapshotAttributes")]
756    #[serde(default)]
757    #[serde(skip_serializing_if = "Vec::is_empty")]
758    pub db_snapshot_attributes: Vec<DBSnapshotAttribute>,
759}
760
761impl DBSnapshotAttributesResult {
762    #[cfg(any(test, feature = "test-support"))]
763    /// Create a fixture instance for testing.
764    pub fn fixture() -> Self {
765        Self {
766            db_snapshot_identifier: Some("test-db_snapshot_identifier".into()),
767            db_snapshot_attributes: vec![],
768        }
769    }
770}
771
772/// Contains the name and values of a manual DB snapshot attribute Manual DB snapshot attributes
773/// are used to authorize other Amazon Web Services accounts to restore a manual DB snapshot.
774/// For more information, see the ModifyDBSnapshotAttribute API.
775///
776/// **AWS API**: `rds.v1.DBSnapshotAttribute`
777/// **Reference**: <https://docs.aws.amazon.com/AmazonRDS/latest/APIReference//DBSnapshotAttribute>
778#[derive(Debug, Clone, Default, Serialize, Deserialize)]
779#[serde(rename_all = "PascalCase")]
780pub struct DBSnapshotAttribute {
781    /// The name of the manual DB snapshot attribute. The attribute named restore refers to the
782    /// list of Amazon Web Services accounts that have permission to copy or restore the manual
783    /// DB cluster snapshot. For more information, see the ModifyDBSnapshotAttribute API action.
784    #[serde(skip_serializing_if = "Option::is_none")]
785    pub attribute_name: Option<String>,
786
787    /// The value or values for the manual DB snapshot attribute. If the AttributeName field is
788    /// set to restore, then this element returns a list of IDs of the Amazon Web Services
789    /// accounts that are authorized to copy or restore the manual DB snapshot. If a value of
790    /// all is in the list, then the manual DB snapshot is public and available for any Amazon
791    /// Web Services account to copy or restore.
792    #[serde(default)]
793    #[serde(skip_serializing_if = "Vec::is_empty")]
794    pub attribute_values: Vec<String>,
795}
796
797impl DBSnapshotAttribute {
798    #[cfg(any(test, feature = "test-support"))]
799    /// Create a fixture instance for testing.
800    pub fn fixture() -> Self {
801        Self {
802            attribute_name: Some("test-attribute_name".into()),
803            attribute_values: vec![],
804        }
805    }
806}
807
808///
809/// **AWS API**: `rds.v1.ModifyDBInstanceMessage`
810/// **Reference**: <https://docs.aws.amazon.com/AmazonRDS/latest/APIReference//ModifyDBInstanceMessage>
811///
812/// ## Coverage
813/// 15 of 64 fields included.
814/// Omitted fields:
815/// - `DBSubnetGroupName` — not selected in manifest
816/// - `DBSecurityGroups` — not selected in manifest
817/// - `VpcSecurityGroupIds` — not selected in manifest
818/// - `DBParameterGroupName` — not selected in manifest
819/// - `AllowMajorVersionUpgrade` — not selected in manifest
820/// - `LicenseModel` — not selected in manifest
821/// - `OptionGroupName` — not selected in manifest
822/// - `NewDBInstanceIdentifier` — not selected in manifest
823/// - `TdeCredentialArn` — not selected in manifest
824/// - `TdeCredentialPassword` — not selected in manifest
825/// - `CACertificateIdentifier` — not selected in manifest
826/// - `Domain` — not selected in manifest
827/// - `DomainFqdn` — not selected in manifest
828/// - `DomainOu` — not selected in manifest
829/// - `DomainAuthSecretArn` — not selected in manifest
830/// - `DomainDnsIps` — not selected in manifest
831/// - `DisableDomain` — not selected in manifest
832/// - `CopyTagsToSnapshot` — not selected in manifest
833/// - `MonitoringInterval` — not selected in manifest
834/// - `DBPortNumber` — not selected in manifest
835/// - `MonitoringRoleArn` — not selected in manifest
836/// - `DomainIAMRoleName` — not selected in manifest
837/// - `PromotionTier` — not selected in manifest
838/// - `EnableIAMDatabaseAuthentication` — not selected in manifest
839/// - `DatabaseInsightsMode` — not selected in manifest
840/// - `EnablePerformanceInsights` — not selected in manifest
841/// - `PerformanceInsightsKMSKeyId` — not selected in manifest
842/// - `PerformanceInsightsRetentionPeriod` — not selected in manifest
843/// - `CloudwatchLogsExportConfiguration` — not selected in manifest
844/// - `ProcessorFeatures` — not selected in manifest
845/// - `UseDefaultProcessorFeatures` — not selected in manifest
846/// - `DeletionProtection` — not selected in manifest
847/// - `MaxAllocatedStorage` — not selected in manifest
848/// - `CertificateRotationRestart` — not selected in manifest
849/// - `ReplicaMode` — not selected in manifest
850/// - `AutomationMode` — not selected in manifest
851/// - `ResumeFullAutomationModeMinutes` — not selected in manifest
852/// - `EnableCustomerOwnedIp` — not selected in manifest
853/// - `NetworkType` — not selected in manifest
854/// - `AwsBackupRecoveryPointArn` — not selected in manifest
855/// - `ManageMasterUserPassword` — not selected in manifest
856/// - `RotateMasterUserPassword` — not selected in manifest
857/// - `MasterUserSecretKmsKeyId` — not selected in manifest
858/// - `MultiTenant` — not selected in manifest
859/// - `DedicatedLogVolume` — not selected in manifest
860/// - `Engine` — not selected in manifest
861/// - `AdditionalStorageVolumes` — not selected in manifest
862/// - `TagSpecifications` — not selected in manifest
863/// - `MasterUserAuthenticationType` — not selected in manifest
864#[derive(Debug, Clone, Default, Serialize, Deserialize)]
865#[serde(rename_all = "PascalCase")]
866pub struct ModifyDBInstanceRequest {
867    /// The identifier of DB instance to modify. This value is stored as a lowercase string.
868    /// Constraints: Must match the identifier of an existing DB instance.
869    #[serde(rename = "DBInstanceIdentifier")]
870    pub db_instance_identifier: String,
871
872    /// The new amount of storage in gibibytes (GiB) to allocate for the DB instance. For RDS
873    /// for Db2, MariaDB, RDS for MySQL, RDS for Oracle, and RDS for PostgreSQL, the value
874    /// supplied must be at least 10% greater than the current value. Values that are not at
875    /// least 10% greater than the existing value are rounded up so that they are 10% greater
876    /// than the current value. For the valid values for allocated storage for each engine, see
877    /// CreateDBInstance. Constraints: When you increase the allocated storage for a DB instance
878    /// that uses Provisioned IOPS (gp3, io1, or io2 storage type), you must also specify the
879    /// Iops parameter. You can use the current value for Iops.
880    #[serde(skip_serializing_if = "Option::is_none")]
881    pub allocated_storage: Option<i32>,
882
883    /// The new compute and memory capacity of the DB instance, for example db.m4.large. Not all
884    /// DB instance classes are available in all Amazon Web Services Regions, or for all
885    /// database engines. For the full list of DB instance classes, and availability for your
886    /// engine, see DB Instance Class in the Amazon RDS User Guide or Aurora DB instance classes
887    /// in the Amazon Aurora User Guide. For RDS Custom, see DB instance class support for RDS
888    /// Custom for Oracle and DB instance class support for RDS Custom for SQL Server. If you
889    /// modify the DB instance class, an outage occurs during the change. The change is applied
890    /// during the next maintenance window, unless you specify ApplyImmediately in your request.
891    /// Default: Uses existing setting Constraints: If you are modifying the DB instance class
892    /// and upgrading the engine version at the same time, the currently running engine version
893    /// must be supported on the specified DB instance class. Otherwise, the operation returns
894    /// an error. In this case, first run the operation to upgrade the engine version, and then
895    /// run it again to modify the DB instance class.
896    #[serde(rename = "DBInstanceClass")]
897    #[serde(skip_serializing_if = "Option::is_none")]
898    pub db_instance_class: Option<String>,
899
900    /// Specifies whether the modifications in this request and any pending modifications are
901    /// asynchronously applied as soon as possible, regardless of the PreferredMaintenanceWindow
902    /// setting for the DB instance. By default, this parameter is disabled. If this parameter
903    /// is disabled, changes to the DB instance are applied during the next maintenance window.
904    /// Some parameter changes can cause an outage and are applied on the next call to
905    /// RebootDBInstance, or the next failure reboot. Review the table of parameters in
906    /// Modifying a DB Instance in the Amazon RDS User Guide to see the impact of enabling or
907    /// disabling ApplyImmediately for each modified parameter and to determine when the changes
908    /// are applied.
909    #[serde(skip_serializing_if = "Option::is_none")]
910    pub apply_immediately: Option<bool>,
911
912    /// The new password for the master user. Changing this parameter doesn't result in an
913    /// outage and the change is asynchronously applied as soon as possible. Between the time of
914    /// the request and the completion of the request, the MasterUserPassword element exists in
915    /// the PendingModifiedValues element of the operation response. Amazon RDS API operations
916    /// never return the password, so this operation provides a way to regain access to a
917    /// primary instance user if the password is lost. This includes restoring privileges that
918    /// might have been accidentally revoked. This setting doesn't apply to the following DB
919    /// instances: Amazon Aurora The password for the master user is managed by the DB cluster.
920    /// For more information, see ModifyDBCluster. RDS Custom RDS for Oracle CDBs in the multi-
921    /// tenant configuration Specify the master password in ModifyTenantDatabase instead.
922    /// Default: Uses existing setting Constraints: Can't be specified if
923    /// ManageMasterUserPassword is turned on. Can include any printable ASCII character except
924    /// "/", """, or "@". For RDS for Oracle, can't include the "&amp;" (ampersand) or the "'"
925    /// (single quotes) character. Length Constraints: RDS for Db2
926    /// - Must contain from 8 to 255 characters. RDS for MariaDB
927    /// - Must contain from 8 to 41 characters. RDS for Microsoft SQL Server
928    /// - Must contain from 8 to 128 characters. RDS for MySQL
929    /// - Must contain from 8 to 41 characters. RDS for Oracle
930    /// - Must contain from 8 to 30 characters. RDS for PostgreSQL
931    /// - Must contain from 8 to 128 characters.
932    #[serde(skip_serializing_if = "Option::is_none")]
933    pub master_user_password: Option<String>,
934
935    /// The number of days to retain automated backups. Setting this parameter to a positive
936    /// number enables backups. Setting this parameter to 0 disables automated backups. Enabling
937    /// and disabling backups can result in a brief I/O suspension that lasts from a few seconds
938    /// to a few minutes, depending on the size and class of your DB instance. These changes are
939    /// applied during the next maintenance window unless the ApplyImmediately parameter is
940    /// enabled for this request. If you change the parameter from one non-zero value to another
941    /// non-zero value, the change is asynchronously applied as soon as possible. This setting
942    /// doesn't apply to Amazon Aurora DB instances. The retention period for automated backups
943    /// is managed by the DB cluster. For more information, see ModifyDBCluster. Default: Uses
944    /// existing setting Constraints: Must be a value from 0 to 35. Can't be set to 0 if the DB
945    /// instance is a source to read replicas. Can't be set to 0 for an RDS Custom for Oracle DB
946    /// instance.
947    #[serde(skip_serializing_if = "Option::is_none")]
948    pub backup_retention_period: Option<i32>,
949
950    /// The daily time range during which automated backups are created if automated backups are
951    /// enabled, as determined by the BackupRetentionPeriod parameter. Changing this parameter
952    /// doesn't result in an outage and the change is asynchronously applied as soon as
953    /// possible. The default is a 30-minute window selected at random from an 8-hour block of
954    /// time for each Amazon Web Services Region. For more information, see Backup window in the
955    /// Amazon RDS User Guide. This setting doesn't apply to Amazon Aurora DB instances. The
956    /// daily time range for creating automated backups is managed by the DB cluster. For more
957    /// information, see ModifyDBCluster. Constraints: Must be in the format hh24:mi-hh24:mi.
958    /// Must be in Universal Coordinated Time (UTC). Must not conflict with the preferred
959    /// maintenance window. Must be at least 30 minutes.
960    #[serde(skip_serializing_if = "Option::is_none")]
961    pub preferred_backup_window: Option<String>,
962
963    /// The weekly time range during which system maintenance can occur, which might result in
964    /// an outage. Changing this parameter doesn't result in an outage, except in the following
965    /// situation, and the change is asynchronously applied as soon as possible. If there are
966    /// pending actions that cause a reboot, and the maintenance window is changed to include
967    /// the current time, then changing this parameter causes a reboot of the DB instance. If
968    /// you change this window to the current time, there must be at least 30 minutes between
969    /// the current time and end of the window to ensure pending changes are applied. For more
970    /// information, see Amazon RDS Maintenance Window in the Amazon RDS User Guide. Default:
971    /// Uses existing setting Constraints: Must be in the format ddd:hh24:mi-ddd:hh24:mi. The
972    /// day values must be mon | tue | wed | thu | fri | sat | sun. Must be in Universal
973    /// Coordinated Time (UTC). Must not conflict with the preferred backup window. Must be at
974    /// least 30 minutes.
975    #[serde(skip_serializing_if = "Option::is_none")]
976    pub preferred_maintenance_window: Option<String>,
977
978    /// Specifies whether the DB instance is a Multi-AZ deployment. Changing this parameter
979    /// doesn't result in an outage. The change is applied during the next maintenance window
980    /// unless the ApplyImmediately parameter is enabled for this request. This setting doesn't
981    /// apply to RDS Custom DB instances.
982    #[serde(rename = "MultiAZ")]
983    #[serde(skip_serializing_if = "Option::is_none")]
984    pub multi_az: Option<bool>,
985
986    /// The version number of the database engine to upgrade to. Changing this parameter results
987    /// in an outage and the change is applied during the next maintenance window unless the
988    /// ApplyImmediately parameter is enabled for this request. For major version upgrades, if a
989    /// nondefault DB parameter group is currently in use, a new DB parameter group in the DB
990    /// parameter group family for the new engine version must be specified. The new DB
991    /// parameter group can be the default for that DB parameter group family. If you specify
992    /// only a major version, Amazon RDS updates the DB instance to the default minor version if
993    /// the current minor version is lower. For information about valid engine versions, see
994    /// CreateDBInstance, or call DescribeDBEngineVersions. If the instance that you're
995    /// modifying is acting as a read replica, the engine version that you specify must be the
996    /// same or higher than the version that the source DB instance or cluster is running. In
997    /// RDS Custom for Oracle, this parameter is supported for read replicas only if they are in
998    /// the PATCH_DB_FAILURE lifecycle. Constraints: If you are upgrading the engine version and
999    /// modifying the DB instance class at the same time, the currently running engine version
1000    /// must be supported on the specified DB instance class. Otherwise, the operation returns
1001    /// an error. In this case, first run the operation to upgrade the engine version, and then
1002    /// run it again to modify the DB instance class.
1003    #[serde(skip_serializing_if = "Option::is_none")]
1004    pub engine_version: Option<String>,
1005
1006    /// Specifies whether minor version upgrades are applied automatically to the DB instance
1007    /// during the maintenance window. An outage occurs when all the following conditions are
1008    /// met: The automatic upgrade is enabled for the maintenance window. A newer minor version
1009    /// is available. RDS has enabled automatic patching for the engine version. If any of the
1010    /// preceding conditions isn't met, Amazon RDS applies the change as soon as possible and
1011    /// doesn't cause an outage. For an RDS Custom DB instance, don't enable this setting.
1012    /// Otherwise, the operation returns an error. For more information about automatic minor
1013    /// version upgrades, see Automatically upgrading the minor engine version.
1014    #[serde(skip_serializing_if = "Option::is_none")]
1015    pub auto_minor_version_upgrade: Option<bool>,
1016
1017    /// The new Provisioned IOPS (I/O operations per second) value for the RDS instance.
1018    /// Changing this setting doesn't result in an outage and the change is applied during the
1019    /// next maintenance window unless the ApplyImmediately parameter is enabled for this
1020    /// request. If you are migrating from Provisioned IOPS to standard storage, set this value
1021    /// to 0. The DB instance will require a reboot for the change in storage type to take
1022    /// effect. If you choose to migrate your DB instance from using standard storage to
1023    /// Provisioned IOPS (io1), or from Provisioned IOPS to standard storage, the process can
1024    /// take time. The duration of the migration depends on several factors such as database
1025    /// load, storage size, storage type (standard or Provisioned IOPS), amount of IOPS
1026    /// provisioned (if any), and the number of prior scale storage operations. Typical
1027    /// migration times are under 24 hours, but the process can take up to several days in some
1028    /// cases. During the migration, the DB instance is available for use, but might experience
1029    /// performance degradation. While the migration takes place, nightly backups for the
1030    /// instance are suspended. No other Amazon RDS operations can take place for the instance,
1031    /// including modifying the instance, rebooting the instance, deleting the instance,
1032    /// creating a read replica for the instance, and creating a DB snapshot of the instance.
1033    /// Constraints: For RDS for MariaDB, RDS for MySQL, RDS for Oracle, and RDS for PostgreSQL
1034    /// - The value supplied must be at least 10% greater than the current value. Values that
1035    ///   are not at least 10% greater than the existing value are rounded up so that they are
1036    ///   10% greater than the current value. When you increase the Provisioned IOPS, you must
1037    ///   also specify the AllocatedStorage parameter. You can use the current value for
1038    ///   AllocatedStorage. Default: Uses existing setting
1039    #[serde(skip_serializing_if = "Option::is_none")]
1040    pub iops: Option<i32>,
1041
1042    /// The storage type to associate with the DB instance. If you specify io1, io2, or gp3 you
1043    /// must also include a value for the Iops parameter. If you choose to migrate your DB
1044    /// instance from using standard storage to gp2 (General Purpose SSD), gp3, or Provisioned
1045    /// IOPS (io1), or from these storage types to standard storage, the process can take time.
1046    /// The duration of the migration depends on several factors such as database load, storage
1047    /// size, storage type (standard or Provisioned IOPS), amount of IOPS provisioned (if any),
1048    /// and the number of prior scale storage operations. Typical migration times are under 24
1049    /// hours, but the process can take up to several days in some cases. During the migration,
1050    /// the DB instance is available for use, but might experience performance degradation.
1051    /// While the migration takes place, nightly backups for the instance are suspended. No
1052    /// other Amazon RDS operations can take place for the instance, including modifying the
1053    /// instance, rebooting the instance, deleting the instance, creating a read replica for the
1054    /// instance, and creating a DB snapshot of the instance. Valid Values: gp2 | gp3 | io1 |
1055    /// io2 | standard Default: io1, if the Iops parameter is specified. Otherwise, gp2.
1056    #[serde(skip_serializing_if = "Option::is_none")]
1057    pub storage_type: Option<String>,
1058
1059    /// Specifies whether the DB instance is publicly accessible. When the DB instance is
1060    /// publicly accessible and you connect from outside of the DB instance's virtual private
1061    /// cloud (VPC), its Domain Name System (DNS) endpoint resolves to the public IP address.
1062    /// When you connect from within the same VPC as the DB instance, the endpoint resolves to
1063    /// the private IP address. Access to the DB instance is ultimately controlled by the
1064    /// security group it uses. That public access isn't permitted if the security group
1065    /// assigned to the DB instance doesn't permit it. When the DB instance isn't publicly
1066    /// accessible, it is an internal DB instance with a DNS name that resolves to a private IP
1067    /// address. PubliclyAccessible only applies to DB instances in a VPC. The DB instance must
1068    /// be part of a public subnet and PubliclyAccessible must be enabled for it to be publicly
1069    /// accessible. Changes to the PubliclyAccessible parameter are applied immediately
1070    /// regardless of the value of the ApplyImmediately parameter.
1071    #[serde(skip_serializing_if = "Option::is_none")]
1072    pub publicly_accessible: Option<bool>,
1073
1074    /// The storage throughput value for the DB instance. This setting applies only to the gp3
1075    /// storage type. This setting doesn't apply to Amazon Aurora or RDS Custom DB instances.
1076    #[serde(skip_serializing_if = "Option::is_none")]
1077    pub storage_throughput: Option<i32>,
1078}
1079
1080impl ModifyDBInstanceRequest {
1081    #[cfg(any(test, feature = "test-support"))]
1082    /// Create a fixture instance for testing.
1083    pub fn fixture() -> Self {
1084        Self {
1085            db_instance_identifier: "test-db_instance_identifier".into(),
1086            allocated_storage: Some(100),
1087            db_instance_class: Some("test-db_instance_class".into()),
1088            apply_immediately: Some(false),
1089            master_user_password: Some("test-master_user_password".into()),
1090            backup_retention_period: Some(100),
1091            preferred_backup_window: Some("test-preferred_backup_window".into()),
1092            preferred_maintenance_window: Some("test-preferred_maintenance_window".into()),
1093            multi_az: Some(false),
1094            engine_version: Some("test-engine_version".into()),
1095            auto_minor_version_upgrade: Some(false),
1096            iops: Some(100),
1097            storage_type: Some("test-storage_type".into()),
1098            publicly_accessible: Some(false),
1099            storage_throughput: Some(100),
1100        }
1101    }
1102}
1103
1104///
1105/// **AWS API**: `rds.v1.ModifyDBInstanceResult`
1106/// **Reference**: <https://docs.aws.amazon.com/AmazonRDS/latest/APIReference//ModifyDBInstanceResult>
1107#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1108#[serde(rename_all = "PascalCase")]
1109pub struct ModifyDBInstanceResponse {
1110    /// The `DBInstance` field.
1111    #[serde(rename = "DBInstance")]
1112    #[serde(skip_serializing_if = "Option::is_none")]
1113    pub db_instance: Option<DBInstance>,
1114}
1115
1116impl ModifyDBInstanceResponse {
1117    #[cfg(any(test, feature = "test-support"))]
1118    /// Create a fixture instance for testing.
1119    pub fn fixture() -> Self {
1120        Self {
1121            db_instance: Some(DBInstance::fixture()),
1122        }
1123    }
1124}
1125
1126///
1127/// **AWS API**: `rds.v1.StopDBInstanceMessage`
1128/// **Reference**: <https://docs.aws.amazon.com/AmazonRDS/latest/APIReference//StopDBInstanceMessage>
1129#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1130#[serde(rename_all = "PascalCase")]
1131pub struct StopDBInstanceRequest {
1132    /// The user-supplied instance identifier.
1133    #[serde(rename = "DBInstanceIdentifier")]
1134    pub db_instance_identifier: String,
1135
1136    /// The user-supplied instance identifier of the DB Snapshot created immediately before the
1137    /// DB instance is stopped.
1138    #[serde(rename = "DBSnapshotIdentifier")]
1139    #[serde(skip_serializing_if = "Option::is_none")]
1140    pub db_snapshot_identifier: Option<String>,
1141}
1142
1143impl StopDBInstanceRequest {
1144    #[cfg(any(test, feature = "test-support"))]
1145    /// Create a fixture instance for testing.
1146    pub fn fixture() -> Self {
1147        Self {
1148            db_instance_identifier: "test-db_instance_identifier".into(),
1149            db_snapshot_identifier: Some("test-db_snapshot_identifier".into()),
1150        }
1151    }
1152}
1153
1154///
1155/// **AWS API**: `rds.v1.StopDBInstanceResult`
1156/// **Reference**: <https://docs.aws.amazon.com/AmazonRDS/latest/APIReference//StopDBInstanceResult>
1157#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1158#[serde(rename_all = "PascalCase")]
1159pub struct StopDBInstanceResponse {
1160    /// The `DBInstance` field.
1161    #[serde(rename = "DBInstance")]
1162    #[serde(skip_serializing_if = "Option::is_none")]
1163    pub db_instance: Option<DBInstance>,
1164}
1165
1166impl StopDBInstanceResponse {
1167    #[cfg(any(test, feature = "test-support"))]
1168    /// Create a fixture instance for testing.
1169    pub fn fixture() -> Self {
1170        Self {
1171            db_instance: Some(DBInstance::fixture()),
1172        }
1173    }
1174}
1175
1176///
1177/// **AWS API**: `rds.v1.StartDBInstanceMessage`
1178/// **Reference**: <https://docs.aws.amazon.com/AmazonRDS/latest/APIReference//StartDBInstanceMessage>
1179#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1180#[serde(rename_all = "PascalCase")]
1181pub struct StartDBInstanceRequest {
1182    /// The user-supplied instance identifier.
1183    #[serde(rename = "DBInstanceIdentifier")]
1184    pub db_instance_identifier: String,
1185}
1186
1187impl StartDBInstanceRequest {
1188    #[cfg(any(test, feature = "test-support"))]
1189    /// Create a fixture instance for testing.
1190    pub fn fixture() -> Self {
1191        Self {
1192            db_instance_identifier: "test-db_instance_identifier".into(),
1193        }
1194    }
1195}
1196
1197///
1198/// **AWS API**: `rds.v1.StartDBInstanceResult`
1199/// **Reference**: <https://docs.aws.amazon.com/AmazonRDS/latest/APIReference//StartDBInstanceResult>
1200#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1201#[serde(rename_all = "PascalCase")]
1202pub struct StartDBInstanceResponse {
1203    /// The `DBInstance` field.
1204    #[serde(rename = "DBInstance")]
1205    #[serde(skip_serializing_if = "Option::is_none")]
1206    pub db_instance: Option<DBInstance>,
1207}
1208
1209impl StartDBInstanceResponse {
1210    #[cfg(any(test, feature = "test-support"))]
1211    /// Create a fixture instance for testing.
1212    pub fn fixture() -> Self {
1213        Self {
1214            db_instance: Some(DBInstance::fixture()),
1215        }
1216    }
1217}
1218
1219///
1220/// **AWS API**: `rds.v1.DeleteDBInstanceMessage`
1221/// **Reference**: <https://docs.aws.amazon.com/AmazonRDS/latest/APIReference//DeleteDBInstanceMessage>
1222#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1223#[serde(rename_all = "PascalCase")]
1224pub struct DeleteDBInstanceRequest {
1225    /// The DB instance identifier for the DB instance to be deleted. This parameter isn't case-
1226    /// sensitive. Constraints: Must match the name of an existing DB instance.
1227    #[serde(rename = "DBInstanceIdentifier")]
1228    pub db_instance_identifier: String,
1229
1230    /// Specifies whether to skip the creation of a final DB snapshot before deleting the
1231    /// instance. If you enable this parameter, RDS doesn't create a DB snapshot. If you don't
1232    /// enable this parameter, RDS creates a DB snapshot before the DB instance is deleted. By
1233    /// default, skip isn't enabled, and the DB snapshot is created. If you don't enable this
1234    /// parameter, you must specify the FinalDBSnapshotIdentifier parameter. When a DB instance
1235    /// is in a failure state and has a status of failed, incompatible-restore, or incompatible-
1236    /// network, RDS can delete the instance only if you enable this parameter. If you delete a
1237    /// read replica or an RDS Custom instance, you must enable this setting. This setting is
1238    /// required for RDS Custom.
1239    #[serde(skip_serializing_if = "Option::is_none")]
1240    pub skip_final_snapshot: Option<bool>,
1241
1242    /// The DBSnapshotIdentifier of the new DBSnapshot created when the SkipFinalSnapshot
1243    /// parameter is disabled. If you enable this parameter and also enable SkipFinalShapshot,
1244    /// the command results in an error. This setting doesn't apply to RDS Custom. Constraints:
1245    /// Must be 1 to 255 letters or numbers. First character must be a letter. Can't end with a
1246    /// hyphen or contain two consecutive hyphens. Can't be specified when deleting a read
1247    /// replica.
1248    #[serde(rename = "FinalDBSnapshotIdentifier")]
1249    #[serde(skip_serializing_if = "Option::is_none")]
1250    pub final_db_snapshot_identifier: Option<String>,
1251
1252    /// Specifies whether to remove automated backups immediately after the DB instance is
1253    /// deleted. This parameter isn't case-sensitive. The default is to remove automated backups
1254    /// immediately after the DB instance is deleted.
1255    #[serde(skip_serializing_if = "Option::is_none")]
1256    pub delete_automated_backups: Option<bool>,
1257}
1258
1259impl DeleteDBInstanceRequest {
1260    #[cfg(any(test, feature = "test-support"))]
1261    /// Create a fixture instance for testing.
1262    pub fn fixture() -> Self {
1263        Self {
1264            db_instance_identifier: "test-db_instance_identifier".into(),
1265            skip_final_snapshot: Some(false),
1266            final_db_snapshot_identifier: Some("test-final_db_snapshot_identifier".into()),
1267            delete_automated_backups: Some(false),
1268        }
1269    }
1270}
1271
1272///
1273/// **AWS API**: `rds.v1.DeleteDBInstanceResult`
1274/// **Reference**: <https://docs.aws.amazon.com/AmazonRDS/latest/APIReference//DeleteDBInstanceResult>
1275#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1276#[serde(rename_all = "PascalCase")]
1277pub struct DeleteDBInstanceResponse {
1278    /// The `DBInstance` field.
1279    #[serde(rename = "DBInstance")]
1280    #[serde(skip_serializing_if = "Option::is_none")]
1281    pub db_instance: Option<DBInstance>,
1282}
1283
1284impl DeleteDBInstanceResponse {
1285    #[cfg(any(test, feature = "test-support"))]
1286    /// Create a fixture instance for testing.
1287    pub fn fixture() -> Self {
1288        Self {
1289            db_instance: Some(DBInstance::fixture()),
1290        }
1291    }
1292}
1293
1294///
1295/// **AWS API**: `rds.v1.CreateDBSnapshotMessage`
1296/// **Reference**: <https://docs.aws.amazon.com/AmazonRDS/latest/APIReference//CreateDBSnapshotMessage>
1297#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1298#[serde(rename_all = "PascalCase")]
1299pub struct CreateDBSnapshotRequest {
1300    /// The identifier for the DB snapshot. Constraints: Can't be null, empty, or blank Must
1301    /// contain from 1 to 255 letters, numbers, or hyphens First character must be a letter
1302    /// Can't end with a hyphen or contain two consecutive hyphens Example: my-snapshot-id
1303    #[serde(rename = "DBSnapshotIdentifier")]
1304    pub db_snapshot_identifier: String,
1305
1306    /// The identifier of the DB instance that you want to create the snapshot of. Constraints:
1307    /// Must match the identifier of an existing DBInstance.
1308    #[serde(rename = "DBInstanceIdentifier")]
1309    pub db_instance_identifier: String,
1310
1311    /// The `Tags` field.
1312    #[serde(default)]
1313    #[serde(skip_serializing_if = "Vec::is_empty")]
1314    pub tags: Vec<Tag>,
1315}
1316
1317impl CreateDBSnapshotRequest {
1318    #[cfg(any(test, feature = "test-support"))]
1319    /// Create a fixture instance for testing.
1320    pub fn fixture() -> Self {
1321        Self {
1322            db_snapshot_identifier: "test-db_snapshot_identifier".into(),
1323            db_instance_identifier: "test-db_instance_identifier".into(),
1324            tags: vec![],
1325        }
1326    }
1327}
1328
1329///
1330/// **AWS API**: `rds.v1.CreateDBSnapshotResult`
1331/// **Reference**: <https://docs.aws.amazon.com/AmazonRDS/latest/APIReference//CreateDBSnapshotResult>
1332#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1333#[serde(rename_all = "PascalCase")]
1334pub struct CreateDBSnapshotResponse {
1335    /// The `DBSnapshot` field.
1336    #[serde(rename = "DBSnapshot")]
1337    #[serde(skip_serializing_if = "Option::is_none")]
1338    pub db_snapshot: Option<DBSnapshot>,
1339}
1340
1341impl CreateDBSnapshotResponse {
1342    #[cfg(any(test, feature = "test-support"))]
1343    /// Create a fixture instance for testing.
1344    pub fn fixture() -> Self {
1345        Self {
1346            db_snapshot: Some(DBSnapshot::fixture()),
1347        }
1348    }
1349}
1350
1351///
1352/// **AWS API**: `rds.v1.DeleteDBSnapshotMessage`
1353/// **Reference**: <https://docs.aws.amazon.com/AmazonRDS/latest/APIReference//DeleteDBSnapshotMessage>
1354#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1355#[serde(rename_all = "PascalCase")]
1356pub struct DeleteDBSnapshotRequest {
1357    /// The DB snapshot identifier. Constraints: Must be the name of an existing DB snapshot in
1358    /// the available state.
1359    #[serde(rename = "DBSnapshotIdentifier")]
1360    pub db_snapshot_identifier: String,
1361}
1362
1363impl DeleteDBSnapshotRequest {
1364    #[cfg(any(test, feature = "test-support"))]
1365    /// Create a fixture instance for testing.
1366    pub fn fixture() -> Self {
1367        Self {
1368            db_snapshot_identifier: "test-db_snapshot_identifier".into(),
1369        }
1370    }
1371}
1372
1373///
1374/// **AWS API**: `rds.v1.DeleteDBSnapshotResult`
1375/// **Reference**: <https://docs.aws.amazon.com/AmazonRDS/latest/APIReference//DeleteDBSnapshotResult>
1376#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1377#[serde(rename_all = "PascalCase")]
1378pub struct DeleteDBSnapshotResponse {
1379    /// The `DBSnapshot` field.
1380    #[serde(rename = "DBSnapshot")]
1381    #[serde(skip_serializing_if = "Option::is_none")]
1382    pub db_snapshot: Option<DBSnapshot>,
1383}
1384
1385impl DeleteDBSnapshotResponse {
1386    #[cfg(any(test, feature = "test-support"))]
1387    /// Create a fixture instance for testing.
1388    pub fn fixture() -> Self {
1389        Self {
1390            db_snapshot: Some(DBSnapshot::fixture()),
1391        }
1392    }
1393}
1394
1395///
1396/// **AWS API**: `rds.v1.ModifyDBSnapshotAttributeMessage`
1397/// **Reference**: <https://docs.aws.amazon.com/AmazonRDS/latest/APIReference//ModifyDBSnapshotAttributeMessage>
1398#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1399#[serde(rename_all = "PascalCase")]
1400pub struct ModifyDBSnapshotAttributeRequest {
1401    /// The identifier for the DB snapshot to modify the attributes for.
1402    #[serde(rename = "DBSnapshotIdentifier")]
1403    pub db_snapshot_identifier: String,
1404
1405    /// The name of the DB snapshot attribute to modify. To manage authorization for other
1406    /// Amazon Web Services accounts to copy or restore a manual DB snapshot, set this value to
1407    /// restore. To view the list of attributes available to modify, use the
1408    /// DescribeDBSnapshotAttributes API operation.
1409    pub attribute_name: String,
1410
1411    /// A list of DB snapshot attributes to add to the attribute specified by AttributeName. To
1412    /// authorize other Amazon Web Services accounts to copy or restore a manual snapshot, set
1413    /// this list to include one or more Amazon Web Services account IDs, or all to make the
1414    /// manual DB snapshot restorable by any Amazon Web Services account. Do not add the all
1415    /// value for any manual DB snapshots that contain private information that you don't want
1416    /// available to all Amazon Web Services accounts.
1417    #[serde(default)]
1418    #[serde(skip_serializing_if = "Vec::is_empty")]
1419    pub values_to_add: Vec<String>,
1420
1421    /// A list of DB snapshot attributes to remove from the attribute specified by
1422    /// AttributeName. To remove authorization for other Amazon Web Services accounts to copy or
1423    /// restore a manual snapshot, set this list to include one or more Amazon Web Services
1424    /// account identifiers, or all to remove authorization for any Amazon Web Services account
1425    /// to copy or restore the DB snapshot. If you specify all, an Amazon Web Services account
1426    /// whose account ID is explicitly added to the restore attribute can still copy or restore
1427    /// the manual DB snapshot.
1428    #[serde(default)]
1429    #[serde(skip_serializing_if = "Vec::is_empty")]
1430    pub values_to_remove: Vec<String>,
1431}
1432
1433impl ModifyDBSnapshotAttributeRequest {
1434    #[cfg(any(test, feature = "test-support"))]
1435    /// Create a fixture instance for testing.
1436    pub fn fixture() -> Self {
1437        Self {
1438            db_snapshot_identifier: "test-db_snapshot_identifier".into(),
1439            attribute_name: "test-attribute_name".into(),
1440            values_to_add: vec![],
1441            values_to_remove: vec![],
1442        }
1443    }
1444}
1445
1446///
1447/// **AWS API**: `rds.v1.ModifyDBSnapshotAttributeResult`
1448/// **Reference**: <https://docs.aws.amazon.com/AmazonRDS/latest/APIReference//ModifyDBSnapshotAttributeResult>
1449#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1450#[serde(rename_all = "PascalCase")]
1451pub struct ModifyDBSnapshotAttributeResponse {
1452    /// The `DBSnapshotAttributesResult` field.
1453    #[serde(rename = "DBSnapshotAttributesResult")]
1454    #[serde(skip_serializing_if = "Option::is_none")]
1455    pub db_snapshot_attributes_result: Option<DBSnapshotAttributesResult>,
1456}
1457
1458impl ModifyDBSnapshotAttributeResponse {
1459    #[cfg(any(test, feature = "test-support"))]
1460    /// Create a fixture instance for testing.
1461    pub fn fixture() -> Self {
1462        Self {
1463            db_snapshot_attributes_result: Some(DBSnapshotAttributesResult::fixture()),
1464        }
1465    }
1466}
1467
1468/// Metadata assigned to an Amazon RDS resource consisting of a key-value pair. For more
1469/// information, see Tagging Amazon RDS resources in the Amazon RDS User Guide or Tagging Amazon
1470/// Aurora and Amazon RDS resources in the Amazon Aurora User Guide.
1471///
1472/// **AWS API**: `rds.v1.Tag`
1473/// **Reference**: <https://docs.aws.amazon.com/AmazonRDS/latest/APIReference//Tag>
1474#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1475#[serde(rename_all = "PascalCase")]
1476pub struct Tag {
1477    /// A key is the required name of the tag. The string value can be from 1 to 128 Unicode
1478    /// characters in length and can't be prefixed with aws: or rds:. The string can only
1479    /// contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=',
1480    /// '+', '-', '@' (Java regex: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$").
1481    #[serde(skip_serializing_if = "Option::is_none")]
1482    pub key: Option<String>,
1483
1484    /// A value is the optional value of the tag. The string value can be from 1 to 256 Unicode
1485    /// characters in length and can't be prefixed with aws: or rds:. The string can only
1486    /// contain only the set of Unicode letters, digits, white-space, '_', '.', ':', '/', '=',
1487    /// '+', '-', '@' (Java regex: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$").
1488    #[serde(skip_serializing_if = "Option::is_none")]
1489    pub value: Option<String>,
1490}
1491
1492impl Tag {
1493    #[cfg(any(test, feature = "test-support"))]
1494    /// Create a fixture instance for testing.
1495    pub fn fixture() -> Self {
1496        Self {
1497            key: Some("test-key".into()),
1498            value: Some("test-value".into()),
1499        }
1500    }
1501}