rusoto_dms/
generated.rs

1// =================================================================
2//
3//                           * WARNING *
4//
5//                    This file is generated!
6//
7//  Changes made to this file will be overwritten. If changes are
8//  required to the generated code, the service_crategen project
9//  must be updated to generate the changes.
10//
11// =================================================================
12
13use std::error::Error;
14use std::fmt;
15
16use async_trait::async_trait;
17use rusoto_core::credential::ProvideAwsCredentials;
18use rusoto_core::region;
19use rusoto_core::request::{BufferedHttpResponse, DispatchSignedRequest};
20use rusoto_core::{Client, RusotoError};
21
22use rusoto_core::proto;
23use rusoto_core::request::HttpResponse;
24use rusoto_core::signature::SignedRequest;
25#[allow(unused_imports)]
26use serde::{Deserialize, Serialize};
27
28impl DatabaseMigrationServiceClient {
29    fn new_signed_request(&self, http_method: &str, request_uri: &str) -> SignedRequest {
30        let mut request = SignedRequest::new(http_method, "dms", &self.region, request_uri);
31
32        request.set_content_type("application/x-amz-json-1.1".to_owned());
33
34        request
35    }
36
37    async fn sign_and_dispatch<E>(
38        &self,
39        request: SignedRequest,
40        from_response: fn(BufferedHttpResponse) -> RusotoError<E>,
41    ) -> Result<HttpResponse, RusotoError<E>> {
42        let mut response = self.client.sign_and_dispatch(request).await?;
43        if !response.status.is_success() {
44            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
45            return Err(from_response(response));
46        }
47
48        Ok(response)
49    }
50}
51
52use serde_json;
53/// <p>Describes a quota for an AWS account, for example, the number of replication instances allowed.</p>
54#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
55#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
56pub struct AccountQuota {
57    /// <p>The name of the AWS DMS quota for this AWS account.</p>
58    #[serde(rename = "AccountQuotaName")]
59    #[serde(skip_serializing_if = "Option::is_none")]
60    pub account_quota_name: Option<String>,
61    /// <p>The maximum allowed value for the quota.</p>
62    #[serde(rename = "Max")]
63    #[serde(skip_serializing_if = "Option::is_none")]
64    pub max: Option<i64>,
65    /// <p>The amount currently used toward the quota maximum.</p>
66    #[serde(rename = "Used")]
67    #[serde(skip_serializing_if = "Option::is_none")]
68    pub used: Option<i64>,
69}
70
71/// <p>Associates a set of tags with an AWS DMS resource.</p>
72#[derive(Clone, Debug, Default, PartialEq, Serialize)]
73#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
74pub struct AddTagsToResourceMessage {
75    /// <p>Identifies the AWS DMS resource to which tags should be added. The value for this parameter is an Amazon Resource Name (ARN).</p> <p>For AWS DMS, you can tag a replication instance, an endpoint, or a replication task.</p>
76    #[serde(rename = "ResourceArn")]
77    pub resource_arn: String,
78    /// <p>One or more tags to be assigned to the resource.</p>
79    #[serde(rename = "Tags")]
80    pub tags: Vec<Tag>,
81}
82
83/// <p><p/></p>
84#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
85#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
86pub struct AddTagsToResourceResponse {}
87
88/// <p><p/></p>
89#[derive(Clone, Debug, Default, PartialEq, Serialize)]
90#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
91pub struct ApplyPendingMaintenanceActionMessage {
92    /// <p>The pending maintenance action to apply to this resource.</p>
93    #[serde(rename = "ApplyAction")]
94    pub apply_action: String,
95    /// <p><p>A value that specifies the type of opt-in request, or undoes an opt-in request. You can&#39;t undo an opt-in request of type <code>immediate</code>.</p> <p>Valid values:</p> <ul> <li> <p> <code>immediate</code> - Apply the maintenance action immediately.</p> </li> <li> <p> <code>next-maintenance</code> - Apply the maintenance action during the next maintenance window for the resource.</p> </li> <li> <p> <code>undo-opt-in</code> - Cancel any existing <code>next-maintenance</code> opt-in requests.</p> </li> </ul></p>
96    #[serde(rename = "OptInType")]
97    pub opt_in_type: String,
98    /// <p>The Amazon Resource Name (ARN) of the AWS DMS resource that the pending maintenance action applies to.</p>
99    #[serde(rename = "ReplicationInstanceArn")]
100    pub replication_instance_arn: String,
101}
102
103/// <p><p/></p>
104#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
105#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
106pub struct ApplyPendingMaintenanceActionResponse {
107    /// <p>The AWS DMS resource that the pending maintenance action will be applied to.</p>
108    #[serde(rename = "ResourcePendingMaintenanceActions")]
109    #[serde(skip_serializing_if = "Option::is_none")]
110    pub resource_pending_maintenance_actions: Option<ResourcePendingMaintenanceActions>,
111}
112
113/// <p>The name of an Availability Zone for use during database migration.</p>
114#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
115#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
116pub struct AvailabilityZone {
117    /// <p>The name of the Availability Zone.</p>
118    #[serde(rename = "Name")]
119    #[serde(skip_serializing_if = "Option::is_none")]
120    pub name: Option<String>,
121}
122
123/// <p>The SSL certificate that can be used to encrypt connections between the endpoints and the replication instance.</p>
124#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
125#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
126pub struct Certificate {
127    /// <p>The Amazon Resource Name (ARN) for the certificate.</p>
128    #[serde(rename = "CertificateArn")]
129    #[serde(skip_serializing_if = "Option::is_none")]
130    pub certificate_arn: Option<String>,
131    /// <p>The date that the certificate was created.</p>
132    #[serde(rename = "CertificateCreationDate")]
133    #[serde(skip_serializing_if = "Option::is_none")]
134    pub certificate_creation_date: Option<f64>,
135    /// <p>A customer-assigned name for the certificate. Identifiers must begin with a letter and must contain only ASCII letters, digits, and hyphens. They can't end with a hyphen or contain two consecutive hyphens.</p>
136    #[serde(rename = "CertificateIdentifier")]
137    #[serde(skip_serializing_if = "Option::is_none")]
138    pub certificate_identifier: Option<String>,
139    /// <p>The owner of the certificate.</p>
140    #[serde(rename = "CertificateOwner")]
141    #[serde(skip_serializing_if = "Option::is_none")]
142    pub certificate_owner: Option<String>,
143    /// <p>The contents of a <code>.pem</code> file, which contains an X.509 certificate.</p>
144    #[serde(rename = "CertificatePem")]
145    #[serde(skip_serializing_if = "Option::is_none")]
146    pub certificate_pem: Option<String>,
147    /// <p>The location of an imported Oracle Wallet certificate for use with SSL.</p>
148    #[serde(rename = "CertificateWallet")]
149    #[serde(
150        deserialize_with = "::rusoto_core::serialization::SerdeBlob::deserialize_blob",
151        serialize_with = "::rusoto_core::serialization::SerdeBlob::serialize_blob",
152        default
153    )]
154    #[serde(skip_serializing_if = "Option::is_none")]
155    pub certificate_wallet: Option<bytes::Bytes>,
156    /// <p>The key length of the cryptographic algorithm being used.</p>
157    #[serde(rename = "KeyLength")]
158    #[serde(skip_serializing_if = "Option::is_none")]
159    pub key_length: Option<i64>,
160    /// <p>The signing algorithm for the certificate.</p>
161    #[serde(rename = "SigningAlgorithm")]
162    #[serde(skip_serializing_if = "Option::is_none")]
163    pub signing_algorithm: Option<String>,
164    /// <p>The beginning date that the certificate is valid.</p>
165    #[serde(rename = "ValidFromDate")]
166    #[serde(skip_serializing_if = "Option::is_none")]
167    pub valid_from_date: Option<f64>,
168    /// <p>The final date that the certificate is valid.</p>
169    #[serde(rename = "ValidToDate")]
170    #[serde(skip_serializing_if = "Option::is_none")]
171    pub valid_to_date: Option<f64>,
172}
173
174/// <p>Status of the connection between an endpoint and a replication instance, including Amazon Resource Names (ARNs) and the last error message issued.</p>
175#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
176#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
177pub struct Connection {
178    /// <p>The ARN string that uniquely identifies the endpoint.</p>
179    #[serde(rename = "EndpointArn")]
180    #[serde(skip_serializing_if = "Option::is_none")]
181    pub endpoint_arn: Option<String>,
182    /// <p>The identifier of the endpoint. Identifiers must begin with a letter and must contain only ASCII letters, digits, and hyphens. They can't end with a hyphen or contain two consecutive hyphens.</p>
183    #[serde(rename = "EndpointIdentifier")]
184    #[serde(skip_serializing_if = "Option::is_none")]
185    pub endpoint_identifier: Option<String>,
186    /// <p>The error message when the connection last failed.</p>
187    #[serde(rename = "LastFailureMessage")]
188    #[serde(skip_serializing_if = "Option::is_none")]
189    pub last_failure_message: Option<String>,
190    /// <p>The ARN of the replication instance.</p>
191    #[serde(rename = "ReplicationInstanceArn")]
192    #[serde(skip_serializing_if = "Option::is_none")]
193    pub replication_instance_arn: Option<String>,
194    /// <p>The replication instance identifier. This parameter is stored as a lowercase string.</p>
195    #[serde(rename = "ReplicationInstanceIdentifier")]
196    #[serde(skip_serializing_if = "Option::is_none")]
197    pub replication_instance_identifier: Option<String>,
198    /// <p><p>The connection status. This parameter can return one of the following values:</p> <ul> <li> <p> <code>&quot;successful&quot;</code> </p> </li> <li> <p> <code>&quot;testing&quot;</code> </p> </li> <li> <p> <code>&quot;failed&quot;</code> </p> </li> <li> <p> <code>&quot;deleting&quot;</code> </p> </li> </ul></p>
199    #[serde(rename = "Status")]
200    #[serde(skip_serializing_if = "Option::is_none")]
201    pub status: Option<String>,
202}
203
204/// <p><p/></p>
205#[derive(Clone, Debug, Default, PartialEq, Serialize)]
206#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
207pub struct CreateEndpointMessage {
208    /// <p>The Amazon Resource Name (ARN) for the certificate.</p>
209    #[serde(rename = "CertificateArn")]
210    #[serde(skip_serializing_if = "Option::is_none")]
211    pub certificate_arn: Option<String>,
212    /// <p>The name of the endpoint database.</p>
213    #[serde(rename = "DatabaseName")]
214    #[serde(skip_serializing_if = "Option::is_none")]
215    pub database_name: Option<String>,
216    /// <p>The settings in JSON format for the DMS transfer type of source endpoint. </p> <p>Possible settings include the following:</p> <ul> <li> <p> <code>ServiceAccessRoleArn</code> - The IAM role that has permission to access the Amazon S3 bucket.</p> </li> <li> <p> <code>BucketName</code> - The name of the S3 bucket to use.</p> </li> <li> <p> <code>CompressionType</code> - An optional parameter to use GZIP to compress the target files. To use GZIP, set this value to <code>NONE</code> (the default). To keep the files uncompressed, don't use this value.</p> </li> </ul> <p>Shorthand syntax for these settings is as follows: <code>ServiceAccessRoleArn=string,BucketName=string,CompressionType=string</code> </p> <p>JSON syntax for these settings is as follows: <code>{ "ServiceAccessRoleArn": "string", "BucketName": "string", "CompressionType": "none"|"gzip" } </code> </p>
217    #[serde(rename = "DmsTransferSettings")]
218    #[serde(skip_serializing_if = "Option::is_none")]
219    pub dms_transfer_settings: Option<DmsTransferSettings>,
220    /// <p>Settings in JSON format for the target Amazon DynamoDB endpoint. For information about other available settings, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.DynamoDB.html">Using Object Mapping to Migrate Data to DynamoDB</a> in the <i>AWS Database Migration Service User Guide.</i> </p>
221    #[serde(rename = "DynamoDbSettings")]
222    #[serde(skip_serializing_if = "Option::is_none")]
223    pub dynamo_db_settings: Option<DynamoDbSettings>,
224    /// <p>Settings in JSON format for the target Elasticsearch endpoint. For more information about the available settings, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Elasticsearch.html#CHAP_Target.Elasticsearch.Configuration">Extra Connection Attributes When Using Elasticsearch as a Target for AWS DMS</a> in the <i>AWS Database Migration Service User Guide</i>.</p>
225    #[serde(rename = "ElasticsearchSettings")]
226    #[serde(skip_serializing_if = "Option::is_none")]
227    pub elasticsearch_settings: Option<ElasticsearchSettings>,
228    /// <p>The database endpoint identifier. Identifiers must begin with a letter and must contain only ASCII letters, digits, and hyphens. They can't end with a hyphen or contain two consecutive hyphens.</p>
229    #[serde(rename = "EndpointIdentifier")]
230    pub endpoint_identifier: String,
231    /// <p>The type of endpoint. Valid values are <code>source</code> and <code>target</code>.</p>
232    #[serde(rename = "EndpointType")]
233    pub endpoint_type: String,
234    /// <p>The type of engine for the endpoint. Valid values, depending on the <code>EndpointType</code> value, include <code>"mysql"</code>, <code>"oracle"</code>, <code>"postgres"</code>, <code>"mariadb"</code>, <code>"aurora"</code>, <code>"aurora-postgresql"</code>, <code>"redshift"</code>, <code>"s3"</code>, <code>"db2"</code>, <code>"azuredb"</code>, <code>"sybase"</code>, <code>"dynamodb"</code>, <code>"mongodb"</code>, <code>"kinesis"</code>, <code>"kafka"</code>, <code>"elasticsearch"</code>, <code>"documentdb"</code>, <code>"sqlserver"</code>, and <code>"neptune"</code>.</p>
235    #[serde(rename = "EngineName")]
236    pub engine_name: String,
237    /// <p>The external table definition. </p>
238    #[serde(rename = "ExternalTableDefinition")]
239    #[serde(skip_serializing_if = "Option::is_none")]
240    pub external_table_definition: Option<String>,
241    /// <p>Additional attributes associated with the connection. Each attribute is specified as a name-value pair associated by an equal sign (=). Multiple attributes are separated by a semicolon (;) with no additional white space. For information on the attributes available for connecting your source or target endpoint, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Endpoints.html">Working with AWS DMS Endpoints</a> in the <i>AWS Database Migration Service User Guide.</i> </p>
242    #[serde(rename = "ExtraConnectionAttributes")]
243    #[serde(skip_serializing_if = "Option::is_none")]
244    pub extra_connection_attributes: Option<String>,
245    /// <p>Settings in JSON format for the target Apache Kafka endpoint. For more information about the available settings, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Kafka.html">Using Apache Kafka as a Target for AWS Database Migration Service</a> in the <i>AWS Database Migration Service User Guide.</i> </p>
246    #[serde(rename = "KafkaSettings")]
247    #[serde(skip_serializing_if = "Option::is_none")]
248    pub kafka_settings: Option<KafkaSettings>,
249    /// <p>Settings in JSON format for the target endpoint for Amazon Kinesis Data Streams. For more information about the available settings, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Kinesis.html">Using Amazon Kinesis Data Streams as a Target for AWS Database Migration Service</a> in the <i>AWS Database Migration Service User Guide.</i> </p>
250    #[serde(rename = "KinesisSettings")]
251    #[serde(skip_serializing_if = "Option::is_none")]
252    pub kinesis_settings: Option<KinesisSettings>,
253    /// <p>An AWS KMS key identifier that is used to encrypt the connection parameters for the endpoint.</p> <p>If you don't specify a value for the <code>KmsKeyId</code> parameter, then AWS DMS uses your default encryption key.</p> <p>AWS KMS creates the default encryption key for your AWS account. Your AWS account has a different default encryption key for each AWS Region.</p>
254    #[serde(rename = "KmsKeyId")]
255    #[serde(skip_serializing_if = "Option::is_none")]
256    pub kms_key_id: Option<String>,
257    /// <p>Settings in JSON format for the source MongoDB endpoint. For more information about the available settings, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MongoDB.html#CHAP_Source.MongoDB.Configuration">Using MongoDB as a Target for AWS Database Migration Service</a> in the <i>AWS Database Migration Service User Guide.</i> </p>
258    #[serde(rename = "MongoDbSettings")]
259    #[serde(skip_serializing_if = "Option::is_none")]
260    pub mongo_db_settings: Option<MongoDbSettings>,
261    /// <p>Settings in JSON format for the target Amazon Neptune endpoint. For more information about the available settings, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Neptune.html#CHAP_Target.Neptune.EndpointSettings">Specifying Endpoint Settings for Amazon Neptune as a Target</a> in the <i>AWS Database Migration Service User Guide.</i> </p>
262    #[serde(rename = "NeptuneSettings")]
263    #[serde(skip_serializing_if = "Option::is_none")]
264    pub neptune_settings: Option<NeptuneSettings>,
265    /// <p>The password to be used to log in to the endpoint database.</p>
266    #[serde(rename = "Password")]
267    #[serde(skip_serializing_if = "Option::is_none")]
268    pub password: Option<String>,
269    /// <p>The port used by the endpoint database.</p>
270    #[serde(rename = "Port")]
271    #[serde(skip_serializing_if = "Option::is_none")]
272    pub port: Option<i64>,
273    #[serde(rename = "RedshiftSettings")]
274    #[serde(skip_serializing_if = "Option::is_none")]
275    pub redshift_settings: Option<RedshiftSettings>,
276    /// <p>Settings in JSON format for the target Amazon S3 endpoint. For more information about the available settings, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.S3.html#CHAP_Target.S3.Configuring">Extra Connection Attributes When Using Amazon S3 as a Target for AWS DMS</a> in the <i>AWS Database Migration Service User Guide.</i> </p>
277    #[serde(rename = "S3Settings")]
278    #[serde(skip_serializing_if = "Option::is_none")]
279    pub s3_settings: Option<S3Settings>,
280    /// <p>The name of the server where the endpoint database resides.</p>
281    #[serde(rename = "ServerName")]
282    #[serde(skip_serializing_if = "Option::is_none")]
283    pub server_name: Option<String>,
284    /// <p> The Amazon Resource Name (ARN) for the service access role that you want to use to create the endpoint. </p>
285    #[serde(rename = "ServiceAccessRoleArn")]
286    #[serde(skip_serializing_if = "Option::is_none")]
287    pub service_access_role_arn: Option<String>,
288    /// <p>The Secure Sockets Layer (SSL) mode to use for the SSL connection. The default is <code>none</code> </p>
289    #[serde(rename = "SslMode")]
290    #[serde(skip_serializing_if = "Option::is_none")]
291    pub ssl_mode: Option<String>,
292    /// <p>One or more tags to be assigned to the endpoint.</p>
293    #[serde(rename = "Tags")]
294    #[serde(skip_serializing_if = "Option::is_none")]
295    pub tags: Option<Vec<Tag>>,
296    /// <p>The user name to be used to log in to the endpoint database.</p>
297    #[serde(rename = "Username")]
298    #[serde(skip_serializing_if = "Option::is_none")]
299    pub username: Option<String>,
300}
301
302/// <p><p/></p>
303#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
304#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
305pub struct CreateEndpointResponse {
306    /// <p>The endpoint that was created.</p>
307    #[serde(rename = "Endpoint")]
308    #[serde(skip_serializing_if = "Option::is_none")]
309    pub endpoint: Option<Endpoint>,
310}
311
312/// <p><p/></p>
313#[derive(Clone, Debug, Default, PartialEq, Serialize)]
314#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
315pub struct CreateEventSubscriptionMessage {
316    /// <p> A Boolean value; set to <code>true</code> to activate the subscription, or set to <code>false</code> to create the subscription but not activate it. </p>
317    #[serde(rename = "Enabled")]
318    #[serde(skip_serializing_if = "Option::is_none")]
319    pub enabled: Option<bool>,
320    /// <p>A list of event categories for a source type that you want to subscribe to. For more information, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Events.html">Working with Events and Notifications</a> in the <i>AWS Database Migration Service User Guide.</i> </p>
321    #[serde(rename = "EventCategories")]
322    #[serde(skip_serializing_if = "Option::is_none")]
323    pub event_categories: Option<Vec<String>>,
324    /// <p> The Amazon Resource Name (ARN) of the Amazon SNS topic created for event notification. The ARN is created by Amazon SNS when you create a topic and subscribe to it. </p>
325    #[serde(rename = "SnsTopicArn")]
326    pub sns_topic_arn: String,
327    /// <p>A list of identifiers for which AWS DMS provides notification events.</p> <p>If you don't specify a value, notifications are provided for all sources.</p> <p>If you specify multiple values, they must be of the same type. For example, if you specify a database instance ID, then all of the other values must be database instance IDs.</p>
328    #[serde(rename = "SourceIds")]
329    #[serde(skip_serializing_if = "Option::is_none")]
330    pub source_ids: Option<Vec<String>>,
331    /// <p> The type of AWS DMS resource that generates the events. For example, if you want to be notified of events generated by a replication instance, you set this parameter to <code>replication-instance</code>. If this value isn't specified, all events are returned. </p> <p>Valid values: <code>replication-instance</code> | <code>replication-task</code> </p>
332    #[serde(rename = "SourceType")]
333    #[serde(skip_serializing_if = "Option::is_none")]
334    pub source_type: Option<String>,
335    /// <p>The name of the AWS DMS event notification subscription. This name must be less than 255 characters.</p>
336    #[serde(rename = "SubscriptionName")]
337    pub subscription_name: String,
338    /// <p>One or more tags to be assigned to the event subscription.</p>
339    #[serde(rename = "Tags")]
340    #[serde(skip_serializing_if = "Option::is_none")]
341    pub tags: Option<Vec<Tag>>,
342}
343
344/// <p><p/></p>
345#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
346#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
347pub struct CreateEventSubscriptionResponse {
348    /// <p>The event subscription that was created.</p>
349    #[serde(rename = "EventSubscription")]
350    #[serde(skip_serializing_if = "Option::is_none")]
351    pub event_subscription: Option<EventSubscription>,
352}
353
354/// <p><p/></p>
355#[derive(Clone, Debug, Default, PartialEq, Serialize)]
356#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
357pub struct CreateReplicationInstanceMessage {
358    /// <p>The amount of storage (in gigabytes) to be initially allocated for the replication instance.</p>
359    #[serde(rename = "AllocatedStorage")]
360    #[serde(skip_serializing_if = "Option::is_none")]
361    pub allocated_storage: Option<i64>,
362    /// <p>A value that indicates whether minor engine upgrades are applied automatically to the replication instance during the maintenance window. This parameter defaults to <code>true</code>.</p> <p>Default: <code>true</code> </p>
363    #[serde(rename = "AutoMinorVersionUpgrade")]
364    #[serde(skip_serializing_if = "Option::is_none")]
365    pub auto_minor_version_upgrade: Option<bool>,
366    /// <p>The Availability Zone where the replication instance will be created. The default value is a random, system-chosen Availability Zone in the endpoint's AWS Region, for example: <code>us-east-1d</code> </p>
367    #[serde(rename = "AvailabilityZone")]
368    #[serde(skip_serializing_if = "Option::is_none")]
369    pub availability_zone: Option<String>,
370    /// <p>A list of custom DNS name servers supported for the replication instance to access your on-premise source or target database. This list overrides the default name servers supported by the replication instance. You can specify a comma-separated list of internet addresses for up to four on-premise DNS name servers. For example: <code>"1.1.1.1,2.2.2.2,3.3.3.3,4.4.4.4"</code> </p>
371    #[serde(rename = "DnsNameServers")]
372    #[serde(skip_serializing_if = "Option::is_none")]
373    pub dns_name_servers: Option<String>,
374    /// <p>The engine version number of the replication instance.</p>
375    #[serde(rename = "EngineVersion")]
376    #[serde(skip_serializing_if = "Option::is_none")]
377    pub engine_version: Option<String>,
378    /// <p>An AWS KMS key identifier that is used to encrypt the data on the replication instance.</p> <p>If you don't specify a value for the <code>KmsKeyId</code> parameter, then AWS DMS uses your default encryption key.</p> <p>AWS KMS creates the default encryption key for your AWS account. Your AWS account has a different default encryption key for each AWS Region.</p>
379    #[serde(rename = "KmsKeyId")]
380    #[serde(skip_serializing_if = "Option::is_none")]
381    pub kms_key_id: Option<String>,
382    /// <p> Specifies whether the replication instance is a Multi-AZ deployment. You can't set the <code>AvailabilityZone</code> parameter if the Multi-AZ parameter is set to <code>true</code>. </p>
383    #[serde(rename = "MultiAZ")]
384    #[serde(skip_serializing_if = "Option::is_none")]
385    pub multi_az: Option<bool>,
386    /// <p>The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).</p> <p> Format: <code>ddd:hh24:mi-ddd:hh24:mi</code> </p> <p>Default: A 30-minute window selected at random from an 8-hour block of time per AWS Region, occurring on a random day of the week.</p> <p>Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun</p> <p>Constraints: Minimum 30-minute window.</p>
387    #[serde(rename = "PreferredMaintenanceWindow")]
388    #[serde(skip_serializing_if = "Option::is_none")]
389    pub preferred_maintenance_window: Option<String>,
390    /// <p> Specifies the accessibility options for the replication instance. A value of <code>true</code> represents an instance with a public IP address. A value of <code>false</code> represents an instance with a private IP address. The default value is <code>true</code>. </p>
391    #[serde(rename = "PubliclyAccessible")]
392    #[serde(skip_serializing_if = "Option::is_none")]
393    pub publicly_accessible: Option<bool>,
394    /// <p>The compute and memory capacity of the replication instance as defined for the specified replication instance class. For example to specify the instance class dms.c4.large, set this parameter to <code>"dms.c4.large"</code>.</p> <p>For more information on the settings and capacities for the available replication instance classes, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.html#CHAP_ReplicationInstance.InDepth"> Selecting the right AWS DMS replication instance for your migration</a>. </p>
395    #[serde(rename = "ReplicationInstanceClass")]
396    pub replication_instance_class: String,
397    /// <p>The replication instance identifier. This parameter is stored as a lowercase string.</p> <p>Constraints:</p> <ul> <li> <p>Must contain 1-63 alphanumeric characters or hyphens.</p> </li> <li> <p>First character must be a letter.</p> </li> <li> <p>Can't end with a hyphen or contain two consecutive hyphens.</p> </li> </ul> <p>Example: <code>myrepinstance</code> </p>
398    #[serde(rename = "ReplicationInstanceIdentifier")]
399    pub replication_instance_identifier: String,
400    /// <p>A subnet group to associate with the replication instance.</p>
401    #[serde(rename = "ReplicationSubnetGroupIdentifier")]
402    #[serde(skip_serializing_if = "Option::is_none")]
403    pub replication_subnet_group_identifier: Option<String>,
404    /// <p>One or more tags to be assigned to the replication instance.</p>
405    #[serde(rename = "Tags")]
406    #[serde(skip_serializing_if = "Option::is_none")]
407    pub tags: Option<Vec<Tag>>,
408    /// <p> Specifies the VPC security group to be used with the replication instance. The VPC security group must work with the VPC containing the replication instance. </p>
409    #[serde(rename = "VpcSecurityGroupIds")]
410    #[serde(skip_serializing_if = "Option::is_none")]
411    pub vpc_security_group_ids: Option<Vec<String>>,
412}
413
414/// <p><p/></p>
415#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
416#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
417pub struct CreateReplicationInstanceResponse {
418    /// <p>The replication instance that was created.</p>
419    #[serde(rename = "ReplicationInstance")]
420    #[serde(skip_serializing_if = "Option::is_none")]
421    pub replication_instance: Option<ReplicationInstance>,
422}
423
424/// <p><p/></p>
425#[derive(Clone, Debug, Default, PartialEq, Serialize)]
426#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
427pub struct CreateReplicationSubnetGroupMessage {
428    /// <p>The description for the subnet group.</p>
429    #[serde(rename = "ReplicationSubnetGroupDescription")]
430    pub replication_subnet_group_description: String,
431    /// <p>The name for the replication subnet group. This value is stored as a lowercase string.</p> <p>Constraints: Must contain no more than 255 alphanumeric characters, periods, spaces, underscores, or hyphens. Must not be "default".</p> <p>Example: <code>mySubnetgroup</code> </p>
432    #[serde(rename = "ReplicationSubnetGroupIdentifier")]
433    pub replication_subnet_group_identifier: String,
434    /// <p>One or more subnet IDs to be assigned to the subnet group.</p>
435    #[serde(rename = "SubnetIds")]
436    pub subnet_ids: Vec<String>,
437    /// <p>One or more tags to be assigned to the subnet group.</p>
438    #[serde(rename = "Tags")]
439    #[serde(skip_serializing_if = "Option::is_none")]
440    pub tags: Option<Vec<Tag>>,
441}
442
443/// <p><p/></p>
444#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
445#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
446pub struct CreateReplicationSubnetGroupResponse {
447    /// <p>The replication subnet group that was created.</p>
448    #[serde(rename = "ReplicationSubnetGroup")]
449    #[serde(skip_serializing_if = "Option::is_none")]
450    pub replication_subnet_group: Option<ReplicationSubnetGroup>,
451}
452
453/// <p><p/></p>
454#[derive(Clone, Debug, Default, PartialEq, Serialize)]
455#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
456pub struct CreateReplicationTaskMessage {
457    /// <p><p>Indicates when you want a change data capture (CDC) operation to start. Use either CdcStartPosition or CdcStartTime to specify when you want a CDC operation to start. Specifying both values results in an error.</p> <p> The value can be in date, checkpoint, or LSN/SCN format.</p> <p>Date Example: --cdc-start-position “2018-03-08T12:12:12”</p> <p>Checkpoint Example: --cdc-start-position &quot;checkpoint:V1#27#mysql-bin-changelog.157832:1975:-1:2002:677883278264080:mysql-bin-changelog.157832:1876#0#0#*#0#93&quot;</p> <p>LSN Example: --cdc-start-position “mysql-bin-changelog.000024:373”</p> <note> <p>When you use this task setting with a source PostgreSQL database, a logical replication slot should already be created and associated with the source endpoint. You can verify this by setting the <code>slotName</code> extra connection attribute to the name of this logical replication slot. For more information, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.ConnectionAttrib">Extra Connection Attributes When Using PostgreSQL as a Source for AWS DMS</a>.</p> </note></p>
458    #[serde(rename = "CdcStartPosition")]
459    #[serde(skip_serializing_if = "Option::is_none")]
460    pub cdc_start_position: Option<String>,
461    /// <p>Indicates the start time for a change data capture (CDC) operation. Use either CdcStartTime or CdcStartPosition to specify when you want a CDC operation to start. Specifying both values results in an error.</p> <p>Timestamp Example: --cdc-start-time “2018-03-08T12:12:12”</p>
462    #[serde(rename = "CdcStartTime")]
463    #[serde(skip_serializing_if = "Option::is_none")]
464    pub cdc_start_time: Option<f64>,
465    /// <p>Indicates when you want a change data capture (CDC) operation to stop. The value can be either server time or commit time.</p> <p>Server time example: --cdc-stop-position “server_time:3018-02-09T12:12:12”</p> <p>Commit time example: --cdc-stop-position “commit_time: 3018-02-09T12:12:12 “</p>
466    #[serde(rename = "CdcStopPosition")]
467    #[serde(skip_serializing_if = "Option::is_none")]
468    pub cdc_stop_position: Option<String>,
469    /// <p>The migration type. Valid values: <code>full-load</code> | <code>cdc</code> | <code>full-load-and-cdc</code> </p>
470    #[serde(rename = "MigrationType")]
471    pub migration_type: String,
472    /// <p>The Amazon Resource Name (ARN) of a replication instance.</p>
473    #[serde(rename = "ReplicationInstanceArn")]
474    pub replication_instance_arn: String,
475    /// <p><p>An identifier for the replication task.</p> <p>Constraints:</p> <ul> <li> <p>Must contain 1-255 alphanumeric characters or hyphens.</p> </li> <li> <p>First character must be a letter.</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens.</p> </li> </ul></p>
476    #[serde(rename = "ReplicationTaskIdentifier")]
477    pub replication_task_identifier: String,
478    /// <p>Overall settings for the task, in JSON format. For more information, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.CustomizingTasks.TaskSettings.html">Specifying Task Settings for AWS Database Migration Service Tasks</a> in the <i>AWS Database Migration User Guide.</i> </p>
479    #[serde(rename = "ReplicationTaskSettings")]
480    #[serde(skip_serializing_if = "Option::is_none")]
481    pub replication_task_settings: Option<String>,
482    /// <p>An Amazon Resource Name (ARN) that uniquely identifies the source endpoint.</p>
483    #[serde(rename = "SourceEndpointArn")]
484    pub source_endpoint_arn: String,
485    /// <p>The table mappings for the task, in JSON format. For more information, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.CustomizingTasks.TableMapping.html">Using Table Mapping to Specify Task Settings</a> in the <i>AWS Database Migration Service User Guide.</i> </p>
486    #[serde(rename = "TableMappings")]
487    pub table_mappings: String,
488    /// <p>One or more tags to be assigned to the replication task.</p>
489    #[serde(rename = "Tags")]
490    #[serde(skip_serializing_if = "Option::is_none")]
491    pub tags: Option<Vec<Tag>>,
492    /// <p>An Amazon Resource Name (ARN) that uniquely identifies the target endpoint.</p>
493    #[serde(rename = "TargetEndpointArn")]
494    pub target_endpoint_arn: String,
495    /// <p>Supplemental information that the task requires to migrate the data for certain source and target endpoints. For more information, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.TaskData.html">Specifying Supplemental Data for Task Settings</a> in the <i>AWS Database Migration Service User Guide.</i> </p>
496    #[serde(rename = "TaskData")]
497    #[serde(skip_serializing_if = "Option::is_none")]
498    pub task_data: Option<String>,
499}
500
501/// <p><p/></p>
502#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
503#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
504pub struct CreateReplicationTaskResponse {
505    /// <p>The replication task that was created.</p>
506    #[serde(rename = "ReplicationTask")]
507    #[serde(skip_serializing_if = "Option::is_none")]
508    pub replication_task: Option<ReplicationTask>,
509}
510
511#[derive(Clone, Debug, Default, PartialEq, Serialize)]
512#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
513pub struct DeleteCertificateMessage {
514    /// <p>The Amazon Resource Name (ARN) of the deleted certificate.</p>
515    #[serde(rename = "CertificateArn")]
516    pub certificate_arn: String,
517}
518
519#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
520#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
521pub struct DeleteCertificateResponse {
522    /// <p>The Secure Sockets Layer (SSL) certificate.</p>
523    #[serde(rename = "Certificate")]
524    #[serde(skip_serializing_if = "Option::is_none")]
525    pub certificate: Option<Certificate>,
526}
527
528/// <p><p/></p>
529#[derive(Clone, Debug, Default, PartialEq, Serialize)]
530#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
531pub struct DeleteConnectionMessage {
532    /// <p>The Amazon Resource Name (ARN) string that uniquely identifies the endpoint.</p>
533    #[serde(rename = "EndpointArn")]
534    pub endpoint_arn: String,
535    /// <p>The Amazon Resource Name (ARN) of the replication instance.</p>
536    #[serde(rename = "ReplicationInstanceArn")]
537    pub replication_instance_arn: String,
538}
539
540/// <p><p/></p>
541#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
542#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
543pub struct DeleteConnectionResponse {
544    /// <p>The connection that is being deleted.</p>
545    #[serde(rename = "Connection")]
546    #[serde(skip_serializing_if = "Option::is_none")]
547    pub connection: Option<Connection>,
548}
549
550/// <p><p/></p>
551#[derive(Clone, Debug, Default, PartialEq, Serialize)]
552#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
553pub struct DeleteEndpointMessage {
554    /// <p>The Amazon Resource Name (ARN) string that uniquely identifies the endpoint.</p>
555    #[serde(rename = "EndpointArn")]
556    pub endpoint_arn: String,
557}
558
559/// <p><p/></p>
560#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
561#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
562pub struct DeleteEndpointResponse {
563    /// <p>The endpoint that was deleted.</p>
564    #[serde(rename = "Endpoint")]
565    #[serde(skip_serializing_if = "Option::is_none")]
566    pub endpoint: Option<Endpoint>,
567}
568
569/// <p><p/></p>
570#[derive(Clone, Debug, Default, PartialEq, Serialize)]
571#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
572pub struct DeleteEventSubscriptionMessage {
573    /// <p>The name of the DMS event notification subscription to be deleted.</p>
574    #[serde(rename = "SubscriptionName")]
575    pub subscription_name: String,
576}
577
578/// <p><p/></p>
579#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
580#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
581pub struct DeleteEventSubscriptionResponse {
582    /// <p>The event subscription that was deleted.</p>
583    #[serde(rename = "EventSubscription")]
584    #[serde(skip_serializing_if = "Option::is_none")]
585    pub event_subscription: Option<EventSubscription>,
586}
587
588/// <p><p/></p>
589#[derive(Clone, Debug, Default, PartialEq, Serialize)]
590#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
591pub struct DeleteReplicationInstanceMessage {
592    /// <p>The Amazon Resource Name (ARN) of the replication instance to be deleted.</p>
593    #[serde(rename = "ReplicationInstanceArn")]
594    pub replication_instance_arn: String,
595}
596
597/// <p><p/></p>
598#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
599#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
600pub struct DeleteReplicationInstanceResponse {
601    /// <p>The replication instance that was deleted.</p>
602    #[serde(rename = "ReplicationInstance")]
603    #[serde(skip_serializing_if = "Option::is_none")]
604    pub replication_instance: Option<ReplicationInstance>,
605}
606
607/// <p><p/></p>
608#[derive(Clone, Debug, Default, PartialEq, Serialize)]
609#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
610pub struct DeleteReplicationSubnetGroupMessage {
611    /// <p>The subnet group name of the replication instance.</p>
612    #[serde(rename = "ReplicationSubnetGroupIdentifier")]
613    pub replication_subnet_group_identifier: String,
614}
615
616/// <p><p/></p>
617#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
618#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
619pub struct DeleteReplicationSubnetGroupResponse {}
620
621/// <p><p/></p>
622#[derive(Clone, Debug, Default, PartialEq, Serialize)]
623#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
624pub struct DeleteReplicationTaskMessage {
625    /// <p>The Amazon Resource Name (ARN) of the replication task to be deleted.</p>
626    #[serde(rename = "ReplicationTaskArn")]
627    pub replication_task_arn: String,
628}
629
630/// <p><p/></p>
631#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
632#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
633pub struct DeleteReplicationTaskResponse {
634    /// <p>The deleted replication task.</p>
635    #[serde(rename = "ReplicationTask")]
636    #[serde(skip_serializing_if = "Option::is_none")]
637    pub replication_task: Option<ReplicationTask>,
638}
639
640/// <p><p/></p>
641#[derive(Clone, Debug, Default, PartialEq, Serialize)]
642#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
643pub struct DescribeAccountAttributesMessage {}
644
645/// <p><p/></p>
646#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
647#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
648pub struct DescribeAccountAttributesResponse {
649    /// <p>Account quota information.</p>
650    #[serde(rename = "AccountQuotas")]
651    #[serde(skip_serializing_if = "Option::is_none")]
652    pub account_quotas: Option<Vec<AccountQuota>>,
653    /// <p><p>A unique AWS DMS identifier for an account in a particular AWS Region. The value of this identifier has the following format: <code>c99999999999</code>. DMS uses this identifier to name artifacts. For example, DMS uses this identifier to name the default Amazon S3 bucket for storing task assessment reports in a given AWS Region. The format of this S3 bucket name is the following: <code>dms-<i>AccountNumber</i>-<i>UniqueAccountIdentifier</i>.</code> Here is an example name for this default S3 bucket: <code>dms-111122223333-c44445555666</code>.</p> <note> <p>AWS DMS supports the <code>UniqueAccountIdentifier</code> parameter in versions 3.1.4 and later.</p> </note></p>
654    #[serde(rename = "UniqueAccountIdentifier")]
655    #[serde(skip_serializing_if = "Option::is_none")]
656    pub unique_account_identifier: Option<String>,
657}
658
659#[derive(Clone, Debug, Default, PartialEq, Serialize)]
660#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
661pub struct DescribeCertificatesMessage {
662    /// <p>Filters applied to the certificate described in the form of key-value pairs.</p>
663    #[serde(rename = "Filters")]
664    #[serde(skip_serializing_if = "Option::is_none")]
665    pub filters: Option<Vec<Filter>>,
666    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
667    #[serde(rename = "Marker")]
668    #[serde(skip_serializing_if = "Option::is_none")]
669    pub marker: Option<String>,
670    /// <p> The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. </p> <p>Default: 10</p>
671    #[serde(rename = "MaxRecords")]
672    #[serde(skip_serializing_if = "Option::is_none")]
673    pub max_records: Option<i64>,
674}
675
676#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
677#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
678pub struct DescribeCertificatesResponse {
679    /// <p>The Secure Sockets Layer (SSL) certificates associated with the replication instance.</p>
680    #[serde(rename = "Certificates")]
681    #[serde(skip_serializing_if = "Option::is_none")]
682    pub certificates: Option<Vec<Certificate>>,
683    /// <p>The pagination token.</p>
684    #[serde(rename = "Marker")]
685    #[serde(skip_serializing_if = "Option::is_none")]
686    pub marker: Option<String>,
687}
688
689/// <p><p/></p>
690#[derive(Clone, Debug, Default, PartialEq, Serialize)]
691#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
692pub struct DescribeConnectionsMessage {
693    /// <p>The filters applied to the connection.</p> <p>Valid filter names: endpoint-arn | replication-instance-arn</p>
694    #[serde(rename = "Filters")]
695    #[serde(skip_serializing_if = "Option::is_none")]
696    pub filters: Option<Vec<Filter>>,
697    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
698    #[serde(rename = "Marker")]
699    #[serde(skip_serializing_if = "Option::is_none")]
700    pub marker: Option<String>,
701    /// <p> The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. </p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 100.</p>
702    #[serde(rename = "MaxRecords")]
703    #[serde(skip_serializing_if = "Option::is_none")]
704    pub max_records: Option<i64>,
705}
706
707/// <p><p/></p>
708#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
709#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
710pub struct DescribeConnectionsResponse {
711    /// <p>A description of the connections.</p>
712    #[serde(rename = "Connections")]
713    #[serde(skip_serializing_if = "Option::is_none")]
714    pub connections: Option<Vec<Connection>>,
715    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
716    #[serde(rename = "Marker")]
717    #[serde(skip_serializing_if = "Option::is_none")]
718    pub marker: Option<String>,
719}
720
721/// <p><p/></p>
722#[derive(Clone, Debug, Default, PartialEq, Serialize)]
723#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
724pub struct DescribeEndpointTypesMessage {
725    /// <p>Filters applied to the describe action.</p> <p>Valid filter names: engine-name | endpoint-type</p>
726    #[serde(rename = "Filters")]
727    #[serde(skip_serializing_if = "Option::is_none")]
728    pub filters: Option<Vec<Filter>>,
729    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
730    #[serde(rename = "Marker")]
731    #[serde(skip_serializing_if = "Option::is_none")]
732    pub marker: Option<String>,
733    /// <p> The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. </p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 100.</p>
734    #[serde(rename = "MaxRecords")]
735    #[serde(skip_serializing_if = "Option::is_none")]
736    pub max_records: Option<i64>,
737}
738
739/// <p><p/></p>
740#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
741#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
742pub struct DescribeEndpointTypesResponse {
743    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
744    #[serde(rename = "Marker")]
745    #[serde(skip_serializing_if = "Option::is_none")]
746    pub marker: Option<String>,
747    /// <p>The types of endpoints that are supported.</p>
748    #[serde(rename = "SupportedEndpointTypes")]
749    #[serde(skip_serializing_if = "Option::is_none")]
750    pub supported_endpoint_types: Option<Vec<SupportedEndpointType>>,
751}
752
753/// <p><p/></p>
754#[derive(Clone, Debug, Default, PartialEq, Serialize)]
755#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
756pub struct DescribeEndpointsMessage {
757    /// <p>Filters applied to the describe action.</p> <p>Valid filter names: endpoint-arn | endpoint-type | endpoint-id | engine-name</p>
758    #[serde(rename = "Filters")]
759    #[serde(skip_serializing_if = "Option::is_none")]
760    pub filters: Option<Vec<Filter>>,
761    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
762    #[serde(rename = "Marker")]
763    #[serde(skip_serializing_if = "Option::is_none")]
764    pub marker: Option<String>,
765    /// <p> The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. </p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 100.</p>
766    #[serde(rename = "MaxRecords")]
767    #[serde(skip_serializing_if = "Option::is_none")]
768    pub max_records: Option<i64>,
769}
770
771/// <p><p/></p>
772#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
773#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
774pub struct DescribeEndpointsResponse {
775    /// <p>Endpoint description.</p>
776    #[serde(rename = "Endpoints")]
777    #[serde(skip_serializing_if = "Option::is_none")]
778    pub endpoints: Option<Vec<Endpoint>>,
779    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
780    #[serde(rename = "Marker")]
781    #[serde(skip_serializing_if = "Option::is_none")]
782    pub marker: Option<String>,
783}
784
785/// <p><p/></p>
786#[derive(Clone, Debug, Default, PartialEq, Serialize)]
787#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
788pub struct DescribeEventCategoriesMessage {
789    /// <p>Filters applied to the action.</p>
790    #[serde(rename = "Filters")]
791    #[serde(skip_serializing_if = "Option::is_none")]
792    pub filters: Option<Vec<Filter>>,
793    /// <p> The type of AWS DMS resource that generates events. </p> <p>Valid values: replication-instance | replication-task</p>
794    #[serde(rename = "SourceType")]
795    #[serde(skip_serializing_if = "Option::is_none")]
796    pub source_type: Option<String>,
797}
798
799/// <p><p/></p>
800#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
801#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
802pub struct DescribeEventCategoriesResponse {
803    /// <p>A list of event categories.</p>
804    #[serde(rename = "EventCategoryGroupList")]
805    #[serde(skip_serializing_if = "Option::is_none")]
806    pub event_category_group_list: Option<Vec<EventCategoryGroup>>,
807}
808
809/// <p><p/></p>
810#[derive(Clone, Debug, Default, PartialEq, Serialize)]
811#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
812pub struct DescribeEventSubscriptionsMessage {
813    /// <p>Filters applied to the action.</p>
814    #[serde(rename = "Filters")]
815    #[serde(skip_serializing_if = "Option::is_none")]
816    pub filters: Option<Vec<Filter>>,
817    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
818    #[serde(rename = "Marker")]
819    #[serde(skip_serializing_if = "Option::is_none")]
820    pub marker: Option<String>,
821    /// <p> The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. </p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 100.</p>
822    #[serde(rename = "MaxRecords")]
823    #[serde(skip_serializing_if = "Option::is_none")]
824    pub max_records: Option<i64>,
825    /// <p>The name of the AWS DMS event subscription to be described.</p>
826    #[serde(rename = "SubscriptionName")]
827    #[serde(skip_serializing_if = "Option::is_none")]
828    pub subscription_name: Option<String>,
829}
830
831/// <p><p/></p>
832#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
833#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
834pub struct DescribeEventSubscriptionsResponse {
835    /// <p>A list of event subscriptions.</p>
836    #[serde(rename = "EventSubscriptionsList")]
837    #[serde(skip_serializing_if = "Option::is_none")]
838    pub event_subscriptions_list: Option<Vec<EventSubscription>>,
839    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
840    #[serde(rename = "Marker")]
841    #[serde(skip_serializing_if = "Option::is_none")]
842    pub marker: Option<String>,
843}
844
845/// <p><p/></p>
846#[derive(Clone, Debug, Default, PartialEq, Serialize)]
847#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
848pub struct DescribeEventsMessage {
849    /// <p>The duration of the events to be listed.</p>
850    #[serde(rename = "Duration")]
851    #[serde(skip_serializing_if = "Option::is_none")]
852    pub duration: Option<i64>,
853    /// <p>The end time for the events to be listed.</p>
854    #[serde(rename = "EndTime")]
855    #[serde(skip_serializing_if = "Option::is_none")]
856    pub end_time: Option<f64>,
857    /// <p>A list of event categories for the source type that you've chosen.</p>
858    #[serde(rename = "EventCategories")]
859    #[serde(skip_serializing_if = "Option::is_none")]
860    pub event_categories: Option<Vec<String>>,
861    /// <p>Filters applied to the action.</p>
862    #[serde(rename = "Filters")]
863    #[serde(skip_serializing_if = "Option::is_none")]
864    pub filters: Option<Vec<Filter>>,
865    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
866    #[serde(rename = "Marker")]
867    #[serde(skip_serializing_if = "Option::is_none")]
868    pub marker: Option<String>,
869    /// <p> The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. </p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 100.</p>
870    #[serde(rename = "MaxRecords")]
871    #[serde(skip_serializing_if = "Option::is_none")]
872    pub max_records: Option<i64>,
873    /// <p> The identifier of an event source.</p>
874    #[serde(rename = "SourceIdentifier")]
875    #[serde(skip_serializing_if = "Option::is_none")]
876    pub source_identifier: Option<String>,
877    /// <p>The type of AWS DMS resource that generates events.</p> <p>Valid values: replication-instance | replication-task</p>
878    #[serde(rename = "SourceType")]
879    #[serde(skip_serializing_if = "Option::is_none")]
880    pub source_type: Option<String>,
881    /// <p>The start time for the events to be listed.</p>
882    #[serde(rename = "StartTime")]
883    #[serde(skip_serializing_if = "Option::is_none")]
884    pub start_time: Option<f64>,
885}
886
887/// <p><p/></p>
888#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
889#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
890pub struct DescribeEventsResponse {
891    /// <p>The events described.</p>
892    #[serde(rename = "Events")]
893    #[serde(skip_serializing_if = "Option::is_none")]
894    pub events: Option<Vec<Event>>,
895    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
896    #[serde(rename = "Marker")]
897    #[serde(skip_serializing_if = "Option::is_none")]
898    pub marker: Option<String>,
899}
900
901/// <p><p/></p>
902#[derive(Clone, Debug, Default, PartialEq, Serialize)]
903#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
904pub struct DescribeOrderableReplicationInstancesMessage {
905    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
906    #[serde(rename = "Marker")]
907    #[serde(skip_serializing_if = "Option::is_none")]
908    pub marker: Option<String>,
909    /// <p> The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. </p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 100.</p>
910    #[serde(rename = "MaxRecords")]
911    #[serde(skip_serializing_if = "Option::is_none")]
912    pub max_records: Option<i64>,
913}
914
915/// <p><p/></p>
916#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
917#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
918pub struct DescribeOrderableReplicationInstancesResponse {
919    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
920    #[serde(rename = "Marker")]
921    #[serde(skip_serializing_if = "Option::is_none")]
922    pub marker: Option<String>,
923    /// <p>The order-able replication instances available.</p>
924    #[serde(rename = "OrderableReplicationInstances")]
925    #[serde(skip_serializing_if = "Option::is_none")]
926    pub orderable_replication_instances: Option<Vec<OrderableReplicationInstance>>,
927}
928
929/// <p><p/></p>
930#[derive(Clone, Debug, Default, PartialEq, Serialize)]
931#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
932pub struct DescribePendingMaintenanceActionsMessage {
933    /// <p><p/></p>
934    #[serde(rename = "Filters")]
935    #[serde(skip_serializing_if = "Option::is_none")]
936    pub filters: Option<Vec<Filter>>,
937    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
938    #[serde(rename = "Marker")]
939    #[serde(skip_serializing_if = "Option::is_none")]
940    pub marker: Option<String>,
941    /// <p> The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. </p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 100.</p>
942    #[serde(rename = "MaxRecords")]
943    #[serde(skip_serializing_if = "Option::is_none")]
944    pub max_records: Option<i64>,
945    /// <p>The Amazon Resource Name (ARN) of the replication instance.</p>
946    #[serde(rename = "ReplicationInstanceArn")]
947    #[serde(skip_serializing_if = "Option::is_none")]
948    pub replication_instance_arn: Option<String>,
949}
950
951/// <p><p/></p>
952#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
953#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
954pub struct DescribePendingMaintenanceActionsResponse {
955    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
956    #[serde(rename = "Marker")]
957    #[serde(skip_serializing_if = "Option::is_none")]
958    pub marker: Option<String>,
959    /// <p>The pending maintenance action.</p>
960    #[serde(rename = "PendingMaintenanceActions")]
961    #[serde(skip_serializing_if = "Option::is_none")]
962    pub pending_maintenance_actions: Option<Vec<ResourcePendingMaintenanceActions>>,
963}
964
965/// <p><p/></p>
966#[derive(Clone, Debug, Default, PartialEq, Serialize)]
967#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
968pub struct DescribeRefreshSchemasStatusMessage {
969    /// <p>The Amazon Resource Name (ARN) string that uniquely identifies the endpoint.</p>
970    #[serde(rename = "EndpointArn")]
971    pub endpoint_arn: String,
972}
973
974/// <p><p/></p>
975#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
976#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
977pub struct DescribeRefreshSchemasStatusResponse {
978    /// <p>The status of the schema.</p>
979    #[serde(rename = "RefreshSchemasStatus")]
980    #[serde(skip_serializing_if = "Option::is_none")]
981    pub refresh_schemas_status: Option<RefreshSchemasStatus>,
982}
983
984#[derive(Clone, Debug, Default, PartialEq, Serialize)]
985#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
986pub struct DescribeReplicationInstanceTaskLogsMessage {
987    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>.</p>
988    #[serde(rename = "Marker")]
989    #[serde(skip_serializing_if = "Option::is_none")]
990    pub marker: Option<String>,
991    /// <p> The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. </p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 100.</p>
992    #[serde(rename = "MaxRecords")]
993    #[serde(skip_serializing_if = "Option::is_none")]
994    pub max_records: Option<i64>,
995    /// <p>The Amazon Resource Name (ARN) of the replication instance.</p>
996    #[serde(rename = "ReplicationInstanceArn")]
997    pub replication_instance_arn: String,
998}
999
1000#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1001#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1002pub struct DescribeReplicationInstanceTaskLogsResponse {
1003    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>.</p>
1004    #[serde(rename = "Marker")]
1005    #[serde(skip_serializing_if = "Option::is_none")]
1006    pub marker: Option<String>,
1007    /// <p>The Amazon Resource Name (ARN) of the replication instance.</p>
1008    #[serde(rename = "ReplicationInstanceArn")]
1009    #[serde(skip_serializing_if = "Option::is_none")]
1010    pub replication_instance_arn: Option<String>,
1011    /// <p>An array of replication task log metadata. Each member of the array contains the replication task name, ARN, and task log size (in bytes). </p>
1012    #[serde(rename = "ReplicationInstanceTaskLogs")]
1013    #[serde(skip_serializing_if = "Option::is_none")]
1014    pub replication_instance_task_logs: Option<Vec<ReplicationInstanceTaskLog>>,
1015}
1016
1017/// <p><p/></p>
1018#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1019#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1020pub struct DescribeReplicationInstancesMessage {
1021    /// <p>Filters applied to the describe action.</p> <p>Valid filter names: replication-instance-arn | replication-instance-id | replication-instance-class | engine-version</p>
1022    #[serde(rename = "Filters")]
1023    #[serde(skip_serializing_if = "Option::is_none")]
1024    pub filters: Option<Vec<Filter>>,
1025    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
1026    #[serde(rename = "Marker")]
1027    #[serde(skip_serializing_if = "Option::is_none")]
1028    pub marker: Option<String>,
1029    /// <p> The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. </p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 100.</p>
1030    #[serde(rename = "MaxRecords")]
1031    #[serde(skip_serializing_if = "Option::is_none")]
1032    pub max_records: Option<i64>,
1033}
1034
1035/// <p><p/></p>
1036#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1037#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1038pub struct DescribeReplicationInstancesResponse {
1039    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
1040    #[serde(rename = "Marker")]
1041    #[serde(skip_serializing_if = "Option::is_none")]
1042    pub marker: Option<String>,
1043    /// <p>The replication instances described.</p>
1044    #[serde(rename = "ReplicationInstances")]
1045    #[serde(skip_serializing_if = "Option::is_none")]
1046    pub replication_instances: Option<Vec<ReplicationInstance>>,
1047}
1048
1049/// <p><p/></p>
1050#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1051#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1052pub struct DescribeReplicationSubnetGroupsMessage {
1053    /// <p>Filters applied to the describe action.</p> <p>Valid filter names: replication-subnet-group-id</p>
1054    #[serde(rename = "Filters")]
1055    #[serde(skip_serializing_if = "Option::is_none")]
1056    pub filters: Option<Vec<Filter>>,
1057    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
1058    #[serde(rename = "Marker")]
1059    #[serde(skip_serializing_if = "Option::is_none")]
1060    pub marker: Option<String>,
1061    /// <p> The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. </p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 100.</p>
1062    #[serde(rename = "MaxRecords")]
1063    #[serde(skip_serializing_if = "Option::is_none")]
1064    pub max_records: Option<i64>,
1065}
1066
1067/// <p><p/></p>
1068#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1069#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1070pub struct DescribeReplicationSubnetGroupsResponse {
1071    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
1072    #[serde(rename = "Marker")]
1073    #[serde(skip_serializing_if = "Option::is_none")]
1074    pub marker: Option<String>,
1075    /// <p>A description of the replication subnet groups.</p>
1076    #[serde(rename = "ReplicationSubnetGroups")]
1077    #[serde(skip_serializing_if = "Option::is_none")]
1078    pub replication_subnet_groups: Option<Vec<ReplicationSubnetGroup>>,
1079}
1080
1081/// <p><p/></p>
1082#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1083#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1084pub struct DescribeReplicationTaskAssessmentResultsMessage {
1085    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
1086    #[serde(rename = "Marker")]
1087    #[serde(skip_serializing_if = "Option::is_none")]
1088    pub marker: Option<String>,
1089    /// <p> The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. </p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 100.</p>
1090    #[serde(rename = "MaxRecords")]
1091    #[serde(skip_serializing_if = "Option::is_none")]
1092    pub max_records: Option<i64>,
1093    /// <p>The Amazon Resource Name (ARN) string that uniquely identifies the task. When this input parameter is specified, the API returns only one result and ignore the values of the <code>MaxRecords</code> and <code>Marker</code> parameters. </p>
1094    #[serde(rename = "ReplicationTaskArn")]
1095    #[serde(skip_serializing_if = "Option::is_none")]
1096    pub replication_task_arn: Option<String>,
1097}
1098
1099/// <p><p/></p>
1100#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1101#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1102pub struct DescribeReplicationTaskAssessmentResultsResponse {
1103    /// <p>- The Amazon S3 bucket where the task assessment report is located. </p>
1104    #[serde(rename = "BucketName")]
1105    #[serde(skip_serializing_if = "Option::is_none")]
1106    pub bucket_name: Option<String>,
1107    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
1108    #[serde(rename = "Marker")]
1109    #[serde(skip_serializing_if = "Option::is_none")]
1110    pub marker: Option<String>,
1111    /// <p> The task assessment report. </p>
1112    #[serde(rename = "ReplicationTaskAssessmentResults")]
1113    #[serde(skip_serializing_if = "Option::is_none")]
1114    pub replication_task_assessment_results: Option<Vec<ReplicationTaskAssessmentResult>>,
1115}
1116
1117/// <p><p/></p>
1118#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1119#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1120pub struct DescribeReplicationTasksMessage {
1121    /// <p>Filters applied to the describe action.</p> <p>Valid filter names: replication-task-arn | replication-task-id | migration-type | endpoint-arn | replication-instance-arn</p>
1122    #[serde(rename = "Filters")]
1123    #[serde(skip_serializing_if = "Option::is_none")]
1124    pub filters: Option<Vec<Filter>>,
1125    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
1126    #[serde(rename = "Marker")]
1127    #[serde(skip_serializing_if = "Option::is_none")]
1128    pub marker: Option<String>,
1129    /// <p> The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. </p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 100.</p>
1130    #[serde(rename = "MaxRecords")]
1131    #[serde(skip_serializing_if = "Option::is_none")]
1132    pub max_records: Option<i64>,
1133    /// <p>An option to set to avoid returning information about settings. Use this to reduce overhead when setting information is too large. To use this option, choose <code>true</code>; otherwise, choose <code>false</code> (the default).</p>
1134    #[serde(rename = "WithoutSettings")]
1135    #[serde(skip_serializing_if = "Option::is_none")]
1136    pub without_settings: Option<bool>,
1137}
1138
1139/// <p><p/></p>
1140#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1141#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1142pub struct DescribeReplicationTasksResponse {
1143    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
1144    #[serde(rename = "Marker")]
1145    #[serde(skip_serializing_if = "Option::is_none")]
1146    pub marker: Option<String>,
1147    /// <p>A description of the replication tasks.</p>
1148    #[serde(rename = "ReplicationTasks")]
1149    #[serde(skip_serializing_if = "Option::is_none")]
1150    pub replication_tasks: Option<Vec<ReplicationTask>>,
1151}
1152
1153/// <p><p/></p>
1154#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1155#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1156pub struct DescribeSchemasMessage {
1157    /// <p>The Amazon Resource Name (ARN) string that uniquely identifies the endpoint.</p>
1158    #[serde(rename = "EndpointArn")]
1159    pub endpoint_arn: String,
1160    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
1161    #[serde(rename = "Marker")]
1162    #[serde(skip_serializing_if = "Option::is_none")]
1163    pub marker: Option<String>,
1164    /// <p> The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. </p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 100.</p>
1165    #[serde(rename = "MaxRecords")]
1166    #[serde(skip_serializing_if = "Option::is_none")]
1167    pub max_records: Option<i64>,
1168}
1169
1170/// <p><p/></p>
1171#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1172#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1173pub struct DescribeSchemasResponse {
1174    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
1175    #[serde(rename = "Marker")]
1176    #[serde(skip_serializing_if = "Option::is_none")]
1177    pub marker: Option<String>,
1178    /// <p>The described schema.</p>
1179    #[serde(rename = "Schemas")]
1180    #[serde(skip_serializing_if = "Option::is_none")]
1181    pub schemas: Option<Vec<String>>,
1182}
1183
1184/// <p><p/></p>
1185#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1186#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1187pub struct DescribeTableStatisticsMessage {
1188    /// <p>Filters applied to the describe table statistics action.</p> <p>Valid filter names: schema-name | table-name | table-state</p> <p>A combination of filters creates an AND condition where each record matches all specified filters.</p>
1189    #[serde(rename = "Filters")]
1190    #[serde(skip_serializing_if = "Option::is_none")]
1191    pub filters: Option<Vec<Filter>>,
1192    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
1193    #[serde(rename = "Marker")]
1194    #[serde(skip_serializing_if = "Option::is_none")]
1195    pub marker: Option<String>,
1196    /// <p> The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a marker is included in the response so that the remaining results can be retrieved. </p> <p>Default: 100</p> <p>Constraints: Minimum 20, maximum 500.</p>
1197    #[serde(rename = "MaxRecords")]
1198    #[serde(skip_serializing_if = "Option::is_none")]
1199    pub max_records: Option<i64>,
1200    /// <p>The Amazon Resource Name (ARN) of the replication task.</p>
1201    #[serde(rename = "ReplicationTaskArn")]
1202    pub replication_task_arn: String,
1203}
1204
1205/// <p><p/></p>
1206#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1207#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1208pub struct DescribeTableStatisticsResponse {
1209    /// <p> An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>MaxRecords</code>. </p>
1210    #[serde(rename = "Marker")]
1211    #[serde(skip_serializing_if = "Option::is_none")]
1212    pub marker: Option<String>,
1213    /// <p>The Amazon Resource Name (ARN) of the replication task.</p>
1214    #[serde(rename = "ReplicationTaskArn")]
1215    #[serde(skip_serializing_if = "Option::is_none")]
1216    pub replication_task_arn: Option<String>,
1217    /// <p>The table statistics.</p>
1218    #[serde(rename = "TableStatistics")]
1219    #[serde(skip_serializing_if = "Option::is_none")]
1220    pub table_statistics: Option<Vec<TableStatistics>>,
1221}
1222
1223/// <p> The settings in JSON format for the DMS Transfer type source endpoint. </p>
1224#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1225pub struct DmsTransferSettings {
1226    /// <p> The name of the S3 bucket to use. </p>
1227    #[serde(rename = "BucketName")]
1228    #[serde(skip_serializing_if = "Option::is_none")]
1229    pub bucket_name: Option<String>,
1230    /// <p> The IAM role that has permission to access the Amazon S3 bucket. </p>
1231    #[serde(rename = "ServiceAccessRoleArn")]
1232    #[serde(skip_serializing_if = "Option::is_none")]
1233    pub service_access_role_arn: Option<String>,
1234}
1235
1236/// <p>Provides the Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role used to define an Amazon DynamoDB target endpoint.</p>
1237#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1238pub struct DynamoDbSettings {
1239    /// <p> The Amazon Resource Name (ARN) used by the service access IAM role. </p>
1240    #[serde(rename = "ServiceAccessRoleArn")]
1241    pub service_access_role_arn: String,
1242}
1243
1244/// <p>Provides information that defines an Elasticsearch endpoint.</p>
1245#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1246pub struct ElasticsearchSettings {
1247    /// <p>The endpoint for the Elasticsearch cluster.</p>
1248    #[serde(rename = "EndpointUri")]
1249    pub endpoint_uri: String,
1250    /// <p>The maximum number of seconds for which DMS retries failed API requests to the Elasticsearch cluster.</p>
1251    #[serde(rename = "ErrorRetryDuration")]
1252    #[serde(skip_serializing_if = "Option::is_none")]
1253    pub error_retry_duration: Option<i64>,
1254    /// <p>The maximum percentage of records that can fail to be written before a full load operation stops. </p>
1255    #[serde(rename = "FullLoadErrorPercentage")]
1256    #[serde(skip_serializing_if = "Option::is_none")]
1257    pub full_load_error_percentage: Option<i64>,
1258    /// <p>The Amazon Resource Name (ARN) used by service to access the IAM role.</p>
1259    #[serde(rename = "ServiceAccessRoleArn")]
1260    pub service_access_role_arn: String,
1261}
1262
1263/// <p><p>Describes an endpoint of a database instance in response to operations such as the following:</p> <ul> <li> <p> <code>CreateEndpoint</code> </p> </li> <li> <p> <code>DescribeEndpoint</code> </p> </li> <li> <p> <code>DescribeEndpointTypes</code> </p> </li> <li> <p> <code>ModifyEndpoint</code> </p> </li> </ul></p>
1264#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1265#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1266pub struct Endpoint {
1267    /// <p>The Amazon Resource Name (ARN) used for SSL connection to the endpoint.</p>
1268    #[serde(rename = "CertificateArn")]
1269    #[serde(skip_serializing_if = "Option::is_none")]
1270    pub certificate_arn: Option<String>,
1271    /// <p>The name of the database at the endpoint.</p>
1272    #[serde(rename = "DatabaseName")]
1273    #[serde(skip_serializing_if = "Option::is_none")]
1274    pub database_name: Option<String>,
1275    /// <p>The settings in JSON format for the DMS transfer type of source endpoint. </p> <p>Possible settings include the following:</p> <ul> <li> <p> <code>ServiceAccessRoleArn</code> - The IAM role that has permission to access the Amazon S3 bucket.</p> </li> <li> <p> <code>BucketName</code> - The name of the S3 bucket to use.</p> </li> <li> <p> <code>CompressionType</code> - An optional parameter to use GZIP to compress the target files. To use GZIP, set this value to <code>NONE</code> (the default). To keep the files uncompressed, don't use this value.</p> </li> </ul> <p>Shorthand syntax for these settings is as follows: <code>ServiceAccessRoleArn=string,BucketName=string,CompressionType=string</code> </p> <p>JSON syntax for these settings is as follows: <code>{ "ServiceAccessRoleArn": "string", "BucketName": "string", "CompressionType": "none"|"gzip" } </code> </p>
1276    #[serde(rename = "DmsTransferSettings")]
1277    #[serde(skip_serializing_if = "Option::is_none")]
1278    pub dms_transfer_settings: Option<DmsTransferSettings>,
1279    /// <p>The settings for the target DynamoDB database. For more information, see the <code>DynamoDBSettings</code> structure.</p>
1280    #[serde(rename = "DynamoDbSettings")]
1281    #[serde(skip_serializing_if = "Option::is_none")]
1282    pub dynamo_db_settings: Option<DynamoDbSettings>,
1283    /// <p>The settings for the Elasticsearch source endpoint. For more information, see the <code>ElasticsearchSettings</code> structure.</p>
1284    #[serde(rename = "ElasticsearchSettings")]
1285    #[serde(skip_serializing_if = "Option::is_none")]
1286    pub elasticsearch_settings: Option<ElasticsearchSettings>,
1287    /// <p>The Amazon Resource Name (ARN) string that uniquely identifies the endpoint.</p>
1288    #[serde(rename = "EndpointArn")]
1289    #[serde(skip_serializing_if = "Option::is_none")]
1290    pub endpoint_arn: Option<String>,
1291    /// <p>The database endpoint identifier. Identifiers must begin with a letter and must contain only ASCII letters, digits, and hyphens. They can't end with a hyphen or contain two consecutive hyphens.</p>
1292    #[serde(rename = "EndpointIdentifier")]
1293    #[serde(skip_serializing_if = "Option::is_none")]
1294    pub endpoint_identifier: Option<String>,
1295    /// <p>The type of endpoint. Valid values are <code>source</code> and <code>target</code>.</p>
1296    #[serde(rename = "EndpointType")]
1297    #[serde(skip_serializing_if = "Option::is_none")]
1298    pub endpoint_type: Option<String>,
1299    /// <p>The expanded name for the engine name. For example, if the <code>EngineName</code> parameter is "aurora," this value would be "Amazon Aurora MySQL."</p>
1300    #[serde(rename = "EngineDisplayName")]
1301    #[serde(skip_serializing_if = "Option::is_none")]
1302    pub engine_display_name: Option<String>,
1303    /// <p>The database engine name. Valid values, depending on the EndpointType, include <code>"mysql"</code>, <code>"oracle"</code>, <code>"postgres"</code>, <code>"mariadb"</code>, <code>"aurora"</code>, <code>"aurora-postgresql"</code>, <code>"redshift"</code>, <code>"s3"</code>, <code>"db2"</code>, <code>"azuredb"</code>, <code>"sybase"</code>, <code>"dynamodb"</code>, <code>"mongodb"</code>, <code>"kinesis"</code>, <code>"kafka"</code>, <code>"elasticsearch"</code>, <code>"documentdb"</code>, <code>"sqlserver"</code>, and <code>"neptune"</code>.</p>
1304    #[serde(rename = "EngineName")]
1305    #[serde(skip_serializing_if = "Option::is_none")]
1306    pub engine_name: Option<String>,
1307    /// <p> Value returned by a call to CreateEndpoint that can be used for cross-account validation. Use it on a subsequent call to CreateEndpoint to create the endpoint with a cross-account. </p>
1308    #[serde(rename = "ExternalId")]
1309    #[serde(skip_serializing_if = "Option::is_none")]
1310    pub external_id: Option<String>,
1311    /// <p>The external table definition.</p>
1312    #[serde(rename = "ExternalTableDefinition")]
1313    #[serde(skip_serializing_if = "Option::is_none")]
1314    pub external_table_definition: Option<String>,
1315    /// <p>Additional connection attributes used to connect to the endpoint.</p>
1316    #[serde(rename = "ExtraConnectionAttributes")]
1317    #[serde(skip_serializing_if = "Option::is_none")]
1318    pub extra_connection_attributes: Option<String>,
1319    /// <p>The settings for the Apache Kafka target endpoint. For more information, see the <code>KafkaSettings</code> structure.</p>
1320    #[serde(rename = "KafkaSettings")]
1321    #[serde(skip_serializing_if = "Option::is_none")]
1322    pub kafka_settings: Option<KafkaSettings>,
1323    /// <p>The settings for the Amazon Kinesis target endpoint. For more information, see the <code>KinesisSettings</code> structure.</p>
1324    #[serde(rename = "KinesisSettings")]
1325    #[serde(skip_serializing_if = "Option::is_none")]
1326    pub kinesis_settings: Option<KinesisSettings>,
1327    /// <p>An AWS KMS key identifier that is used to encrypt the connection parameters for the endpoint.</p> <p>If you don't specify a value for the <code>KmsKeyId</code> parameter, then AWS DMS uses your default encryption key.</p> <p>AWS KMS creates the default encryption key for your AWS account. Your AWS account has a different default encryption key for each AWS Region.</p>
1328    #[serde(rename = "KmsKeyId")]
1329    #[serde(skip_serializing_if = "Option::is_none")]
1330    pub kms_key_id: Option<String>,
1331    /// <p>The settings for the MongoDB source endpoint. For more information, see the <code>MongoDbSettings</code> structure.</p>
1332    #[serde(rename = "MongoDbSettings")]
1333    #[serde(skip_serializing_if = "Option::is_none")]
1334    pub mongo_db_settings: Option<MongoDbSettings>,
1335    /// <p>The settings for the Amazon Neptune target endpoint. For more information, see the <code>NeptuneSettings</code> structure.</p>
1336    #[serde(rename = "NeptuneSettings")]
1337    #[serde(skip_serializing_if = "Option::is_none")]
1338    pub neptune_settings: Option<NeptuneSettings>,
1339    /// <p>The port value used to access the endpoint.</p>
1340    #[serde(rename = "Port")]
1341    #[serde(skip_serializing_if = "Option::is_none")]
1342    pub port: Option<i64>,
1343    /// <p>Settings for the Amazon Redshift endpoint.</p>
1344    #[serde(rename = "RedshiftSettings")]
1345    #[serde(skip_serializing_if = "Option::is_none")]
1346    pub redshift_settings: Option<RedshiftSettings>,
1347    /// <p>The settings for the S3 target endpoint. For more information, see the <code>S3Settings</code> structure.</p>
1348    #[serde(rename = "S3Settings")]
1349    #[serde(skip_serializing_if = "Option::is_none")]
1350    pub s3_settings: Option<S3Settings>,
1351    /// <p>The name of the server at the endpoint.</p>
1352    #[serde(rename = "ServerName")]
1353    #[serde(skip_serializing_if = "Option::is_none")]
1354    pub server_name: Option<String>,
1355    /// <p>The Amazon Resource Name (ARN) used by the service access IAM role.</p>
1356    #[serde(rename = "ServiceAccessRoleArn")]
1357    #[serde(skip_serializing_if = "Option::is_none")]
1358    pub service_access_role_arn: Option<String>,
1359    /// <p>The SSL mode used to connect to the endpoint. The default value is <code>none</code>.</p>
1360    #[serde(rename = "SslMode")]
1361    #[serde(skip_serializing_if = "Option::is_none")]
1362    pub ssl_mode: Option<String>,
1363    /// <p>The status of the endpoint.</p>
1364    #[serde(rename = "Status")]
1365    #[serde(skip_serializing_if = "Option::is_none")]
1366    pub status: Option<String>,
1367    /// <p>The user name used to connect to the endpoint.</p>
1368    #[serde(rename = "Username")]
1369    #[serde(skip_serializing_if = "Option::is_none")]
1370    pub username: Option<String>,
1371}
1372
1373/// <p>Describes an identifiable significant activity that affects a replication instance or task. This object can provide the message, the available event categories, the date and source of the event, and the AWS DMS resource type.</p>
1374#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1375#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1376pub struct Event {
1377    /// <p>The date of the event.</p>
1378    #[serde(rename = "Date")]
1379    #[serde(skip_serializing_if = "Option::is_none")]
1380    pub date: Option<f64>,
1381    /// <p>The event categories available for the specified source type.</p>
1382    #[serde(rename = "EventCategories")]
1383    #[serde(skip_serializing_if = "Option::is_none")]
1384    pub event_categories: Option<Vec<String>>,
1385    /// <p>The event message.</p>
1386    #[serde(rename = "Message")]
1387    #[serde(skip_serializing_if = "Option::is_none")]
1388    pub message: Option<String>,
1389    /// <p> The identifier of an event source.</p>
1390    #[serde(rename = "SourceIdentifier")]
1391    #[serde(skip_serializing_if = "Option::is_none")]
1392    pub source_identifier: Option<String>,
1393    /// <p> The type of AWS DMS resource that generates events. </p> <p>Valid values: replication-instance | endpoint | replication-task</p>
1394    #[serde(rename = "SourceType")]
1395    #[serde(skip_serializing_if = "Option::is_none")]
1396    pub source_type: Option<String>,
1397}
1398
1399/// <p>Lists categories of events subscribed to, and generated by, the applicable AWS DMS resource type.</p>
1400#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1401#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1402pub struct EventCategoryGroup {
1403    /// <p> A list of event categories from a source type that you've chosen.</p>
1404    #[serde(rename = "EventCategories")]
1405    #[serde(skip_serializing_if = "Option::is_none")]
1406    pub event_categories: Option<Vec<String>>,
1407    /// <p> The type of AWS DMS resource that generates events. </p> <p>Valid values: replication-instance | replication-server | security-group | replication-task</p>
1408    #[serde(rename = "SourceType")]
1409    #[serde(skip_serializing_if = "Option::is_none")]
1410    pub source_type: Option<String>,
1411}
1412
1413/// <p>Describes an event notification subscription created by the <code>CreateEventSubscription</code> operation.</p>
1414#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1415#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1416pub struct EventSubscription {
1417    /// <p>The AWS DMS event notification subscription Id.</p>
1418    #[serde(rename = "CustSubscriptionId")]
1419    #[serde(skip_serializing_if = "Option::is_none")]
1420    pub cust_subscription_id: Option<String>,
1421    /// <p>The AWS customer account associated with the AWS DMS event notification subscription.</p>
1422    #[serde(rename = "CustomerAwsId")]
1423    #[serde(skip_serializing_if = "Option::is_none")]
1424    pub customer_aws_id: Option<String>,
1425    /// <p>Boolean value that indicates if the event subscription is enabled.</p>
1426    #[serde(rename = "Enabled")]
1427    #[serde(skip_serializing_if = "Option::is_none")]
1428    pub enabled: Option<bool>,
1429    /// <p>A lists of event categories.</p>
1430    #[serde(rename = "EventCategoriesList")]
1431    #[serde(skip_serializing_if = "Option::is_none")]
1432    pub event_categories_list: Option<Vec<String>>,
1433    /// <p>The topic ARN of the AWS DMS event notification subscription.</p>
1434    #[serde(rename = "SnsTopicArn")]
1435    #[serde(skip_serializing_if = "Option::is_none")]
1436    pub sns_topic_arn: Option<String>,
1437    /// <p>A list of source Ids for the event subscription.</p>
1438    #[serde(rename = "SourceIdsList")]
1439    #[serde(skip_serializing_if = "Option::is_none")]
1440    pub source_ids_list: Option<Vec<String>>,
1441    /// <p> The type of AWS DMS resource that generates events. </p> <p>Valid values: replication-instance | replication-server | security-group | replication-task</p>
1442    #[serde(rename = "SourceType")]
1443    #[serde(skip_serializing_if = "Option::is_none")]
1444    pub source_type: Option<String>,
1445    /// <p>The status of the AWS DMS event notification subscription.</p> <p>Constraints:</p> <p>Can be one of the following: creating | modifying | deleting | active | no-permission | topic-not-exist</p> <p>The status "no-permission" indicates that AWS DMS no longer has permission to post to the SNS topic. The status "topic-not-exist" indicates that the topic was deleted after the subscription was created.</p>
1446    #[serde(rename = "Status")]
1447    #[serde(skip_serializing_if = "Option::is_none")]
1448    pub status: Option<String>,
1449    /// <p>The time the AWS DMS event notification subscription was created.</p>
1450    #[serde(rename = "SubscriptionCreationTime")]
1451    #[serde(skip_serializing_if = "Option::is_none")]
1452    pub subscription_creation_time: Option<String>,
1453}
1454
1455/// <p>Identifies the name and value of a source filter object used to limit the number and type of records transferred from your source to your target.</p>
1456#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1457#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1458pub struct Filter {
1459    /// <p>The name of the filter.</p>
1460    #[serde(rename = "Name")]
1461    pub name: String,
1462    /// <p>The filter value.</p>
1463    #[serde(rename = "Values")]
1464    pub values: Vec<String>,
1465}
1466
1467#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1468#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1469pub struct ImportCertificateMessage {
1470    /// <p>A customer-assigned name for the certificate. Identifiers must begin with a letter and must contain only ASCII letters, digits, and hyphens. They can't end with a hyphen or contain two consecutive hyphens.</p>
1471    #[serde(rename = "CertificateIdentifier")]
1472    pub certificate_identifier: String,
1473    /// <p>The contents of a <code>.pem</code> file, which contains an X.509 certificate.</p>
1474    #[serde(rename = "CertificatePem")]
1475    #[serde(skip_serializing_if = "Option::is_none")]
1476    pub certificate_pem: Option<String>,
1477    /// <p>The location of an imported Oracle Wallet certificate for use with SSL.</p>
1478    #[serde(rename = "CertificateWallet")]
1479    #[serde(
1480        deserialize_with = "::rusoto_core::serialization::SerdeBlob::deserialize_blob",
1481        serialize_with = "::rusoto_core::serialization::SerdeBlob::serialize_blob",
1482        default
1483    )]
1484    #[serde(skip_serializing_if = "Option::is_none")]
1485    pub certificate_wallet: Option<bytes::Bytes>,
1486    /// <p>The tags associated with the certificate.</p>
1487    #[serde(rename = "Tags")]
1488    #[serde(skip_serializing_if = "Option::is_none")]
1489    pub tags: Option<Vec<Tag>>,
1490}
1491
1492#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1493#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1494pub struct ImportCertificateResponse {
1495    /// <p>The certificate to be uploaded.</p>
1496    #[serde(rename = "Certificate")]
1497    #[serde(skip_serializing_if = "Option::is_none")]
1498    pub certificate: Option<Certificate>,
1499}
1500
1501/// <p>Provides information that describes an Apache Kafka endpoint. This information includes the output format of records applied to the endpoint and details of transaction and control table data information.</p>
1502#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1503pub struct KafkaSettings {
1504    /// <p>The broker location and port of the Kafka broker that hosts your Kafka instance. Specify the broker in the form <code> <i>broker-hostname-or-ip</i>:<i>port</i> </code>. For example, <code>"ec2-12-345-678-901.compute-1.amazonaws.com:2345"</code>.</p>
1505    #[serde(rename = "Broker")]
1506    #[serde(skip_serializing_if = "Option::is_none")]
1507    pub broker: Option<String>,
1508    /// <p>The topic to which you migrate the data. If you don't specify a topic, AWS DMS specifies <code>"kafka-default-topic"</code> as the migration topic.</p>
1509    #[serde(rename = "Topic")]
1510    #[serde(skip_serializing_if = "Option::is_none")]
1511    pub topic: Option<String>,
1512}
1513
1514/// <p>Provides information that describes an Amazon Kinesis Data Stream endpoint. This information includes the output format of records applied to the endpoint and details of transaction and control table data information.</p>
1515#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1516pub struct KinesisSettings {
1517    /// <p>Shows detailed control information for table definition, column definition, and table and column changes in the Kinesis message output. The default is <code>False</code>.</p>
1518    #[serde(rename = "IncludeControlDetails")]
1519    #[serde(skip_serializing_if = "Option::is_none")]
1520    pub include_control_details: Option<bool>,
1521    /// <p>Shows the partition value within the Kinesis message output, unless the partition type is <code>schema-table-type</code>. The default is <code>False</code>.</p>
1522    #[serde(rename = "IncludePartitionValue")]
1523    #[serde(skip_serializing_if = "Option::is_none")]
1524    pub include_partition_value: Option<bool>,
1525    /// <p>Includes any data definition language (DDL) operations that change the table in the control data, such as <code>rename-table</code>, <code>drop-table</code>, <code>add-column</code>, <code>drop-column</code>, and <code>rename-column</code>. The default is <code>False</code>.</p>
1526    #[serde(rename = "IncludeTableAlterOperations")]
1527    #[serde(skip_serializing_if = "Option::is_none")]
1528    pub include_table_alter_operations: Option<bool>,
1529    /// <p>Provides detailed transaction information from the source database. This information includes a commit timestamp, a log position, and values for <code>transaction_id</code>, previous <code>transaction_id</code>, and <code>transaction_record_id</code> (the record offset within a transaction). The default is <code>False</code>.</p>
1530    #[serde(rename = "IncludeTransactionDetails")]
1531    #[serde(skip_serializing_if = "Option::is_none")]
1532    pub include_transaction_details: Option<bool>,
1533    /// <p>The output format for the records created on the endpoint. The message format is <code>JSON</code> (default) or <code>JSON_UNFORMATTED</code> (a single line with no tab).</p>
1534    #[serde(rename = "MessageFormat")]
1535    #[serde(skip_serializing_if = "Option::is_none")]
1536    pub message_format: Option<String>,
1537    /// <p>Prefixes schema and table names to partition values, when the partition type is <code>primary-key-type</code>. Doing this increases data distribution among Kinesis shards. For example, suppose that a SysBench schema has thousands of tables and each table has only limited range for a primary key. In this case, the same primary key is sent from thousands of tables to the same shard, which causes throttling. The default is <code>False</code>.</p>
1538    #[serde(rename = "PartitionIncludeSchemaTable")]
1539    #[serde(skip_serializing_if = "Option::is_none")]
1540    pub partition_include_schema_table: Option<bool>,
1541    /// <p>The Amazon Resource Name (ARN) for the AWS Identity and Access Management (IAM) role that AWS DMS uses to write to the Kinesis data stream.</p>
1542    #[serde(rename = "ServiceAccessRoleArn")]
1543    #[serde(skip_serializing_if = "Option::is_none")]
1544    pub service_access_role_arn: Option<String>,
1545    /// <p>The Amazon Resource Name (ARN) for the Amazon Kinesis Data Streams endpoint.</p>
1546    #[serde(rename = "StreamArn")]
1547    #[serde(skip_serializing_if = "Option::is_none")]
1548    pub stream_arn: Option<String>,
1549}
1550
1551/// <p><p/></p>
1552#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1553#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1554pub struct ListTagsForResourceMessage {
1555    /// <p>The Amazon Resource Name (ARN) string that uniquely identifies the AWS DMS resource.</p>
1556    #[serde(rename = "ResourceArn")]
1557    pub resource_arn: String,
1558}
1559
1560/// <p><p/></p>
1561#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1562#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1563pub struct ListTagsForResourceResponse {
1564    /// <p>A list of tags for the resource.</p>
1565    #[serde(rename = "TagList")]
1566    #[serde(skip_serializing_if = "Option::is_none")]
1567    pub tag_list: Option<Vec<Tag>>,
1568}
1569
1570/// <p><p/></p>
1571#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1572#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1573pub struct ModifyEndpointMessage {
1574    /// <p>The Amazon Resource Name (ARN) of the certificate used for SSL connection.</p>
1575    #[serde(rename = "CertificateArn")]
1576    #[serde(skip_serializing_if = "Option::is_none")]
1577    pub certificate_arn: Option<String>,
1578    /// <p>The name of the endpoint database.</p>
1579    #[serde(rename = "DatabaseName")]
1580    #[serde(skip_serializing_if = "Option::is_none")]
1581    pub database_name: Option<String>,
1582    /// <p>The settings in JSON format for the DMS transfer type of source endpoint. </p> <p>Attributes include the following:</p> <ul> <li> <p>serviceAccessRoleArn - The AWS Identity and Access Management (IAM) role that has permission to access the Amazon S3 bucket.</p> </li> <li> <p>BucketName - The name of the S3 bucket to use.</p> </li> <li> <p>compressionType - An optional parameter to use GZIP to compress the target files. Either set this parameter to NONE (the default) or don't use it to leave the files uncompressed.</p> </li> </ul> <p>Shorthand syntax for these settings is as follows: <code>ServiceAccessRoleArn=string ,BucketName=string,CompressionType=string</code> </p> <p>JSON syntax for these settings is as follows: <code>{ "ServiceAccessRoleArn": "string", "BucketName": "string", "CompressionType": "none"|"gzip" } </code> </p>
1583    #[serde(rename = "DmsTransferSettings")]
1584    #[serde(skip_serializing_if = "Option::is_none")]
1585    pub dms_transfer_settings: Option<DmsTransferSettings>,
1586    /// <p>Settings in JSON format for the target Amazon DynamoDB endpoint. For information about other available settings, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.DynamoDB.html">Using Object Mapping to Migrate Data to DynamoDB</a> in the <i>AWS Database Migration Service User Guide.</i> </p>
1587    #[serde(rename = "DynamoDbSettings")]
1588    #[serde(skip_serializing_if = "Option::is_none")]
1589    pub dynamo_db_settings: Option<DynamoDbSettings>,
1590    /// <p>Settings in JSON format for the target Elasticsearch endpoint. For more information about the available settings, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Elasticsearch.html#CHAP_Target.Elasticsearch.Configuration">Extra Connection Attributes When Using Elasticsearch as a Target for AWS DMS</a> in the <i>AWS Database Migration Service User Guide.</i> </p>
1591    #[serde(rename = "ElasticsearchSettings")]
1592    #[serde(skip_serializing_if = "Option::is_none")]
1593    pub elasticsearch_settings: Option<ElasticsearchSettings>,
1594    /// <p>The Amazon Resource Name (ARN) string that uniquely identifies the endpoint.</p>
1595    #[serde(rename = "EndpointArn")]
1596    pub endpoint_arn: String,
1597    /// <p>The database endpoint identifier. Identifiers must begin with a letter and must contain only ASCII letters, digits, and hyphens. They can't end with a hyphen or contain two consecutive hyphens.</p>
1598    #[serde(rename = "EndpointIdentifier")]
1599    #[serde(skip_serializing_if = "Option::is_none")]
1600    pub endpoint_identifier: Option<String>,
1601    /// <p>The type of endpoint. Valid values are <code>source</code> and <code>target</code>.</p>
1602    #[serde(rename = "EndpointType")]
1603    #[serde(skip_serializing_if = "Option::is_none")]
1604    pub endpoint_type: Option<String>,
1605    /// <p>The type of engine for the endpoint. Valid values, depending on the EndpointType, include <code>"mysql"</code>, <code>"oracle"</code>, <code>"postgres"</code>, <code>"mariadb"</code>, <code>"aurora"</code>, <code>"aurora-postgresql"</code>, <code>"redshift"</code>, <code>"s3"</code>, <code>"db2"</code>, <code>"azuredb"</code>, <code>"sybase"</code>, <code>"dynamodb"</code>, <code>"mongodb"</code>, <code>"kinesis"</code>, <code>"kafka"</code>, <code>"elasticsearch"</code>, <code>"documentdb"</code>, <code>"sqlserver"</code>, and <code>"neptune"</code>.</p>
1606    #[serde(rename = "EngineName")]
1607    #[serde(skip_serializing_if = "Option::is_none")]
1608    pub engine_name: Option<String>,
1609    /// <p>The external table definition.</p>
1610    #[serde(rename = "ExternalTableDefinition")]
1611    #[serde(skip_serializing_if = "Option::is_none")]
1612    pub external_table_definition: Option<String>,
1613    /// <p>Additional attributes associated with the connection. To reset this parameter, pass the empty string ("") as an argument.</p>
1614    #[serde(rename = "ExtraConnectionAttributes")]
1615    #[serde(skip_serializing_if = "Option::is_none")]
1616    pub extra_connection_attributes: Option<String>,
1617    /// <p>Settings in JSON format for the target Apache Kafka endpoint. For more information about the available settings, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Kafka.html">Using Apache Kafka as a Target for AWS Database Migration Service</a> in the <i>AWS Database Migration Service User Guide.</i> </p>
1618    #[serde(rename = "KafkaSettings")]
1619    #[serde(skip_serializing_if = "Option::is_none")]
1620    pub kafka_settings: Option<KafkaSettings>,
1621    /// <p>Settings in JSON format for the target endpoint for Amazon Kinesis Data Streams. For more information about the available settings, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Kinesis.html">Using Amazon Kinesis Data Streams as a Target for AWS Database Migration Service</a> in the <i>AWS Database Migration Service User Guide.</i> </p>
1622    #[serde(rename = "KinesisSettings")]
1623    #[serde(skip_serializing_if = "Option::is_none")]
1624    pub kinesis_settings: Option<KinesisSettings>,
1625    /// <p>Settings in JSON format for the source MongoDB endpoint. For more information about the available settings, see the configuration properties section in <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MongoDB.html"> Using MongoDB as a Target for AWS Database Migration Service</a> in the <i>AWS Database Migration Service User Guide.</i> </p>
1626    #[serde(rename = "MongoDbSettings")]
1627    #[serde(skip_serializing_if = "Option::is_none")]
1628    pub mongo_db_settings: Option<MongoDbSettings>,
1629    /// <p>Settings in JSON format for the target Amazon Neptune endpoint. For more information about the available settings, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Neptune.html#CHAP_Target.Neptune.EndpointSettings">Specifying Endpoint Settings for Amazon Neptune as a Target</a> in the <i>AWS Database Migration Service User Guide.</i> </p>
1630    #[serde(rename = "NeptuneSettings")]
1631    #[serde(skip_serializing_if = "Option::is_none")]
1632    pub neptune_settings: Option<NeptuneSettings>,
1633    /// <p>The password to be used to login to the endpoint database.</p>
1634    #[serde(rename = "Password")]
1635    #[serde(skip_serializing_if = "Option::is_none")]
1636    pub password: Option<String>,
1637    /// <p>The port used by the endpoint database.</p>
1638    #[serde(rename = "Port")]
1639    #[serde(skip_serializing_if = "Option::is_none")]
1640    pub port: Option<i64>,
1641    #[serde(rename = "RedshiftSettings")]
1642    #[serde(skip_serializing_if = "Option::is_none")]
1643    pub redshift_settings: Option<RedshiftSettings>,
1644    /// <p>Settings in JSON format for the target Amazon S3 endpoint. For more information about the available settings, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.S3.html#CHAP_Target.S3.Configuring">Extra Connection Attributes When Using Amazon S3 as a Target for AWS DMS</a> in the <i>AWS Database Migration Service User Guide.</i> </p>
1645    #[serde(rename = "S3Settings")]
1646    #[serde(skip_serializing_if = "Option::is_none")]
1647    pub s3_settings: Option<S3Settings>,
1648    /// <p>The name of the server where the endpoint database resides.</p>
1649    #[serde(rename = "ServerName")]
1650    #[serde(skip_serializing_if = "Option::is_none")]
1651    pub server_name: Option<String>,
1652    /// <p> The Amazon Resource Name (ARN) for the service access role you want to use to modify the endpoint. </p>
1653    #[serde(rename = "ServiceAccessRoleArn")]
1654    #[serde(skip_serializing_if = "Option::is_none")]
1655    pub service_access_role_arn: Option<String>,
1656    /// <p>The SSL mode used to connect to the endpoint. The default value is <code>none</code>.</p>
1657    #[serde(rename = "SslMode")]
1658    #[serde(skip_serializing_if = "Option::is_none")]
1659    pub ssl_mode: Option<String>,
1660    /// <p>The user name to be used to login to the endpoint database.</p>
1661    #[serde(rename = "Username")]
1662    #[serde(skip_serializing_if = "Option::is_none")]
1663    pub username: Option<String>,
1664}
1665
1666/// <p><p/></p>
1667#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1668#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1669pub struct ModifyEndpointResponse {
1670    /// <p>The modified endpoint.</p>
1671    #[serde(rename = "Endpoint")]
1672    #[serde(skip_serializing_if = "Option::is_none")]
1673    pub endpoint: Option<Endpoint>,
1674}
1675
1676/// <p><p/></p>
1677#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1678#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1679pub struct ModifyEventSubscriptionMessage {
1680    /// <p> A Boolean value; set to <b>true</b> to activate the subscription. </p>
1681    #[serde(rename = "Enabled")]
1682    #[serde(skip_serializing_if = "Option::is_none")]
1683    pub enabled: Option<bool>,
1684    /// <p> A list of event categories for a source type that you want to subscribe to. Use the <code>DescribeEventCategories</code> action to see a list of event categories. </p>
1685    #[serde(rename = "EventCategories")]
1686    #[serde(skip_serializing_if = "Option::is_none")]
1687    pub event_categories: Option<Vec<String>>,
1688    /// <p> The Amazon Resource Name (ARN) of the Amazon SNS topic created for event notification. The ARN is created by Amazon SNS when you create a topic and subscribe to it.</p>
1689    #[serde(rename = "SnsTopicArn")]
1690    #[serde(skip_serializing_if = "Option::is_none")]
1691    pub sns_topic_arn: Option<String>,
1692    /// <p> The type of AWS DMS resource that generates the events you want to subscribe to. </p> <p>Valid values: replication-instance | replication-task</p>
1693    #[serde(rename = "SourceType")]
1694    #[serde(skip_serializing_if = "Option::is_none")]
1695    pub source_type: Option<String>,
1696    /// <p>The name of the AWS DMS event notification subscription to be modified.</p>
1697    #[serde(rename = "SubscriptionName")]
1698    pub subscription_name: String,
1699}
1700
1701/// <p><p/></p>
1702#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1703#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1704pub struct ModifyEventSubscriptionResponse {
1705    /// <p>The modified event subscription.</p>
1706    #[serde(rename = "EventSubscription")]
1707    #[serde(skip_serializing_if = "Option::is_none")]
1708    pub event_subscription: Option<EventSubscription>,
1709}
1710
1711/// <p><p/></p>
1712#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1713#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1714pub struct ModifyReplicationInstanceMessage {
1715    /// <p>The amount of storage (in gigabytes) to be allocated for the replication instance.</p>
1716    #[serde(rename = "AllocatedStorage")]
1717    #[serde(skip_serializing_if = "Option::is_none")]
1718    pub allocated_storage: Option<i64>,
1719    /// <p>Indicates that major version upgrades are allowed. Changing this parameter does not result in an outage, and the change is asynchronously applied as soon as possible.</p> <p>This parameter must be set to <code>true</code> when specifying a value for the <code>EngineVersion</code> parameter that is a different major version than the replication instance's current version.</p>
1720    #[serde(rename = "AllowMajorVersionUpgrade")]
1721    #[serde(skip_serializing_if = "Option::is_none")]
1722    pub allow_major_version_upgrade: Option<bool>,
1723    /// <p>Indicates whether the changes should be applied immediately or during the next maintenance window.</p>
1724    #[serde(rename = "ApplyImmediately")]
1725    #[serde(skip_serializing_if = "Option::is_none")]
1726    pub apply_immediately: Option<bool>,
1727    /// <p><p>A value that indicates that minor version upgrades are applied automatically to the replication instance during the maintenance window. Changing this parameter doesn&#39;t result in an outage, except in the case dsecribed following. The change is asynchronously applied as soon as possible. </p> <p>An outage does result if these factors apply: </p> <ul> <li> <p>This parameter is set to <code>true</code> during the maintenance window.</p> </li> <li> <p>A newer minor version is available. </p> </li> <li> <p>AWS DMS has enabled automatic patching for the given engine version. </p> </li> </ul></p>
1728    #[serde(rename = "AutoMinorVersionUpgrade")]
1729    #[serde(skip_serializing_if = "Option::is_none")]
1730    pub auto_minor_version_upgrade: Option<bool>,
1731    /// <p>The engine version number of the replication instance.</p>
1732    #[serde(rename = "EngineVersion")]
1733    #[serde(skip_serializing_if = "Option::is_none")]
1734    pub engine_version: Option<String>,
1735    /// <p> Specifies whether the replication instance is a Multi-AZ deployment. You can't set the <code>AvailabilityZone</code> parameter if the Multi-AZ parameter is set to <code>true</code>. </p>
1736    #[serde(rename = "MultiAZ")]
1737    #[serde(skip_serializing_if = "Option::is_none")]
1738    pub multi_az: Option<bool>,
1739    /// <p>The weekly time range (in UTC) during which system maintenance can occur, which might result in an outage. Changing this parameter does not result in an outage, except in the following situation, and the change is asynchronously applied as soon as possible. If moving this window to the current time, there must be at least 30 minutes between the current time and end of the window to ensure pending changes are applied.</p> <p>Default: Uses existing setting</p> <p>Format: ddd:hh24:mi-ddd:hh24:mi</p> <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p> <p>Constraints: Must be at least 30 minutes</p>
1740    #[serde(rename = "PreferredMaintenanceWindow")]
1741    #[serde(skip_serializing_if = "Option::is_none")]
1742    pub preferred_maintenance_window: Option<String>,
1743    /// <p>The Amazon Resource Name (ARN) of the replication instance.</p>
1744    #[serde(rename = "ReplicationInstanceArn")]
1745    pub replication_instance_arn: String,
1746    /// <p>The compute and memory capacity of the replication instance as defined for the specified replication instance class. For example to specify the instance class dms.c4.large, set this parameter to <code>"dms.c4.large"</code>.</p> <p>For more information on the settings and capacities for the available replication instance classes, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.html#CHAP_ReplicationInstance.InDepth"> Selecting the right AWS DMS replication instance for your migration</a>. </p>
1747    #[serde(rename = "ReplicationInstanceClass")]
1748    #[serde(skip_serializing_if = "Option::is_none")]
1749    pub replication_instance_class: Option<String>,
1750    /// <p>The replication instance identifier. This parameter is stored as a lowercase string.</p>
1751    #[serde(rename = "ReplicationInstanceIdentifier")]
1752    #[serde(skip_serializing_if = "Option::is_none")]
1753    pub replication_instance_identifier: Option<String>,
1754    /// <p> Specifies the VPC security group to be used with the replication instance. The VPC security group must work with the VPC containing the replication instance. </p>
1755    #[serde(rename = "VpcSecurityGroupIds")]
1756    #[serde(skip_serializing_if = "Option::is_none")]
1757    pub vpc_security_group_ids: Option<Vec<String>>,
1758}
1759
1760/// <p><p/></p>
1761#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1762#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1763pub struct ModifyReplicationInstanceResponse {
1764    /// <p>The modified replication instance.</p>
1765    #[serde(rename = "ReplicationInstance")]
1766    #[serde(skip_serializing_if = "Option::is_none")]
1767    pub replication_instance: Option<ReplicationInstance>,
1768}
1769
1770/// <p><p/></p>
1771#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1772#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1773pub struct ModifyReplicationSubnetGroupMessage {
1774    /// <p>A description for the replication instance subnet group.</p>
1775    #[serde(rename = "ReplicationSubnetGroupDescription")]
1776    #[serde(skip_serializing_if = "Option::is_none")]
1777    pub replication_subnet_group_description: Option<String>,
1778    /// <p>The name of the replication instance subnet group.</p>
1779    #[serde(rename = "ReplicationSubnetGroupIdentifier")]
1780    pub replication_subnet_group_identifier: String,
1781    /// <p>A list of subnet IDs.</p>
1782    #[serde(rename = "SubnetIds")]
1783    pub subnet_ids: Vec<String>,
1784}
1785
1786/// <p><p/></p>
1787#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1788#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1789pub struct ModifyReplicationSubnetGroupResponse {
1790    /// <p>The modified replication subnet group.</p>
1791    #[serde(rename = "ReplicationSubnetGroup")]
1792    #[serde(skip_serializing_if = "Option::is_none")]
1793    pub replication_subnet_group: Option<ReplicationSubnetGroup>,
1794}
1795
1796/// <p><p/></p>
1797#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1798#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1799pub struct ModifyReplicationTaskMessage {
1800    /// <p><p>Indicates when you want a change data capture (CDC) operation to start. Use either CdcStartPosition or CdcStartTime to specify when you want a CDC operation to start. Specifying both values results in an error.</p> <p> The value can be in date, checkpoint, or LSN/SCN format.</p> <p>Date Example: --cdc-start-position “2018-03-08T12:12:12”</p> <p>Checkpoint Example: --cdc-start-position &quot;checkpoint:V1#27#mysql-bin-changelog.157832:1975:-1:2002:677883278264080:mysql-bin-changelog.157832:1876#0#0#*#0#93&quot;</p> <p>LSN Example: --cdc-start-position “mysql-bin-changelog.000024:373”</p> <note> <p>When you use this task setting with a source PostgreSQL database, a logical replication slot should already be created and associated with the source endpoint. You can verify this by setting the <code>slotName</code> extra connection attribute to the name of this logical replication slot. For more information, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.ConnectionAttrib">Extra Connection Attributes When Using PostgreSQL as a Source for AWS DMS</a>.</p> </note></p>
1801    #[serde(rename = "CdcStartPosition")]
1802    #[serde(skip_serializing_if = "Option::is_none")]
1803    pub cdc_start_position: Option<String>,
1804    /// <p>Indicates the start time for a change data capture (CDC) operation. Use either CdcStartTime or CdcStartPosition to specify when you want a CDC operation to start. Specifying both values results in an error.</p> <p>Timestamp Example: --cdc-start-time “2018-03-08T12:12:12”</p>
1805    #[serde(rename = "CdcStartTime")]
1806    #[serde(skip_serializing_if = "Option::is_none")]
1807    pub cdc_start_time: Option<f64>,
1808    /// <p>Indicates when you want a change data capture (CDC) operation to stop. The value can be either server time or commit time.</p> <p>Server time example: --cdc-stop-position “server_time:3018-02-09T12:12:12”</p> <p>Commit time example: --cdc-stop-position “commit_time: 3018-02-09T12:12:12 “</p>
1809    #[serde(rename = "CdcStopPosition")]
1810    #[serde(skip_serializing_if = "Option::is_none")]
1811    pub cdc_stop_position: Option<String>,
1812    /// <p>The migration type. Valid values: <code>full-load</code> | <code>cdc</code> | <code>full-load-and-cdc</code> </p>
1813    #[serde(rename = "MigrationType")]
1814    #[serde(skip_serializing_if = "Option::is_none")]
1815    pub migration_type: Option<String>,
1816    /// <p>The Amazon Resource Name (ARN) of the replication task.</p>
1817    #[serde(rename = "ReplicationTaskArn")]
1818    pub replication_task_arn: String,
1819    /// <p><p>The replication task identifier.</p> <p>Constraints:</p> <ul> <li> <p>Must contain 1-255 alphanumeric characters or hyphens.</p> </li> <li> <p>First character must be a letter.</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens.</p> </li> </ul></p>
1820    #[serde(rename = "ReplicationTaskIdentifier")]
1821    #[serde(skip_serializing_if = "Option::is_none")]
1822    pub replication_task_identifier: Option<String>,
1823    /// <p>JSON file that contains settings for the task, such as task metadata settings.</p>
1824    #[serde(rename = "ReplicationTaskSettings")]
1825    #[serde(skip_serializing_if = "Option::is_none")]
1826    pub replication_task_settings: Option<String>,
1827    /// <p>When using the AWS CLI or boto3, provide the path of the JSON file that contains the table mappings. Precede the path with <code>file://</code>. When working with the DMS API, provide the JSON as the parameter value, for example: <code>--table-mappings file://mappingfile.json</code> </p>
1828    #[serde(rename = "TableMappings")]
1829    #[serde(skip_serializing_if = "Option::is_none")]
1830    pub table_mappings: Option<String>,
1831    /// <p>Supplemental information that the task requires to migrate the data for certain source and target endpoints. For more information, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.TaskData.html">Specifying Supplemental Data for Task Settings</a> in the <i>AWS Database Migration Service User Guide.</i> </p>
1832    #[serde(rename = "TaskData")]
1833    #[serde(skip_serializing_if = "Option::is_none")]
1834    pub task_data: Option<String>,
1835}
1836
1837/// <p><p/></p>
1838#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1839#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1840pub struct ModifyReplicationTaskResponse {
1841    /// <p>The replication task that was modified.</p>
1842    #[serde(rename = "ReplicationTask")]
1843    #[serde(skip_serializing_if = "Option::is_none")]
1844    pub replication_task: Option<ReplicationTask>,
1845}
1846
1847/// <p>Provides information that defines a MongoDB endpoint.</p>
1848#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1849pub struct MongoDbSettings {
1850    /// <p> The authentication mechanism you use to access the MongoDB source endpoint.</p> <p>For the default value, in MongoDB version 2.x, <code>"default"</code> is <code>"mongodb_cr"</code>. For MongoDB version 3.x or later, <code>"default"</code> is <code>"scram_sha_1"</code>. This setting isn't used when <code>AuthType</code> is set to <code>"no"</code>.</p>
1851    #[serde(rename = "AuthMechanism")]
1852    #[serde(skip_serializing_if = "Option::is_none")]
1853    pub auth_mechanism: Option<String>,
1854    /// <p> The MongoDB database name. This setting isn't used when <code>AuthType</code> is set to <code>"no"</code>. </p> <p>The default is <code>"admin"</code>.</p>
1855    #[serde(rename = "AuthSource")]
1856    #[serde(skip_serializing_if = "Option::is_none")]
1857    pub auth_source: Option<String>,
1858    /// <p> The authentication type you use to access the MongoDB source endpoint.</p> <p>When when set to <code>"no"</code>, user name and password parameters are not used and can be empty. </p>
1859    #[serde(rename = "AuthType")]
1860    #[serde(skip_serializing_if = "Option::is_none")]
1861    pub auth_type: Option<String>,
1862    /// <p> The database name on the MongoDB source endpoint. </p>
1863    #[serde(rename = "DatabaseName")]
1864    #[serde(skip_serializing_if = "Option::is_none")]
1865    pub database_name: Option<String>,
1866    /// <p> Indicates the number of documents to preview to determine the document organization. Use this setting when <code>NestingLevel</code> is set to <code>"one"</code>. </p> <p>Must be a positive value greater than <code>0</code>. Default value is <code>1000</code>.</p>
1867    #[serde(rename = "DocsToInvestigate")]
1868    #[serde(skip_serializing_if = "Option::is_none")]
1869    pub docs_to_investigate: Option<String>,
1870    /// <p> Specifies the document ID. Use this setting when <code>NestingLevel</code> is set to <code>"none"</code>. </p> <p>Default value is <code>"false"</code>. </p>
1871    #[serde(rename = "ExtractDocId")]
1872    #[serde(skip_serializing_if = "Option::is_none")]
1873    pub extract_doc_id: Option<String>,
1874    /// <p>The AWS KMS key identifier that is used to encrypt the content on the replication instance. If you don't specify a value for the <code>KmsKeyId</code> parameter, then AWS DMS uses your default encryption key. AWS KMS creates the default encryption key for your AWS account. Your AWS account has a different default encryption key for each AWS Region.</p>
1875    #[serde(rename = "KmsKeyId")]
1876    #[serde(skip_serializing_if = "Option::is_none")]
1877    pub kms_key_id: Option<String>,
1878    /// <p> Specifies either document or table mode. </p> <p>Default value is <code>"none"</code>. Specify <code>"none"</code> to use document mode. Specify <code>"one"</code> to use table mode.</p>
1879    #[serde(rename = "NestingLevel")]
1880    #[serde(skip_serializing_if = "Option::is_none")]
1881    pub nesting_level: Option<String>,
1882    /// <p> The password for the user account you use to access the MongoDB source endpoint. </p>
1883    #[serde(rename = "Password")]
1884    #[serde(skip_serializing_if = "Option::is_none")]
1885    pub password: Option<String>,
1886    /// <p> The port value for the MongoDB source endpoint. </p>
1887    #[serde(rename = "Port")]
1888    #[serde(skip_serializing_if = "Option::is_none")]
1889    pub port: Option<i64>,
1890    /// <p> The name of the server on the MongoDB source endpoint. </p>
1891    #[serde(rename = "ServerName")]
1892    #[serde(skip_serializing_if = "Option::is_none")]
1893    pub server_name: Option<String>,
1894    /// <p>The user name you use to access the MongoDB source endpoint. </p>
1895    #[serde(rename = "Username")]
1896    #[serde(skip_serializing_if = "Option::is_none")]
1897    pub username: Option<String>,
1898}
1899
1900/// <p>Provides information that defines an Amazon Neptune endpoint.</p>
1901#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1902pub struct NeptuneSettings {
1903    /// <p>The number of milliseconds for AWS DMS to wait to retry a bulk-load of migrated graph data to the Neptune target database before raising an error. The default is 250.</p>
1904    #[serde(rename = "ErrorRetryDuration")]
1905    #[serde(skip_serializing_if = "Option::is_none")]
1906    pub error_retry_duration: Option<i64>,
1907    /// <p>If you want AWS Identity and Access Management (IAM) authorization enabled for this endpoint, set this parameter to <code>true</code>. Then attach the appropriate IAM policy document to your service role specified by <code>ServiceAccessRoleArn</code>. The default is <code>false</code>.</p>
1908    #[serde(rename = "IamAuthEnabled")]
1909    #[serde(skip_serializing_if = "Option::is_none")]
1910    pub iam_auth_enabled: Option<bool>,
1911    /// <p>The maximum size in kilobytes of migrated graph data stored in a .csv file before AWS DMS bulk-loads the data to the Neptune target database. The default is 1,048,576 KB. If the bulk load is successful, AWS DMS clears the bucket, ready to store the next batch of migrated graph data.</p>
1912    #[serde(rename = "MaxFileSize")]
1913    #[serde(skip_serializing_if = "Option::is_none")]
1914    pub max_file_size: Option<i64>,
1915    /// <p>The number of times for AWS DMS to retry a bulk load of migrated graph data to the Neptune target database before raising an error. The default is 5.</p>
1916    #[serde(rename = "MaxRetryCount")]
1917    #[serde(skip_serializing_if = "Option::is_none")]
1918    pub max_retry_count: Option<i64>,
1919    /// <p>A folder path where you want AWS DMS to store migrated graph data in the S3 bucket specified by <code>S3BucketName</code> </p>
1920    #[serde(rename = "S3BucketFolder")]
1921    pub s3_bucket_folder: String,
1922    /// <p>The name of the Amazon S3 bucket where AWS DMS can temporarily store migrated graph data in .csv files before bulk-loading it to the Neptune target database. AWS DMS maps the SQL source data to graph data before storing it in these .csv files.</p>
1923    #[serde(rename = "S3BucketName")]
1924    pub s3_bucket_name: String,
1925    /// <p>The Amazon Resource Name (ARN) of the service role that you created for the Neptune target endpoint. For more information, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Neptune.html#CHAP_Target.Neptune.ServiceRole">Creating an IAM Service Role for Accessing Amazon Neptune as a Target</a> in the <i>AWS Database Migration Service User Guide. </i> </p>
1926    #[serde(rename = "ServiceAccessRoleArn")]
1927    #[serde(skip_serializing_if = "Option::is_none")]
1928    pub service_access_role_arn: Option<String>,
1929}
1930
1931/// <p>In response to the <code>DescribeOrderableReplicationInstances</code> operation, this object describes an available replication instance. This description includes the replication instance's type, engine version, and allocated storage.</p>
1932#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1933#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1934pub struct OrderableReplicationInstance {
1935    /// <p>List of Availability Zones for this replication instance.</p>
1936    #[serde(rename = "AvailabilityZones")]
1937    #[serde(skip_serializing_if = "Option::is_none")]
1938    pub availability_zones: Option<Vec<String>>,
1939    /// <p>The default amount of storage (in gigabytes) that is allocated for the replication instance.</p>
1940    #[serde(rename = "DefaultAllocatedStorage")]
1941    #[serde(skip_serializing_if = "Option::is_none")]
1942    pub default_allocated_storage: Option<i64>,
1943    /// <p>The version of the replication engine.</p>
1944    #[serde(rename = "EngineVersion")]
1945    #[serde(skip_serializing_if = "Option::is_none")]
1946    pub engine_version: Option<String>,
1947    /// <p>The amount of storage (in gigabytes) that is allocated for the replication instance.</p>
1948    #[serde(rename = "IncludedAllocatedStorage")]
1949    #[serde(skip_serializing_if = "Option::is_none")]
1950    pub included_allocated_storage: Option<i64>,
1951    /// <p>The minimum amount of storage (in gigabytes) that can be allocated for the replication instance.</p>
1952    #[serde(rename = "MaxAllocatedStorage")]
1953    #[serde(skip_serializing_if = "Option::is_none")]
1954    pub max_allocated_storage: Option<i64>,
1955    /// <p>The minimum amount of storage (in gigabytes) that can be allocated for the replication instance.</p>
1956    #[serde(rename = "MinAllocatedStorage")]
1957    #[serde(skip_serializing_if = "Option::is_none")]
1958    pub min_allocated_storage: Option<i64>,
1959    /// <p><p>The value returned when the specified <code>EngineVersion</code> of the replication instance is in Beta or test mode. This indicates some features might not work as expected.</p> <note> <p>AWS DMS supports the <code>ReleaseStatus</code> parameter in versions 3.1.4 and later.</p> </note></p>
1960    #[serde(rename = "ReleaseStatus")]
1961    #[serde(skip_serializing_if = "Option::is_none")]
1962    pub release_status: Option<String>,
1963    /// <p>The compute and memory capacity of the replication instance as defined for the specified replication instance class. For example to specify the instance class dms.c4.large, set this parameter to <code>"dms.c4.large"</code>.</p> <p>For more information on the settings and capacities for the available replication instance classes, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.html#CHAP_ReplicationInstance.InDepth"> Selecting the right AWS DMS replication instance for your migration</a>. </p>
1964    #[serde(rename = "ReplicationInstanceClass")]
1965    #[serde(skip_serializing_if = "Option::is_none")]
1966    pub replication_instance_class: Option<String>,
1967    /// <p>The type of storage used by the replication instance.</p>
1968    #[serde(rename = "StorageType")]
1969    #[serde(skip_serializing_if = "Option::is_none")]
1970    pub storage_type: Option<String>,
1971}
1972
1973/// <p>Describes a maintenance action pending for an AWS DMS resource, including when and how it will be applied. This data type is a response element to the <code>DescribePendingMaintenanceActions</code> operation.</p>
1974#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1975#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1976pub struct PendingMaintenanceAction {
1977    /// <p>The type of pending maintenance action that is available for the resource.</p>
1978    #[serde(rename = "Action")]
1979    #[serde(skip_serializing_if = "Option::is_none")]
1980    pub action: Option<String>,
1981    /// <p>The date of the maintenance window when the action is to be applied. The maintenance action is applied to the resource during its first maintenance window after this date. If this date is specified, any <code>next-maintenance</code> opt-in requests are ignored.</p>
1982    #[serde(rename = "AutoAppliedAfterDate")]
1983    #[serde(skip_serializing_if = "Option::is_none")]
1984    pub auto_applied_after_date: Option<f64>,
1985    /// <p>The effective date when the pending maintenance action will be applied to the resource. This date takes into account opt-in requests received from the <code>ApplyPendingMaintenanceAction</code> API operation, and also the <code>AutoAppliedAfterDate</code> and <code>ForcedApplyDate</code> parameter values. This value is blank if an opt-in request has not been received and nothing has been specified for <code>AutoAppliedAfterDate</code> or <code>ForcedApplyDate</code>.</p>
1986    #[serde(rename = "CurrentApplyDate")]
1987    #[serde(skip_serializing_if = "Option::is_none")]
1988    pub current_apply_date: Option<f64>,
1989    /// <p>A description providing more detail about the maintenance action.</p>
1990    #[serde(rename = "Description")]
1991    #[serde(skip_serializing_if = "Option::is_none")]
1992    pub description: Option<String>,
1993    /// <p>The date when the maintenance action will be automatically applied. The maintenance action is applied to the resource on this date regardless of the maintenance window for the resource. If this date is specified, any <code>immediate</code> opt-in requests are ignored.</p>
1994    #[serde(rename = "ForcedApplyDate")]
1995    #[serde(skip_serializing_if = "Option::is_none")]
1996    pub forced_apply_date: Option<f64>,
1997    /// <p>The type of opt-in request that has been received for the resource.</p>
1998    #[serde(rename = "OptInStatus")]
1999    #[serde(skip_serializing_if = "Option::is_none")]
2000    pub opt_in_status: Option<String>,
2001}
2002
2003#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2004#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2005pub struct RebootReplicationInstanceMessage {
2006    /// <p>If this parameter is <code>true</code>, the reboot is conducted through a Multi-AZ failover. (If the instance isn't configured for Multi-AZ, then you can't specify <code>true</code>.)</p>
2007    #[serde(rename = "ForceFailover")]
2008    #[serde(skip_serializing_if = "Option::is_none")]
2009    pub force_failover: Option<bool>,
2010    /// <p>The Amazon Resource Name (ARN) of the replication instance.</p>
2011    #[serde(rename = "ReplicationInstanceArn")]
2012    pub replication_instance_arn: String,
2013}
2014
2015#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2016#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2017pub struct RebootReplicationInstanceResponse {
2018    /// <p>The replication instance that is being rebooted. </p>
2019    #[serde(rename = "ReplicationInstance")]
2020    #[serde(skip_serializing_if = "Option::is_none")]
2021    pub replication_instance: Option<ReplicationInstance>,
2022}
2023
2024/// <p>Provides information that defines an Amazon Redshift endpoint.</p>
2025#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2026pub struct RedshiftSettings {
2027    /// <p>A value that indicates to allow any date format, including invalid formats such as 00/00/00 00:00:00, to be loaded without generating an error. You can choose <code>true</code> or <code>false</code> (the default).</p> <p>This parameter applies only to TIMESTAMP and DATE columns. Always use ACCEPTANYDATE with the DATEFORMAT parameter. If the date format for the data doesn't match the DATEFORMAT specification, Amazon Redshift inserts a NULL value into that field. </p>
2028    #[serde(rename = "AcceptAnyDate")]
2029    #[serde(skip_serializing_if = "Option::is_none")]
2030    pub accept_any_date: Option<bool>,
2031    /// <p>Code to run after connecting. This parameter should contain the code itself, not the name of a file containing the code.</p>
2032    #[serde(rename = "AfterConnectScript")]
2033    #[serde(skip_serializing_if = "Option::is_none")]
2034    pub after_connect_script: Option<String>,
2035    /// <p>The location where the comma-separated value (.csv) files are stored before being uploaded to the S3 bucket. </p>
2036    #[serde(rename = "BucketFolder")]
2037    #[serde(skip_serializing_if = "Option::is_none")]
2038    pub bucket_folder: Option<String>,
2039    /// <p>The name of the S3 bucket you want to use</p>
2040    #[serde(rename = "BucketName")]
2041    #[serde(skip_serializing_if = "Option::is_none")]
2042    pub bucket_name: Option<String>,
2043    /// <p>A value that sets the amount of time to wait (in milliseconds) before timing out, beginning from when you initially establish a connection.</p>
2044    #[serde(rename = "ConnectionTimeout")]
2045    #[serde(skip_serializing_if = "Option::is_none")]
2046    pub connection_timeout: Option<i64>,
2047    /// <p>The name of the Amazon Redshift data warehouse (service) that you are working with.</p>
2048    #[serde(rename = "DatabaseName")]
2049    #[serde(skip_serializing_if = "Option::is_none")]
2050    pub database_name: Option<String>,
2051    /// <p>The date format that you are using. Valid values are <code>auto</code> (case-sensitive), your date format string enclosed in quotes, or NULL. If this parameter is left unset (NULL), it defaults to a format of 'YYYY-MM-DD'. Using <code>auto</code> recognizes most strings, even some that aren't supported when you use a date format string. </p> <p>If your date and time values use formats different from each other, set this to <code>auto</code>. </p>
2052    #[serde(rename = "DateFormat")]
2053    #[serde(skip_serializing_if = "Option::is_none")]
2054    pub date_format: Option<String>,
2055    /// <p>A value that specifies whether AWS DMS should migrate empty CHAR and VARCHAR fields as NULL. A value of <code>true</code> sets empty CHAR and VARCHAR fields to null. The default is <code>false</code>.</p>
2056    #[serde(rename = "EmptyAsNull")]
2057    #[serde(skip_serializing_if = "Option::is_none")]
2058    pub empty_as_null: Option<bool>,
2059    /// <p>The type of server-side encryption that you want to use for your data. This encryption type is part of the endpoint settings or the extra connections attributes for Amazon S3. You can choose either <code>SSE_S3</code> (the default) or <code>SSE_KMS</code>. To use <code>SSE_S3</code>, create an AWS Identity and Access Management (IAM) role with a policy that allows <code>"arn:aws:s3:::*"</code> to use the following actions: <code>"s3:PutObject", "s3:ListBucket"</code> </p>
2060    #[serde(rename = "EncryptionMode")]
2061    #[serde(skip_serializing_if = "Option::is_none")]
2062    pub encryption_mode: Option<String>,
2063    /// <p>The number of threads used to upload a single file. This parameter accepts a value from 1 through 64. It defaults to 10.</p>
2064    #[serde(rename = "FileTransferUploadStreams")]
2065    #[serde(skip_serializing_if = "Option::is_none")]
2066    pub file_transfer_upload_streams: Option<i64>,
2067    /// <p>The amount of time to wait (in milliseconds) before timing out, beginning from when you begin loading.</p>
2068    #[serde(rename = "LoadTimeout")]
2069    #[serde(skip_serializing_if = "Option::is_none")]
2070    pub load_timeout: Option<i64>,
2071    /// <p>The maximum size (in KB) of any .csv file used to transfer data to Amazon Redshift. This accepts a value from 1 through 1,048,576. It defaults to 32,768 KB (32 MB).</p>
2072    #[serde(rename = "MaxFileSize")]
2073    #[serde(skip_serializing_if = "Option::is_none")]
2074    pub max_file_size: Option<i64>,
2075    /// <p>The password for the user named in the <code>username</code> property.</p>
2076    #[serde(rename = "Password")]
2077    #[serde(skip_serializing_if = "Option::is_none")]
2078    pub password: Option<String>,
2079    /// <p>The port number for Amazon Redshift. The default value is 5439.</p>
2080    #[serde(rename = "Port")]
2081    #[serde(skip_serializing_if = "Option::is_none")]
2082    pub port: Option<i64>,
2083    /// <p>A value that specifies to remove surrounding quotation marks from strings in the incoming data. All characters within the quotation marks, including delimiters, are retained. Choose <code>true</code> to remove quotation marks. The default is <code>false</code>.</p>
2084    #[serde(rename = "RemoveQuotes")]
2085    #[serde(skip_serializing_if = "Option::is_none")]
2086    pub remove_quotes: Option<bool>,
2087    /// <p>A value that specifies to replaces the invalid characters specified in <code>ReplaceInvalidChars</code>, substituting the specified characters instead. The default is <code>"?"</code>.</p>
2088    #[serde(rename = "ReplaceChars")]
2089    #[serde(skip_serializing_if = "Option::is_none")]
2090    pub replace_chars: Option<String>,
2091    /// <p>A list of characters that you want to replace. Use with <code>ReplaceChars</code>.</p>
2092    #[serde(rename = "ReplaceInvalidChars")]
2093    #[serde(skip_serializing_if = "Option::is_none")]
2094    pub replace_invalid_chars: Option<String>,
2095    /// <p>The name of the Amazon Redshift cluster you are using.</p>
2096    #[serde(rename = "ServerName")]
2097    #[serde(skip_serializing_if = "Option::is_none")]
2098    pub server_name: Option<String>,
2099    /// <p>The AWS KMS key ID. If you are using <code>SSE_KMS</code> for the <code>EncryptionMode</code>, provide this key ID. The key that you use needs an attached policy that enables IAM user permissions and allows use of the key.</p>
2100    #[serde(rename = "ServerSideEncryptionKmsKeyId")]
2101    #[serde(skip_serializing_if = "Option::is_none")]
2102    pub server_side_encryption_kms_key_id: Option<String>,
2103    /// <p>The Amazon Resource Name (ARN) of the IAM role that has access to the Amazon Redshift service.</p>
2104    #[serde(rename = "ServiceAccessRoleArn")]
2105    #[serde(skip_serializing_if = "Option::is_none")]
2106    pub service_access_role_arn: Option<String>,
2107    /// <p>The time format that you want to use. Valid values are <code>auto</code> (case-sensitive), <code>'timeformat_string'</code>, <code>'epochsecs'</code>, or <code>'epochmillisecs'</code>. It defaults to 10. Using <code>auto</code> recognizes most strings, even some that aren't supported when you use a time format string. </p> <p>If your date and time values use formats different from each other, set this parameter to <code>auto</code>. </p>
2108    #[serde(rename = "TimeFormat")]
2109    #[serde(skip_serializing_if = "Option::is_none")]
2110    pub time_format: Option<String>,
2111    /// <p>A value that specifies to remove the trailing white space characters from a VARCHAR string. This parameter applies only to columns with a VARCHAR data type. Choose <code>true</code> to remove unneeded white space. The default is <code>false</code>.</p>
2112    #[serde(rename = "TrimBlanks")]
2113    #[serde(skip_serializing_if = "Option::is_none")]
2114    pub trim_blanks: Option<bool>,
2115    /// <p>A value that specifies to truncate data in columns to the appropriate number of characters, so that the data fits in the column. This parameter applies only to columns with a VARCHAR or CHAR data type, and rows with a size of 4 MB or less. Choose <code>true</code> to truncate data. The default is <code>false</code>.</p>
2116    #[serde(rename = "TruncateColumns")]
2117    #[serde(skip_serializing_if = "Option::is_none")]
2118    pub truncate_columns: Option<bool>,
2119    /// <p>An Amazon Redshift user name for a registered user.</p>
2120    #[serde(rename = "Username")]
2121    #[serde(skip_serializing_if = "Option::is_none")]
2122    pub username: Option<String>,
2123    /// <p>The size of the write buffer to use in rows. Valid values range from 1 through 2,048. The default is 1,024. Use this setting to tune performance. </p>
2124    #[serde(rename = "WriteBufferSize")]
2125    #[serde(skip_serializing_if = "Option::is_none")]
2126    pub write_buffer_size: Option<i64>,
2127}
2128
2129/// <p><p/></p>
2130#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2131#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2132pub struct RefreshSchemasMessage {
2133    /// <p>The Amazon Resource Name (ARN) string that uniquely identifies the endpoint.</p>
2134    #[serde(rename = "EndpointArn")]
2135    pub endpoint_arn: String,
2136    /// <p>The Amazon Resource Name (ARN) of the replication instance.</p>
2137    #[serde(rename = "ReplicationInstanceArn")]
2138    pub replication_instance_arn: String,
2139}
2140
2141/// <p><p/></p>
2142#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2143#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2144pub struct RefreshSchemasResponse {
2145    /// <p>The status of the refreshed schema.</p>
2146    #[serde(rename = "RefreshSchemasStatus")]
2147    #[serde(skip_serializing_if = "Option::is_none")]
2148    pub refresh_schemas_status: Option<RefreshSchemasStatus>,
2149}
2150
2151/// <p>Provides information that describes status of a schema at an endpoint specified by the <code>DescribeRefreshSchemaStatus</code> operation.</p>
2152#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2153#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2154pub struct RefreshSchemasStatus {
2155    /// <p>The Amazon Resource Name (ARN) string that uniquely identifies the endpoint.</p>
2156    #[serde(rename = "EndpointArn")]
2157    #[serde(skip_serializing_if = "Option::is_none")]
2158    pub endpoint_arn: Option<String>,
2159    /// <p>The last failure message for the schema.</p>
2160    #[serde(rename = "LastFailureMessage")]
2161    #[serde(skip_serializing_if = "Option::is_none")]
2162    pub last_failure_message: Option<String>,
2163    /// <p>The date the schema was last refreshed.</p>
2164    #[serde(rename = "LastRefreshDate")]
2165    #[serde(skip_serializing_if = "Option::is_none")]
2166    pub last_refresh_date: Option<f64>,
2167    /// <p>The Amazon Resource Name (ARN) of the replication instance.</p>
2168    #[serde(rename = "ReplicationInstanceArn")]
2169    #[serde(skip_serializing_if = "Option::is_none")]
2170    pub replication_instance_arn: Option<String>,
2171    /// <p>The status of the schema.</p>
2172    #[serde(rename = "Status")]
2173    #[serde(skip_serializing_if = "Option::is_none")]
2174    pub status: Option<String>,
2175}
2176
2177#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2178#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2179pub struct ReloadTablesMessage {
2180    /// <p>Options for reload. Specify <code>data-reload</code> to reload the data and re-validate it if validation is enabled. Specify <code>validate-only</code> to re-validate the table. This option applies only when validation is enabled for the task. </p> <p>Valid values: data-reload, validate-only</p> <p>Default value is data-reload.</p>
2181    #[serde(rename = "ReloadOption")]
2182    #[serde(skip_serializing_if = "Option::is_none")]
2183    pub reload_option: Option<String>,
2184    /// <p>The Amazon Resource Name (ARN) of the replication task. </p>
2185    #[serde(rename = "ReplicationTaskArn")]
2186    pub replication_task_arn: String,
2187    /// <p>The name and schema of the table to be reloaded. </p>
2188    #[serde(rename = "TablesToReload")]
2189    pub tables_to_reload: Vec<TableToReload>,
2190}
2191
2192#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2193#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2194pub struct ReloadTablesResponse {
2195    /// <p>The Amazon Resource Name (ARN) of the replication task. </p>
2196    #[serde(rename = "ReplicationTaskArn")]
2197    #[serde(skip_serializing_if = "Option::is_none")]
2198    pub replication_task_arn: Option<String>,
2199}
2200
2201/// <p>Removes one or more tags from an AWS DMS resource.</p>
2202#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2203#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2204pub struct RemoveTagsFromResourceMessage {
2205    /// <p>An AWS DMS resource from which you want to remove tag(s). The value for this parameter is an Amazon Resource Name (ARN).</p>
2206    #[serde(rename = "ResourceArn")]
2207    pub resource_arn: String,
2208    /// <p>The tag key (name) of the tag to be removed.</p>
2209    #[serde(rename = "TagKeys")]
2210    pub tag_keys: Vec<String>,
2211}
2212
2213/// <p><p/></p>
2214#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2215#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2216pub struct RemoveTagsFromResourceResponse {}
2217
2218/// <p>Provides information that defines a replication instance.</p>
2219#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2220#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2221pub struct ReplicationInstance {
2222    /// <p>The amount of storage (in gigabytes) that is allocated for the replication instance.</p>
2223    #[serde(rename = "AllocatedStorage")]
2224    #[serde(skip_serializing_if = "Option::is_none")]
2225    pub allocated_storage: Option<i64>,
2226    /// <p>Boolean value indicating if minor version upgrades will be automatically applied to the instance.</p>
2227    #[serde(rename = "AutoMinorVersionUpgrade")]
2228    #[serde(skip_serializing_if = "Option::is_none")]
2229    pub auto_minor_version_upgrade: Option<bool>,
2230    /// <p>The Availability Zone for the instance.</p>
2231    #[serde(rename = "AvailabilityZone")]
2232    #[serde(skip_serializing_if = "Option::is_none")]
2233    pub availability_zone: Option<String>,
2234    /// <p>The DNS name servers supported for the replication instance to access your on-premise source or target database.</p>
2235    #[serde(rename = "DnsNameServers")]
2236    #[serde(skip_serializing_if = "Option::is_none")]
2237    pub dns_name_servers: Option<String>,
2238    /// <p>The engine version number of the replication instance.</p>
2239    #[serde(rename = "EngineVersion")]
2240    #[serde(skip_serializing_if = "Option::is_none")]
2241    pub engine_version: Option<String>,
2242    /// <p> The expiration date of the free replication instance that is part of the Free DMS program. </p>
2243    #[serde(rename = "FreeUntil")]
2244    #[serde(skip_serializing_if = "Option::is_none")]
2245    pub free_until: Option<f64>,
2246    /// <p>The time the replication instance was created.</p>
2247    #[serde(rename = "InstanceCreateTime")]
2248    #[serde(skip_serializing_if = "Option::is_none")]
2249    pub instance_create_time: Option<f64>,
2250    /// <p>An AWS KMS key identifier that is used to encrypt the data on the replication instance.</p> <p>If you don't specify a value for the <code>KmsKeyId</code> parameter, then AWS DMS uses your default encryption key.</p> <p>AWS KMS creates the default encryption key for your AWS account. Your AWS account has a different default encryption key for each AWS Region.</p>
2251    #[serde(rename = "KmsKeyId")]
2252    #[serde(skip_serializing_if = "Option::is_none")]
2253    pub kms_key_id: Option<String>,
2254    /// <p> Specifies whether the replication instance is a Multi-AZ deployment. You can't set the <code>AvailabilityZone</code> parameter if the Multi-AZ parameter is set to <code>true</code>. </p>
2255    #[serde(rename = "MultiAZ")]
2256    #[serde(skip_serializing_if = "Option::is_none")]
2257    pub multi_az: Option<bool>,
2258    /// <p>The pending modification values.</p>
2259    #[serde(rename = "PendingModifiedValues")]
2260    #[serde(skip_serializing_if = "Option::is_none")]
2261    pub pending_modified_values: Option<ReplicationPendingModifiedValues>,
2262    /// <p>The maintenance window times for the replication instance.</p>
2263    #[serde(rename = "PreferredMaintenanceWindow")]
2264    #[serde(skip_serializing_if = "Option::is_none")]
2265    pub preferred_maintenance_window: Option<String>,
2266    /// <p> Specifies the accessibility options for the replication instance. A value of <code>true</code> represents an instance with a public IP address. A value of <code>false</code> represents an instance with a private IP address. The default value is <code>true</code>. </p>
2267    #[serde(rename = "PubliclyAccessible")]
2268    #[serde(skip_serializing_if = "Option::is_none")]
2269    pub publicly_accessible: Option<bool>,
2270    /// <p>The Amazon Resource Name (ARN) of the replication instance.</p>
2271    #[serde(rename = "ReplicationInstanceArn")]
2272    #[serde(skip_serializing_if = "Option::is_none")]
2273    pub replication_instance_arn: Option<String>,
2274    /// <p>The compute and memory capacity of the replication instance as defined for the specified replication instance class.</p> <p>For more information on the settings and capacities for the available replication instance classes, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.html#CHAP_ReplicationInstance.InDepth"> Selecting the right AWS DMS replication instance for your migration</a>. </p>
2275    #[serde(rename = "ReplicationInstanceClass")]
2276    #[serde(skip_serializing_if = "Option::is_none")]
2277    pub replication_instance_class: Option<String>,
2278    /// <p>The replication instance identifier. This parameter is stored as a lowercase string.</p> <p>Constraints:</p> <ul> <li> <p>Must contain 1-63 alphanumeric characters or hyphens.</p> </li> <li> <p>First character must be a letter.</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens.</p> </li> </ul> <p>Example: <code>myrepinstance</code> </p>
2279    #[serde(rename = "ReplicationInstanceIdentifier")]
2280    #[serde(skip_serializing_if = "Option::is_none")]
2281    pub replication_instance_identifier: Option<String>,
2282    /// <p>One or more private IP addresses for the replication instance.</p>
2283    #[serde(rename = "ReplicationInstancePrivateIpAddresses")]
2284    #[serde(skip_serializing_if = "Option::is_none")]
2285    pub replication_instance_private_ip_addresses: Option<Vec<String>>,
2286    /// <p>One or more public IP addresses for the replication instance.</p>
2287    #[serde(rename = "ReplicationInstancePublicIpAddresses")]
2288    #[serde(skip_serializing_if = "Option::is_none")]
2289    pub replication_instance_public_ip_addresses: Option<Vec<String>>,
2290    /// <p><p>The status of the replication instance. The possible return values include:</p> <ul> <li> <p> <code>&quot;available&quot;</code> </p> </li> <li> <p> <code>&quot;creating&quot;</code> </p> </li> <li> <p> <code>&quot;deleted&quot;</code> </p> </li> <li> <p> <code>&quot;deleting&quot;</code> </p> </li> <li> <p> <code>&quot;failed&quot;</code> </p> </li> <li> <p> <code>&quot;modifying&quot;</code> </p> </li> <li> <p> <code>&quot;upgrading&quot;</code> </p> </li> <li> <p> <code>&quot;rebooting&quot;</code> </p> </li> <li> <p> <code>&quot;resetting-master-credentials&quot;</code> </p> </li> <li> <p> <code>&quot;storage-full&quot;</code> </p> </li> <li> <p> <code>&quot;incompatible-credentials&quot;</code> </p> </li> <li> <p> <code>&quot;incompatible-network&quot;</code> </p> </li> <li> <p> <code>&quot;maintenance&quot;</code> </p> </li> </ul></p>
2291    #[serde(rename = "ReplicationInstanceStatus")]
2292    #[serde(skip_serializing_if = "Option::is_none")]
2293    pub replication_instance_status: Option<String>,
2294    /// <p>The subnet group for the replication instance.</p>
2295    #[serde(rename = "ReplicationSubnetGroup")]
2296    #[serde(skip_serializing_if = "Option::is_none")]
2297    pub replication_subnet_group: Option<ReplicationSubnetGroup>,
2298    /// <p>The Availability Zone of the standby replication instance in a Multi-AZ deployment.</p>
2299    #[serde(rename = "SecondaryAvailabilityZone")]
2300    #[serde(skip_serializing_if = "Option::is_none")]
2301    pub secondary_availability_zone: Option<String>,
2302    /// <p>The VPC security group for the instance.</p>
2303    #[serde(rename = "VpcSecurityGroups")]
2304    #[serde(skip_serializing_if = "Option::is_none")]
2305    pub vpc_security_groups: Option<Vec<VpcSecurityGroupMembership>>,
2306}
2307
2308/// <p>Contains metadata for a replication instance task log.</p>
2309#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2310#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2311pub struct ReplicationInstanceTaskLog {
2312    /// <p>The size, in bytes, of the replication task log.</p>
2313    #[serde(rename = "ReplicationInstanceTaskLogSize")]
2314    #[serde(skip_serializing_if = "Option::is_none")]
2315    pub replication_instance_task_log_size: Option<i64>,
2316    /// <p>The Amazon Resource Name (ARN) of the replication task.</p>
2317    #[serde(rename = "ReplicationTaskArn")]
2318    #[serde(skip_serializing_if = "Option::is_none")]
2319    pub replication_task_arn: Option<String>,
2320    /// <p>The name of the replication task.</p>
2321    #[serde(rename = "ReplicationTaskName")]
2322    #[serde(skip_serializing_if = "Option::is_none")]
2323    pub replication_task_name: Option<String>,
2324}
2325
2326/// <p>Provides information about the values of pending modifications to a replication instance. This data type is an object of the <code>ReplicationInstance</code> user-defined data type. </p>
2327#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2328#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2329pub struct ReplicationPendingModifiedValues {
2330    /// <p>The amount of storage (in gigabytes) that is allocated for the replication instance.</p>
2331    #[serde(rename = "AllocatedStorage")]
2332    #[serde(skip_serializing_if = "Option::is_none")]
2333    pub allocated_storage: Option<i64>,
2334    /// <p>The engine version number of the replication instance.</p>
2335    #[serde(rename = "EngineVersion")]
2336    #[serde(skip_serializing_if = "Option::is_none")]
2337    pub engine_version: Option<String>,
2338    /// <p> Specifies whether the replication instance is a Multi-AZ deployment. You can't set the <code>AvailabilityZone</code> parameter if the Multi-AZ parameter is set to <code>true</code>. </p>
2339    #[serde(rename = "MultiAZ")]
2340    #[serde(skip_serializing_if = "Option::is_none")]
2341    pub multi_az: Option<bool>,
2342    /// <p>The compute and memory capacity of the replication instance as defined for the specified replication instance class.</p> <p>For more information on the settings and capacities for the available replication instance classes, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.html#CHAP_ReplicationInstance.InDepth"> Selecting the right AWS DMS replication instance for your migration</a>. </p>
2343    #[serde(rename = "ReplicationInstanceClass")]
2344    #[serde(skip_serializing_if = "Option::is_none")]
2345    pub replication_instance_class: Option<String>,
2346}
2347
2348/// <p>Describes a subnet group in response to a request by the <code>DescribeReplicationSubnetGroup</code> operation.</p>
2349#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2350#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2351pub struct ReplicationSubnetGroup {
2352    /// <p>A description for the replication subnet group.</p>
2353    #[serde(rename = "ReplicationSubnetGroupDescription")]
2354    #[serde(skip_serializing_if = "Option::is_none")]
2355    pub replication_subnet_group_description: Option<String>,
2356    /// <p>The identifier of the replication instance subnet group.</p>
2357    #[serde(rename = "ReplicationSubnetGroupIdentifier")]
2358    #[serde(skip_serializing_if = "Option::is_none")]
2359    pub replication_subnet_group_identifier: Option<String>,
2360    /// <p>The status of the subnet group.</p>
2361    #[serde(rename = "SubnetGroupStatus")]
2362    #[serde(skip_serializing_if = "Option::is_none")]
2363    pub subnet_group_status: Option<String>,
2364    /// <p>The subnets that are in the subnet group.</p>
2365    #[serde(rename = "Subnets")]
2366    #[serde(skip_serializing_if = "Option::is_none")]
2367    pub subnets: Option<Vec<Subnet>>,
2368    /// <p>The ID of the VPC.</p>
2369    #[serde(rename = "VpcId")]
2370    #[serde(skip_serializing_if = "Option::is_none")]
2371    pub vpc_id: Option<String>,
2372}
2373
2374/// <p>Provides information that describes a replication task created by the <code>CreateReplicationTask</code> operation.</p>
2375#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2376#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2377pub struct ReplicationTask {
2378    /// <p>Indicates when you want a change data capture (CDC) operation to start. Use either <code>CdcStartPosition</code> or <code>CdcStartTime</code> to specify when you want the CDC operation to start. Specifying both values results in an error.</p> <p>The value can be in date, checkpoint, or LSN/SCN format.</p> <p>Date Example: --cdc-start-position “2018-03-08T12:12:12”</p> <p>Checkpoint Example: --cdc-start-position "checkpoint:V1#27#mysql-bin-changelog.157832:1975:-1:2002:677883278264080:mysql-bin-changelog.157832:1876#0#0#*#0#93"</p> <p>LSN Example: --cdc-start-position “mysql-bin-changelog.000024:373”</p>
2379    #[serde(rename = "CdcStartPosition")]
2380    #[serde(skip_serializing_if = "Option::is_none")]
2381    pub cdc_start_position: Option<String>,
2382    /// <p>Indicates when you want a change data capture (CDC) operation to stop. The value can be either server time or commit time.</p> <p>Server time example: --cdc-stop-position “server_time:3018-02-09T12:12:12”</p> <p>Commit time example: --cdc-stop-position “commit_time: 3018-02-09T12:12:12 “</p>
2383    #[serde(rename = "CdcStopPosition")]
2384    #[serde(skip_serializing_if = "Option::is_none")]
2385    pub cdc_stop_position: Option<String>,
2386    /// <p>The last error (failure) message generated for the replication instance.</p>
2387    #[serde(rename = "LastFailureMessage")]
2388    #[serde(skip_serializing_if = "Option::is_none")]
2389    pub last_failure_message: Option<String>,
2390    /// <p>The type of migration.</p>
2391    #[serde(rename = "MigrationType")]
2392    #[serde(skip_serializing_if = "Option::is_none")]
2393    pub migration_type: Option<String>,
2394    /// <p>Indicates the last checkpoint that occurred during a change data capture (CDC) operation. You can provide this value to the <code>CdcStartPosition</code> parameter to start a CDC operation that begins at that checkpoint.</p>
2395    #[serde(rename = "RecoveryCheckpoint")]
2396    #[serde(skip_serializing_if = "Option::is_none")]
2397    pub recovery_checkpoint: Option<String>,
2398    /// <p>The Amazon Resource Name (ARN) of the replication instance.</p>
2399    #[serde(rename = "ReplicationInstanceArn")]
2400    #[serde(skip_serializing_if = "Option::is_none")]
2401    pub replication_instance_arn: Option<String>,
2402    /// <p>The Amazon Resource Name (ARN) of the replication task.</p>
2403    #[serde(rename = "ReplicationTaskArn")]
2404    #[serde(skip_serializing_if = "Option::is_none")]
2405    pub replication_task_arn: Option<String>,
2406    /// <p>The date the replication task was created.</p>
2407    #[serde(rename = "ReplicationTaskCreationDate")]
2408    #[serde(skip_serializing_if = "Option::is_none")]
2409    pub replication_task_creation_date: Option<f64>,
2410    /// <p><p>The user-assigned replication task identifier or name.</p> <p>Constraints:</p> <ul> <li> <p>Must contain 1-255 alphanumeric characters or hyphens.</p> </li> <li> <p>First character must be a letter.</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens.</p> </li> </ul></p>
2411    #[serde(rename = "ReplicationTaskIdentifier")]
2412    #[serde(skip_serializing_if = "Option::is_none")]
2413    pub replication_task_identifier: Option<String>,
2414    /// <p>The settings for the replication task.</p>
2415    #[serde(rename = "ReplicationTaskSettings")]
2416    #[serde(skip_serializing_if = "Option::is_none")]
2417    pub replication_task_settings: Option<String>,
2418    /// <p>The date the replication task is scheduled to start.</p>
2419    #[serde(rename = "ReplicationTaskStartDate")]
2420    #[serde(skip_serializing_if = "Option::is_none")]
2421    pub replication_task_start_date: Option<f64>,
2422    /// <p>The statistics for the task, including elapsed time, tables loaded, and table errors.</p>
2423    #[serde(rename = "ReplicationTaskStats")]
2424    #[serde(skip_serializing_if = "Option::is_none")]
2425    pub replication_task_stats: Option<ReplicationTaskStats>,
2426    /// <p>The Amazon Resource Name (ARN) string that uniquely identifies the endpoint.</p>
2427    #[serde(rename = "SourceEndpointArn")]
2428    #[serde(skip_serializing_if = "Option::is_none")]
2429    pub source_endpoint_arn: Option<String>,
2430    /// <p>The status of the replication task.</p>
2431    #[serde(rename = "Status")]
2432    #[serde(skip_serializing_if = "Option::is_none")]
2433    pub status: Option<String>,
2434    /// <p><p>The reason the replication task was stopped. This response parameter can return one of the following values:</p> <ul> <li> <p> <code>&quot;STOP<em>REASON</em>FULL<em>LOAD</em>COMPLETED&quot;</code> – Full-load migration completed.</p> </li> <li> <p> <code>&quot;STOP<em>REASON</em>CACHED<em>CHANGES</em>APPLIED&quot;</code> – Change data capture (CDC) load completed.</p> </li> <li> <p> <code>&quot;STOP<em>REASON</em>CACHED<em>CHANGES</em>NOT<em>APPLIED&quot;</code> – In a full-load and CDC migration, the full-load stopped as specified before starting the CDC migration.</p> </li> <li> <p> <code>&quot;STOP</em>REASON<em>SERVER</em>TIME&quot;</code> – The migration stopped at the specified server time.</p> </li> </ul></p>
2435    #[serde(rename = "StopReason")]
2436    #[serde(skip_serializing_if = "Option::is_none")]
2437    pub stop_reason: Option<String>,
2438    /// <p>Table mappings specified in the task.</p>
2439    #[serde(rename = "TableMappings")]
2440    #[serde(skip_serializing_if = "Option::is_none")]
2441    pub table_mappings: Option<String>,
2442    /// <p>The Amazon Resource Name (ARN) string that uniquely identifies the endpoint.</p>
2443    #[serde(rename = "TargetEndpointArn")]
2444    #[serde(skip_serializing_if = "Option::is_none")]
2445    pub target_endpoint_arn: Option<String>,
2446    /// <p>Supplemental information that the task requires to migrate the data for certain source and target endpoints. For more information, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.TaskData.html">Specifying Supplemental Data for Task Settings</a> in the <i>AWS Database Migration Service User Guide.</i> </p>
2447    #[serde(rename = "TaskData")]
2448    #[serde(skip_serializing_if = "Option::is_none")]
2449    pub task_data: Option<String>,
2450}
2451
2452/// <p> The task assessment report in JSON format. </p>
2453#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2454#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2455pub struct ReplicationTaskAssessmentResult {
2456    /// <p> The task assessment results in JSON format. </p>
2457    #[serde(rename = "AssessmentResults")]
2458    #[serde(skip_serializing_if = "Option::is_none")]
2459    pub assessment_results: Option<String>,
2460    /// <p> The file containing the results of the task assessment. </p>
2461    #[serde(rename = "AssessmentResultsFile")]
2462    #[serde(skip_serializing_if = "Option::is_none")]
2463    pub assessment_results_file: Option<String>,
2464    /// <p> The status of the task assessment. </p>
2465    #[serde(rename = "AssessmentStatus")]
2466    #[serde(skip_serializing_if = "Option::is_none")]
2467    pub assessment_status: Option<String>,
2468    /// <p>The Amazon Resource Name (ARN) of the replication task. </p>
2469    #[serde(rename = "ReplicationTaskArn")]
2470    #[serde(skip_serializing_if = "Option::is_none")]
2471    pub replication_task_arn: Option<String>,
2472    /// <p> The replication task identifier of the task on which the task assessment was run. </p>
2473    #[serde(rename = "ReplicationTaskIdentifier")]
2474    #[serde(skip_serializing_if = "Option::is_none")]
2475    pub replication_task_identifier: Option<String>,
2476    /// <p>The date the task assessment was completed. </p>
2477    #[serde(rename = "ReplicationTaskLastAssessmentDate")]
2478    #[serde(skip_serializing_if = "Option::is_none")]
2479    pub replication_task_last_assessment_date: Option<f64>,
2480    /// <p> The URL of the S3 object containing the task assessment results. </p>
2481    #[serde(rename = "S3ObjectUrl")]
2482    #[serde(skip_serializing_if = "Option::is_none")]
2483    pub s3_object_url: Option<String>,
2484}
2485
2486/// <p>In response to a request by the <code>DescribeReplicationTasks</code> operation, this object provides a collection of statistics about a replication task.</p>
2487#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2488#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2489pub struct ReplicationTaskStats {
2490    /// <p>The elapsed time of the task, in milliseconds.</p>
2491    #[serde(rename = "ElapsedTimeMillis")]
2492    #[serde(skip_serializing_if = "Option::is_none")]
2493    pub elapsed_time_millis: Option<i64>,
2494    /// <p>The date the replication task was started either with a fresh start or a target reload.</p>
2495    #[serde(rename = "FreshStartDate")]
2496    #[serde(skip_serializing_if = "Option::is_none")]
2497    pub fresh_start_date: Option<f64>,
2498    /// <p>The date the replication task full load was completed.</p>
2499    #[serde(rename = "FullLoadFinishDate")]
2500    #[serde(skip_serializing_if = "Option::is_none")]
2501    pub full_load_finish_date: Option<f64>,
2502    /// <p>The percent complete for the full load migration task.</p>
2503    #[serde(rename = "FullLoadProgressPercent")]
2504    #[serde(skip_serializing_if = "Option::is_none")]
2505    pub full_load_progress_percent: Option<i64>,
2506    /// <p>The date the replication task full load was started.</p>
2507    #[serde(rename = "FullLoadStartDate")]
2508    #[serde(skip_serializing_if = "Option::is_none")]
2509    pub full_load_start_date: Option<f64>,
2510    /// <p>The date the replication task was started either with a fresh start or a resume. For more information, see <a href="https://docs.aws.amazon.com/dms/latest/APIReference/API_StartReplicationTask.html#DMS-StartReplicationTask-request-StartReplicationTaskType">StartReplicationTaskType</a>.</p>
2511    #[serde(rename = "StartDate")]
2512    #[serde(skip_serializing_if = "Option::is_none")]
2513    pub start_date: Option<f64>,
2514    /// <p>The date the replication task was stopped.</p>
2515    #[serde(rename = "StopDate")]
2516    #[serde(skip_serializing_if = "Option::is_none")]
2517    pub stop_date: Option<f64>,
2518    /// <p>The number of errors that have occurred during this task.</p>
2519    #[serde(rename = "TablesErrored")]
2520    #[serde(skip_serializing_if = "Option::is_none")]
2521    pub tables_errored: Option<i64>,
2522    /// <p>The number of tables loaded for this task.</p>
2523    #[serde(rename = "TablesLoaded")]
2524    #[serde(skip_serializing_if = "Option::is_none")]
2525    pub tables_loaded: Option<i64>,
2526    /// <p>The number of tables currently loading for this task.</p>
2527    #[serde(rename = "TablesLoading")]
2528    #[serde(skip_serializing_if = "Option::is_none")]
2529    pub tables_loading: Option<i64>,
2530    /// <p>The number of tables queued for this task.</p>
2531    #[serde(rename = "TablesQueued")]
2532    #[serde(skip_serializing_if = "Option::is_none")]
2533    pub tables_queued: Option<i64>,
2534}
2535
2536/// <p>Identifies an AWS DMS resource and any pending actions for it.</p>
2537#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2538#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2539pub struct ResourcePendingMaintenanceActions {
2540    /// <p>Detailed information about the pending maintenance action.</p>
2541    #[serde(rename = "PendingMaintenanceActionDetails")]
2542    #[serde(skip_serializing_if = "Option::is_none")]
2543    pub pending_maintenance_action_details: Option<Vec<PendingMaintenanceAction>>,
2544    /// <p>The Amazon Resource Name (ARN) of the DMS resource that the pending maintenance action applies to. For information about creating an ARN, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.AWS.ARN.html"> Constructing an Amazon Resource Name (ARN) for AWS DMS</a> in the DMS documentation.</p>
2545    #[serde(rename = "ResourceIdentifier")]
2546    #[serde(skip_serializing_if = "Option::is_none")]
2547    pub resource_identifier: Option<String>,
2548}
2549
2550/// <p>Settings for exporting data to Amazon S3. </p>
2551#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2552pub struct S3Settings {
2553    /// <p> An optional parameter to set a folder name in the S3 bucket. If provided, tables are created in the path <code> <i>bucketFolder</i>/<i>schema_name</i>/<i>table_name</i>/</code>. If this parameter isn't specified, then the path used is <code> <i>schema_name</i>/<i>table_name</i>/</code>. </p>
2554    #[serde(rename = "BucketFolder")]
2555    #[serde(skip_serializing_if = "Option::is_none")]
2556    pub bucket_folder: Option<String>,
2557    /// <p> The name of the S3 bucket. </p>
2558    #[serde(rename = "BucketName")]
2559    #[serde(skip_serializing_if = "Option::is_none")]
2560    pub bucket_name: Option<String>,
2561    /// <p><p>A value that enables a change data capture (CDC) load to write INSERT and UPDATE operations to .csv or .parquet (columnar storage) output files. The default setting is <code>false</code>, but when <code>CdcInsertsAndUpdates</code> is set to <code>true</code>or <code>y</code>, INSERTs and UPDATEs from the source database are migrated to the .csv or .parquet file. </p> <p>For .csv file format only, how these INSERTs and UPDATEs are recorded depends on the value of the <code>IncludeOpForFullLoad</code> parameter. If <code>IncludeOpForFullLoad</code> is set to <code>true</code>, the first field of every CDC record is set to either <code>I</code> or <code>U</code> to indicate INSERT and UPDATE operations at the source. But if <code>IncludeOpForFullLoad</code> is set to <code>false</code>, CDC records are written without an indication of INSERT or UPDATE operations at the source. For more information about how these settings work together, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.S3.html#CHAP_Target.S3.Configuring.InsertOps">Indicating Source DB Operations in Migrated S3 Data</a> in the <i>AWS Database Migration Service User Guide.</i>.</p> <note> <p>AWS DMS supports the use of the <code>CdcInsertsAndUpdates</code> parameter in versions 3.3.1 and later.</p> <p> <code>CdcInsertsOnly</code> and <code>CdcInsertsAndUpdates</code> can&#39;t both be set to <code>true</code> for the same endpoint. Set either <code>CdcInsertsOnly</code> or <code>CdcInsertsAndUpdates</code> to <code>true</code> for the same endpoint, but not both.</p> </note></p>
2562    #[serde(rename = "CdcInsertsAndUpdates")]
2563    #[serde(skip_serializing_if = "Option::is_none")]
2564    pub cdc_inserts_and_updates: Option<bool>,
2565    /// <p><p>A value that enables a change data capture (CDC) load to write only INSERT operations to .csv or columnar storage (.parquet) output files. By default (the <code>false</code> setting), the first field in a .csv or .parquet record contains the letter I (INSERT), U (UPDATE), or D (DELETE). These values indicate whether the row was inserted, updated, or deleted at the source database for a CDC load to the target.</p> <p>If <code>CdcInsertsOnly</code> is set to <code>true</code> or <code>y</code>, only INSERTs from the source database are migrated to the .csv or .parquet file. For .csv format only, how these INSERTs are recorded depends on the value of <code>IncludeOpForFullLoad</code>. If <code>IncludeOpForFullLoad</code> is set to <code>true</code>, the first field of every CDC record is set to I to indicate the INSERT operation at the source. If <code>IncludeOpForFullLoad</code> is set to <code>false</code>, every CDC record is written without a first field to indicate the INSERT operation at the source. For more information about how these settings work together, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.S3.html#CHAP_Target.S3.Configuring.InsertOps">Indicating Source DB Operations in Migrated S3 Data</a> in the <i>AWS Database Migration Service User Guide.</i>.</p> <note> <p>AWS DMS supports the interaction described preceding between the <code>CdcInsertsOnly</code> and <code>IncludeOpForFullLoad</code> parameters in versions 3.1.4 and later. </p> <p> <code>CdcInsertsOnly</code> and <code>CdcInsertsAndUpdates</code> can&#39;t both be set to <code>true</code> for the same endpoint. Set either <code>CdcInsertsOnly</code> or <code>CdcInsertsAndUpdates</code> to <code>true</code> for the same endpoint, but not both.</p> </note></p>
2566    #[serde(rename = "CdcInsertsOnly")]
2567    #[serde(skip_serializing_if = "Option::is_none")]
2568    pub cdc_inserts_only: Option<bool>,
2569    /// <p>An optional parameter to use GZIP to compress the target files. Set to GZIP to compress the target files. Either set this parameter to NONE (the default) or don't use it to leave the files uncompressed. This parameter applies to both .csv and .parquet file formats. </p>
2570    #[serde(rename = "CompressionType")]
2571    #[serde(skip_serializing_if = "Option::is_none")]
2572    pub compression_type: Option<String>,
2573    /// <p> The delimiter used to separate columns in the source files. The default is a comma. </p>
2574    #[serde(rename = "CsvDelimiter")]
2575    #[serde(skip_serializing_if = "Option::is_none")]
2576    pub csv_delimiter: Option<String>,
2577    /// <p> The delimiter used to separate rows in the source files. The default is a carriage return (<code>\n</code>). </p>
2578    #[serde(rename = "CsvRowDelimiter")]
2579    #[serde(skip_serializing_if = "Option::is_none")]
2580    pub csv_row_delimiter: Option<String>,
2581    /// <p><p>The format of the data that you want to use for output. You can choose one of the following: </p> <ul> <li> <p> <code>csv</code> : This is a row-based file format with comma-separated values (.csv). </p> </li> <li> <p> <code>parquet</code> : Apache Parquet (.parquet) is a columnar storage file format that features efficient compression and provides faster query response. </p> </li> </ul></p>
2582    #[serde(rename = "DataFormat")]
2583    #[serde(skip_serializing_if = "Option::is_none")]
2584    pub data_format: Option<String>,
2585    /// <p>The size of one data page in bytes. This parameter defaults to 1024 * 1024 bytes (1 MiB). This number is used for .parquet file format only. </p>
2586    #[serde(rename = "DataPageSize")]
2587    #[serde(skip_serializing_if = "Option::is_none")]
2588    pub data_page_size: Option<i64>,
2589    /// <p>The maximum size of an encoded dictionary page of a column. If the dictionary page exceeds this, this column is stored using an encoding type of <code>PLAIN</code>. This parameter defaults to 1024 * 1024 bytes (1 MiB), the maximum size of a dictionary page before it reverts to <code>PLAIN</code> encoding. This size is used for .parquet file format only. </p>
2590    #[serde(rename = "DictPageSizeLimit")]
2591    #[serde(skip_serializing_if = "Option::is_none")]
2592    pub dict_page_size_limit: Option<i64>,
2593    /// <p>A value that enables statistics for Parquet pages and row groups. Choose <code>true</code> to enable statistics, <code>false</code> to disable. Statistics include <code>NULL</code>, <code>DISTINCT</code>, <code>MAX</code>, and <code>MIN</code> values. This parameter defaults to <code>true</code>. This value is used for .parquet file format only.</p>
2594    #[serde(rename = "EnableStatistics")]
2595    #[serde(skip_serializing_if = "Option::is_none")]
2596    pub enable_statistics: Option<bool>,
2597    /// <p><p>The type of encoding you are using: </p> <ul> <li> <p> <code>RLE<em>DICTIONARY</code> uses a combination of bit-packing and run-length encoding to store repeated values more efficiently. This is the default.</p> </li> <li> <p> <code>PLAIN</code> doesn&#39;t use encoding at all. Values are stored as they are.</p> </li> <li> <p> <code>PLAIN</em>DICTIONARY</code> builds a dictionary of the values encountered in a given column. The dictionary is stored in a dictionary page for each column chunk.</p> </li> </ul></p>
2598    #[serde(rename = "EncodingType")]
2599    #[serde(skip_serializing_if = "Option::is_none")]
2600    pub encoding_type: Option<String>,
2601    /// <p><p>The type of server-side encryption that you want to use for your data. This encryption type is part of the endpoint settings or the extra connections attributes for Amazon S3. You can choose either <code>SSE<em>S3</code> (the default) or <code>SSE</em>KMS</code>. To use <code>SSE_S3</code>, you need an AWS Identity and Access Management (IAM) role with permission to allow <code>&quot;arn:aws:s3:::dms-*&quot;</code> to use the following actions:</p> <ul> <li> <p> <code>s3:CreateBucket</code> </p> </li> <li> <p> <code>s3:ListBucket</code> </p> </li> <li> <p> <code>s3:DeleteBucket</code> </p> </li> <li> <p> <code>s3:GetBucketLocation</code> </p> </li> <li> <p> <code>s3:GetObject</code> </p> </li> <li> <p> <code>s3:PutObject</code> </p> </li> <li> <p> <code>s3:DeleteObject</code> </p> </li> <li> <p> <code>s3:GetObjectVersion</code> </p> </li> <li> <p> <code>s3:GetBucketPolicy</code> </p> </li> <li> <p> <code>s3:PutBucketPolicy</code> </p> </li> <li> <p> <code>s3:DeleteBucketPolicy</code> </p> </li> </ul></p>
2602    #[serde(rename = "EncryptionMode")]
2603    #[serde(skip_serializing_if = "Option::is_none")]
2604    pub encryption_mode: Option<String>,
2605    /// <p> The external table definition. </p>
2606    #[serde(rename = "ExternalTableDefinition")]
2607    #[serde(skip_serializing_if = "Option::is_none")]
2608    pub external_table_definition: Option<String>,
2609    /// <p><p>A value that enables a full load to write INSERT operations to the comma-separated value (.csv) output files only to indicate how the rows were added to the source database.</p> <note> <p>AWS DMS supports the <code>IncludeOpForFullLoad</code> parameter in versions 3.1.4 and later.</p> </note> <p>For full load, records can only be inserted. By default (the <code>false</code> setting), no information is recorded in these output files for a full load to indicate that the rows were inserted at the source database. If <code>IncludeOpForFullLoad</code> is set to <code>true</code> or <code>y</code>, the INSERT is recorded as an I annotation in the first field of the .csv file. This allows the format of your target records from a full load to be consistent with the target records from a CDC load.</p> <note> <p>This setting works together with the <code>CdcInsertsOnly</code> and the <code>CdcInsertsAndUpdates</code> parameters for output to .csv files only. For more information about how these settings work together, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.S3.html#CHAP_Target.S3.Configuring.InsertOps">Indicating Source DB Operations in Migrated S3 Data</a> in the <i>AWS Database Migration Service User Guide.</i>.</p> </note></p>
2610    #[serde(rename = "IncludeOpForFullLoad")]
2611    #[serde(skip_serializing_if = "Option::is_none")]
2612    pub include_op_for_full_load: Option<bool>,
2613    /// <p><p>A value that specifies the precision of any <code>TIMESTAMP</code> column values that are written to an Amazon S3 object file in .parquet format.</p> <note> <p>AWS DMS supports the <code>ParquetTimestampInMillisecond</code> parameter in versions 3.1.4 and later.</p> </note> <p>When <code>ParquetTimestampInMillisecond</code> is set to <code>true</code> or <code>y</code>, AWS DMS writes all <code>TIMESTAMP</code> columns in a .parquet formatted file with millisecond precision. Otherwise, DMS writes them with microsecond precision.</p> <p>Currently, Amazon Athena and AWS Glue can handle only millisecond precision for <code>TIMESTAMP</code> values. Set this parameter to <code>true</code> for S3 endpoint object files that are .parquet formatted only if you plan to query or process the data with Athena or AWS Glue.</p> <note> <p>AWS DMS writes any <code>TIMESTAMP</code> column values written to an S3 file in .csv format with microsecond precision.</p> <p>Setting <code>ParquetTimestampInMillisecond</code> has no effect on the string format of the timestamp column value that is inserted by setting the <code>TimestampColumnName</code> parameter.</p> </note></p>
2614    #[serde(rename = "ParquetTimestampInMillisecond")]
2615    #[serde(skip_serializing_if = "Option::is_none")]
2616    pub parquet_timestamp_in_millisecond: Option<bool>,
2617    /// <p>The version of the Apache Parquet format that you want to use: <code>parquet_1_0</code> (the default) or <code>parquet_2_0</code>.</p>
2618    #[serde(rename = "ParquetVersion")]
2619    #[serde(skip_serializing_if = "Option::is_none")]
2620    pub parquet_version: Option<String>,
2621    /// <p>The number of rows in a row group. A smaller row group size provides faster reads. But as the number of row groups grows, the slower writes become. This parameter defaults to 10,000 rows. This number is used for .parquet file format only. </p> <p>If you choose a value larger than the maximum, <code>RowGroupLength</code> is set to the max row group length in bytes (64 * 1024 * 1024). </p>
2622    #[serde(rename = "RowGroupLength")]
2623    #[serde(skip_serializing_if = "Option::is_none")]
2624    pub row_group_length: Option<i64>,
2625    /// <p>If you are using <code>SSE_KMS</code> for the <code>EncryptionMode</code>, provide the AWS KMS key ID. The key that you use needs an attached policy that enables AWS Identity and Access Management (IAM) user permissions and allows use of the key.</p> <p>Here is a CLI example: <code>aws dms create-endpoint --endpoint-identifier <i>value</i> --endpoint-type target --engine-name s3 --s3-settings ServiceAccessRoleArn=<i>value</i>,BucketFolder=<i>value</i>,BucketName=<i>value</i>,EncryptionMode=SSE_KMS,ServerSideEncryptionKmsKeyId=<i>value</i> </code> </p>
2626    #[serde(rename = "ServerSideEncryptionKmsKeyId")]
2627    #[serde(skip_serializing_if = "Option::is_none")]
2628    pub server_side_encryption_kms_key_id: Option<String>,
2629    /// <p> The Amazon Resource Name (ARN) used by the service access IAM role. </p>
2630    #[serde(rename = "ServiceAccessRoleArn")]
2631    #[serde(skip_serializing_if = "Option::is_none")]
2632    pub service_access_role_arn: Option<String>,
2633    /// <p>A value that when nonblank causes AWS DMS to add a column with timestamp information to the endpoint data for an Amazon S3 target.</p> <note> <p>AWS DMS supports the <code>TimestampColumnName</code> parameter in versions 3.1.4 and later.</p> </note> <p>DMS includes an additional <code>STRING</code> column in the .csv or .parquet object files of your migrated data when you set <code>TimestampColumnName</code> to a nonblank value.</p> <p>For a full load, each row of this timestamp column contains a timestamp for when the data was transferred from the source to the target by DMS. </p> <p>For a change data capture (CDC) load, each row of the timestamp column contains the timestamp for the commit of that row in the source database.</p> <p>The string format for this timestamp column value is <code>yyyy-MM-dd HH:mm:ss.SSSSSS</code>. By default, the precision of this value is in microseconds. For a CDC load, the rounding of the precision depends on the commit timestamp supported by DMS for the source database.</p> <p>When the <code>AddColumnName</code> parameter is set to <code>true</code>, DMS also includes a name for the timestamp column that you set with <code>TimestampColumnName</code>.</p>
2634    #[serde(rename = "TimestampColumnName")]
2635    #[serde(skip_serializing_if = "Option::is_none")]
2636    pub timestamp_column_name: Option<String>,
2637}
2638
2639/// <p><p/></p>
2640#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2641#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2642pub struct StartReplicationTaskAssessmentMessage {
2643    /// <p> The Amazon Resource Name (ARN) of the replication task. </p>
2644    #[serde(rename = "ReplicationTaskArn")]
2645    pub replication_task_arn: String,
2646}
2647
2648/// <p><p/></p>
2649#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2650#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2651pub struct StartReplicationTaskAssessmentResponse {
2652    /// <p> The assessed replication task. </p>
2653    #[serde(rename = "ReplicationTask")]
2654    #[serde(skip_serializing_if = "Option::is_none")]
2655    pub replication_task: Option<ReplicationTask>,
2656}
2657
2658/// <p><p/></p>
2659#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2660#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2661pub struct StartReplicationTaskMessage {
2662    /// <p><p>Indicates when you want a change data capture (CDC) operation to start. Use either CdcStartPosition or CdcStartTime to specify when you want a CDC operation to start. Specifying both values results in an error.</p> <p> The value can be in date, checkpoint, or LSN/SCN format.</p> <p>Date Example: --cdc-start-position “2018-03-08T12:12:12”</p> <p>Checkpoint Example: --cdc-start-position &quot;checkpoint:V1#27#mysql-bin-changelog.157832:1975:-1:2002:677883278264080:mysql-bin-changelog.157832:1876#0#0#*#0#93&quot;</p> <p>LSN Example: --cdc-start-position “mysql-bin-changelog.000024:373”</p> <note> <p>When you use this task setting with a source PostgreSQL database, a logical replication slot should already be created and associated with the source endpoint. You can verify this by setting the <code>slotName</code> extra connection attribute to the name of this logical replication slot. For more information, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.ConnectionAttrib">Extra Connection Attributes When Using PostgreSQL as a Source for AWS DMS</a>.</p> </note></p>
2663    #[serde(rename = "CdcStartPosition")]
2664    #[serde(skip_serializing_if = "Option::is_none")]
2665    pub cdc_start_position: Option<String>,
2666    /// <p>Indicates the start time for a change data capture (CDC) operation. Use either CdcStartTime or CdcStartPosition to specify when you want a CDC operation to start. Specifying both values results in an error.</p> <p>Timestamp Example: --cdc-start-time “2018-03-08T12:12:12”</p>
2667    #[serde(rename = "CdcStartTime")]
2668    #[serde(skip_serializing_if = "Option::is_none")]
2669    pub cdc_start_time: Option<f64>,
2670    /// <p>Indicates when you want a change data capture (CDC) operation to stop. The value can be either server time or commit time.</p> <p>Server time example: --cdc-stop-position “server_time:3018-02-09T12:12:12”</p> <p>Commit time example: --cdc-stop-position “commit_time: 3018-02-09T12:12:12 “</p>
2671    #[serde(rename = "CdcStopPosition")]
2672    #[serde(skip_serializing_if = "Option::is_none")]
2673    pub cdc_stop_position: Option<String>,
2674    /// <p>The Amazon Resource Name (ARN) of the replication task to be started.</p>
2675    #[serde(rename = "ReplicationTaskArn")]
2676    pub replication_task_arn: String,
2677    /// <p>The type of replication task.</p>
2678    #[serde(rename = "StartReplicationTaskType")]
2679    pub start_replication_task_type: String,
2680}
2681
2682/// <p><p/></p>
2683#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2684#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2685pub struct StartReplicationTaskResponse {
2686    /// <p>The replication task started.</p>
2687    #[serde(rename = "ReplicationTask")]
2688    #[serde(skip_serializing_if = "Option::is_none")]
2689    pub replication_task: Option<ReplicationTask>,
2690}
2691
2692/// <p><p/></p>
2693#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2694#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2695pub struct StopReplicationTaskMessage {
2696    /// <p>The Amazon Resource Name(ARN) of the replication task to be stopped.</p>
2697    #[serde(rename = "ReplicationTaskArn")]
2698    pub replication_task_arn: String,
2699}
2700
2701/// <p><p/></p>
2702#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2703#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2704pub struct StopReplicationTaskResponse {
2705    /// <p>The replication task stopped.</p>
2706    #[serde(rename = "ReplicationTask")]
2707    #[serde(skip_serializing_if = "Option::is_none")]
2708    pub replication_task: Option<ReplicationTask>,
2709}
2710
2711/// <p>In response to a request by the <code>DescribeReplicationSubnetGroup</code> operation, this object identifies a subnet by its given Availability Zone, subnet identifier, and status.</p>
2712#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2713#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2714pub struct Subnet {
2715    /// <p>The Availability Zone of the subnet.</p>
2716    #[serde(rename = "SubnetAvailabilityZone")]
2717    #[serde(skip_serializing_if = "Option::is_none")]
2718    pub subnet_availability_zone: Option<AvailabilityZone>,
2719    /// <p>The subnet identifier.</p>
2720    #[serde(rename = "SubnetIdentifier")]
2721    #[serde(skip_serializing_if = "Option::is_none")]
2722    pub subnet_identifier: Option<String>,
2723    /// <p>The status of the subnet.</p>
2724    #[serde(rename = "SubnetStatus")]
2725    #[serde(skip_serializing_if = "Option::is_none")]
2726    pub subnet_status: Option<String>,
2727}
2728
2729/// <p>Provides information about types of supported endpoints in response to a request by the <code>DescribeEndpointTypes</code> operation. This information includes the type of endpoint, the database engine name, and whether change data capture (CDC) is supported.</p>
2730#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2731#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2732pub struct SupportedEndpointType {
2733    /// <p>The type of endpoint. Valid values are <code>source</code> and <code>target</code>.</p>
2734    #[serde(rename = "EndpointType")]
2735    #[serde(skip_serializing_if = "Option::is_none")]
2736    pub endpoint_type: Option<String>,
2737    /// <p>The expanded name for the engine name. For example, if the <code>EngineName</code> parameter is "aurora," this value would be "Amazon Aurora MySQL."</p>
2738    #[serde(rename = "EngineDisplayName")]
2739    #[serde(skip_serializing_if = "Option::is_none")]
2740    pub engine_display_name: Option<String>,
2741    /// <p>The database engine name. Valid values, depending on the EndpointType, include <code>"mysql"</code>, <code>"oracle"</code>, <code>"postgres"</code>, <code>"mariadb"</code>, <code>"aurora"</code>, <code>"aurora-postgresql"</code>, <code>"redshift"</code>, <code>"s3"</code>, <code>"db2"</code>, <code>"azuredb"</code>, <code>"sybase"</code>, <code>"dynamodb"</code>, <code>"mongodb"</code>, <code>"kinesis"</code>, <code>"kafka"</code>, <code>"elasticsearch"</code>, <code>"documentdb"</code>, <code>"sqlserver"</code>, and <code>"neptune"</code>.</p>
2742    #[serde(rename = "EngineName")]
2743    #[serde(skip_serializing_if = "Option::is_none")]
2744    pub engine_name: Option<String>,
2745    /// <p>The earliest AWS DMS engine version that supports this endpoint engine. Note that endpoint engines released with AWS DMS versions earlier than 3.1.1 do not return a value for this parameter.</p>
2746    #[serde(rename = "ReplicationInstanceEngineMinimumVersion")]
2747    #[serde(skip_serializing_if = "Option::is_none")]
2748    pub replication_instance_engine_minimum_version: Option<String>,
2749    /// <p>Indicates if Change Data Capture (CDC) is supported.</p>
2750    #[serde(rename = "SupportsCDC")]
2751    #[serde(skip_serializing_if = "Option::is_none")]
2752    pub supports_cdc: Option<bool>,
2753}
2754
2755/// <p>Provides a collection of table statistics in response to a request by the <code>DescribeTableStatistics</code> operation.</p>
2756#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2757#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2758pub struct TableStatistics {
2759    /// <p>The data definition language (DDL) used to build and modify the structure of your tables.</p>
2760    #[serde(rename = "Ddls")]
2761    #[serde(skip_serializing_if = "Option::is_none")]
2762    pub ddls: Option<i64>,
2763    /// <p>The number of delete actions performed on a table.</p>
2764    #[serde(rename = "Deletes")]
2765    #[serde(skip_serializing_if = "Option::is_none")]
2766    pub deletes: Option<i64>,
2767    /// <p>The number of rows that failed conditional checks during the full load operation (valid only for migrations where DynamoDB is the target).</p>
2768    #[serde(rename = "FullLoadCondtnlChkFailedRows")]
2769    #[serde(skip_serializing_if = "Option::is_none")]
2770    pub full_load_condtnl_chk_failed_rows: Option<i64>,
2771    /// <p>The time when the full load operation completed.</p>
2772    #[serde(rename = "FullLoadEndTime")]
2773    #[serde(skip_serializing_if = "Option::is_none")]
2774    pub full_load_end_time: Option<f64>,
2775    /// <p>The number of rows that failed to load during the full load operation (valid only for migrations where DynamoDB is the target).</p>
2776    #[serde(rename = "FullLoadErrorRows")]
2777    #[serde(skip_serializing_if = "Option::is_none")]
2778    pub full_load_error_rows: Option<i64>,
2779    /// <p>A value that indicates if the table was reloaded (<code>true</code>) or loaded as part of a new full load operation (<code>false</code>).</p>
2780    #[serde(rename = "FullLoadReloaded")]
2781    #[serde(skip_serializing_if = "Option::is_none")]
2782    pub full_load_reloaded: Option<bool>,
2783    /// <p>The number of rows added during the full load operation.</p>
2784    #[serde(rename = "FullLoadRows")]
2785    #[serde(skip_serializing_if = "Option::is_none")]
2786    pub full_load_rows: Option<i64>,
2787    /// <p>The time when the full load operation started.</p>
2788    #[serde(rename = "FullLoadStartTime")]
2789    #[serde(skip_serializing_if = "Option::is_none")]
2790    pub full_load_start_time: Option<f64>,
2791    /// <p>The number of insert actions performed on a table.</p>
2792    #[serde(rename = "Inserts")]
2793    #[serde(skip_serializing_if = "Option::is_none")]
2794    pub inserts: Option<i64>,
2795    /// <p>The last time a table was updated.</p>
2796    #[serde(rename = "LastUpdateTime")]
2797    #[serde(skip_serializing_if = "Option::is_none")]
2798    pub last_update_time: Option<f64>,
2799    /// <p>The schema name.</p>
2800    #[serde(rename = "SchemaName")]
2801    #[serde(skip_serializing_if = "Option::is_none")]
2802    pub schema_name: Option<String>,
2803    /// <p>The name of the table.</p>
2804    #[serde(rename = "TableName")]
2805    #[serde(skip_serializing_if = "Option::is_none")]
2806    pub table_name: Option<String>,
2807    /// <p>The state of the tables described.</p> <p>Valid states: Table does not exist | Before load | Full load | Table completed | Table cancelled | Table error | Table all | Table updates | Table is being reloaded</p>
2808    #[serde(rename = "TableState")]
2809    #[serde(skip_serializing_if = "Option::is_none")]
2810    pub table_state: Option<String>,
2811    /// <p>The number of update actions performed on a table.</p>
2812    #[serde(rename = "Updates")]
2813    #[serde(skip_serializing_if = "Option::is_none")]
2814    pub updates: Option<i64>,
2815    /// <p>The number of records that failed validation.</p>
2816    #[serde(rename = "ValidationFailedRecords")]
2817    #[serde(skip_serializing_if = "Option::is_none")]
2818    pub validation_failed_records: Option<i64>,
2819    /// <p>The number of records that have yet to be validated.</p>
2820    #[serde(rename = "ValidationPendingRecords")]
2821    #[serde(skip_serializing_if = "Option::is_none")]
2822    pub validation_pending_records: Option<i64>,
2823    /// <p><p>The validation state of the table.</p> <p>This parameter can have the following values:</p> <ul> <li> <p>Not enabled - Validation isn&#39;t enabled for the table in the migration task.</p> </li> <li> <p>Pending records - Some records in the table are waiting for validation.</p> </li> <li> <p>Mismatched records - Some records in the table don&#39;t match between the source and target.</p> </li> <li> <p>Suspended records - Some records in the table couldn&#39;t be validated.</p> </li> <li> <p>No primary key - The table couldn&#39;t be validated because it has no primary key.</p> </li> <li> <p>Table error - The table wasn&#39;t validated because it&#39;s in an error state and some data wasn&#39;t migrated.</p> </li> <li> <p>Validated - All rows in the table are validated. If the table is updated, the status can change from Validated.</p> </li> <li> <p>Error - The table couldn&#39;t be validated because of an unexpected error.</p> </li> </ul></p>
2824    #[serde(rename = "ValidationState")]
2825    #[serde(skip_serializing_if = "Option::is_none")]
2826    pub validation_state: Option<String>,
2827    /// <p>Additional details about the state of validation.</p>
2828    #[serde(rename = "ValidationStateDetails")]
2829    #[serde(skip_serializing_if = "Option::is_none")]
2830    pub validation_state_details: Option<String>,
2831    /// <p>The number of records that couldn't be validated.</p>
2832    #[serde(rename = "ValidationSuspendedRecords")]
2833    #[serde(skip_serializing_if = "Option::is_none")]
2834    pub validation_suspended_records: Option<i64>,
2835}
2836
2837/// <p>Provides the name of the schema and table to be reloaded.</p>
2838#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2839#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2840pub struct TableToReload {
2841    /// <p>The schema name of the table to be reloaded.</p>
2842    #[serde(rename = "SchemaName")]
2843    #[serde(skip_serializing_if = "Option::is_none")]
2844    pub schema_name: Option<String>,
2845    /// <p>The table name of the table to be reloaded.</p>
2846    #[serde(rename = "TableName")]
2847    #[serde(skip_serializing_if = "Option::is_none")]
2848    pub table_name: Option<String>,
2849}
2850
2851/// <p><p>A user-defined key-value pair that describes metadata added to an AWS DMS resource and that is used by operations such as the following:</p> <ul> <li> <p> <code>AddTagsToResource</code> </p> </li> <li> <p> <code>ListTagsForResource</code> </p> </li> <li> <p> <code>RemoveTagsFromResource</code> </p> </li> </ul></p>
2852#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2853pub struct Tag {
2854    /// <p>A key is the required name of the tag. The string value can be 1-128 Unicode characters in length and can't be prefixed with "aws:" or "dms:". The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', '/', '=', '+', '-' (Java regular expressions: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$").</p>
2855    #[serde(rename = "Key")]
2856    #[serde(skip_serializing_if = "Option::is_none")]
2857    pub key: Option<String>,
2858    /// <p>A value is the optional value of the tag. The string value can be 1-256 Unicode characters in length and can't be prefixed with "aws:" or "dms:". The string can only contain only the set of Unicode letters, digits, white-space, '_', '.', '/', '=', '+', '-' (Java regular expressions: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$").</p>
2859    #[serde(rename = "Value")]
2860    #[serde(skip_serializing_if = "Option::is_none")]
2861    pub value: Option<String>,
2862}
2863
2864/// <p><p/></p>
2865#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2866#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2867pub struct TestConnectionMessage {
2868    /// <p>The Amazon Resource Name (ARN) string that uniquely identifies the endpoint.</p>
2869    #[serde(rename = "EndpointArn")]
2870    pub endpoint_arn: String,
2871    /// <p>The Amazon Resource Name (ARN) of the replication instance.</p>
2872    #[serde(rename = "ReplicationInstanceArn")]
2873    pub replication_instance_arn: String,
2874}
2875
2876/// <p><p/></p>
2877#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2878#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2879pub struct TestConnectionResponse {
2880    /// <p>The connection tested.</p>
2881    #[serde(rename = "Connection")]
2882    #[serde(skip_serializing_if = "Option::is_none")]
2883    pub connection: Option<Connection>,
2884}
2885
2886/// <p>Describes the status of a security group associated with the virtual private cloud (VPC) hosting your replication and DB instances.</p>
2887#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2888#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2889pub struct VpcSecurityGroupMembership {
2890    /// <p>The status of the VPC security group.</p>
2891    #[serde(rename = "Status")]
2892    #[serde(skip_serializing_if = "Option::is_none")]
2893    pub status: Option<String>,
2894    /// <p>The VPC security group ID.</p>
2895    #[serde(rename = "VpcSecurityGroupId")]
2896    #[serde(skip_serializing_if = "Option::is_none")]
2897    pub vpc_security_group_id: Option<String>,
2898}
2899
2900/// Errors returned by AddTagsToResource
2901#[derive(Debug, PartialEq)]
2902pub enum AddTagsToResourceError {
2903    /// <p>The resource could not be found.</p>
2904    ResourceNotFoundFault(String),
2905}
2906
2907impl AddTagsToResourceError {
2908    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<AddTagsToResourceError> {
2909        if let Some(err) = proto::json::Error::parse(&res) {
2910            match err.typ.as_str() {
2911                "ResourceNotFoundFault" => {
2912                    return RusotoError::Service(AddTagsToResourceError::ResourceNotFoundFault(
2913                        err.msg,
2914                    ))
2915                }
2916                "ValidationException" => return RusotoError::Validation(err.msg),
2917                _ => {}
2918            }
2919        }
2920        RusotoError::Unknown(res)
2921    }
2922}
2923impl fmt::Display for AddTagsToResourceError {
2924    #[allow(unused_variables)]
2925    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2926        match *self {
2927            AddTagsToResourceError::ResourceNotFoundFault(ref cause) => write!(f, "{}", cause),
2928        }
2929    }
2930}
2931impl Error for AddTagsToResourceError {}
2932/// Errors returned by ApplyPendingMaintenanceAction
2933#[derive(Debug, PartialEq)]
2934pub enum ApplyPendingMaintenanceActionError {
2935    /// <p>The resource could not be found.</p>
2936    ResourceNotFoundFault(String),
2937}
2938
2939impl ApplyPendingMaintenanceActionError {
2940    pub fn from_response(
2941        res: BufferedHttpResponse,
2942    ) -> RusotoError<ApplyPendingMaintenanceActionError> {
2943        if let Some(err) = proto::json::Error::parse(&res) {
2944            match err.typ.as_str() {
2945                "ResourceNotFoundFault" => {
2946                    return RusotoError::Service(
2947                        ApplyPendingMaintenanceActionError::ResourceNotFoundFault(err.msg),
2948                    )
2949                }
2950                "ValidationException" => return RusotoError::Validation(err.msg),
2951                _ => {}
2952            }
2953        }
2954        RusotoError::Unknown(res)
2955    }
2956}
2957impl fmt::Display for ApplyPendingMaintenanceActionError {
2958    #[allow(unused_variables)]
2959    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2960        match *self {
2961            ApplyPendingMaintenanceActionError::ResourceNotFoundFault(ref cause) => {
2962                write!(f, "{}", cause)
2963            }
2964        }
2965    }
2966}
2967impl Error for ApplyPendingMaintenanceActionError {}
2968/// Errors returned by CreateEndpoint
2969#[derive(Debug, PartialEq)]
2970pub enum CreateEndpointError {
2971    /// <p>AWS DMS was denied access to the endpoint. Check that the role is correctly configured.</p>
2972    AccessDeniedFault(String),
2973    /// <p>The resource is in a state that prevents it from being used for database migration.</p>
2974    InvalidResourceStateFault(String),
2975    /// <p>AWS DMS cannot access the AWS KMS key.</p>
2976    KMSKeyNotAccessibleFault(String),
2977    /// <p>The resource you are attempting to create already exists.</p>
2978    ResourceAlreadyExistsFault(String),
2979    /// <p>The resource could not be found.</p>
2980    ResourceNotFoundFault(String),
2981    /// <p>The quota for this resource quota has been exceeded.</p>
2982    ResourceQuotaExceededFault(String),
2983}
2984
2985impl CreateEndpointError {
2986    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateEndpointError> {
2987        if let Some(err) = proto::json::Error::parse(&res) {
2988            match err.typ.as_str() {
2989                "AccessDeniedFault" => {
2990                    return RusotoError::Service(CreateEndpointError::AccessDeniedFault(err.msg))
2991                }
2992                "InvalidResourceStateFault" => {
2993                    return RusotoError::Service(CreateEndpointError::InvalidResourceStateFault(
2994                        err.msg,
2995                    ))
2996                }
2997                "KMSKeyNotAccessibleFault" => {
2998                    return RusotoError::Service(CreateEndpointError::KMSKeyNotAccessibleFault(
2999                        err.msg,
3000                    ))
3001                }
3002                "ResourceAlreadyExistsFault" => {
3003                    return RusotoError::Service(CreateEndpointError::ResourceAlreadyExistsFault(
3004                        err.msg,
3005                    ))
3006                }
3007                "ResourceNotFoundFault" => {
3008                    return RusotoError::Service(CreateEndpointError::ResourceNotFoundFault(
3009                        err.msg,
3010                    ))
3011                }
3012                "ResourceQuotaExceededFault" => {
3013                    return RusotoError::Service(CreateEndpointError::ResourceQuotaExceededFault(
3014                        err.msg,
3015                    ))
3016                }
3017                "ValidationException" => return RusotoError::Validation(err.msg),
3018                _ => {}
3019            }
3020        }
3021        RusotoError::Unknown(res)
3022    }
3023}
3024impl fmt::Display for CreateEndpointError {
3025    #[allow(unused_variables)]
3026    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3027        match *self {
3028            CreateEndpointError::AccessDeniedFault(ref cause) => write!(f, "{}", cause),
3029            CreateEndpointError::InvalidResourceStateFault(ref cause) => write!(f, "{}", cause),
3030            CreateEndpointError::KMSKeyNotAccessibleFault(ref cause) => write!(f, "{}", cause),
3031            CreateEndpointError::ResourceAlreadyExistsFault(ref cause) => write!(f, "{}", cause),
3032            CreateEndpointError::ResourceNotFoundFault(ref cause) => write!(f, "{}", cause),
3033            CreateEndpointError::ResourceQuotaExceededFault(ref cause) => write!(f, "{}", cause),
3034        }
3035    }
3036}
3037impl Error for CreateEndpointError {}
3038/// Errors returned by CreateEventSubscription
3039#[derive(Debug, PartialEq)]
3040pub enum CreateEventSubscriptionError {
3041    /// <p>The ciphertext references a key that doesn't exist or that the DMS account doesn't have access to.</p>
3042    KMSAccessDeniedFault(String),
3043    /// <p>The specified master key (CMK) isn't enabled.</p>
3044    KMSDisabledFault(String),
3045    /// <p>The state of the specified AWS KMS resource isn't valid for this request.</p>
3046    KMSInvalidStateFault(String),
3047    /// <p>The specified AWS KMS entity or resource can't be found.</p>
3048    KMSNotFoundFault(String),
3049    /// <p>This request triggered AWS KMS request throttling.</p>
3050    KMSThrottlingFault(String),
3051    /// <p>The resource you are attempting to create already exists.</p>
3052    ResourceAlreadyExistsFault(String),
3053    /// <p>The resource could not be found.</p>
3054    ResourceNotFoundFault(String),
3055    /// <p>The quota for this resource quota has been exceeded.</p>
3056    ResourceQuotaExceededFault(String),
3057    /// <p>The SNS topic is invalid.</p>
3058    SNSInvalidTopicFault(String),
3059    /// <p>You are not authorized for the SNS subscription.</p>
3060    SNSNoAuthorizationFault(String),
3061}
3062
3063impl CreateEventSubscriptionError {
3064    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateEventSubscriptionError> {
3065        if let Some(err) = proto::json::Error::parse(&res) {
3066            match err.typ.as_str() {
3067                "KMSAccessDeniedFault" => {
3068                    return RusotoError::Service(
3069                        CreateEventSubscriptionError::KMSAccessDeniedFault(err.msg),
3070                    )
3071                }
3072                "KMSDisabledFault" => {
3073                    return RusotoError::Service(CreateEventSubscriptionError::KMSDisabledFault(
3074                        err.msg,
3075                    ))
3076                }
3077                "KMSInvalidStateFault" => {
3078                    return RusotoError::Service(
3079                        CreateEventSubscriptionError::KMSInvalidStateFault(err.msg),
3080                    )
3081                }
3082                "KMSNotFoundFault" => {
3083                    return RusotoError::Service(CreateEventSubscriptionError::KMSNotFoundFault(
3084                        err.msg,
3085                    ))
3086                }
3087                "KMSThrottlingFault" => {
3088                    return RusotoError::Service(CreateEventSubscriptionError::KMSThrottlingFault(
3089                        err.msg,
3090                    ))
3091                }
3092                "ResourceAlreadyExistsFault" => {
3093                    return RusotoError::Service(
3094                        CreateEventSubscriptionError::ResourceAlreadyExistsFault(err.msg),
3095                    )
3096                }
3097                "ResourceNotFoundFault" => {
3098                    return RusotoError::Service(
3099                        CreateEventSubscriptionError::ResourceNotFoundFault(err.msg),
3100                    )
3101                }
3102                "ResourceQuotaExceededFault" => {
3103                    return RusotoError::Service(
3104                        CreateEventSubscriptionError::ResourceQuotaExceededFault(err.msg),
3105                    )
3106                }
3107                "SNSInvalidTopicFault" => {
3108                    return RusotoError::Service(
3109                        CreateEventSubscriptionError::SNSInvalidTopicFault(err.msg),
3110                    )
3111                }
3112                "SNSNoAuthorizationFault" => {
3113                    return RusotoError::Service(
3114                        CreateEventSubscriptionError::SNSNoAuthorizationFault(err.msg),
3115                    )
3116                }
3117                "ValidationException" => return RusotoError::Validation(err.msg),
3118                _ => {}
3119            }
3120        }
3121        RusotoError::Unknown(res)
3122    }
3123}
3124impl fmt::Display for CreateEventSubscriptionError {
3125    #[allow(unused_variables)]
3126    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3127        match *self {
3128            CreateEventSubscriptionError::KMSAccessDeniedFault(ref cause) => write!(f, "{}", cause),
3129            CreateEventSubscriptionError::KMSDisabledFault(ref cause) => write!(f, "{}", cause),
3130            CreateEventSubscriptionError::KMSInvalidStateFault(ref cause) => write!(f, "{}", cause),
3131            CreateEventSubscriptionError::KMSNotFoundFault(ref cause) => write!(f, "{}", cause),
3132            CreateEventSubscriptionError::KMSThrottlingFault(ref cause) => write!(f, "{}", cause),
3133            CreateEventSubscriptionError::ResourceAlreadyExistsFault(ref cause) => {
3134                write!(f, "{}", cause)
3135            }
3136            CreateEventSubscriptionError::ResourceNotFoundFault(ref cause) => {
3137                write!(f, "{}", cause)
3138            }
3139            CreateEventSubscriptionError::ResourceQuotaExceededFault(ref cause) => {
3140                write!(f, "{}", cause)
3141            }
3142            CreateEventSubscriptionError::SNSInvalidTopicFault(ref cause) => write!(f, "{}", cause),
3143            CreateEventSubscriptionError::SNSNoAuthorizationFault(ref cause) => {
3144                write!(f, "{}", cause)
3145            }
3146        }
3147    }
3148}
3149impl Error for CreateEventSubscriptionError {}
3150/// Errors returned by CreateReplicationInstance
3151#[derive(Debug, PartialEq)]
3152pub enum CreateReplicationInstanceError {
3153    /// <p>AWS DMS was denied access to the endpoint. Check that the role is correctly configured.</p>
3154    AccessDeniedFault(String),
3155    /// <p>There are not enough resources allocated to the database migration.</p>
3156    InsufficientResourceCapacityFault(String),
3157    /// <p>The resource is in a state that prevents it from being used for database migration.</p>
3158    InvalidResourceStateFault(String),
3159    /// <p>The subnet provided is invalid.</p>
3160    InvalidSubnet(String),
3161    /// <p>AWS DMS cannot access the AWS KMS key.</p>
3162    KMSKeyNotAccessibleFault(String),
3163    /// <p>The replication subnet group does not cover enough Availability Zones (AZs). Edit the replication subnet group and add more AZs.</p>
3164    ReplicationSubnetGroupDoesNotCoverEnoughAZs(String),
3165    /// <p>The resource you are attempting to create already exists.</p>
3166    ResourceAlreadyExistsFault(String),
3167    /// <p>The resource could not be found.</p>
3168    ResourceNotFoundFault(String),
3169    /// <p>The quota for this resource quota has been exceeded.</p>
3170    ResourceQuotaExceededFault(String),
3171    /// <p>The storage quota has been exceeded.</p>
3172    StorageQuotaExceededFault(String),
3173}
3174
3175impl CreateReplicationInstanceError {
3176    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateReplicationInstanceError> {
3177        if let Some(err) = proto::json::Error::parse(&res) {
3178            match err.typ.as_str() {
3179                "AccessDeniedFault" => {
3180                    return RusotoError::Service(CreateReplicationInstanceError::AccessDeniedFault(
3181                        err.msg,
3182                    ))
3183                }
3184                "InsufficientResourceCapacityFault" => {
3185                    return RusotoError::Service(
3186                        CreateReplicationInstanceError::InsufficientResourceCapacityFault(err.msg),
3187                    )
3188                }
3189                "InvalidResourceStateFault" => {
3190                    return RusotoError::Service(
3191                        CreateReplicationInstanceError::InvalidResourceStateFault(err.msg),
3192                    )
3193                }
3194                "InvalidSubnet" => {
3195                    return RusotoError::Service(CreateReplicationInstanceError::InvalidSubnet(
3196                        err.msg,
3197                    ))
3198                }
3199                "KMSKeyNotAccessibleFault" => {
3200                    return RusotoError::Service(
3201                        CreateReplicationInstanceError::KMSKeyNotAccessibleFault(err.msg),
3202                    )
3203                }
3204                "ReplicationSubnetGroupDoesNotCoverEnoughAZs" => {
3205                    return RusotoError::Service(
3206                        CreateReplicationInstanceError::ReplicationSubnetGroupDoesNotCoverEnoughAZs(
3207                            err.msg,
3208                        ),
3209                    )
3210                }
3211                "ResourceAlreadyExistsFault" => {
3212                    return RusotoError::Service(
3213                        CreateReplicationInstanceError::ResourceAlreadyExistsFault(err.msg),
3214                    )
3215                }
3216                "ResourceNotFoundFault" => {
3217                    return RusotoError::Service(
3218                        CreateReplicationInstanceError::ResourceNotFoundFault(err.msg),
3219                    )
3220                }
3221                "ResourceQuotaExceededFault" => {
3222                    return RusotoError::Service(
3223                        CreateReplicationInstanceError::ResourceQuotaExceededFault(err.msg),
3224                    )
3225                }
3226                "StorageQuotaExceededFault" => {
3227                    return RusotoError::Service(
3228                        CreateReplicationInstanceError::StorageQuotaExceededFault(err.msg),
3229                    )
3230                }
3231                "ValidationException" => return RusotoError::Validation(err.msg),
3232                _ => {}
3233            }
3234        }
3235        RusotoError::Unknown(res)
3236    }
3237}
3238impl fmt::Display for CreateReplicationInstanceError {
3239    #[allow(unused_variables)]
3240    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3241        match *self {
3242            CreateReplicationInstanceError::AccessDeniedFault(ref cause) => write!(f, "{}", cause),
3243            CreateReplicationInstanceError::InsufficientResourceCapacityFault(ref cause) => {
3244                write!(f, "{}", cause)
3245            }
3246            CreateReplicationInstanceError::InvalidResourceStateFault(ref cause) => {
3247                write!(f, "{}", cause)
3248            }
3249            CreateReplicationInstanceError::InvalidSubnet(ref cause) => write!(f, "{}", cause),
3250            CreateReplicationInstanceError::KMSKeyNotAccessibleFault(ref cause) => {
3251                write!(f, "{}", cause)
3252            }
3253            CreateReplicationInstanceError::ReplicationSubnetGroupDoesNotCoverEnoughAZs(
3254                ref cause,
3255            ) => write!(f, "{}", cause),
3256            CreateReplicationInstanceError::ResourceAlreadyExistsFault(ref cause) => {
3257                write!(f, "{}", cause)
3258            }
3259            CreateReplicationInstanceError::ResourceNotFoundFault(ref cause) => {
3260                write!(f, "{}", cause)
3261            }
3262            CreateReplicationInstanceError::ResourceQuotaExceededFault(ref cause) => {
3263                write!(f, "{}", cause)
3264            }
3265            CreateReplicationInstanceError::StorageQuotaExceededFault(ref cause) => {
3266                write!(f, "{}", cause)
3267            }
3268        }
3269    }
3270}
3271impl Error for CreateReplicationInstanceError {}
3272/// Errors returned by CreateReplicationSubnetGroup
3273#[derive(Debug, PartialEq)]
3274pub enum CreateReplicationSubnetGroupError {
3275    /// <p>AWS DMS was denied access to the endpoint. Check that the role is correctly configured.</p>
3276    AccessDeniedFault(String),
3277    /// <p>The subnet provided is invalid.</p>
3278    InvalidSubnet(String),
3279    /// <p>The replication subnet group does not cover enough Availability Zones (AZs). Edit the replication subnet group and add more AZs.</p>
3280    ReplicationSubnetGroupDoesNotCoverEnoughAZs(String),
3281    /// <p>The resource you are attempting to create already exists.</p>
3282    ResourceAlreadyExistsFault(String),
3283    /// <p>The resource could not be found.</p>
3284    ResourceNotFoundFault(String),
3285    /// <p>The quota for this resource quota has been exceeded.</p>
3286    ResourceQuotaExceededFault(String),
3287}
3288
3289impl CreateReplicationSubnetGroupError {
3290    pub fn from_response(
3291        res: BufferedHttpResponse,
3292    ) -> RusotoError<CreateReplicationSubnetGroupError> {
3293        if let Some(err) = proto::json::Error::parse(&res) {
3294            match err.typ.as_str() {
3295                "AccessDeniedFault" => {
3296                    return RusotoError::Service(
3297                        CreateReplicationSubnetGroupError::AccessDeniedFault(err.msg),
3298                    )
3299                }
3300                "InvalidSubnet" => {
3301                    return RusotoError::Service(CreateReplicationSubnetGroupError::InvalidSubnet(
3302                        err.msg,
3303                    ))
3304                }
3305                "ReplicationSubnetGroupDoesNotCoverEnoughAZs" => return RusotoError::Service(
3306                    CreateReplicationSubnetGroupError::ReplicationSubnetGroupDoesNotCoverEnoughAZs(
3307                        err.msg,
3308                    ),
3309                ),
3310                "ResourceAlreadyExistsFault" => {
3311                    return RusotoError::Service(
3312                        CreateReplicationSubnetGroupError::ResourceAlreadyExistsFault(err.msg),
3313                    )
3314                }
3315                "ResourceNotFoundFault" => {
3316                    return RusotoError::Service(
3317                        CreateReplicationSubnetGroupError::ResourceNotFoundFault(err.msg),
3318                    )
3319                }
3320                "ResourceQuotaExceededFault" => {
3321                    return RusotoError::Service(
3322                        CreateReplicationSubnetGroupError::ResourceQuotaExceededFault(err.msg),
3323                    )
3324                }
3325                "ValidationException" => return RusotoError::Validation(err.msg),
3326                _ => {}
3327            }
3328        }
3329        RusotoError::Unknown(res)
3330    }
3331}
3332impl fmt::Display for CreateReplicationSubnetGroupError {
3333    #[allow(unused_variables)]
3334    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3335        match *self {
3336            CreateReplicationSubnetGroupError::AccessDeniedFault(ref cause) => {
3337                write!(f, "{}", cause)
3338            }
3339            CreateReplicationSubnetGroupError::InvalidSubnet(ref cause) => write!(f, "{}", cause),
3340            CreateReplicationSubnetGroupError::ReplicationSubnetGroupDoesNotCoverEnoughAZs(
3341                ref cause,
3342            ) => write!(f, "{}", cause),
3343            CreateReplicationSubnetGroupError::ResourceAlreadyExistsFault(ref cause) => {
3344                write!(f, "{}", cause)
3345            }
3346            CreateReplicationSubnetGroupError::ResourceNotFoundFault(ref cause) => {
3347                write!(f, "{}", cause)
3348            }
3349            CreateReplicationSubnetGroupError::ResourceQuotaExceededFault(ref cause) => {
3350                write!(f, "{}", cause)
3351            }
3352        }
3353    }
3354}
3355impl Error for CreateReplicationSubnetGroupError {}
3356/// Errors returned by CreateReplicationTask
3357#[derive(Debug, PartialEq)]
3358pub enum CreateReplicationTaskError {
3359    /// <p>AWS DMS was denied access to the endpoint. Check that the role is correctly configured.</p>
3360    AccessDeniedFault(String),
3361    /// <p>The resource is in a state that prevents it from being used for database migration.</p>
3362    InvalidResourceStateFault(String),
3363    /// <p>AWS DMS cannot access the AWS KMS key.</p>
3364    KMSKeyNotAccessibleFault(String),
3365    /// <p>The resource you are attempting to create already exists.</p>
3366    ResourceAlreadyExistsFault(String),
3367    /// <p>The resource could not be found.</p>
3368    ResourceNotFoundFault(String),
3369    /// <p>The quota for this resource quota has been exceeded.</p>
3370    ResourceQuotaExceededFault(String),
3371}
3372
3373impl CreateReplicationTaskError {
3374    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateReplicationTaskError> {
3375        if let Some(err) = proto::json::Error::parse(&res) {
3376            match err.typ.as_str() {
3377                "AccessDeniedFault" => {
3378                    return RusotoError::Service(CreateReplicationTaskError::AccessDeniedFault(
3379                        err.msg,
3380                    ))
3381                }
3382                "InvalidResourceStateFault" => {
3383                    return RusotoError::Service(
3384                        CreateReplicationTaskError::InvalidResourceStateFault(err.msg),
3385                    )
3386                }
3387                "KMSKeyNotAccessibleFault" => {
3388                    return RusotoError::Service(
3389                        CreateReplicationTaskError::KMSKeyNotAccessibleFault(err.msg),
3390                    )
3391                }
3392                "ResourceAlreadyExistsFault" => {
3393                    return RusotoError::Service(
3394                        CreateReplicationTaskError::ResourceAlreadyExistsFault(err.msg),
3395                    )
3396                }
3397                "ResourceNotFoundFault" => {
3398                    return RusotoError::Service(CreateReplicationTaskError::ResourceNotFoundFault(
3399                        err.msg,
3400                    ))
3401                }
3402                "ResourceQuotaExceededFault" => {
3403                    return RusotoError::Service(
3404                        CreateReplicationTaskError::ResourceQuotaExceededFault(err.msg),
3405                    )
3406                }
3407                "ValidationException" => return RusotoError::Validation(err.msg),
3408                _ => {}
3409            }
3410        }
3411        RusotoError::Unknown(res)
3412    }
3413}
3414impl fmt::Display for CreateReplicationTaskError {
3415    #[allow(unused_variables)]
3416    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3417        match *self {
3418            CreateReplicationTaskError::AccessDeniedFault(ref cause) => write!(f, "{}", cause),
3419            CreateReplicationTaskError::InvalidResourceStateFault(ref cause) => {
3420                write!(f, "{}", cause)
3421            }
3422            CreateReplicationTaskError::KMSKeyNotAccessibleFault(ref cause) => {
3423                write!(f, "{}", cause)
3424            }
3425            CreateReplicationTaskError::ResourceAlreadyExistsFault(ref cause) => {
3426                write!(f, "{}", cause)
3427            }
3428            CreateReplicationTaskError::ResourceNotFoundFault(ref cause) => write!(f, "{}", cause),
3429            CreateReplicationTaskError::ResourceQuotaExceededFault(ref cause) => {
3430                write!(f, "{}", cause)
3431            }
3432        }
3433    }
3434}
3435impl Error for CreateReplicationTaskError {}
3436/// Errors returned by DeleteCertificate
3437#[derive(Debug, PartialEq)]
3438pub enum DeleteCertificateError {
3439    /// <p>The resource is in a state that prevents it from being used for database migration.</p>
3440    InvalidResourceStateFault(String),
3441    /// <p>The resource could not be found.</p>
3442    ResourceNotFoundFault(String),
3443}
3444
3445impl DeleteCertificateError {
3446    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteCertificateError> {
3447        if let Some(err) = proto::json::Error::parse(&res) {
3448            match err.typ.as_str() {
3449                "InvalidResourceStateFault" => {
3450                    return RusotoError::Service(DeleteCertificateError::InvalidResourceStateFault(
3451                        err.msg,
3452                    ))
3453                }
3454                "ResourceNotFoundFault" => {
3455                    return RusotoError::Service(DeleteCertificateError::ResourceNotFoundFault(
3456                        err.msg,
3457                    ))
3458                }
3459                "ValidationException" => return RusotoError::Validation(err.msg),
3460                _ => {}
3461            }
3462        }
3463        RusotoError::Unknown(res)
3464    }
3465}
3466impl fmt::Display for DeleteCertificateError {
3467    #[allow(unused_variables)]
3468    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3469        match *self {
3470            DeleteCertificateError::InvalidResourceStateFault(ref cause) => write!(f, "{}", cause),
3471            DeleteCertificateError::ResourceNotFoundFault(ref cause) => write!(f, "{}", cause),
3472        }
3473    }
3474}
3475impl Error for DeleteCertificateError {}
3476/// Errors returned by DeleteConnection
3477#[derive(Debug, PartialEq)]
3478pub enum DeleteConnectionError {
3479    /// <p>AWS DMS was denied access to the endpoint. Check that the role is correctly configured.</p>
3480    AccessDeniedFault(String),
3481    /// <p>The resource is in a state that prevents it from being used for database migration.</p>
3482    InvalidResourceStateFault(String),
3483    /// <p>The resource could not be found.</p>
3484    ResourceNotFoundFault(String),
3485}
3486
3487impl DeleteConnectionError {
3488    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteConnectionError> {
3489        if let Some(err) = proto::json::Error::parse(&res) {
3490            match err.typ.as_str() {
3491                "AccessDeniedFault" => {
3492                    return RusotoError::Service(DeleteConnectionError::AccessDeniedFault(err.msg))
3493                }
3494                "InvalidResourceStateFault" => {
3495                    return RusotoError::Service(DeleteConnectionError::InvalidResourceStateFault(
3496                        err.msg,
3497                    ))
3498                }
3499                "ResourceNotFoundFault" => {
3500                    return RusotoError::Service(DeleteConnectionError::ResourceNotFoundFault(
3501                        err.msg,
3502                    ))
3503                }
3504                "ValidationException" => return RusotoError::Validation(err.msg),
3505                _ => {}
3506            }
3507        }
3508        RusotoError::Unknown(res)
3509    }
3510}
3511impl fmt::Display for DeleteConnectionError {
3512    #[allow(unused_variables)]
3513    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3514        match *self {
3515            DeleteConnectionError::AccessDeniedFault(ref cause) => write!(f, "{}", cause),
3516            DeleteConnectionError::InvalidResourceStateFault(ref cause) => write!(f, "{}", cause),
3517            DeleteConnectionError::ResourceNotFoundFault(ref cause) => write!(f, "{}", cause),
3518        }
3519    }
3520}
3521impl Error for DeleteConnectionError {}
3522/// Errors returned by DeleteEndpoint
3523#[derive(Debug, PartialEq)]
3524pub enum DeleteEndpointError {
3525    /// <p>The resource is in a state that prevents it from being used for database migration.</p>
3526    InvalidResourceStateFault(String),
3527    /// <p>The resource could not be found.</p>
3528    ResourceNotFoundFault(String),
3529}
3530
3531impl DeleteEndpointError {
3532    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteEndpointError> {
3533        if let Some(err) = proto::json::Error::parse(&res) {
3534            match err.typ.as_str() {
3535                "InvalidResourceStateFault" => {
3536                    return RusotoError::Service(DeleteEndpointError::InvalidResourceStateFault(
3537                        err.msg,
3538                    ))
3539                }
3540                "ResourceNotFoundFault" => {
3541                    return RusotoError::Service(DeleteEndpointError::ResourceNotFoundFault(
3542                        err.msg,
3543                    ))
3544                }
3545                "ValidationException" => return RusotoError::Validation(err.msg),
3546                _ => {}
3547            }
3548        }
3549        RusotoError::Unknown(res)
3550    }
3551}
3552impl fmt::Display for DeleteEndpointError {
3553    #[allow(unused_variables)]
3554    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3555        match *self {
3556            DeleteEndpointError::InvalidResourceStateFault(ref cause) => write!(f, "{}", cause),
3557            DeleteEndpointError::ResourceNotFoundFault(ref cause) => write!(f, "{}", cause),
3558        }
3559    }
3560}
3561impl Error for DeleteEndpointError {}
3562/// Errors returned by DeleteEventSubscription
3563#[derive(Debug, PartialEq)]
3564pub enum DeleteEventSubscriptionError {
3565    /// <p>The resource is in a state that prevents it from being used for database migration.</p>
3566    InvalidResourceStateFault(String),
3567    /// <p>The resource could not be found.</p>
3568    ResourceNotFoundFault(String),
3569}
3570
3571impl DeleteEventSubscriptionError {
3572    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteEventSubscriptionError> {
3573        if let Some(err) = proto::json::Error::parse(&res) {
3574            match err.typ.as_str() {
3575                "InvalidResourceStateFault" => {
3576                    return RusotoError::Service(
3577                        DeleteEventSubscriptionError::InvalidResourceStateFault(err.msg),
3578                    )
3579                }
3580                "ResourceNotFoundFault" => {
3581                    return RusotoError::Service(
3582                        DeleteEventSubscriptionError::ResourceNotFoundFault(err.msg),
3583                    )
3584                }
3585                "ValidationException" => return RusotoError::Validation(err.msg),
3586                _ => {}
3587            }
3588        }
3589        RusotoError::Unknown(res)
3590    }
3591}
3592impl fmt::Display for DeleteEventSubscriptionError {
3593    #[allow(unused_variables)]
3594    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3595        match *self {
3596            DeleteEventSubscriptionError::InvalidResourceStateFault(ref cause) => {
3597                write!(f, "{}", cause)
3598            }
3599            DeleteEventSubscriptionError::ResourceNotFoundFault(ref cause) => {
3600                write!(f, "{}", cause)
3601            }
3602        }
3603    }
3604}
3605impl Error for DeleteEventSubscriptionError {}
3606/// Errors returned by DeleteReplicationInstance
3607#[derive(Debug, PartialEq)]
3608pub enum DeleteReplicationInstanceError {
3609    /// <p>The resource is in a state that prevents it from being used for database migration.</p>
3610    InvalidResourceStateFault(String),
3611    /// <p>The resource could not be found.</p>
3612    ResourceNotFoundFault(String),
3613}
3614
3615impl DeleteReplicationInstanceError {
3616    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteReplicationInstanceError> {
3617        if let Some(err) = proto::json::Error::parse(&res) {
3618            match err.typ.as_str() {
3619                "InvalidResourceStateFault" => {
3620                    return RusotoError::Service(
3621                        DeleteReplicationInstanceError::InvalidResourceStateFault(err.msg),
3622                    )
3623                }
3624                "ResourceNotFoundFault" => {
3625                    return RusotoError::Service(
3626                        DeleteReplicationInstanceError::ResourceNotFoundFault(err.msg),
3627                    )
3628                }
3629                "ValidationException" => return RusotoError::Validation(err.msg),
3630                _ => {}
3631            }
3632        }
3633        RusotoError::Unknown(res)
3634    }
3635}
3636impl fmt::Display for DeleteReplicationInstanceError {
3637    #[allow(unused_variables)]
3638    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3639        match *self {
3640            DeleteReplicationInstanceError::InvalidResourceStateFault(ref cause) => {
3641                write!(f, "{}", cause)
3642            }
3643            DeleteReplicationInstanceError::ResourceNotFoundFault(ref cause) => {
3644                write!(f, "{}", cause)
3645            }
3646        }
3647    }
3648}
3649impl Error for DeleteReplicationInstanceError {}
3650/// Errors returned by DeleteReplicationSubnetGroup
3651#[derive(Debug, PartialEq)]
3652pub enum DeleteReplicationSubnetGroupError {
3653    /// <p>The resource is in a state that prevents it from being used for database migration.</p>
3654    InvalidResourceStateFault(String),
3655    /// <p>The resource could not be found.</p>
3656    ResourceNotFoundFault(String),
3657}
3658
3659impl DeleteReplicationSubnetGroupError {
3660    pub fn from_response(
3661        res: BufferedHttpResponse,
3662    ) -> RusotoError<DeleteReplicationSubnetGroupError> {
3663        if let Some(err) = proto::json::Error::parse(&res) {
3664            match err.typ.as_str() {
3665                "InvalidResourceStateFault" => {
3666                    return RusotoError::Service(
3667                        DeleteReplicationSubnetGroupError::InvalidResourceStateFault(err.msg),
3668                    )
3669                }
3670                "ResourceNotFoundFault" => {
3671                    return RusotoError::Service(
3672                        DeleteReplicationSubnetGroupError::ResourceNotFoundFault(err.msg),
3673                    )
3674                }
3675                "ValidationException" => return RusotoError::Validation(err.msg),
3676                _ => {}
3677            }
3678        }
3679        RusotoError::Unknown(res)
3680    }
3681}
3682impl fmt::Display for DeleteReplicationSubnetGroupError {
3683    #[allow(unused_variables)]
3684    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3685        match *self {
3686            DeleteReplicationSubnetGroupError::InvalidResourceStateFault(ref cause) => {
3687                write!(f, "{}", cause)
3688            }
3689            DeleteReplicationSubnetGroupError::ResourceNotFoundFault(ref cause) => {
3690                write!(f, "{}", cause)
3691            }
3692        }
3693    }
3694}
3695impl Error for DeleteReplicationSubnetGroupError {}
3696/// Errors returned by DeleteReplicationTask
3697#[derive(Debug, PartialEq)]
3698pub enum DeleteReplicationTaskError {
3699    /// <p>The resource is in a state that prevents it from being used for database migration.</p>
3700    InvalidResourceStateFault(String),
3701    /// <p>The resource could not be found.</p>
3702    ResourceNotFoundFault(String),
3703}
3704
3705impl DeleteReplicationTaskError {
3706    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteReplicationTaskError> {
3707        if let Some(err) = proto::json::Error::parse(&res) {
3708            match err.typ.as_str() {
3709                "InvalidResourceStateFault" => {
3710                    return RusotoError::Service(
3711                        DeleteReplicationTaskError::InvalidResourceStateFault(err.msg),
3712                    )
3713                }
3714                "ResourceNotFoundFault" => {
3715                    return RusotoError::Service(DeleteReplicationTaskError::ResourceNotFoundFault(
3716                        err.msg,
3717                    ))
3718                }
3719                "ValidationException" => return RusotoError::Validation(err.msg),
3720                _ => {}
3721            }
3722        }
3723        RusotoError::Unknown(res)
3724    }
3725}
3726impl fmt::Display for DeleteReplicationTaskError {
3727    #[allow(unused_variables)]
3728    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3729        match *self {
3730            DeleteReplicationTaskError::InvalidResourceStateFault(ref cause) => {
3731                write!(f, "{}", cause)
3732            }
3733            DeleteReplicationTaskError::ResourceNotFoundFault(ref cause) => write!(f, "{}", cause),
3734        }
3735    }
3736}
3737impl Error for DeleteReplicationTaskError {}
3738/// Errors returned by DescribeAccountAttributes
3739#[derive(Debug, PartialEq)]
3740pub enum DescribeAccountAttributesError {}
3741
3742impl DescribeAccountAttributesError {
3743    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeAccountAttributesError> {
3744        if let Some(err) = proto::json::Error::parse(&res) {
3745            match err.typ.as_str() {
3746                "ValidationException" => return RusotoError::Validation(err.msg),
3747                _ => {}
3748            }
3749        }
3750        RusotoError::Unknown(res)
3751    }
3752}
3753impl fmt::Display for DescribeAccountAttributesError {
3754    #[allow(unused_variables)]
3755    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3756        match *self {}
3757    }
3758}
3759impl Error for DescribeAccountAttributesError {}
3760/// Errors returned by DescribeCertificates
3761#[derive(Debug, PartialEq)]
3762pub enum DescribeCertificatesError {
3763    /// <p>The resource could not be found.</p>
3764    ResourceNotFoundFault(String),
3765}
3766
3767impl DescribeCertificatesError {
3768    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeCertificatesError> {
3769        if let Some(err) = proto::json::Error::parse(&res) {
3770            match err.typ.as_str() {
3771                "ResourceNotFoundFault" => {
3772                    return RusotoError::Service(DescribeCertificatesError::ResourceNotFoundFault(
3773                        err.msg,
3774                    ))
3775                }
3776                "ValidationException" => return RusotoError::Validation(err.msg),
3777                _ => {}
3778            }
3779        }
3780        RusotoError::Unknown(res)
3781    }
3782}
3783impl fmt::Display for DescribeCertificatesError {
3784    #[allow(unused_variables)]
3785    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3786        match *self {
3787            DescribeCertificatesError::ResourceNotFoundFault(ref cause) => write!(f, "{}", cause),
3788        }
3789    }
3790}
3791impl Error for DescribeCertificatesError {}
3792/// Errors returned by DescribeConnections
3793#[derive(Debug, PartialEq)]
3794pub enum DescribeConnectionsError {
3795    /// <p>The resource could not be found.</p>
3796    ResourceNotFoundFault(String),
3797}
3798
3799impl DescribeConnectionsError {
3800    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeConnectionsError> {
3801        if let Some(err) = proto::json::Error::parse(&res) {
3802            match err.typ.as_str() {
3803                "ResourceNotFoundFault" => {
3804                    return RusotoError::Service(DescribeConnectionsError::ResourceNotFoundFault(
3805                        err.msg,
3806                    ))
3807                }
3808                "ValidationException" => return RusotoError::Validation(err.msg),
3809                _ => {}
3810            }
3811        }
3812        RusotoError::Unknown(res)
3813    }
3814}
3815impl fmt::Display for DescribeConnectionsError {
3816    #[allow(unused_variables)]
3817    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3818        match *self {
3819            DescribeConnectionsError::ResourceNotFoundFault(ref cause) => write!(f, "{}", cause),
3820        }
3821    }
3822}
3823impl Error for DescribeConnectionsError {}
3824/// Errors returned by DescribeEndpointTypes
3825#[derive(Debug, PartialEq)]
3826pub enum DescribeEndpointTypesError {}
3827
3828impl DescribeEndpointTypesError {
3829    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeEndpointTypesError> {
3830        if let Some(err) = proto::json::Error::parse(&res) {
3831            match err.typ.as_str() {
3832                "ValidationException" => return RusotoError::Validation(err.msg),
3833                _ => {}
3834            }
3835        }
3836        RusotoError::Unknown(res)
3837    }
3838}
3839impl fmt::Display for DescribeEndpointTypesError {
3840    #[allow(unused_variables)]
3841    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3842        match *self {}
3843    }
3844}
3845impl Error for DescribeEndpointTypesError {}
3846/// Errors returned by DescribeEndpoints
3847#[derive(Debug, PartialEq)]
3848pub enum DescribeEndpointsError {
3849    /// <p>The resource could not be found.</p>
3850    ResourceNotFoundFault(String),
3851}
3852
3853impl DescribeEndpointsError {
3854    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeEndpointsError> {
3855        if let Some(err) = proto::json::Error::parse(&res) {
3856            match err.typ.as_str() {
3857                "ResourceNotFoundFault" => {
3858                    return RusotoError::Service(DescribeEndpointsError::ResourceNotFoundFault(
3859                        err.msg,
3860                    ))
3861                }
3862                "ValidationException" => return RusotoError::Validation(err.msg),
3863                _ => {}
3864            }
3865        }
3866        RusotoError::Unknown(res)
3867    }
3868}
3869impl fmt::Display for DescribeEndpointsError {
3870    #[allow(unused_variables)]
3871    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3872        match *self {
3873            DescribeEndpointsError::ResourceNotFoundFault(ref cause) => write!(f, "{}", cause),
3874        }
3875    }
3876}
3877impl Error for DescribeEndpointsError {}
3878/// Errors returned by DescribeEventCategories
3879#[derive(Debug, PartialEq)]
3880pub enum DescribeEventCategoriesError {}
3881
3882impl DescribeEventCategoriesError {
3883    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeEventCategoriesError> {
3884        if let Some(err) = proto::json::Error::parse(&res) {
3885            match err.typ.as_str() {
3886                "ValidationException" => return RusotoError::Validation(err.msg),
3887                _ => {}
3888            }
3889        }
3890        RusotoError::Unknown(res)
3891    }
3892}
3893impl fmt::Display for DescribeEventCategoriesError {
3894    #[allow(unused_variables)]
3895    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3896        match *self {}
3897    }
3898}
3899impl Error for DescribeEventCategoriesError {}
3900/// Errors returned by DescribeEventSubscriptions
3901#[derive(Debug, PartialEq)]
3902pub enum DescribeEventSubscriptionsError {
3903    /// <p>The resource could not be found.</p>
3904    ResourceNotFoundFault(String),
3905}
3906
3907impl DescribeEventSubscriptionsError {
3908    pub fn from_response(
3909        res: BufferedHttpResponse,
3910    ) -> RusotoError<DescribeEventSubscriptionsError> {
3911        if let Some(err) = proto::json::Error::parse(&res) {
3912            match err.typ.as_str() {
3913                "ResourceNotFoundFault" => {
3914                    return RusotoError::Service(
3915                        DescribeEventSubscriptionsError::ResourceNotFoundFault(err.msg),
3916                    )
3917                }
3918                "ValidationException" => return RusotoError::Validation(err.msg),
3919                _ => {}
3920            }
3921        }
3922        RusotoError::Unknown(res)
3923    }
3924}
3925impl fmt::Display for DescribeEventSubscriptionsError {
3926    #[allow(unused_variables)]
3927    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3928        match *self {
3929            DescribeEventSubscriptionsError::ResourceNotFoundFault(ref cause) => {
3930                write!(f, "{}", cause)
3931            }
3932        }
3933    }
3934}
3935impl Error for DescribeEventSubscriptionsError {}
3936/// Errors returned by DescribeEvents
3937#[derive(Debug, PartialEq)]
3938pub enum DescribeEventsError {}
3939
3940impl DescribeEventsError {
3941    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeEventsError> {
3942        if let Some(err) = proto::json::Error::parse(&res) {
3943            match err.typ.as_str() {
3944                "ValidationException" => return RusotoError::Validation(err.msg),
3945                _ => {}
3946            }
3947        }
3948        RusotoError::Unknown(res)
3949    }
3950}
3951impl fmt::Display for DescribeEventsError {
3952    #[allow(unused_variables)]
3953    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3954        match *self {}
3955    }
3956}
3957impl Error for DescribeEventsError {}
3958/// Errors returned by DescribeOrderableReplicationInstances
3959#[derive(Debug, PartialEq)]
3960pub enum DescribeOrderableReplicationInstancesError {}
3961
3962impl DescribeOrderableReplicationInstancesError {
3963    pub fn from_response(
3964        res: BufferedHttpResponse,
3965    ) -> RusotoError<DescribeOrderableReplicationInstancesError> {
3966        if let Some(err) = proto::json::Error::parse(&res) {
3967            match err.typ.as_str() {
3968                "ValidationException" => return RusotoError::Validation(err.msg),
3969                _ => {}
3970            }
3971        }
3972        RusotoError::Unknown(res)
3973    }
3974}
3975impl fmt::Display for DescribeOrderableReplicationInstancesError {
3976    #[allow(unused_variables)]
3977    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3978        match *self {}
3979    }
3980}
3981impl Error for DescribeOrderableReplicationInstancesError {}
3982/// Errors returned by DescribePendingMaintenanceActions
3983#[derive(Debug, PartialEq)]
3984pub enum DescribePendingMaintenanceActionsError {
3985    /// <p>The resource could not be found.</p>
3986    ResourceNotFoundFault(String),
3987}
3988
3989impl DescribePendingMaintenanceActionsError {
3990    pub fn from_response(
3991        res: BufferedHttpResponse,
3992    ) -> RusotoError<DescribePendingMaintenanceActionsError> {
3993        if let Some(err) = proto::json::Error::parse(&res) {
3994            match err.typ.as_str() {
3995                "ResourceNotFoundFault" => {
3996                    return RusotoError::Service(
3997                        DescribePendingMaintenanceActionsError::ResourceNotFoundFault(err.msg),
3998                    )
3999                }
4000                "ValidationException" => return RusotoError::Validation(err.msg),
4001                _ => {}
4002            }
4003        }
4004        RusotoError::Unknown(res)
4005    }
4006}
4007impl fmt::Display for DescribePendingMaintenanceActionsError {
4008    #[allow(unused_variables)]
4009    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4010        match *self {
4011            DescribePendingMaintenanceActionsError::ResourceNotFoundFault(ref cause) => {
4012                write!(f, "{}", cause)
4013            }
4014        }
4015    }
4016}
4017impl Error for DescribePendingMaintenanceActionsError {}
4018/// Errors returned by DescribeRefreshSchemasStatus
4019#[derive(Debug, PartialEq)]
4020pub enum DescribeRefreshSchemasStatusError {
4021    /// <p>The resource is in a state that prevents it from being used for database migration.</p>
4022    InvalidResourceStateFault(String),
4023    /// <p>The resource could not be found.</p>
4024    ResourceNotFoundFault(String),
4025}
4026
4027impl DescribeRefreshSchemasStatusError {
4028    pub fn from_response(
4029        res: BufferedHttpResponse,
4030    ) -> RusotoError<DescribeRefreshSchemasStatusError> {
4031        if let Some(err) = proto::json::Error::parse(&res) {
4032            match err.typ.as_str() {
4033                "InvalidResourceStateFault" => {
4034                    return RusotoError::Service(
4035                        DescribeRefreshSchemasStatusError::InvalidResourceStateFault(err.msg),
4036                    )
4037                }
4038                "ResourceNotFoundFault" => {
4039                    return RusotoError::Service(
4040                        DescribeRefreshSchemasStatusError::ResourceNotFoundFault(err.msg),
4041                    )
4042                }
4043                "ValidationException" => return RusotoError::Validation(err.msg),
4044                _ => {}
4045            }
4046        }
4047        RusotoError::Unknown(res)
4048    }
4049}
4050impl fmt::Display for DescribeRefreshSchemasStatusError {
4051    #[allow(unused_variables)]
4052    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4053        match *self {
4054            DescribeRefreshSchemasStatusError::InvalidResourceStateFault(ref cause) => {
4055                write!(f, "{}", cause)
4056            }
4057            DescribeRefreshSchemasStatusError::ResourceNotFoundFault(ref cause) => {
4058                write!(f, "{}", cause)
4059            }
4060        }
4061    }
4062}
4063impl Error for DescribeRefreshSchemasStatusError {}
4064/// Errors returned by DescribeReplicationInstanceTaskLogs
4065#[derive(Debug, PartialEq)]
4066pub enum DescribeReplicationInstanceTaskLogsError {
4067    /// <p>The resource is in a state that prevents it from being used for database migration.</p>
4068    InvalidResourceStateFault(String),
4069    /// <p>The resource could not be found.</p>
4070    ResourceNotFoundFault(String),
4071}
4072
4073impl DescribeReplicationInstanceTaskLogsError {
4074    pub fn from_response(
4075        res: BufferedHttpResponse,
4076    ) -> RusotoError<DescribeReplicationInstanceTaskLogsError> {
4077        if let Some(err) = proto::json::Error::parse(&res) {
4078            match err.typ.as_str() {
4079                "InvalidResourceStateFault" => {
4080                    return RusotoError::Service(
4081                        DescribeReplicationInstanceTaskLogsError::InvalidResourceStateFault(
4082                            err.msg,
4083                        ),
4084                    )
4085                }
4086                "ResourceNotFoundFault" => {
4087                    return RusotoError::Service(
4088                        DescribeReplicationInstanceTaskLogsError::ResourceNotFoundFault(err.msg),
4089                    )
4090                }
4091                "ValidationException" => return RusotoError::Validation(err.msg),
4092                _ => {}
4093            }
4094        }
4095        RusotoError::Unknown(res)
4096    }
4097}
4098impl fmt::Display for DescribeReplicationInstanceTaskLogsError {
4099    #[allow(unused_variables)]
4100    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4101        match *self {
4102            DescribeReplicationInstanceTaskLogsError::InvalidResourceStateFault(ref cause) => {
4103                write!(f, "{}", cause)
4104            }
4105            DescribeReplicationInstanceTaskLogsError::ResourceNotFoundFault(ref cause) => {
4106                write!(f, "{}", cause)
4107            }
4108        }
4109    }
4110}
4111impl Error for DescribeReplicationInstanceTaskLogsError {}
4112/// Errors returned by DescribeReplicationInstances
4113#[derive(Debug, PartialEq)]
4114pub enum DescribeReplicationInstancesError {
4115    /// <p>The resource could not be found.</p>
4116    ResourceNotFoundFault(String),
4117}
4118
4119impl DescribeReplicationInstancesError {
4120    pub fn from_response(
4121        res: BufferedHttpResponse,
4122    ) -> RusotoError<DescribeReplicationInstancesError> {
4123        if let Some(err) = proto::json::Error::parse(&res) {
4124            match err.typ.as_str() {
4125                "ResourceNotFoundFault" => {
4126                    return RusotoError::Service(
4127                        DescribeReplicationInstancesError::ResourceNotFoundFault(err.msg),
4128                    )
4129                }
4130                "ValidationException" => return RusotoError::Validation(err.msg),
4131                _ => {}
4132            }
4133        }
4134        RusotoError::Unknown(res)
4135    }
4136}
4137impl fmt::Display for DescribeReplicationInstancesError {
4138    #[allow(unused_variables)]
4139    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4140        match *self {
4141            DescribeReplicationInstancesError::ResourceNotFoundFault(ref cause) => {
4142                write!(f, "{}", cause)
4143            }
4144        }
4145    }
4146}
4147impl Error for DescribeReplicationInstancesError {}
4148/// Errors returned by DescribeReplicationSubnetGroups
4149#[derive(Debug, PartialEq)]
4150pub enum DescribeReplicationSubnetGroupsError {
4151    /// <p>The resource could not be found.</p>
4152    ResourceNotFoundFault(String),
4153}
4154
4155impl DescribeReplicationSubnetGroupsError {
4156    pub fn from_response(
4157        res: BufferedHttpResponse,
4158    ) -> RusotoError<DescribeReplicationSubnetGroupsError> {
4159        if let Some(err) = proto::json::Error::parse(&res) {
4160            match err.typ.as_str() {
4161                "ResourceNotFoundFault" => {
4162                    return RusotoError::Service(
4163                        DescribeReplicationSubnetGroupsError::ResourceNotFoundFault(err.msg),
4164                    )
4165                }
4166                "ValidationException" => return RusotoError::Validation(err.msg),
4167                _ => {}
4168            }
4169        }
4170        RusotoError::Unknown(res)
4171    }
4172}
4173impl fmt::Display for DescribeReplicationSubnetGroupsError {
4174    #[allow(unused_variables)]
4175    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4176        match *self {
4177            DescribeReplicationSubnetGroupsError::ResourceNotFoundFault(ref cause) => {
4178                write!(f, "{}", cause)
4179            }
4180        }
4181    }
4182}
4183impl Error for DescribeReplicationSubnetGroupsError {}
4184/// Errors returned by DescribeReplicationTaskAssessmentResults
4185#[derive(Debug, PartialEq)]
4186pub enum DescribeReplicationTaskAssessmentResultsError {
4187    /// <p>The resource could not be found.</p>
4188    ResourceNotFoundFault(String),
4189}
4190
4191impl DescribeReplicationTaskAssessmentResultsError {
4192    pub fn from_response(
4193        res: BufferedHttpResponse,
4194    ) -> RusotoError<DescribeReplicationTaskAssessmentResultsError> {
4195        if let Some(err) = proto::json::Error::parse(&res) {
4196            match err.typ.as_str() {
4197                "ResourceNotFoundFault" => {
4198                    return RusotoError::Service(
4199                        DescribeReplicationTaskAssessmentResultsError::ResourceNotFoundFault(
4200                            err.msg,
4201                        ),
4202                    )
4203                }
4204                "ValidationException" => return RusotoError::Validation(err.msg),
4205                _ => {}
4206            }
4207        }
4208        RusotoError::Unknown(res)
4209    }
4210}
4211impl fmt::Display for DescribeReplicationTaskAssessmentResultsError {
4212    #[allow(unused_variables)]
4213    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4214        match *self {
4215            DescribeReplicationTaskAssessmentResultsError::ResourceNotFoundFault(ref cause) => {
4216                write!(f, "{}", cause)
4217            }
4218        }
4219    }
4220}
4221impl Error for DescribeReplicationTaskAssessmentResultsError {}
4222/// Errors returned by DescribeReplicationTasks
4223#[derive(Debug, PartialEq)]
4224pub enum DescribeReplicationTasksError {
4225    /// <p>The resource could not be found.</p>
4226    ResourceNotFoundFault(String),
4227}
4228
4229impl DescribeReplicationTasksError {
4230    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeReplicationTasksError> {
4231        if let Some(err) = proto::json::Error::parse(&res) {
4232            match err.typ.as_str() {
4233                "ResourceNotFoundFault" => {
4234                    return RusotoError::Service(
4235                        DescribeReplicationTasksError::ResourceNotFoundFault(err.msg),
4236                    )
4237                }
4238                "ValidationException" => return RusotoError::Validation(err.msg),
4239                _ => {}
4240            }
4241        }
4242        RusotoError::Unknown(res)
4243    }
4244}
4245impl fmt::Display for DescribeReplicationTasksError {
4246    #[allow(unused_variables)]
4247    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4248        match *self {
4249            DescribeReplicationTasksError::ResourceNotFoundFault(ref cause) => {
4250                write!(f, "{}", cause)
4251            }
4252        }
4253    }
4254}
4255impl Error for DescribeReplicationTasksError {}
4256/// Errors returned by DescribeSchemas
4257#[derive(Debug, PartialEq)]
4258pub enum DescribeSchemasError {
4259    /// <p>The resource is in a state that prevents it from being used for database migration.</p>
4260    InvalidResourceStateFault(String),
4261    /// <p>The resource could not be found.</p>
4262    ResourceNotFoundFault(String),
4263}
4264
4265impl DescribeSchemasError {
4266    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeSchemasError> {
4267        if let Some(err) = proto::json::Error::parse(&res) {
4268            match err.typ.as_str() {
4269                "InvalidResourceStateFault" => {
4270                    return RusotoError::Service(DescribeSchemasError::InvalidResourceStateFault(
4271                        err.msg,
4272                    ))
4273                }
4274                "ResourceNotFoundFault" => {
4275                    return RusotoError::Service(DescribeSchemasError::ResourceNotFoundFault(
4276                        err.msg,
4277                    ))
4278                }
4279                "ValidationException" => return RusotoError::Validation(err.msg),
4280                _ => {}
4281            }
4282        }
4283        RusotoError::Unknown(res)
4284    }
4285}
4286impl fmt::Display for DescribeSchemasError {
4287    #[allow(unused_variables)]
4288    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4289        match *self {
4290            DescribeSchemasError::InvalidResourceStateFault(ref cause) => write!(f, "{}", cause),
4291            DescribeSchemasError::ResourceNotFoundFault(ref cause) => write!(f, "{}", cause),
4292        }
4293    }
4294}
4295impl Error for DescribeSchemasError {}
4296/// Errors returned by DescribeTableStatistics
4297#[derive(Debug, PartialEq)]
4298pub enum DescribeTableStatisticsError {
4299    /// <p>The resource is in a state that prevents it from being used for database migration.</p>
4300    InvalidResourceStateFault(String),
4301    /// <p>The resource could not be found.</p>
4302    ResourceNotFoundFault(String),
4303}
4304
4305impl DescribeTableStatisticsError {
4306    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeTableStatisticsError> {
4307        if let Some(err) = proto::json::Error::parse(&res) {
4308            match err.typ.as_str() {
4309                "InvalidResourceStateFault" => {
4310                    return RusotoError::Service(
4311                        DescribeTableStatisticsError::InvalidResourceStateFault(err.msg),
4312                    )
4313                }
4314                "ResourceNotFoundFault" => {
4315                    return RusotoError::Service(
4316                        DescribeTableStatisticsError::ResourceNotFoundFault(err.msg),
4317                    )
4318                }
4319                "ValidationException" => return RusotoError::Validation(err.msg),
4320                _ => {}
4321            }
4322        }
4323        RusotoError::Unknown(res)
4324    }
4325}
4326impl fmt::Display for DescribeTableStatisticsError {
4327    #[allow(unused_variables)]
4328    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4329        match *self {
4330            DescribeTableStatisticsError::InvalidResourceStateFault(ref cause) => {
4331                write!(f, "{}", cause)
4332            }
4333            DescribeTableStatisticsError::ResourceNotFoundFault(ref cause) => {
4334                write!(f, "{}", cause)
4335            }
4336        }
4337    }
4338}
4339impl Error for DescribeTableStatisticsError {}
4340/// Errors returned by ImportCertificate
4341#[derive(Debug, PartialEq)]
4342pub enum ImportCertificateError {
4343    /// <p>The certificate was not valid.</p>
4344    InvalidCertificateFault(String),
4345    /// <p>The resource you are attempting to create already exists.</p>
4346    ResourceAlreadyExistsFault(String),
4347    /// <p>The quota for this resource quota has been exceeded.</p>
4348    ResourceQuotaExceededFault(String),
4349}
4350
4351impl ImportCertificateError {
4352    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ImportCertificateError> {
4353        if let Some(err) = proto::json::Error::parse(&res) {
4354            match err.typ.as_str() {
4355                "InvalidCertificateFault" => {
4356                    return RusotoError::Service(ImportCertificateError::InvalidCertificateFault(
4357                        err.msg,
4358                    ))
4359                }
4360                "ResourceAlreadyExistsFault" => {
4361                    return RusotoError::Service(
4362                        ImportCertificateError::ResourceAlreadyExistsFault(err.msg),
4363                    )
4364                }
4365                "ResourceQuotaExceededFault" => {
4366                    return RusotoError::Service(
4367                        ImportCertificateError::ResourceQuotaExceededFault(err.msg),
4368                    )
4369                }
4370                "ValidationException" => return RusotoError::Validation(err.msg),
4371                _ => {}
4372            }
4373        }
4374        RusotoError::Unknown(res)
4375    }
4376}
4377impl fmt::Display for ImportCertificateError {
4378    #[allow(unused_variables)]
4379    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4380        match *self {
4381            ImportCertificateError::InvalidCertificateFault(ref cause) => write!(f, "{}", cause),
4382            ImportCertificateError::ResourceAlreadyExistsFault(ref cause) => write!(f, "{}", cause),
4383            ImportCertificateError::ResourceQuotaExceededFault(ref cause) => write!(f, "{}", cause),
4384        }
4385    }
4386}
4387impl Error for ImportCertificateError {}
4388/// Errors returned by ListTagsForResource
4389#[derive(Debug, PartialEq)]
4390pub enum ListTagsForResourceError {
4391    /// <p>The resource could not be found.</p>
4392    ResourceNotFoundFault(String),
4393}
4394
4395impl ListTagsForResourceError {
4396    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListTagsForResourceError> {
4397        if let Some(err) = proto::json::Error::parse(&res) {
4398            match err.typ.as_str() {
4399                "ResourceNotFoundFault" => {
4400                    return RusotoError::Service(ListTagsForResourceError::ResourceNotFoundFault(
4401                        err.msg,
4402                    ))
4403                }
4404                "ValidationException" => return RusotoError::Validation(err.msg),
4405                _ => {}
4406            }
4407        }
4408        RusotoError::Unknown(res)
4409    }
4410}
4411impl fmt::Display for ListTagsForResourceError {
4412    #[allow(unused_variables)]
4413    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4414        match *self {
4415            ListTagsForResourceError::ResourceNotFoundFault(ref cause) => write!(f, "{}", cause),
4416        }
4417    }
4418}
4419impl Error for ListTagsForResourceError {}
4420/// Errors returned by ModifyEndpoint
4421#[derive(Debug, PartialEq)]
4422pub enum ModifyEndpointError {
4423    /// <p>AWS DMS was denied access to the endpoint. Check that the role is correctly configured.</p>
4424    AccessDeniedFault(String),
4425    /// <p>The resource is in a state that prevents it from being used for database migration.</p>
4426    InvalidResourceStateFault(String),
4427    /// <p>AWS DMS cannot access the AWS KMS key.</p>
4428    KMSKeyNotAccessibleFault(String),
4429    /// <p>The resource you are attempting to create already exists.</p>
4430    ResourceAlreadyExistsFault(String),
4431    /// <p>The resource could not be found.</p>
4432    ResourceNotFoundFault(String),
4433}
4434
4435impl ModifyEndpointError {
4436    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ModifyEndpointError> {
4437        if let Some(err) = proto::json::Error::parse(&res) {
4438            match err.typ.as_str() {
4439                "AccessDeniedFault" => {
4440                    return RusotoError::Service(ModifyEndpointError::AccessDeniedFault(err.msg))
4441                }
4442                "InvalidResourceStateFault" => {
4443                    return RusotoError::Service(ModifyEndpointError::InvalidResourceStateFault(
4444                        err.msg,
4445                    ))
4446                }
4447                "KMSKeyNotAccessibleFault" => {
4448                    return RusotoError::Service(ModifyEndpointError::KMSKeyNotAccessibleFault(
4449                        err.msg,
4450                    ))
4451                }
4452                "ResourceAlreadyExistsFault" => {
4453                    return RusotoError::Service(ModifyEndpointError::ResourceAlreadyExistsFault(
4454                        err.msg,
4455                    ))
4456                }
4457                "ResourceNotFoundFault" => {
4458                    return RusotoError::Service(ModifyEndpointError::ResourceNotFoundFault(
4459                        err.msg,
4460                    ))
4461                }
4462                "ValidationException" => return RusotoError::Validation(err.msg),
4463                _ => {}
4464            }
4465        }
4466        RusotoError::Unknown(res)
4467    }
4468}
4469impl fmt::Display for ModifyEndpointError {
4470    #[allow(unused_variables)]
4471    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4472        match *self {
4473            ModifyEndpointError::AccessDeniedFault(ref cause) => write!(f, "{}", cause),
4474            ModifyEndpointError::InvalidResourceStateFault(ref cause) => write!(f, "{}", cause),
4475            ModifyEndpointError::KMSKeyNotAccessibleFault(ref cause) => write!(f, "{}", cause),
4476            ModifyEndpointError::ResourceAlreadyExistsFault(ref cause) => write!(f, "{}", cause),
4477            ModifyEndpointError::ResourceNotFoundFault(ref cause) => write!(f, "{}", cause),
4478        }
4479    }
4480}
4481impl Error for ModifyEndpointError {}
4482/// Errors returned by ModifyEventSubscription
4483#[derive(Debug, PartialEq)]
4484pub enum ModifyEventSubscriptionError {
4485    /// <p>The ciphertext references a key that doesn't exist or that the DMS account doesn't have access to.</p>
4486    KMSAccessDeniedFault(String),
4487    /// <p>The specified master key (CMK) isn't enabled.</p>
4488    KMSDisabledFault(String),
4489    /// <p>The state of the specified AWS KMS resource isn't valid for this request.</p>
4490    KMSInvalidStateFault(String),
4491    /// <p>The specified AWS KMS entity or resource can't be found.</p>
4492    KMSNotFoundFault(String),
4493    /// <p>This request triggered AWS KMS request throttling.</p>
4494    KMSThrottlingFault(String),
4495    /// <p>The resource could not be found.</p>
4496    ResourceNotFoundFault(String),
4497    /// <p>The quota for this resource quota has been exceeded.</p>
4498    ResourceQuotaExceededFault(String),
4499    /// <p>The SNS topic is invalid.</p>
4500    SNSInvalidTopicFault(String),
4501    /// <p>You are not authorized for the SNS subscription.</p>
4502    SNSNoAuthorizationFault(String),
4503}
4504
4505impl ModifyEventSubscriptionError {
4506    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ModifyEventSubscriptionError> {
4507        if let Some(err) = proto::json::Error::parse(&res) {
4508            match err.typ.as_str() {
4509                "KMSAccessDeniedFault" => {
4510                    return RusotoError::Service(
4511                        ModifyEventSubscriptionError::KMSAccessDeniedFault(err.msg),
4512                    )
4513                }
4514                "KMSDisabledFault" => {
4515                    return RusotoError::Service(ModifyEventSubscriptionError::KMSDisabledFault(
4516                        err.msg,
4517                    ))
4518                }
4519                "KMSInvalidStateFault" => {
4520                    return RusotoError::Service(
4521                        ModifyEventSubscriptionError::KMSInvalidStateFault(err.msg),
4522                    )
4523                }
4524                "KMSNotFoundFault" => {
4525                    return RusotoError::Service(ModifyEventSubscriptionError::KMSNotFoundFault(
4526                        err.msg,
4527                    ))
4528                }
4529                "KMSThrottlingFault" => {
4530                    return RusotoError::Service(ModifyEventSubscriptionError::KMSThrottlingFault(
4531                        err.msg,
4532                    ))
4533                }
4534                "ResourceNotFoundFault" => {
4535                    return RusotoError::Service(
4536                        ModifyEventSubscriptionError::ResourceNotFoundFault(err.msg),
4537                    )
4538                }
4539                "ResourceQuotaExceededFault" => {
4540                    return RusotoError::Service(
4541                        ModifyEventSubscriptionError::ResourceQuotaExceededFault(err.msg),
4542                    )
4543                }
4544                "SNSInvalidTopicFault" => {
4545                    return RusotoError::Service(
4546                        ModifyEventSubscriptionError::SNSInvalidTopicFault(err.msg),
4547                    )
4548                }
4549                "SNSNoAuthorizationFault" => {
4550                    return RusotoError::Service(
4551                        ModifyEventSubscriptionError::SNSNoAuthorizationFault(err.msg),
4552                    )
4553                }
4554                "ValidationException" => return RusotoError::Validation(err.msg),
4555                _ => {}
4556            }
4557        }
4558        RusotoError::Unknown(res)
4559    }
4560}
4561impl fmt::Display for ModifyEventSubscriptionError {
4562    #[allow(unused_variables)]
4563    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4564        match *self {
4565            ModifyEventSubscriptionError::KMSAccessDeniedFault(ref cause) => write!(f, "{}", cause),
4566            ModifyEventSubscriptionError::KMSDisabledFault(ref cause) => write!(f, "{}", cause),
4567            ModifyEventSubscriptionError::KMSInvalidStateFault(ref cause) => write!(f, "{}", cause),
4568            ModifyEventSubscriptionError::KMSNotFoundFault(ref cause) => write!(f, "{}", cause),
4569            ModifyEventSubscriptionError::KMSThrottlingFault(ref cause) => write!(f, "{}", cause),
4570            ModifyEventSubscriptionError::ResourceNotFoundFault(ref cause) => {
4571                write!(f, "{}", cause)
4572            }
4573            ModifyEventSubscriptionError::ResourceQuotaExceededFault(ref cause) => {
4574                write!(f, "{}", cause)
4575            }
4576            ModifyEventSubscriptionError::SNSInvalidTopicFault(ref cause) => write!(f, "{}", cause),
4577            ModifyEventSubscriptionError::SNSNoAuthorizationFault(ref cause) => {
4578                write!(f, "{}", cause)
4579            }
4580        }
4581    }
4582}
4583impl Error for ModifyEventSubscriptionError {}
4584/// Errors returned by ModifyReplicationInstance
4585#[derive(Debug, PartialEq)]
4586pub enum ModifyReplicationInstanceError {
4587    /// <p>AWS DMS was denied access to the endpoint. Check that the role is correctly configured.</p>
4588    AccessDeniedFault(String),
4589    /// <p>There are not enough resources allocated to the database migration.</p>
4590    InsufficientResourceCapacityFault(String),
4591    /// <p>The resource is in a state that prevents it from being used for database migration.</p>
4592    InvalidResourceStateFault(String),
4593    /// <p>The resource you are attempting to create already exists.</p>
4594    ResourceAlreadyExistsFault(String),
4595    /// <p>The resource could not be found.</p>
4596    ResourceNotFoundFault(String),
4597    /// <p>The storage quota has been exceeded.</p>
4598    StorageQuotaExceededFault(String),
4599    /// <p>An upgrade dependency is preventing the database migration.</p>
4600    UpgradeDependencyFailureFault(String),
4601}
4602
4603impl ModifyReplicationInstanceError {
4604    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ModifyReplicationInstanceError> {
4605        if let Some(err) = proto::json::Error::parse(&res) {
4606            match err.typ.as_str() {
4607                "AccessDeniedFault" => {
4608                    return RusotoError::Service(ModifyReplicationInstanceError::AccessDeniedFault(
4609                        err.msg,
4610                    ))
4611                }
4612                "InsufficientResourceCapacityFault" => {
4613                    return RusotoError::Service(
4614                        ModifyReplicationInstanceError::InsufficientResourceCapacityFault(err.msg),
4615                    )
4616                }
4617                "InvalidResourceStateFault" => {
4618                    return RusotoError::Service(
4619                        ModifyReplicationInstanceError::InvalidResourceStateFault(err.msg),
4620                    )
4621                }
4622                "ResourceAlreadyExistsFault" => {
4623                    return RusotoError::Service(
4624                        ModifyReplicationInstanceError::ResourceAlreadyExistsFault(err.msg),
4625                    )
4626                }
4627                "ResourceNotFoundFault" => {
4628                    return RusotoError::Service(
4629                        ModifyReplicationInstanceError::ResourceNotFoundFault(err.msg),
4630                    )
4631                }
4632                "StorageQuotaExceededFault" => {
4633                    return RusotoError::Service(
4634                        ModifyReplicationInstanceError::StorageQuotaExceededFault(err.msg),
4635                    )
4636                }
4637                "UpgradeDependencyFailureFault" => {
4638                    return RusotoError::Service(
4639                        ModifyReplicationInstanceError::UpgradeDependencyFailureFault(err.msg),
4640                    )
4641                }
4642                "ValidationException" => return RusotoError::Validation(err.msg),
4643                _ => {}
4644            }
4645        }
4646        RusotoError::Unknown(res)
4647    }
4648}
4649impl fmt::Display for ModifyReplicationInstanceError {
4650    #[allow(unused_variables)]
4651    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4652        match *self {
4653            ModifyReplicationInstanceError::AccessDeniedFault(ref cause) => write!(f, "{}", cause),
4654            ModifyReplicationInstanceError::InsufficientResourceCapacityFault(ref cause) => {
4655                write!(f, "{}", cause)
4656            }
4657            ModifyReplicationInstanceError::InvalidResourceStateFault(ref cause) => {
4658                write!(f, "{}", cause)
4659            }
4660            ModifyReplicationInstanceError::ResourceAlreadyExistsFault(ref cause) => {
4661                write!(f, "{}", cause)
4662            }
4663            ModifyReplicationInstanceError::ResourceNotFoundFault(ref cause) => {
4664                write!(f, "{}", cause)
4665            }
4666            ModifyReplicationInstanceError::StorageQuotaExceededFault(ref cause) => {
4667                write!(f, "{}", cause)
4668            }
4669            ModifyReplicationInstanceError::UpgradeDependencyFailureFault(ref cause) => {
4670                write!(f, "{}", cause)
4671            }
4672        }
4673    }
4674}
4675impl Error for ModifyReplicationInstanceError {}
4676/// Errors returned by ModifyReplicationSubnetGroup
4677#[derive(Debug, PartialEq)]
4678pub enum ModifyReplicationSubnetGroupError {
4679    /// <p>AWS DMS was denied access to the endpoint. Check that the role is correctly configured.</p>
4680    AccessDeniedFault(String),
4681    /// <p>The subnet provided is invalid.</p>
4682    InvalidSubnet(String),
4683    /// <p>The replication subnet group does not cover enough Availability Zones (AZs). Edit the replication subnet group and add more AZs.</p>
4684    ReplicationSubnetGroupDoesNotCoverEnoughAZs(String),
4685    /// <p>The resource could not be found.</p>
4686    ResourceNotFoundFault(String),
4687    /// <p>The quota for this resource quota has been exceeded.</p>
4688    ResourceQuotaExceededFault(String),
4689    /// <p>The specified subnet is already in use.</p>
4690    SubnetAlreadyInUse(String),
4691}
4692
4693impl ModifyReplicationSubnetGroupError {
4694    pub fn from_response(
4695        res: BufferedHttpResponse,
4696    ) -> RusotoError<ModifyReplicationSubnetGroupError> {
4697        if let Some(err) = proto::json::Error::parse(&res) {
4698            match err.typ.as_str() {
4699                "AccessDeniedFault" => {
4700                    return RusotoError::Service(
4701                        ModifyReplicationSubnetGroupError::AccessDeniedFault(err.msg),
4702                    )
4703                }
4704                "InvalidSubnet" => {
4705                    return RusotoError::Service(ModifyReplicationSubnetGroupError::InvalidSubnet(
4706                        err.msg,
4707                    ))
4708                }
4709                "ReplicationSubnetGroupDoesNotCoverEnoughAZs" => return RusotoError::Service(
4710                    ModifyReplicationSubnetGroupError::ReplicationSubnetGroupDoesNotCoverEnoughAZs(
4711                        err.msg,
4712                    ),
4713                ),
4714                "ResourceNotFoundFault" => {
4715                    return RusotoError::Service(
4716                        ModifyReplicationSubnetGroupError::ResourceNotFoundFault(err.msg),
4717                    )
4718                }
4719                "ResourceQuotaExceededFault" => {
4720                    return RusotoError::Service(
4721                        ModifyReplicationSubnetGroupError::ResourceQuotaExceededFault(err.msg),
4722                    )
4723                }
4724                "SubnetAlreadyInUse" => {
4725                    return RusotoError::Service(
4726                        ModifyReplicationSubnetGroupError::SubnetAlreadyInUse(err.msg),
4727                    )
4728                }
4729                "ValidationException" => return RusotoError::Validation(err.msg),
4730                _ => {}
4731            }
4732        }
4733        RusotoError::Unknown(res)
4734    }
4735}
4736impl fmt::Display for ModifyReplicationSubnetGroupError {
4737    #[allow(unused_variables)]
4738    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4739        match *self {
4740            ModifyReplicationSubnetGroupError::AccessDeniedFault(ref cause) => {
4741                write!(f, "{}", cause)
4742            }
4743            ModifyReplicationSubnetGroupError::InvalidSubnet(ref cause) => write!(f, "{}", cause),
4744            ModifyReplicationSubnetGroupError::ReplicationSubnetGroupDoesNotCoverEnoughAZs(
4745                ref cause,
4746            ) => write!(f, "{}", cause),
4747            ModifyReplicationSubnetGroupError::ResourceNotFoundFault(ref cause) => {
4748                write!(f, "{}", cause)
4749            }
4750            ModifyReplicationSubnetGroupError::ResourceQuotaExceededFault(ref cause) => {
4751                write!(f, "{}", cause)
4752            }
4753            ModifyReplicationSubnetGroupError::SubnetAlreadyInUse(ref cause) => {
4754                write!(f, "{}", cause)
4755            }
4756        }
4757    }
4758}
4759impl Error for ModifyReplicationSubnetGroupError {}
4760/// Errors returned by ModifyReplicationTask
4761#[derive(Debug, PartialEq)]
4762pub enum ModifyReplicationTaskError {
4763    /// <p>The resource is in a state that prevents it from being used for database migration.</p>
4764    InvalidResourceStateFault(String),
4765    /// <p>AWS DMS cannot access the AWS KMS key.</p>
4766    KMSKeyNotAccessibleFault(String),
4767    /// <p>The resource you are attempting to create already exists.</p>
4768    ResourceAlreadyExistsFault(String),
4769    /// <p>The resource could not be found.</p>
4770    ResourceNotFoundFault(String),
4771}
4772
4773impl ModifyReplicationTaskError {
4774    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ModifyReplicationTaskError> {
4775        if let Some(err) = proto::json::Error::parse(&res) {
4776            match err.typ.as_str() {
4777                "InvalidResourceStateFault" => {
4778                    return RusotoError::Service(
4779                        ModifyReplicationTaskError::InvalidResourceStateFault(err.msg),
4780                    )
4781                }
4782                "KMSKeyNotAccessibleFault" => {
4783                    return RusotoError::Service(
4784                        ModifyReplicationTaskError::KMSKeyNotAccessibleFault(err.msg),
4785                    )
4786                }
4787                "ResourceAlreadyExistsFault" => {
4788                    return RusotoError::Service(
4789                        ModifyReplicationTaskError::ResourceAlreadyExistsFault(err.msg),
4790                    )
4791                }
4792                "ResourceNotFoundFault" => {
4793                    return RusotoError::Service(ModifyReplicationTaskError::ResourceNotFoundFault(
4794                        err.msg,
4795                    ))
4796                }
4797                "ValidationException" => return RusotoError::Validation(err.msg),
4798                _ => {}
4799            }
4800        }
4801        RusotoError::Unknown(res)
4802    }
4803}
4804impl fmt::Display for ModifyReplicationTaskError {
4805    #[allow(unused_variables)]
4806    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4807        match *self {
4808            ModifyReplicationTaskError::InvalidResourceStateFault(ref cause) => {
4809                write!(f, "{}", cause)
4810            }
4811            ModifyReplicationTaskError::KMSKeyNotAccessibleFault(ref cause) => {
4812                write!(f, "{}", cause)
4813            }
4814            ModifyReplicationTaskError::ResourceAlreadyExistsFault(ref cause) => {
4815                write!(f, "{}", cause)
4816            }
4817            ModifyReplicationTaskError::ResourceNotFoundFault(ref cause) => write!(f, "{}", cause),
4818        }
4819    }
4820}
4821impl Error for ModifyReplicationTaskError {}
4822/// Errors returned by RebootReplicationInstance
4823#[derive(Debug, PartialEq)]
4824pub enum RebootReplicationInstanceError {
4825    /// <p>The resource is in a state that prevents it from being used for database migration.</p>
4826    InvalidResourceStateFault(String),
4827    /// <p>The resource could not be found.</p>
4828    ResourceNotFoundFault(String),
4829}
4830
4831impl RebootReplicationInstanceError {
4832    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<RebootReplicationInstanceError> {
4833        if let Some(err) = proto::json::Error::parse(&res) {
4834            match err.typ.as_str() {
4835                "InvalidResourceStateFault" => {
4836                    return RusotoError::Service(
4837                        RebootReplicationInstanceError::InvalidResourceStateFault(err.msg),
4838                    )
4839                }
4840                "ResourceNotFoundFault" => {
4841                    return RusotoError::Service(
4842                        RebootReplicationInstanceError::ResourceNotFoundFault(err.msg),
4843                    )
4844                }
4845                "ValidationException" => return RusotoError::Validation(err.msg),
4846                _ => {}
4847            }
4848        }
4849        RusotoError::Unknown(res)
4850    }
4851}
4852impl fmt::Display for RebootReplicationInstanceError {
4853    #[allow(unused_variables)]
4854    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4855        match *self {
4856            RebootReplicationInstanceError::InvalidResourceStateFault(ref cause) => {
4857                write!(f, "{}", cause)
4858            }
4859            RebootReplicationInstanceError::ResourceNotFoundFault(ref cause) => {
4860                write!(f, "{}", cause)
4861            }
4862        }
4863    }
4864}
4865impl Error for RebootReplicationInstanceError {}
4866/// Errors returned by RefreshSchemas
4867#[derive(Debug, PartialEq)]
4868pub enum RefreshSchemasError {
4869    /// <p>The resource is in a state that prevents it from being used for database migration.</p>
4870    InvalidResourceStateFault(String),
4871    /// <p>AWS DMS cannot access the AWS KMS key.</p>
4872    KMSKeyNotAccessibleFault(String),
4873    /// <p>The resource could not be found.</p>
4874    ResourceNotFoundFault(String),
4875    /// <p>The quota for this resource quota has been exceeded.</p>
4876    ResourceQuotaExceededFault(String),
4877}
4878
4879impl RefreshSchemasError {
4880    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<RefreshSchemasError> {
4881        if let Some(err) = proto::json::Error::parse(&res) {
4882            match err.typ.as_str() {
4883                "InvalidResourceStateFault" => {
4884                    return RusotoError::Service(RefreshSchemasError::InvalidResourceStateFault(
4885                        err.msg,
4886                    ))
4887                }
4888                "KMSKeyNotAccessibleFault" => {
4889                    return RusotoError::Service(RefreshSchemasError::KMSKeyNotAccessibleFault(
4890                        err.msg,
4891                    ))
4892                }
4893                "ResourceNotFoundFault" => {
4894                    return RusotoError::Service(RefreshSchemasError::ResourceNotFoundFault(
4895                        err.msg,
4896                    ))
4897                }
4898                "ResourceQuotaExceededFault" => {
4899                    return RusotoError::Service(RefreshSchemasError::ResourceQuotaExceededFault(
4900                        err.msg,
4901                    ))
4902                }
4903                "ValidationException" => return RusotoError::Validation(err.msg),
4904                _ => {}
4905            }
4906        }
4907        RusotoError::Unknown(res)
4908    }
4909}
4910impl fmt::Display for RefreshSchemasError {
4911    #[allow(unused_variables)]
4912    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4913        match *self {
4914            RefreshSchemasError::InvalidResourceStateFault(ref cause) => write!(f, "{}", cause),
4915            RefreshSchemasError::KMSKeyNotAccessibleFault(ref cause) => write!(f, "{}", cause),
4916            RefreshSchemasError::ResourceNotFoundFault(ref cause) => write!(f, "{}", cause),
4917            RefreshSchemasError::ResourceQuotaExceededFault(ref cause) => write!(f, "{}", cause),
4918        }
4919    }
4920}
4921impl Error for RefreshSchemasError {}
4922/// Errors returned by ReloadTables
4923#[derive(Debug, PartialEq)]
4924pub enum ReloadTablesError {
4925    /// <p>The resource is in a state that prevents it from being used for database migration.</p>
4926    InvalidResourceStateFault(String),
4927    /// <p>The resource could not be found.</p>
4928    ResourceNotFoundFault(String),
4929}
4930
4931impl ReloadTablesError {
4932    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ReloadTablesError> {
4933        if let Some(err) = proto::json::Error::parse(&res) {
4934            match err.typ.as_str() {
4935                "InvalidResourceStateFault" => {
4936                    return RusotoError::Service(ReloadTablesError::InvalidResourceStateFault(
4937                        err.msg,
4938                    ))
4939                }
4940                "ResourceNotFoundFault" => {
4941                    return RusotoError::Service(ReloadTablesError::ResourceNotFoundFault(err.msg))
4942                }
4943                "ValidationException" => return RusotoError::Validation(err.msg),
4944                _ => {}
4945            }
4946        }
4947        RusotoError::Unknown(res)
4948    }
4949}
4950impl fmt::Display for ReloadTablesError {
4951    #[allow(unused_variables)]
4952    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4953        match *self {
4954            ReloadTablesError::InvalidResourceStateFault(ref cause) => write!(f, "{}", cause),
4955            ReloadTablesError::ResourceNotFoundFault(ref cause) => write!(f, "{}", cause),
4956        }
4957    }
4958}
4959impl Error for ReloadTablesError {}
4960/// Errors returned by RemoveTagsFromResource
4961#[derive(Debug, PartialEq)]
4962pub enum RemoveTagsFromResourceError {
4963    /// <p>The resource could not be found.</p>
4964    ResourceNotFoundFault(String),
4965}
4966
4967impl RemoveTagsFromResourceError {
4968    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<RemoveTagsFromResourceError> {
4969        if let Some(err) = proto::json::Error::parse(&res) {
4970            match err.typ.as_str() {
4971                "ResourceNotFoundFault" => {
4972                    return RusotoError::Service(
4973                        RemoveTagsFromResourceError::ResourceNotFoundFault(err.msg),
4974                    )
4975                }
4976                "ValidationException" => return RusotoError::Validation(err.msg),
4977                _ => {}
4978            }
4979        }
4980        RusotoError::Unknown(res)
4981    }
4982}
4983impl fmt::Display for RemoveTagsFromResourceError {
4984    #[allow(unused_variables)]
4985    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4986        match *self {
4987            RemoveTagsFromResourceError::ResourceNotFoundFault(ref cause) => write!(f, "{}", cause),
4988        }
4989    }
4990}
4991impl Error for RemoveTagsFromResourceError {}
4992/// Errors returned by StartReplicationTask
4993#[derive(Debug, PartialEq)]
4994pub enum StartReplicationTaskError {
4995    /// <p>AWS DMS was denied access to the endpoint. Check that the role is correctly configured.</p>
4996    AccessDeniedFault(String),
4997    /// <p>The resource is in a state that prevents it from being used for database migration.</p>
4998    InvalidResourceStateFault(String),
4999    /// <p>The resource could not be found.</p>
5000    ResourceNotFoundFault(String),
5001}
5002
5003impl StartReplicationTaskError {
5004    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<StartReplicationTaskError> {
5005        if let Some(err) = proto::json::Error::parse(&res) {
5006            match err.typ.as_str() {
5007                "AccessDeniedFault" => {
5008                    return RusotoError::Service(StartReplicationTaskError::AccessDeniedFault(
5009                        err.msg,
5010                    ))
5011                }
5012                "InvalidResourceStateFault" => {
5013                    return RusotoError::Service(
5014                        StartReplicationTaskError::InvalidResourceStateFault(err.msg),
5015                    )
5016                }
5017                "ResourceNotFoundFault" => {
5018                    return RusotoError::Service(StartReplicationTaskError::ResourceNotFoundFault(
5019                        err.msg,
5020                    ))
5021                }
5022                "ValidationException" => return RusotoError::Validation(err.msg),
5023                _ => {}
5024            }
5025        }
5026        RusotoError::Unknown(res)
5027    }
5028}
5029impl fmt::Display for StartReplicationTaskError {
5030    #[allow(unused_variables)]
5031    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5032        match *self {
5033            StartReplicationTaskError::AccessDeniedFault(ref cause) => write!(f, "{}", cause),
5034            StartReplicationTaskError::InvalidResourceStateFault(ref cause) => {
5035                write!(f, "{}", cause)
5036            }
5037            StartReplicationTaskError::ResourceNotFoundFault(ref cause) => write!(f, "{}", cause),
5038        }
5039    }
5040}
5041impl Error for StartReplicationTaskError {}
5042/// Errors returned by StartReplicationTaskAssessment
5043#[derive(Debug, PartialEq)]
5044pub enum StartReplicationTaskAssessmentError {
5045    /// <p>The resource is in a state that prevents it from being used for database migration.</p>
5046    InvalidResourceStateFault(String),
5047    /// <p>The resource could not be found.</p>
5048    ResourceNotFoundFault(String),
5049}
5050
5051impl StartReplicationTaskAssessmentError {
5052    pub fn from_response(
5053        res: BufferedHttpResponse,
5054    ) -> RusotoError<StartReplicationTaskAssessmentError> {
5055        if let Some(err) = proto::json::Error::parse(&res) {
5056            match err.typ.as_str() {
5057                "InvalidResourceStateFault" => {
5058                    return RusotoError::Service(
5059                        StartReplicationTaskAssessmentError::InvalidResourceStateFault(err.msg),
5060                    )
5061                }
5062                "ResourceNotFoundFault" => {
5063                    return RusotoError::Service(
5064                        StartReplicationTaskAssessmentError::ResourceNotFoundFault(err.msg),
5065                    )
5066                }
5067                "ValidationException" => return RusotoError::Validation(err.msg),
5068                _ => {}
5069            }
5070        }
5071        RusotoError::Unknown(res)
5072    }
5073}
5074impl fmt::Display for StartReplicationTaskAssessmentError {
5075    #[allow(unused_variables)]
5076    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5077        match *self {
5078            StartReplicationTaskAssessmentError::InvalidResourceStateFault(ref cause) => {
5079                write!(f, "{}", cause)
5080            }
5081            StartReplicationTaskAssessmentError::ResourceNotFoundFault(ref cause) => {
5082                write!(f, "{}", cause)
5083            }
5084        }
5085    }
5086}
5087impl Error for StartReplicationTaskAssessmentError {}
5088/// Errors returned by StopReplicationTask
5089#[derive(Debug, PartialEq)]
5090pub enum StopReplicationTaskError {
5091    /// <p>The resource is in a state that prevents it from being used for database migration.</p>
5092    InvalidResourceStateFault(String),
5093    /// <p>The resource could not be found.</p>
5094    ResourceNotFoundFault(String),
5095}
5096
5097impl StopReplicationTaskError {
5098    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<StopReplicationTaskError> {
5099        if let Some(err) = proto::json::Error::parse(&res) {
5100            match err.typ.as_str() {
5101                "InvalidResourceStateFault" => {
5102                    return RusotoError::Service(
5103                        StopReplicationTaskError::InvalidResourceStateFault(err.msg),
5104                    )
5105                }
5106                "ResourceNotFoundFault" => {
5107                    return RusotoError::Service(StopReplicationTaskError::ResourceNotFoundFault(
5108                        err.msg,
5109                    ))
5110                }
5111                "ValidationException" => return RusotoError::Validation(err.msg),
5112                _ => {}
5113            }
5114        }
5115        RusotoError::Unknown(res)
5116    }
5117}
5118impl fmt::Display for StopReplicationTaskError {
5119    #[allow(unused_variables)]
5120    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5121        match *self {
5122            StopReplicationTaskError::InvalidResourceStateFault(ref cause) => {
5123                write!(f, "{}", cause)
5124            }
5125            StopReplicationTaskError::ResourceNotFoundFault(ref cause) => write!(f, "{}", cause),
5126        }
5127    }
5128}
5129impl Error for StopReplicationTaskError {}
5130/// Errors returned by TestConnection
5131#[derive(Debug, PartialEq)]
5132pub enum TestConnectionError {
5133    /// <p>The resource is in a state that prevents it from being used for database migration.</p>
5134    InvalidResourceStateFault(String),
5135    /// <p>AWS DMS cannot access the AWS KMS key.</p>
5136    KMSKeyNotAccessibleFault(String),
5137    /// <p>The resource could not be found.</p>
5138    ResourceNotFoundFault(String),
5139    /// <p>The quota for this resource quota has been exceeded.</p>
5140    ResourceQuotaExceededFault(String),
5141}
5142
5143impl TestConnectionError {
5144    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<TestConnectionError> {
5145        if let Some(err) = proto::json::Error::parse(&res) {
5146            match err.typ.as_str() {
5147                "InvalidResourceStateFault" => {
5148                    return RusotoError::Service(TestConnectionError::InvalidResourceStateFault(
5149                        err.msg,
5150                    ))
5151                }
5152                "KMSKeyNotAccessibleFault" => {
5153                    return RusotoError::Service(TestConnectionError::KMSKeyNotAccessibleFault(
5154                        err.msg,
5155                    ))
5156                }
5157                "ResourceNotFoundFault" => {
5158                    return RusotoError::Service(TestConnectionError::ResourceNotFoundFault(
5159                        err.msg,
5160                    ))
5161                }
5162                "ResourceQuotaExceededFault" => {
5163                    return RusotoError::Service(TestConnectionError::ResourceQuotaExceededFault(
5164                        err.msg,
5165                    ))
5166                }
5167                "ValidationException" => return RusotoError::Validation(err.msg),
5168                _ => {}
5169            }
5170        }
5171        RusotoError::Unknown(res)
5172    }
5173}
5174impl fmt::Display for TestConnectionError {
5175    #[allow(unused_variables)]
5176    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5177        match *self {
5178            TestConnectionError::InvalidResourceStateFault(ref cause) => write!(f, "{}", cause),
5179            TestConnectionError::KMSKeyNotAccessibleFault(ref cause) => write!(f, "{}", cause),
5180            TestConnectionError::ResourceNotFoundFault(ref cause) => write!(f, "{}", cause),
5181            TestConnectionError::ResourceQuotaExceededFault(ref cause) => write!(f, "{}", cause),
5182        }
5183    }
5184}
5185impl Error for TestConnectionError {}
5186/// Trait representing the capabilities of the AWS Database Migration Service API. AWS Database Migration Service clients implement this trait.
5187#[async_trait]
5188pub trait DatabaseMigrationService {
5189    /// <p>Adds metadata tags to an AWS DMS resource, including replication instance, endpoint, security group, and migration task. These tags can also be used with cost allocation reporting to track cost associated with DMS resources, or used in a Condition statement in an IAM policy for DMS.</p>
5190    async fn add_tags_to_resource(
5191        &self,
5192        input: AddTagsToResourceMessage,
5193    ) -> Result<AddTagsToResourceResponse, RusotoError<AddTagsToResourceError>>;
5194
5195    /// <p>Applies a pending maintenance action to a resource (for example, to a replication instance).</p>
5196    async fn apply_pending_maintenance_action(
5197        &self,
5198        input: ApplyPendingMaintenanceActionMessage,
5199    ) -> Result<
5200        ApplyPendingMaintenanceActionResponse,
5201        RusotoError<ApplyPendingMaintenanceActionError>,
5202    >;
5203
5204    /// <p>Creates an endpoint using the provided settings.</p>
5205    async fn create_endpoint(
5206        &self,
5207        input: CreateEndpointMessage,
5208    ) -> Result<CreateEndpointResponse, RusotoError<CreateEndpointError>>;
5209
5210    /// <p> Creates an AWS DMS event notification subscription. </p> <p>You can specify the type of source (<code>SourceType</code>) you want to be notified of, provide a list of AWS DMS source IDs (<code>SourceIds</code>) that triggers the events, and provide a list of event categories (<code>EventCategories</code>) for events you want to be notified of. If you specify both the <code>SourceType</code> and <code>SourceIds</code>, such as <code>SourceType = replication-instance</code> and <code>SourceIdentifier = my-replinstance</code>, you will be notified of all the replication instance events for the specified source. If you specify a <code>SourceType</code> but don't specify a <code>SourceIdentifier</code>, you receive notice of the events for that source type for all your AWS DMS sources. If you don't specify either <code>SourceType</code> nor <code>SourceIdentifier</code>, you will be notified of events generated from all AWS DMS sources belonging to your customer account.</p> <p>For more information about AWS DMS events, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Events.html">Working with Events and Notifications</a> in the <i>AWS Database Migration Service User Guide.</i> </p>
5211    async fn create_event_subscription(
5212        &self,
5213        input: CreateEventSubscriptionMessage,
5214    ) -> Result<CreateEventSubscriptionResponse, RusotoError<CreateEventSubscriptionError>>;
5215
5216    /// <p>Creates the replication instance using the specified parameters.</p> <p>AWS DMS requires that your account have certain roles with appropriate permissions before you can create a replication instance. For information on the required roles, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Security.APIRole.html">Creating the IAM Roles to Use With the AWS CLI and AWS DMS API</a>. For information on the required permissions, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Security.IAMPermissions.html">IAM Permissions Needed to Use AWS DMS</a>.</p>
5217    async fn create_replication_instance(
5218        &self,
5219        input: CreateReplicationInstanceMessage,
5220    ) -> Result<CreateReplicationInstanceResponse, RusotoError<CreateReplicationInstanceError>>;
5221
5222    /// <p>Creates a replication subnet group given a list of the subnet IDs in a VPC.</p>
5223    async fn create_replication_subnet_group(
5224        &self,
5225        input: CreateReplicationSubnetGroupMessage,
5226    ) -> Result<CreateReplicationSubnetGroupResponse, RusotoError<CreateReplicationSubnetGroupError>>;
5227
5228    /// <p>Creates a replication task using the specified parameters.</p>
5229    async fn create_replication_task(
5230        &self,
5231        input: CreateReplicationTaskMessage,
5232    ) -> Result<CreateReplicationTaskResponse, RusotoError<CreateReplicationTaskError>>;
5233
5234    /// <p>Deletes the specified certificate. </p>
5235    async fn delete_certificate(
5236        &self,
5237        input: DeleteCertificateMessage,
5238    ) -> Result<DeleteCertificateResponse, RusotoError<DeleteCertificateError>>;
5239
5240    /// <p>Deletes the connection between a replication instance and an endpoint.</p>
5241    async fn delete_connection(
5242        &self,
5243        input: DeleteConnectionMessage,
5244    ) -> Result<DeleteConnectionResponse, RusotoError<DeleteConnectionError>>;
5245
5246    /// <p><p>Deletes the specified endpoint.</p> <note> <p>All tasks associated with the endpoint must be deleted before you can delete the endpoint.</p> </note> <p/></p>
5247    async fn delete_endpoint(
5248        &self,
5249        input: DeleteEndpointMessage,
5250    ) -> Result<DeleteEndpointResponse, RusotoError<DeleteEndpointError>>;
5251
5252    /// <p> Deletes an AWS DMS event subscription. </p>
5253    async fn delete_event_subscription(
5254        &self,
5255        input: DeleteEventSubscriptionMessage,
5256    ) -> Result<DeleteEventSubscriptionResponse, RusotoError<DeleteEventSubscriptionError>>;
5257
5258    /// <p><p>Deletes the specified replication instance.</p> <note> <p>You must delete any migration tasks that are associated with the replication instance before you can delete it.</p> </note> <p/></p>
5259    async fn delete_replication_instance(
5260        &self,
5261        input: DeleteReplicationInstanceMessage,
5262    ) -> Result<DeleteReplicationInstanceResponse, RusotoError<DeleteReplicationInstanceError>>;
5263
5264    /// <p>Deletes a subnet group.</p>
5265    async fn delete_replication_subnet_group(
5266        &self,
5267        input: DeleteReplicationSubnetGroupMessage,
5268    ) -> Result<DeleteReplicationSubnetGroupResponse, RusotoError<DeleteReplicationSubnetGroupError>>;
5269
5270    /// <p>Deletes the specified replication task.</p>
5271    async fn delete_replication_task(
5272        &self,
5273        input: DeleteReplicationTaskMessage,
5274    ) -> Result<DeleteReplicationTaskResponse, RusotoError<DeleteReplicationTaskError>>;
5275
5276    /// <p>Lists all of the AWS DMS attributes for a customer account. These attributes include AWS DMS quotas for the account and a unique account identifier in a particular DMS region. DMS quotas include a list of resource quotas supported by the account, such as the number of replication instances allowed. The description for each resource quota, includes the quota name, current usage toward that quota, and the quota's maximum value. DMS uses the unique account identifier to name each artifact used by DMS in the given region.</p> <p>This command does not take any parameters.</p>
5277    async fn describe_account_attributes(
5278        &self,
5279    ) -> Result<DescribeAccountAttributesResponse, RusotoError<DescribeAccountAttributesError>>;
5280
5281    /// <p>Provides a description of the certificate.</p>
5282    async fn describe_certificates(
5283        &self,
5284        input: DescribeCertificatesMessage,
5285    ) -> Result<DescribeCertificatesResponse, RusotoError<DescribeCertificatesError>>;
5286
5287    /// <p>Describes the status of the connections that have been made between the replication instance and an endpoint. Connections are created when you test an endpoint.</p>
5288    async fn describe_connections(
5289        &self,
5290        input: DescribeConnectionsMessage,
5291    ) -> Result<DescribeConnectionsResponse, RusotoError<DescribeConnectionsError>>;
5292
5293    /// <p>Returns information about the type of endpoints available.</p>
5294    async fn describe_endpoint_types(
5295        &self,
5296        input: DescribeEndpointTypesMessage,
5297    ) -> Result<DescribeEndpointTypesResponse, RusotoError<DescribeEndpointTypesError>>;
5298
5299    /// <p>Returns information about the endpoints for your account in the current region.</p>
5300    async fn describe_endpoints(
5301        &self,
5302        input: DescribeEndpointsMessage,
5303    ) -> Result<DescribeEndpointsResponse, RusotoError<DescribeEndpointsError>>;
5304
5305    /// <p>Lists categories for all event source types, or, if specified, for a specified source type. You can see a list of the event categories and source types in <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Events.html">Working with Events and Notifications</a> in the <i>AWS Database Migration Service User Guide.</i> </p>
5306    async fn describe_event_categories(
5307        &self,
5308        input: DescribeEventCategoriesMessage,
5309    ) -> Result<DescribeEventCategoriesResponse, RusotoError<DescribeEventCategoriesError>>;
5310
5311    /// <p>Lists all the event subscriptions for a customer account. The description of a subscription includes <code>SubscriptionName</code>, <code>SNSTopicARN</code>, <code>CustomerID</code>, <code>SourceType</code>, <code>SourceID</code>, <code>CreationTime</code>, and <code>Status</code>. </p> <p>If you specify <code>SubscriptionName</code>, this action lists the description for that subscription.</p>
5312    async fn describe_event_subscriptions(
5313        &self,
5314        input: DescribeEventSubscriptionsMessage,
5315    ) -> Result<DescribeEventSubscriptionsResponse, RusotoError<DescribeEventSubscriptionsError>>;
5316
5317    /// <p> Lists events for a given source identifier and source type. You can also specify a start and end time. For more information on AWS DMS events, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Events.html">Working with Events and Notifications</a> in the <i>AWS Database Migration User Guide.</i> </p>
5318    async fn describe_events(
5319        &self,
5320        input: DescribeEventsMessage,
5321    ) -> Result<DescribeEventsResponse, RusotoError<DescribeEventsError>>;
5322
5323    /// <p>Returns information about the replication instance types that can be created in the specified region.</p>
5324    async fn describe_orderable_replication_instances(
5325        &self,
5326        input: DescribeOrderableReplicationInstancesMessage,
5327    ) -> Result<
5328        DescribeOrderableReplicationInstancesResponse,
5329        RusotoError<DescribeOrderableReplicationInstancesError>,
5330    >;
5331
5332    /// <p>For internal use only</p>
5333    async fn describe_pending_maintenance_actions(
5334        &self,
5335        input: DescribePendingMaintenanceActionsMessage,
5336    ) -> Result<
5337        DescribePendingMaintenanceActionsResponse,
5338        RusotoError<DescribePendingMaintenanceActionsError>,
5339    >;
5340
5341    /// <p>Returns the status of the RefreshSchemas operation.</p>
5342    async fn describe_refresh_schemas_status(
5343        &self,
5344        input: DescribeRefreshSchemasStatusMessage,
5345    ) -> Result<DescribeRefreshSchemasStatusResponse, RusotoError<DescribeRefreshSchemasStatusError>>;
5346
5347    /// <p>Returns information about the task logs for the specified task.</p>
5348    async fn describe_replication_instance_task_logs(
5349        &self,
5350        input: DescribeReplicationInstanceTaskLogsMessage,
5351    ) -> Result<
5352        DescribeReplicationInstanceTaskLogsResponse,
5353        RusotoError<DescribeReplicationInstanceTaskLogsError>,
5354    >;
5355
5356    /// <p>Returns information about replication instances for your account in the current region.</p>
5357    async fn describe_replication_instances(
5358        &self,
5359        input: DescribeReplicationInstancesMessage,
5360    ) -> Result<DescribeReplicationInstancesResponse, RusotoError<DescribeReplicationInstancesError>>;
5361
5362    /// <p>Returns information about the replication subnet groups.</p>
5363    async fn describe_replication_subnet_groups(
5364        &self,
5365        input: DescribeReplicationSubnetGroupsMessage,
5366    ) -> Result<
5367        DescribeReplicationSubnetGroupsResponse,
5368        RusotoError<DescribeReplicationSubnetGroupsError>,
5369    >;
5370
5371    /// <p>Returns the task assessment results from Amazon S3. This action always returns the latest results.</p>
5372    async fn describe_replication_task_assessment_results(
5373        &self,
5374        input: DescribeReplicationTaskAssessmentResultsMessage,
5375    ) -> Result<
5376        DescribeReplicationTaskAssessmentResultsResponse,
5377        RusotoError<DescribeReplicationTaskAssessmentResultsError>,
5378    >;
5379
5380    /// <p>Returns information about replication tasks for your account in the current region.</p>
5381    async fn describe_replication_tasks(
5382        &self,
5383        input: DescribeReplicationTasksMessage,
5384    ) -> Result<DescribeReplicationTasksResponse, RusotoError<DescribeReplicationTasksError>>;
5385
5386    /// <p><p>Returns information about the schema for the specified endpoint.</p> <p/></p>
5387    async fn describe_schemas(
5388        &self,
5389        input: DescribeSchemasMessage,
5390    ) -> Result<DescribeSchemasResponse, RusotoError<DescribeSchemasError>>;
5391
5392    /// <p>Returns table statistics on the database migration task, including table name, rows inserted, rows updated, and rows deleted.</p> <p>Note that the "last updated" column the DMS console only indicates the time that AWS DMS last updated the table statistics record for a table. It does not indicate the time of the last update to the table.</p>
5393    async fn describe_table_statistics(
5394        &self,
5395        input: DescribeTableStatisticsMessage,
5396    ) -> Result<DescribeTableStatisticsResponse, RusotoError<DescribeTableStatisticsError>>;
5397
5398    /// <p>Uploads the specified certificate.</p>
5399    async fn import_certificate(
5400        &self,
5401        input: ImportCertificateMessage,
5402    ) -> Result<ImportCertificateResponse, RusotoError<ImportCertificateError>>;
5403
5404    /// <p>Lists all tags for an AWS DMS resource.</p>
5405    async fn list_tags_for_resource(
5406        &self,
5407        input: ListTagsForResourceMessage,
5408    ) -> Result<ListTagsForResourceResponse, RusotoError<ListTagsForResourceError>>;
5409
5410    /// <p>Modifies the specified endpoint.</p>
5411    async fn modify_endpoint(
5412        &self,
5413        input: ModifyEndpointMessage,
5414    ) -> Result<ModifyEndpointResponse, RusotoError<ModifyEndpointError>>;
5415
5416    /// <p>Modifies an existing AWS DMS event notification subscription. </p>
5417    async fn modify_event_subscription(
5418        &self,
5419        input: ModifyEventSubscriptionMessage,
5420    ) -> Result<ModifyEventSubscriptionResponse, RusotoError<ModifyEventSubscriptionError>>;
5421
5422    /// <p><p>Modifies the replication instance to apply new settings. You can change one or more parameters by specifying these parameters and the new values in the request.</p> <p>Some settings are applied during the maintenance window.</p> <p/></p>
5423    async fn modify_replication_instance(
5424        &self,
5425        input: ModifyReplicationInstanceMessage,
5426    ) -> Result<ModifyReplicationInstanceResponse, RusotoError<ModifyReplicationInstanceError>>;
5427
5428    /// <p>Modifies the settings for the specified replication subnet group.</p>
5429    async fn modify_replication_subnet_group(
5430        &self,
5431        input: ModifyReplicationSubnetGroupMessage,
5432    ) -> Result<ModifyReplicationSubnetGroupResponse, RusotoError<ModifyReplicationSubnetGroupError>>;
5433
5434    /// <p>Modifies the specified replication task.</p> <p>You can't modify the task endpoints. The task must be stopped before you can modify it. </p> <p>For more information about AWS DMS tasks, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.html">Working with Migration Tasks</a> in the <i>AWS Database Migration Service User Guide</i>.</p>
5435    async fn modify_replication_task(
5436        &self,
5437        input: ModifyReplicationTaskMessage,
5438    ) -> Result<ModifyReplicationTaskResponse, RusotoError<ModifyReplicationTaskError>>;
5439
5440    /// <p>Reboots a replication instance. Rebooting results in a momentary outage, until the replication instance becomes available again.</p>
5441    async fn reboot_replication_instance(
5442        &self,
5443        input: RebootReplicationInstanceMessage,
5444    ) -> Result<RebootReplicationInstanceResponse, RusotoError<RebootReplicationInstanceError>>;
5445
5446    /// <p>Populates the schema for the specified endpoint. This is an asynchronous operation and can take several minutes. You can check the status of this operation by calling the DescribeRefreshSchemasStatus operation.</p>
5447    async fn refresh_schemas(
5448        &self,
5449        input: RefreshSchemasMessage,
5450    ) -> Result<RefreshSchemasResponse, RusotoError<RefreshSchemasError>>;
5451
5452    /// <p>Reloads the target database table with the source data. </p>
5453    async fn reload_tables(
5454        &self,
5455        input: ReloadTablesMessage,
5456    ) -> Result<ReloadTablesResponse, RusotoError<ReloadTablesError>>;
5457
5458    /// <p>Removes metadata tags from a DMS resource.</p>
5459    async fn remove_tags_from_resource(
5460        &self,
5461        input: RemoveTagsFromResourceMessage,
5462    ) -> Result<RemoveTagsFromResourceResponse, RusotoError<RemoveTagsFromResourceError>>;
5463
5464    /// <p>Starts the replication task.</p> <p>For more information about AWS DMS tasks, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.html">Working with Migration Tasks </a> in the <i>AWS Database Migration Service User Guide.</i> </p>
5465    async fn start_replication_task(
5466        &self,
5467        input: StartReplicationTaskMessage,
5468    ) -> Result<StartReplicationTaskResponse, RusotoError<StartReplicationTaskError>>;
5469
5470    /// <p> Starts the replication task assessment for unsupported data types in the source database. </p>
5471    async fn start_replication_task_assessment(
5472        &self,
5473        input: StartReplicationTaskAssessmentMessage,
5474    ) -> Result<
5475        StartReplicationTaskAssessmentResponse,
5476        RusotoError<StartReplicationTaskAssessmentError>,
5477    >;
5478
5479    /// <p><p>Stops the replication task.</p> <p/></p>
5480    async fn stop_replication_task(
5481        &self,
5482        input: StopReplicationTaskMessage,
5483    ) -> Result<StopReplicationTaskResponse, RusotoError<StopReplicationTaskError>>;
5484
5485    /// <p>Tests the connection between the replication instance and the endpoint.</p>
5486    async fn test_connection(
5487        &self,
5488        input: TestConnectionMessage,
5489    ) -> Result<TestConnectionResponse, RusotoError<TestConnectionError>>;
5490}
5491/// A client for the AWS Database Migration Service API.
5492#[derive(Clone)]
5493pub struct DatabaseMigrationServiceClient {
5494    client: Client,
5495    region: region::Region,
5496}
5497
5498impl DatabaseMigrationServiceClient {
5499    /// Creates a client backed by the default tokio event loop.
5500    ///
5501    /// The client will use the default credentials provider and tls client.
5502    pub fn new(region: region::Region) -> DatabaseMigrationServiceClient {
5503        DatabaseMigrationServiceClient {
5504            client: Client::shared(),
5505            region,
5506        }
5507    }
5508
5509    pub fn new_with<P, D>(
5510        request_dispatcher: D,
5511        credentials_provider: P,
5512        region: region::Region,
5513    ) -> DatabaseMigrationServiceClient
5514    where
5515        P: ProvideAwsCredentials + Send + Sync + 'static,
5516        D: DispatchSignedRequest + Send + Sync + 'static,
5517    {
5518        DatabaseMigrationServiceClient {
5519            client: Client::new_with(credentials_provider, request_dispatcher),
5520            region,
5521        }
5522    }
5523
5524    pub fn new_with_client(
5525        client: Client,
5526        region: region::Region,
5527    ) -> DatabaseMigrationServiceClient {
5528        DatabaseMigrationServiceClient { client, region }
5529    }
5530}
5531
5532#[async_trait]
5533impl DatabaseMigrationService for DatabaseMigrationServiceClient {
5534    /// <p>Adds metadata tags to an AWS DMS resource, including replication instance, endpoint, security group, and migration task. These tags can also be used with cost allocation reporting to track cost associated with DMS resources, or used in a Condition statement in an IAM policy for DMS.</p>
5535    async fn add_tags_to_resource(
5536        &self,
5537        input: AddTagsToResourceMessage,
5538    ) -> Result<AddTagsToResourceResponse, RusotoError<AddTagsToResourceError>> {
5539        let mut request = self.new_signed_request("POST", "/");
5540        request.add_header("x-amz-target", "AmazonDMSv20160101.AddTagsToResource");
5541        let encoded = serde_json::to_string(&input).unwrap();
5542        request.set_payload(Some(encoded));
5543
5544        let response = self
5545            .sign_and_dispatch(request, AddTagsToResourceError::from_response)
5546            .await?;
5547        let mut response = response;
5548        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5549        proto::json::ResponsePayload::new(&response).deserialize::<AddTagsToResourceResponse, _>()
5550    }
5551
5552    /// <p>Applies a pending maintenance action to a resource (for example, to a replication instance).</p>
5553    async fn apply_pending_maintenance_action(
5554        &self,
5555        input: ApplyPendingMaintenanceActionMessage,
5556    ) -> Result<
5557        ApplyPendingMaintenanceActionResponse,
5558        RusotoError<ApplyPendingMaintenanceActionError>,
5559    > {
5560        let mut request = self.new_signed_request("POST", "/");
5561        request.add_header(
5562            "x-amz-target",
5563            "AmazonDMSv20160101.ApplyPendingMaintenanceAction",
5564        );
5565        let encoded = serde_json::to_string(&input).unwrap();
5566        request.set_payload(Some(encoded));
5567
5568        let response = self
5569            .sign_and_dispatch(request, ApplyPendingMaintenanceActionError::from_response)
5570            .await?;
5571        let mut response = response;
5572        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5573        proto::json::ResponsePayload::new(&response)
5574            .deserialize::<ApplyPendingMaintenanceActionResponse, _>()
5575    }
5576
5577    /// <p>Creates an endpoint using the provided settings.</p>
5578    async fn create_endpoint(
5579        &self,
5580        input: CreateEndpointMessage,
5581    ) -> Result<CreateEndpointResponse, RusotoError<CreateEndpointError>> {
5582        let mut request = self.new_signed_request("POST", "/");
5583        request.add_header("x-amz-target", "AmazonDMSv20160101.CreateEndpoint");
5584        let encoded = serde_json::to_string(&input).unwrap();
5585        request.set_payload(Some(encoded));
5586
5587        let response = self
5588            .sign_and_dispatch(request, CreateEndpointError::from_response)
5589            .await?;
5590        let mut response = response;
5591        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5592        proto::json::ResponsePayload::new(&response).deserialize::<CreateEndpointResponse, _>()
5593    }
5594
5595    /// <p> Creates an AWS DMS event notification subscription. </p> <p>You can specify the type of source (<code>SourceType</code>) you want to be notified of, provide a list of AWS DMS source IDs (<code>SourceIds</code>) that triggers the events, and provide a list of event categories (<code>EventCategories</code>) for events you want to be notified of. If you specify both the <code>SourceType</code> and <code>SourceIds</code>, such as <code>SourceType = replication-instance</code> and <code>SourceIdentifier = my-replinstance</code>, you will be notified of all the replication instance events for the specified source. If you specify a <code>SourceType</code> but don't specify a <code>SourceIdentifier</code>, you receive notice of the events for that source type for all your AWS DMS sources. If you don't specify either <code>SourceType</code> nor <code>SourceIdentifier</code>, you will be notified of events generated from all AWS DMS sources belonging to your customer account.</p> <p>For more information about AWS DMS events, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Events.html">Working with Events and Notifications</a> in the <i>AWS Database Migration Service User Guide.</i> </p>
5596    async fn create_event_subscription(
5597        &self,
5598        input: CreateEventSubscriptionMessage,
5599    ) -> Result<CreateEventSubscriptionResponse, RusotoError<CreateEventSubscriptionError>> {
5600        let mut request = self.new_signed_request("POST", "/");
5601        request.add_header("x-amz-target", "AmazonDMSv20160101.CreateEventSubscription");
5602        let encoded = serde_json::to_string(&input).unwrap();
5603        request.set_payload(Some(encoded));
5604
5605        let response = self
5606            .sign_and_dispatch(request, CreateEventSubscriptionError::from_response)
5607            .await?;
5608        let mut response = response;
5609        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5610        proto::json::ResponsePayload::new(&response)
5611            .deserialize::<CreateEventSubscriptionResponse, _>()
5612    }
5613
5614    /// <p>Creates the replication instance using the specified parameters.</p> <p>AWS DMS requires that your account have certain roles with appropriate permissions before you can create a replication instance. For information on the required roles, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Security.APIRole.html">Creating the IAM Roles to Use With the AWS CLI and AWS DMS API</a>. For information on the required permissions, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Security.IAMPermissions.html">IAM Permissions Needed to Use AWS DMS</a>.</p>
5615    async fn create_replication_instance(
5616        &self,
5617        input: CreateReplicationInstanceMessage,
5618    ) -> Result<CreateReplicationInstanceResponse, RusotoError<CreateReplicationInstanceError>>
5619    {
5620        let mut request = self.new_signed_request("POST", "/");
5621        request.add_header(
5622            "x-amz-target",
5623            "AmazonDMSv20160101.CreateReplicationInstance",
5624        );
5625        let encoded = serde_json::to_string(&input).unwrap();
5626        request.set_payload(Some(encoded));
5627
5628        let response = self
5629            .sign_and_dispatch(request, CreateReplicationInstanceError::from_response)
5630            .await?;
5631        let mut response = response;
5632        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5633        proto::json::ResponsePayload::new(&response)
5634            .deserialize::<CreateReplicationInstanceResponse, _>()
5635    }
5636
5637    /// <p>Creates a replication subnet group given a list of the subnet IDs in a VPC.</p>
5638    async fn create_replication_subnet_group(
5639        &self,
5640        input: CreateReplicationSubnetGroupMessage,
5641    ) -> Result<CreateReplicationSubnetGroupResponse, RusotoError<CreateReplicationSubnetGroupError>>
5642    {
5643        let mut request = self.new_signed_request("POST", "/");
5644        request.add_header(
5645            "x-amz-target",
5646            "AmazonDMSv20160101.CreateReplicationSubnetGroup",
5647        );
5648        let encoded = serde_json::to_string(&input).unwrap();
5649        request.set_payload(Some(encoded));
5650
5651        let response = self
5652            .sign_and_dispatch(request, CreateReplicationSubnetGroupError::from_response)
5653            .await?;
5654        let mut response = response;
5655        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5656        proto::json::ResponsePayload::new(&response)
5657            .deserialize::<CreateReplicationSubnetGroupResponse, _>()
5658    }
5659
5660    /// <p>Creates a replication task using the specified parameters.</p>
5661    async fn create_replication_task(
5662        &self,
5663        input: CreateReplicationTaskMessage,
5664    ) -> Result<CreateReplicationTaskResponse, RusotoError<CreateReplicationTaskError>> {
5665        let mut request = self.new_signed_request("POST", "/");
5666        request.add_header("x-amz-target", "AmazonDMSv20160101.CreateReplicationTask");
5667        let encoded = serde_json::to_string(&input).unwrap();
5668        request.set_payload(Some(encoded));
5669
5670        let response = self
5671            .sign_and_dispatch(request, CreateReplicationTaskError::from_response)
5672            .await?;
5673        let mut response = response;
5674        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5675        proto::json::ResponsePayload::new(&response)
5676            .deserialize::<CreateReplicationTaskResponse, _>()
5677    }
5678
5679    /// <p>Deletes the specified certificate. </p>
5680    async fn delete_certificate(
5681        &self,
5682        input: DeleteCertificateMessage,
5683    ) -> Result<DeleteCertificateResponse, RusotoError<DeleteCertificateError>> {
5684        let mut request = self.new_signed_request("POST", "/");
5685        request.add_header("x-amz-target", "AmazonDMSv20160101.DeleteCertificate");
5686        let encoded = serde_json::to_string(&input).unwrap();
5687        request.set_payload(Some(encoded));
5688
5689        let response = self
5690            .sign_and_dispatch(request, DeleteCertificateError::from_response)
5691            .await?;
5692        let mut response = response;
5693        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5694        proto::json::ResponsePayload::new(&response).deserialize::<DeleteCertificateResponse, _>()
5695    }
5696
5697    /// <p>Deletes the connection between a replication instance and an endpoint.</p>
5698    async fn delete_connection(
5699        &self,
5700        input: DeleteConnectionMessage,
5701    ) -> Result<DeleteConnectionResponse, RusotoError<DeleteConnectionError>> {
5702        let mut request = self.new_signed_request("POST", "/");
5703        request.add_header("x-amz-target", "AmazonDMSv20160101.DeleteConnection");
5704        let encoded = serde_json::to_string(&input).unwrap();
5705        request.set_payload(Some(encoded));
5706
5707        let response = self
5708            .sign_and_dispatch(request, DeleteConnectionError::from_response)
5709            .await?;
5710        let mut response = response;
5711        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5712        proto::json::ResponsePayload::new(&response).deserialize::<DeleteConnectionResponse, _>()
5713    }
5714
5715    /// <p><p>Deletes the specified endpoint.</p> <note> <p>All tasks associated with the endpoint must be deleted before you can delete the endpoint.</p> </note> <p/></p>
5716    async fn delete_endpoint(
5717        &self,
5718        input: DeleteEndpointMessage,
5719    ) -> Result<DeleteEndpointResponse, RusotoError<DeleteEndpointError>> {
5720        let mut request = self.new_signed_request("POST", "/");
5721        request.add_header("x-amz-target", "AmazonDMSv20160101.DeleteEndpoint");
5722        let encoded = serde_json::to_string(&input).unwrap();
5723        request.set_payload(Some(encoded));
5724
5725        let response = self
5726            .sign_and_dispatch(request, DeleteEndpointError::from_response)
5727            .await?;
5728        let mut response = response;
5729        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5730        proto::json::ResponsePayload::new(&response).deserialize::<DeleteEndpointResponse, _>()
5731    }
5732
5733    /// <p> Deletes an AWS DMS event subscription. </p>
5734    async fn delete_event_subscription(
5735        &self,
5736        input: DeleteEventSubscriptionMessage,
5737    ) -> Result<DeleteEventSubscriptionResponse, RusotoError<DeleteEventSubscriptionError>> {
5738        let mut request = self.new_signed_request("POST", "/");
5739        request.add_header("x-amz-target", "AmazonDMSv20160101.DeleteEventSubscription");
5740        let encoded = serde_json::to_string(&input).unwrap();
5741        request.set_payload(Some(encoded));
5742
5743        let response = self
5744            .sign_and_dispatch(request, DeleteEventSubscriptionError::from_response)
5745            .await?;
5746        let mut response = response;
5747        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5748        proto::json::ResponsePayload::new(&response)
5749            .deserialize::<DeleteEventSubscriptionResponse, _>()
5750    }
5751
5752    /// <p><p>Deletes the specified replication instance.</p> <note> <p>You must delete any migration tasks that are associated with the replication instance before you can delete it.</p> </note> <p/></p>
5753    async fn delete_replication_instance(
5754        &self,
5755        input: DeleteReplicationInstanceMessage,
5756    ) -> Result<DeleteReplicationInstanceResponse, RusotoError<DeleteReplicationInstanceError>>
5757    {
5758        let mut request = self.new_signed_request("POST", "/");
5759        request.add_header(
5760            "x-amz-target",
5761            "AmazonDMSv20160101.DeleteReplicationInstance",
5762        );
5763        let encoded = serde_json::to_string(&input).unwrap();
5764        request.set_payload(Some(encoded));
5765
5766        let response = self
5767            .sign_and_dispatch(request, DeleteReplicationInstanceError::from_response)
5768            .await?;
5769        let mut response = response;
5770        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5771        proto::json::ResponsePayload::new(&response)
5772            .deserialize::<DeleteReplicationInstanceResponse, _>()
5773    }
5774
5775    /// <p>Deletes a subnet group.</p>
5776    async fn delete_replication_subnet_group(
5777        &self,
5778        input: DeleteReplicationSubnetGroupMessage,
5779    ) -> Result<DeleteReplicationSubnetGroupResponse, RusotoError<DeleteReplicationSubnetGroupError>>
5780    {
5781        let mut request = self.new_signed_request("POST", "/");
5782        request.add_header(
5783            "x-amz-target",
5784            "AmazonDMSv20160101.DeleteReplicationSubnetGroup",
5785        );
5786        let encoded = serde_json::to_string(&input).unwrap();
5787        request.set_payload(Some(encoded));
5788
5789        let response = self
5790            .sign_and_dispatch(request, DeleteReplicationSubnetGroupError::from_response)
5791            .await?;
5792        let mut response = response;
5793        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5794        proto::json::ResponsePayload::new(&response)
5795            .deserialize::<DeleteReplicationSubnetGroupResponse, _>()
5796    }
5797
5798    /// <p>Deletes the specified replication task.</p>
5799    async fn delete_replication_task(
5800        &self,
5801        input: DeleteReplicationTaskMessage,
5802    ) -> Result<DeleteReplicationTaskResponse, RusotoError<DeleteReplicationTaskError>> {
5803        let mut request = self.new_signed_request("POST", "/");
5804        request.add_header("x-amz-target", "AmazonDMSv20160101.DeleteReplicationTask");
5805        let encoded = serde_json::to_string(&input).unwrap();
5806        request.set_payload(Some(encoded));
5807
5808        let response = self
5809            .sign_and_dispatch(request, DeleteReplicationTaskError::from_response)
5810            .await?;
5811        let mut response = response;
5812        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5813        proto::json::ResponsePayload::new(&response)
5814            .deserialize::<DeleteReplicationTaskResponse, _>()
5815    }
5816
5817    /// <p>Lists all of the AWS DMS attributes for a customer account. These attributes include AWS DMS quotas for the account and a unique account identifier in a particular DMS region. DMS quotas include a list of resource quotas supported by the account, such as the number of replication instances allowed. The description for each resource quota, includes the quota name, current usage toward that quota, and the quota's maximum value. DMS uses the unique account identifier to name each artifact used by DMS in the given region.</p> <p>This command does not take any parameters.</p>
5818    async fn describe_account_attributes(
5819        &self,
5820    ) -> Result<DescribeAccountAttributesResponse, RusotoError<DescribeAccountAttributesError>>
5821    {
5822        let mut request = self.new_signed_request("POST", "/");
5823        request.add_header(
5824            "x-amz-target",
5825            "AmazonDMSv20160101.DescribeAccountAttributes",
5826        );
5827        request.set_payload(Some(bytes::Bytes::from_static(b"{}")));
5828
5829        let response = self
5830            .sign_and_dispatch(request, DescribeAccountAttributesError::from_response)
5831            .await?;
5832        let mut response = response;
5833        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5834        proto::json::ResponsePayload::new(&response)
5835            .deserialize::<DescribeAccountAttributesResponse, _>()
5836    }
5837
5838    /// <p>Provides a description of the certificate.</p>
5839    async fn describe_certificates(
5840        &self,
5841        input: DescribeCertificatesMessage,
5842    ) -> Result<DescribeCertificatesResponse, RusotoError<DescribeCertificatesError>> {
5843        let mut request = self.new_signed_request("POST", "/");
5844        request.add_header("x-amz-target", "AmazonDMSv20160101.DescribeCertificates");
5845        let encoded = serde_json::to_string(&input).unwrap();
5846        request.set_payload(Some(encoded));
5847
5848        let response = self
5849            .sign_and_dispatch(request, DescribeCertificatesError::from_response)
5850            .await?;
5851        let mut response = response;
5852        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5853        proto::json::ResponsePayload::new(&response)
5854            .deserialize::<DescribeCertificatesResponse, _>()
5855    }
5856
5857    /// <p>Describes the status of the connections that have been made between the replication instance and an endpoint. Connections are created when you test an endpoint.</p>
5858    async fn describe_connections(
5859        &self,
5860        input: DescribeConnectionsMessage,
5861    ) -> Result<DescribeConnectionsResponse, RusotoError<DescribeConnectionsError>> {
5862        let mut request = self.new_signed_request("POST", "/");
5863        request.add_header("x-amz-target", "AmazonDMSv20160101.DescribeConnections");
5864        let encoded = serde_json::to_string(&input).unwrap();
5865        request.set_payload(Some(encoded));
5866
5867        let response = self
5868            .sign_and_dispatch(request, DescribeConnectionsError::from_response)
5869            .await?;
5870        let mut response = response;
5871        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5872        proto::json::ResponsePayload::new(&response).deserialize::<DescribeConnectionsResponse, _>()
5873    }
5874
5875    /// <p>Returns information about the type of endpoints available.</p>
5876    async fn describe_endpoint_types(
5877        &self,
5878        input: DescribeEndpointTypesMessage,
5879    ) -> Result<DescribeEndpointTypesResponse, RusotoError<DescribeEndpointTypesError>> {
5880        let mut request = self.new_signed_request("POST", "/");
5881        request.add_header("x-amz-target", "AmazonDMSv20160101.DescribeEndpointTypes");
5882        let encoded = serde_json::to_string(&input).unwrap();
5883        request.set_payload(Some(encoded));
5884
5885        let response = self
5886            .sign_and_dispatch(request, DescribeEndpointTypesError::from_response)
5887            .await?;
5888        let mut response = response;
5889        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5890        proto::json::ResponsePayload::new(&response)
5891            .deserialize::<DescribeEndpointTypesResponse, _>()
5892    }
5893
5894    /// <p>Returns information about the endpoints for your account in the current region.</p>
5895    async fn describe_endpoints(
5896        &self,
5897        input: DescribeEndpointsMessage,
5898    ) -> Result<DescribeEndpointsResponse, RusotoError<DescribeEndpointsError>> {
5899        let mut request = self.new_signed_request("POST", "/");
5900        request.add_header("x-amz-target", "AmazonDMSv20160101.DescribeEndpoints");
5901        let encoded = serde_json::to_string(&input).unwrap();
5902        request.set_payload(Some(encoded));
5903
5904        let response = self
5905            .sign_and_dispatch(request, DescribeEndpointsError::from_response)
5906            .await?;
5907        let mut response = response;
5908        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5909        proto::json::ResponsePayload::new(&response).deserialize::<DescribeEndpointsResponse, _>()
5910    }
5911
5912    /// <p>Lists categories for all event source types, or, if specified, for a specified source type. You can see a list of the event categories and source types in <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Events.html">Working with Events and Notifications</a> in the <i>AWS Database Migration Service User Guide.</i> </p>
5913    async fn describe_event_categories(
5914        &self,
5915        input: DescribeEventCategoriesMessage,
5916    ) -> Result<DescribeEventCategoriesResponse, RusotoError<DescribeEventCategoriesError>> {
5917        let mut request = self.new_signed_request("POST", "/");
5918        request.add_header("x-amz-target", "AmazonDMSv20160101.DescribeEventCategories");
5919        let encoded = serde_json::to_string(&input).unwrap();
5920        request.set_payload(Some(encoded));
5921
5922        let response = self
5923            .sign_and_dispatch(request, DescribeEventCategoriesError::from_response)
5924            .await?;
5925        let mut response = response;
5926        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5927        proto::json::ResponsePayload::new(&response)
5928            .deserialize::<DescribeEventCategoriesResponse, _>()
5929    }
5930
5931    /// <p>Lists all the event subscriptions for a customer account. The description of a subscription includes <code>SubscriptionName</code>, <code>SNSTopicARN</code>, <code>CustomerID</code>, <code>SourceType</code>, <code>SourceID</code>, <code>CreationTime</code>, and <code>Status</code>. </p> <p>If you specify <code>SubscriptionName</code>, this action lists the description for that subscription.</p>
5932    async fn describe_event_subscriptions(
5933        &self,
5934        input: DescribeEventSubscriptionsMessage,
5935    ) -> Result<DescribeEventSubscriptionsResponse, RusotoError<DescribeEventSubscriptionsError>>
5936    {
5937        let mut request = self.new_signed_request("POST", "/");
5938        request.add_header(
5939            "x-amz-target",
5940            "AmazonDMSv20160101.DescribeEventSubscriptions",
5941        );
5942        let encoded = serde_json::to_string(&input).unwrap();
5943        request.set_payload(Some(encoded));
5944
5945        let response = self
5946            .sign_and_dispatch(request, DescribeEventSubscriptionsError::from_response)
5947            .await?;
5948        let mut response = response;
5949        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5950        proto::json::ResponsePayload::new(&response)
5951            .deserialize::<DescribeEventSubscriptionsResponse, _>()
5952    }
5953
5954    /// <p> Lists events for a given source identifier and source type. You can also specify a start and end time. For more information on AWS DMS events, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Events.html">Working with Events and Notifications</a> in the <i>AWS Database Migration User Guide.</i> </p>
5955    async fn describe_events(
5956        &self,
5957        input: DescribeEventsMessage,
5958    ) -> Result<DescribeEventsResponse, RusotoError<DescribeEventsError>> {
5959        let mut request = self.new_signed_request("POST", "/");
5960        request.add_header("x-amz-target", "AmazonDMSv20160101.DescribeEvents");
5961        let encoded = serde_json::to_string(&input).unwrap();
5962        request.set_payload(Some(encoded));
5963
5964        let response = self
5965            .sign_and_dispatch(request, DescribeEventsError::from_response)
5966            .await?;
5967        let mut response = response;
5968        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5969        proto::json::ResponsePayload::new(&response).deserialize::<DescribeEventsResponse, _>()
5970    }
5971
5972    /// <p>Returns information about the replication instance types that can be created in the specified region.</p>
5973    async fn describe_orderable_replication_instances(
5974        &self,
5975        input: DescribeOrderableReplicationInstancesMessage,
5976    ) -> Result<
5977        DescribeOrderableReplicationInstancesResponse,
5978        RusotoError<DescribeOrderableReplicationInstancesError>,
5979    > {
5980        let mut request = self.new_signed_request("POST", "/");
5981        request.add_header(
5982            "x-amz-target",
5983            "AmazonDMSv20160101.DescribeOrderableReplicationInstances",
5984        );
5985        let encoded = serde_json::to_string(&input).unwrap();
5986        request.set_payload(Some(encoded));
5987
5988        let response = self
5989            .sign_and_dispatch(
5990                request,
5991                DescribeOrderableReplicationInstancesError::from_response,
5992            )
5993            .await?;
5994        let mut response = response;
5995        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
5996        proto::json::ResponsePayload::new(&response)
5997            .deserialize::<DescribeOrderableReplicationInstancesResponse, _>()
5998    }
5999
6000    /// <p>For internal use only</p>
6001    async fn describe_pending_maintenance_actions(
6002        &self,
6003        input: DescribePendingMaintenanceActionsMessage,
6004    ) -> Result<
6005        DescribePendingMaintenanceActionsResponse,
6006        RusotoError<DescribePendingMaintenanceActionsError>,
6007    > {
6008        let mut request = self.new_signed_request("POST", "/");
6009        request.add_header(
6010            "x-amz-target",
6011            "AmazonDMSv20160101.DescribePendingMaintenanceActions",
6012        );
6013        let encoded = serde_json::to_string(&input).unwrap();
6014        request.set_payload(Some(encoded));
6015
6016        let response = self
6017            .sign_and_dispatch(
6018                request,
6019                DescribePendingMaintenanceActionsError::from_response,
6020            )
6021            .await?;
6022        let mut response = response;
6023        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6024        proto::json::ResponsePayload::new(&response)
6025            .deserialize::<DescribePendingMaintenanceActionsResponse, _>()
6026    }
6027
6028    /// <p>Returns the status of the RefreshSchemas operation.</p>
6029    async fn describe_refresh_schemas_status(
6030        &self,
6031        input: DescribeRefreshSchemasStatusMessage,
6032    ) -> Result<DescribeRefreshSchemasStatusResponse, RusotoError<DescribeRefreshSchemasStatusError>>
6033    {
6034        let mut request = self.new_signed_request("POST", "/");
6035        request.add_header(
6036            "x-amz-target",
6037            "AmazonDMSv20160101.DescribeRefreshSchemasStatus",
6038        );
6039        let encoded = serde_json::to_string(&input).unwrap();
6040        request.set_payload(Some(encoded));
6041
6042        let response = self
6043            .sign_and_dispatch(request, DescribeRefreshSchemasStatusError::from_response)
6044            .await?;
6045        let mut response = response;
6046        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6047        proto::json::ResponsePayload::new(&response)
6048            .deserialize::<DescribeRefreshSchemasStatusResponse, _>()
6049    }
6050
6051    /// <p>Returns information about the task logs for the specified task.</p>
6052    async fn describe_replication_instance_task_logs(
6053        &self,
6054        input: DescribeReplicationInstanceTaskLogsMessage,
6055    ) -> Result<
6056        DescribeReplicationInstanceTaskLogsResponse,
6057        RusotoError<DescribeReplicationInstanceTaskLogsError>,
6058    > {
6059        let mut request = self.new_signed_request("POST", "/");
6060        request.add_header(
6061            "x-amz-target",
6062            "AmazonDMSv20160101.DescribeReplicationInstanceTaskLogs",
6063        );
6064        let encoded = serde_json::to_string(&input).unwrap();
6065        request.set_payload(Some(encoded));
6066
6067        let response = self
6068            .sign_and_dispatch(
6069                request,
6070                DescribeReplicationInstanceTaskLogsError::from_response,
6071            )
6072            .await?;
6073        let mut response = response;
6074        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6075        proto::json::ResponsePayload::new(&response)
6076            .deserialize::<DescribeReplicationInstanceTaskLogsResponse, _>()
6077    }
6078
6079    /// <p>Returns information about replication instances for your account in the current region.</p>
6080    async fn describe_replication_instances(
6081        &self,
6082        input: DescribeReplicationInstancesMessage,
6083    ) -> Result<DescribeReplicationInstancesResponse, RusotoError<DescribeReplicationInstancesError>>
6084    {
6085        let mut request = self.new_signed_request("POST", "/");
6086        request.add_header(
6087            "x-amz-target",
6088            "AmazonDMSv20160101.DescribeReplicationInstances",
6089        );
6090        let encoded = serde_json::to_string(&input).unwrap();
6091        request.set_payload(Some(encoded));
6092
6093        let response = self
6094            .sign_and_dispatch(request, DescribeReplicationInstancesError::from_response)
6095            .await?;
6096        let mut response = response;
6097        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6098        proto::json::ResponsePayload::new(&response)
6099            .deserialize::<DescribeReplicationInstancesResponse, _>()
6100    }
6101
6102    /// <p>Returns information about the replication subnet groups.</p>
6103    async fn describe_replication_subnet_groups(
6104        &self,
6105        input: DescribeReplicationSubnetGroupsMessage,
6106    ) -> Result<
6107        DescribeReplicationSubnetGroupsResponse,
6108        RusotoError<DescribeReplicationSubnetGroupsError>,
6109    > {
6110        let mut request = self.new_signed_request("POST", "/");
6111        request.add_header(
6112            "x-amz-target",
6113            "AmazonDMSv20160101.DescribeReplicationSubnetGroups",
6114        );
6115        let encoded = serde_json::to_string(&input).unwrap();
6116        request.set_payload(Some(encoded));
6117
6118        let response = self
6119            .sign_and_dispatch(request, DescribeReplicationSubnetGroupsError::from_response)
6120            .await?;
6121        let mut response = response;
6122        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6123        proto::json::ResponsePayload::new(&response)
6124            .deserialize::<DescribeReplicationSubnetGroupsResponse, _>()
6125    }
6126
6127    /// <p>Returns the task assessment results from Amazon S3. This action always returns the latest results.</p>
6128    async fn describe_replication_task_assessment_results(
6129        &self,
6130        input: DescribeReplicationTaskAssessmentResultsMessage,
6131    ) -> Result<
6132        DescribeReplicationTaskAssessmentResultsResponse,
6133        RusotoError<DescribeReplicationTaskAssessmentResultsError>,
6134    > {
6135        let mut request = self.new_signed_request("POST", "/");
6136        request.add_header(
6137            "x-amz-target",
6138            "AmazonDMSv20160101.DescribeReplicationTaskAssessmentResults",
6139        );
6140        let encoded = serde_json::to_string(&input).unwrap();
6141        request.set_payload(Some(encoded));
6142
6143        let response = self
6144            .sign_and_dispatch(
6145                request,
6146                DescribeReplicationTaskAssessmentResultsError::from_response,
6147            )
6148            .await?;
6149        let mut response = response;
6150        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6151        proto::json::ResponsePayload::new(&response)
6152            .deserialize::<DescribeReplicationTaskAssessmentResultsResponse, _>()
6153    }
6154
6155    /// <p>Returns information about replication tasks for your account in the current region.</p>
6156    async fn describe_replication_tasks(
6157        &self,
6158        input: DescribeReplicationTasksMessage,
6159    ) -> Result<DescribeReplicationTasksResponse, RusotoError<DescribeReplicationTasksError>> {
6160        let mut request = self.new_signed_request("POST", "/");
6161        request.add_header(
6162            "x-amz-target",
6163            "AmazonDMSv20160101.DescribeReplicationTasks",
6164        );
6165        let encoded = serde_json::to_string(&input).unwrap();
6166        request.set_payload(Some(encoded));
6167
6168        let response = self
6169            .sign_and_dispatch(request, DescribeReplicationTasksError::from_response)
6170            .await?;
6171        let mut response = response;
6172        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6173        proto::json::ResponsePayload::new(&response)
6174            .deserialize::<DescribeReplicationTasksResponse, _>()
6175    }
6176
6177    /// <p><p>Returns information about the schema for the specified endpoint.</p> <p/></p>
6178    async fn describe_schemas(
6179        &self,
6180        input: DescribeSchemasMessage,
6181    ) -> Result<DescribeSchemasResponse, RusotoError<DescribeSchemasError>> {
6182        let mut request = self.new_signed_request("POST", "/");
6183        request.add_header("x-amz-target", "AmazonDMSv20160101.DescribeSchemas");
6184        let encoded = serde_json::to_string(&input).unwrap();
6185        request.set_payload(Some(encoded));
6186
6187        let response = self
6188            .sign_and_dispatch(request, DescribeSchemasError::from_response)
6189            .await?;
6190        let mut response = response;
6191        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6192        proto::json::ResponsePayload::new(&response).deserialize::<DescribeSchemasResponse, _>()
6193    }
6194
6195    /// <p>Returns table statistics on the database migration task, including table name, rows inserted, rows updated, and rows deleted.</p> <p>Note that the "last updated" column the DMS console only indicates the time that AWS DMS last updated the table statistics record for a table. It does not indicate the time of the last update to the table.</p>
6196    async fn describe_table_statistics(
6197        &self,
6198        input: DescribeTableStatisticsMessage,
6199    ) -> Result<DescribeTableStatisticsResponse, RusotoError<DescribeTableStatisticsError>> {
6200        let mut request = self.new_signed_request("POST", "/");
6201        request.add_header("x-amz-target", "AmazonDMSv20160101.DescribeTableStatistics");
6202        let encoded = serde_json::to_string(&input).unwrap();
6203        request.set_payload(Some(encoded));
6204
6205        let response = self
6206            .sign_and_dispatch(request, DescribeTableStatisticsError::from_response)
6207            .await?;
6208        let mut response = response;
6209        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6210        proto::json::ResponsePayload::new(&response)
6211            .deserialize::<DescribeTableStatisticsResponse, _>()
6212    }
6213
6214    /// <p>Uploads the specified certificate.</p>
6215    async fn import_certificate(
6216        &self,
6217        input: ImportCertificateMessage,
6218    ) -> Result<ImportCertificateResponse, RusotoError<ImportCertificateError>> {
6219        let mut request = self.new_signed_request("POST", "/");
6220        request.add_header("x-amz-target", "AmazonDMSv20160101.ImportCertificate");
6221        let encoded = serde_json::to_string(&input).unwrap();
6222        request.set_payload(Some(encoded));
6223
6224        let response = self
6225            .sign_and_dispatch(request, ImportCertificateError::from_response)
6226            .await?;
6227        let mut response = response;
6228        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6229        proto::json::ResponsePayload::new(&response).deserialize::<ImportCertificateResponse, _>()
6230    }
6231
6232    /// <p>Lists all tags for an AWS DMS resource.</p>
6233    async fn list_tags_for_resource(
6234        &self,
6235        input: ListTagsForResourceMessage,
6236    ) -> Result<ListTagsForResourceResponse, RusotoError<ListTagsForResourceError>> {
6237        let mut request = self.new_signed_request("POST", "/");
6238        request.add_header("x-amz-target", "AmazonDMSv20160101.ListTagsForResource");
6239        let encoded = serde_json::to_string(&input).unwrap();
6240        request.set_payload(Some(encoded));
6241
6242        let response = self
6243            .sign_and_dispatch(request, ListTagsForResourceError::from_response)
6244            .await?;
6245        let mut response = response;
6246        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6247        proto::json::ResponsePayload::new(&response).deserialize::<ListTagsForResourceResponse, _>()
6248    }
6249
6250    /// <p>Modifies the specified endpoint.</p>
6251    async fn modify_endpoint(
6252        &self,
6253        input: ModifyEndpointMessage,
6254    ) -> Result<ModifyEndpointResponse, RusotoError<ModifyEndpointError>> {
6255        let mut request = self.new_signed_request("POST", "/");
6256        request.add_header("x-amz-target", "AmazonDMSv20160101.ModifyEndpoint");
6257        let encoded = serde_json::to_string(&input).unwrap();
6258        request.set_payload(Some(encoded));
6259
6260        let response = self
6261            .sign_and_dispatch(request, ModifyEndpointError::from_response)
6262            .await?;
6263        let mut response = response;
6264        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6265        proto::json::ResponsePayload::new(&response).deserialize::<ModifyEndpointResponse, _>()
6266    }
6267
6268    /// <p>Modifies an existing AWS DMS event notification subscription. </p>
6269    async fn modify_event_subscription(
6270        &self,
6271        input: ModifyEventSubscriptionMessage,
6272    ) -> Result<ModifyEventSubscriptionResponse, RusotoError<ModifyEventSubscriptionError>> {
6273        let mut request = self.new_signed_request("POST", "/");
6274        request.add_header("x-amz-target", "AmazonDMSv20160101.ModifyEventSubscription");
6275        let encoded = serde_json::to_string(&input).unwrap();
6276        request.set_payload(Some(encoded));
6277
6278        let response = self
6279            .sign_and_dispatch(request, ModifyEventSubscriptionError::from_response)
6280            .await?;
6281        let mut response = response;
6282        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6283        proto::json::ResponsePayload::new(&response)
6284            .deserialize::<ModifyEventSubscriptionResponse, _>()
6285    }
6286
6287    /// <p><p>Modifies the replication instance to apply new settings. You can change one or more parameters by specifying these parameters and the new values in the request.</p> <p>Some settings are applied during the maintenance window.</p> <p/></p>
6288    async fn modify_replication_instance(
6289        &self,
6290        input: ModifyReplicationInstanceMessage,
6291    ) -> Result<ModifyReplicationInstanceResponse, RusotoError<ModifyReplicationInstanceError>>
6292    {
6293        let mut request = self.new_signed_request("POST", "/");
6294        request.add_header(
6295            "x-amz-target",
6296            "AmazonDMSv20160101.ModifyReplicationInstance",
6297        );
6298        let encoded = serde_json::to_string(&input).unwrap();
6299        request.set_payload(Some(encoded));
6300
6301        let response = self
6302            .sign_and_dispatch(request, ModifyReplicationInstanceError::from_response)
6303            .await?;
6304        let mut response = response;
6305        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6306        proto::json::ResponsePayload::new(&response)
6307            .deserialize::<ModifyReplicationInstanceResponse, _>()
6308    }
6309
6310    /// <p>Modifies the settings for the specified replication subnet group.</p>
6311    async fn modify_replication_subnet_group(
6312        &self,
6313        input: ModifyReplicationSubnetGroupMessage,
6314    ) -> Result<ModifyReplicationSubnetGroupResponse, RusotoError<ModifyReplicationSubnetGroupError>>
6315    {
6316        let mut request = self.new_signed_request("POST", "/");
6317        request.add_header(
6318            "x-amz-target",
6319            "AmazonDMSv20160101.ModifyReplicationSubnetGroup",
6320        );
6321        let encoded = serde_json::to_string(&input).unwrap();
6322        request.set_payload(Some(encoded));
6323
6324        let response = self
6325            .sign_and_dispatch(request, ModifyReplicationSubnetGroupError::from_response)
6326            .await?;
6327        let mut response = response;
6328        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6329        proto::json::ResponsePayload::new(&response)
6330            .deserialize::<ModifyReplicationSubnetGroupResponse, _>()
6331    }
6332
6333    /// <p>Modifies the specified replication task.</p> <p>You can't modify the task endpoints. The task must be stopped before you can modify it. </p> <p>For more information about AWS DMS tasks, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.html">Working with Migration Tasks</a> in the <i>AWS Database Migration Service User Guide</i>.</p>
6334    async fn modify_replication_task(
6335        &self,
6336        input: ModifyReplicationTaskMessage,
6337    ) -> Result<ModifyReplicationTaskResponse, RusotoError<ModifyReplicationTaskError>> {
6338        let mut request = self.new_signed_request("POST", "/");
6339        request.add_header("x-amz-target", "AmazonDMSv20160101.ModifyReplicationTask");
6340        let encoded = serde_json::to_string(&input).unwrap();
6341        request.set_payload(Some(encoded));
6342
6343        let response = self
6344            .sign_and_dispatch(request, ModifyReplicationTaskError::from_response)
6345            .await?;
6346        let mut response = response;
6347        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6348        proto::json::ResponsePayload::new(&response)
6349            .deserialize::<ModifyReplicationTaskResponse, _>()
6350    }
6351
6352    /// <p>Reboots a replication instance. Rebooting results in a momentary outage, until the replication instance becomes available again.</p>
6353    async fn reboot_replication_instance(
6354        &self,
6355        input: RebootReplicationInstanceMessage,
6356    ) -> Result<RebootReplicationInstanceResponse, RusotoError<RebootReplicationInstanceError>>
6357    {
6358        let mut request = self.new_signed_request("POST", "/");
6359        request.add_header(
6360            "x-amz-target",
6361            "AmazonDMSv20160101.RebootReplicationInstance",
6362        );
6363        let encoded = serde_json::to_string(&input).unwrap();
6364        request.set_payload(Some(encoded));
6365
6366        let response = self
6367            .sign_and_dispatch(request, RebootReplicationInstanceError::from_response)
6368            .await?;
6369        let mut response = response;
6370        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6371        proto::json::ResponsePayload::new(&response)
6372            .deserialize::<RebootReplicationInstanceResponse, _>()
6373    }
6374
6375    /// <p>Populates the schema for the specified endpoint. This is an asynchronous operation and can take several minutes. You can check the status of this operation by calling the DescribeRefreshSchemasStatus operation.</p>
6376    async fn refresh_schemas(
6377        &self,
6378        input: RefreshSchemasMessage,
6379    ) -> Result<RefreshSchemasResponse, RusotoError<RefreshSchemasError>> {
6380        let mut request = self.new_signed_request("POST", "/");
6381        request.add_header("x-amz-target", "AmazonDMSv20160101.RefreshSchemas");
6382        let encoded = serde_json::to_string(&input).unwrap();
6383        request.set_payload(Some(encoded));
6384
6385        let response = self
6386            .sign_and_dispatch(request, RefreshSchemasError::from_response)
6387            .await?;
6388        let mut response = response;
6389        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6390        proto::json::ResponsePayload::new(&response).deserialize::<RefreshSchemasResponse, _>()
6391    }
6392
6393    /// <p>Reloads the target database table with the source data. </p>
6394    async fn reload_tables(
6395        &self,
6396        input: ReloadTablesMessage,
6397    ) -> Result<ReloadTablesResponse, RusotoError<ReloadTablesError>> {
6398        let mut request = self.new_signed_request("POST", "/");
6399        request.add_header("x-amz-target", "AmazonDMSv20160101.ReloadTables");
6400        let encoded = serde_json::to_string(&input).unwrap();
6401        request.set_payload(Some(encoded));
6402
6403        let response = self
6404            .sign_and_dispatch(request, ReloadTablesError::from_response)
6405            .await?;
6406        let mut response = response;
6407        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6408        proto::json::ResponsePayload::new(&response).deserialize::<ReloadTablesResponse, _>()
6409    }
6410
6411    /// <p>Removes metadata tags from a DMS resource.</p>
6412    async fn remove_tags_from_resource(
6413        &self,
6414        input: RemoveTagsFromResourceMessage,
6415    ) -> Result<RemoveTagsFromResourceResponse, RusotoError<RemoveTagsFromResourceError>> {
6416        let mut request = self.new_signed_request("POST", "/");
6417        request.add_header("x-amz-target", "AmazonDMSv20160101.RemoveTagsFromResource");
6418        let encoded = serde_json::to_string(&input).unwrap();
6419        request.set_payload(Some(encoded));
6420
6421        let response = self
6422            .sign_and_dispatch(request, RemoveTagsFromResourceError::from_response)
6423            .await?;
6424        let mut response = response;
6425        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6426        proto::json::ResponsePayload::new(&response)
6427            .deserialize::<RemoveTagsFromResourceResponse, _>()
6428    }
6429
6430    /// <p>Starts the replication task.</p> <p>For more information about AWS DMS tasks, see <a href="https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.html">Working with Migration Tasks </a> in the <i>AWS Database Migration Service User Guide.</i> </p>
6431    async fn start_replication_task(
6432        &self,
6433        input: StartReplicationTaskMessage,
6434    ) -> Result<StartReplicationTaskResponse, RusotoError<StartReplicationTaskError>> {
6435        let mut request = self.new_signed_request("POST", "/");
6436        request.add_header("x-amz-target", "AmazonDMSv20160101.StartReplicationTask");
6437        let encoded = serde_json::to_string(&input).unwrap();
6438        request.set_payload(Some(encoded));
6439
6440        let response = self
6441            .sign_and_dispatch(request, StartReplicationTaskError::from_response)
6442            .await?;
6443        let mut response = response;
6444        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6445        proto::json::ResponsePayload::new(&response)
6446            .deserialize::<StartReplicationTaskResponse, _>()
6447    }
6448
6449    /// <p> Starts the replication task assessment for unsupported data types in the source database. </p>
6450    async fn start_replication_task_assessment(
6451        &self,
6452        input: StartReplicationTaskAssessmentMessage,
6453    ) -> Result<
6454        StartReplicationTaskAssessmentResponse,
6455        RusotoError<StartReplicationTaskAssessmentError>,
6456    > {
6457        let mut request = self.new_signed_request("POST", "/");
6458        request.add_header(
6459            "x-amz-target",
6460            "AmazonDMSv20160101.StartReplicationTaskAssessment",
6461        );
6462        let encoded = serde_json::to_string(&input).unwrap();
6463        request.set_payload(Some(encoded));
6464
6465        let response = self
6466            .sign_and_dispatch(request, StartReplicationTaskAssessmentError::from_response)
6467            .await?;
6468        let mut response = response;
6469        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6470        proto::json::ResponsePayload::new(&response)
6471            .deserialize::<StartReplicationTaskAssessmentResponse, _>()
6472    }
6473
6474    /// <p><p>Stops the replication task.</p> <p/></p>
6475    async fn stop_replication_task(
6476        &self,
6477        input: StopReplicationTaskMessage,
6478    ) -> Result<StopReplicationTaskResponse, RusotoError<StopReplicationTaskError>> {
6479        let mut request = self.new_signed_request("POST", "/");
6480        request.add_header("x-amz-target", "AmazonDMSv20160101.StopReplicationTask");
6481        let encoded = serde_json::to_string(&input).unwrap();
6482        request.set_payload(Some(encoded));
6483
6484        let response = self
6485            .sign_and_dispatch(request, StopReplicationTaskError::from_response)
6486            .await?;
6487        let mut response = response;
6488        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6489        proto::json::ResponsePayload::new(&response).deserialize::<StopReplicationTaskResponse, _>()
6490    }
6491
6492    /// <p>Tests the connection between the replication instance and the endpoint.</p>
6493    async fn test_connection(
6494        &self,
6495        input: TestConnectionMessage,
6496    ) -> Result<TestConnectionResponse, RusotoError<TestConnectionError>> {
6497        let mut request = self.new_signed_request("POST", "/");
6498        request.add_header("x-amz-target", "AmazonDMSv20160101.TestConnection");
6499        let encoded = serde_json::to_string(&input).unwrap();
6500        request.set_payload(Some(encoded));
6501
6502        let response = self
6503            .sign_and_dispatch(request, TestConnectionError::from_response)
6504            .await?;
6505        let mut response = response;
6506        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
6507        proto::json::ResponsePayload::new(&response).deserialize::<TestConnectionResponse, _>()
6508    }
6509}