rusoto_iot/
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::param::{Params, ServiceParams};
23use rusoto_core::proto;
24use rusoto_core::signature::SignedRequest;
25#[allow(unused_imports)]
26use serde::{Deserialize, Serialize};
27use serde_json;
28/// <p>The criteria that determine when and how a job abort takes place.</p>
29#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
30pub struct AbortConfig {
31    /// <p>The list of criteria that determine when and how to abort the job.</p>
32    #[serde(rename = "criteriaList")]
33    pub criteria_list: Vec<AbortCriteria>,
34}
35
36/// <p>The criteria that determine when and how a job abort takes place.</p>
37#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
38pub struct AbortCriteria {
39    /// <p>The type of job action to take to initiate the job abort.</p>
40    #[serde(rename = "action")]
41    pub action: String,
42    /// <p>The type of job execution failures that can initiate a job abort.</p>
43    #[serde(rename = "failureType")]
44    pub failure_type: String,
45    /// <p>The minimum number of things which must receive job execution notifications before the job can be aborted.</p>
46    #[serde(rename = "minNumberOfExecutedThings")]
47    pub min_number_of_executed_things: i64,
48    /// <p>The minimum percentage of job execution failures that must occur to initiate the job abort.</p> <p>AWS IoT supports up to two digits after the decimal (for example, 10.9 and 10.99, but not 10.999).</p>
49    #[serde(rename = "thresholdPercentage")]
50    pub threshold_percentage: f64,
51}
52
53/// <p>The input for the AcceptCertificateTransfer operation.</p>
54#[derive(Clone, Debug, Default, PartialEq, Serialize)]
55#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
56pub struct AcceptCertificateTransferRequest {
57    /// <p>The ID of the certificate. (The last part of the certificate ARN contains the certificate ID.)</p>
58    #[serde(rename = "certificateId")]
59    pub certificate_id: String,
60    /// <p>Specifies whether the certificate is active.</p>
61    #[serde(rename = "setAsActive")]
62    #[serde(skip_serializing_if = "Option::is_none")]
63    pub set_as_active: Option<bool>,
64}
65
66/// <p>Describes the actions associated with a rule.</p>
67#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
68pub struct Action {
69    /// <p>Change the state of a CloudWatch alarm.</p>
70    #[serde(rename = "cloudwatchAlarm")]
71    #[serde(skip_serializing_if = "Option::is_none")]
72    pub cloudwatch_alarm: Option<CloudwatchAlarmAction>,
73    /// <p>Send data to CloudWatch Logs.</p>
74    #[serde(rename = "cloudwatchLogs")]
75    #[serde(skip_serializing_if = "Option::is_none")]
76    pub cloudwatch_logs: Option<CloudwatchLogsAction>,
77    /// <p>Capture a CloudWatch metric.</p>
78    #[serde(rename = "cloudwatchMetric")]
79    #[serde(skip_serializing_if = "Option::is_none")]
80    pub cloudwatch_metric: Option<CloudwatchMetricAction>,
81    /// <p>Write to a DynamoDB table.</p>
82    #[serde(rename = "dynamoDB")]
83    #[serde(skip_serializing_if = "Option::is_none")]
84    pub dynamo_db: Option<DynamoDBAction>,
85    /// <p>Write to a DynamoDB table. This is a new version of the DynamoDB action. It allows you to write each attribute in an MQTT message payload into a separate DynamoDB column.</p>
86    #[serde(rename = "dynamoDBv2")]
87    #[serde(skip_serializing_if = "Option::is_none")]
88    pub dynamo_d_bv_2: Option<DynamoDBv2Action>,
89    /// <p>Write data to an Amazon Elasticsearch Service domain.</p>
90    #[serde(rename = "elasticsearch")]
91    #[serde(skip_serializing_if = "Option::is_none")]
92    pub elasticsearch: Option<ElasticsearchAction>,
93    /// <p>Write to an Amazon Kinesis Firehose stream.</p>
94    #[serde(rename = "firehose")]
95    #[serde(skip_serializing_if = "Option::is_none")]
96    pub firehose: Option<FirehoseAction>,
97    /// <p>Send data to an HTTPS endpoint.</p>
98    #[serde(rename = "http")]
99    #[serde(skip_serializing_if = "Option::is_none")]
100    pub http: Option<HttpAction>,
101    /// <p>Sends message data to an AWS IoT Analytics channel.</p>
102    #[serde(rename = "iotAnalytics")]
103    #[serde(skip_serializing_if = "Option::is_none")]
104    pub iot_analytics: Option<IotAnalyticsAction>,
105    /// <p>Sends an input to an AWS IoT Events detector.</p>
106    #[serde(rename = "iotEvents")]
107    #[serde(skip_serializing_if = "Option::is_none")]
108    pub iot_events: Option<IotEventsAction>,
109    /// <p>Sends data from the MQTT message that triggered the rule to AWS IoT SiteWise asset properties.</p>
110    #[serde(rename = "iotSiteWise")]
111    #[serde(skip_serializing_if = "Option::is_none")]
112    pub iot_site_wise: Option<IotSiteWiseAction>,
113    /// <p>Write data to an Amazon Kinesis stream.</p>
114    #[serde(rename = "kinesis")]
115    #[serde(skip_serializing_if = "Option::is_none")]
116    pub kinesis: Option<KinesisAction>,
117    /// <p>Invoke a Lambda function.</p>
118    #[serde(rename = "lambda")]
119    #[serde(skip_serializing_if = "Option::is_none")]
120    pub lambda: Option<LambdaAction>,
121    /// <p>Publish to another MQTT topic.</p>
122    #[serde(rename = "republish")]
123    #[serde(skip_serializing_if = "Option::is_none")]
124    pub republish: Option<RepublishAction>,
125    /// <p>Write to an Amazon S3 bucket.</p>
126    #[serde(rename = "s3")]
127    #[serde(skip_serializing_if = "Option::is_none")]
128    pub s_3: Option<S3Action>,
129    /// <p>Send a message to a Salesforce IoT Cloud Input Stream.</p>
130    #[serde(rename = "salesforce")]
131    #[serde(skip_serializing_if = "Option::is_none")]
132    pub salesforce: Option<SalesforceAction>,
133    /// <p>Publish to an Amazon SNS topic.</p>
134    #[serde(rename = "sns")]
135    #[serde(skip_serializing_if = "Option::is_none")]
136    pub sns: Option<SnsAction>,
137    /// <p>Publish to an Amazon SQS queue.</p>
138    #[serde(rename = "sqs")]
139    #[serde(skip_serializing_if = "Option::is_none")]
140    pub sqs: Option<SqsAction>,
141    /// <p>Starts execution of a Step Functions state machine.</p>
142    #[serde(rename = "stepFunctions")]
143    #[serde(skip_serializing_if = "Option::is_none")]
144    pub step_functions: Option<StepFunctionsAction>,
145}
146
147/// <p>Information about an active Device Defender security profile behavior violation.</p>
148#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
149#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
150pub struct ActiveViolation {
151    /// <p>The behavior which is being violated.</p>
152    #[serde(rename = "behavior")]
153    #[serde(skip_serializing_if = "Option::is_none")]
154    pub behavior: Option<Behavior>,
155    /// <p>The time the most recent violation occurred.</p>
156    #[serde(rename = "lastViolationTime")]
157    #[serde(skip_serializing_if = "Option::is_none")]
158    pub last_violation_time: Option<f64>,
159    /// <p>The value of the metric (the measurement) which caused the most recent violation.</p>
160    #[serde(rename = "lastViolationValue")]
161    #[serde(skip_serializing_if = "Option::is_none")]
162    pub last_violation_value: Option<MetricValue>,
163    /// <p>The security profile whose behavior is in violation.</p>
164    #[serde(rename = "securityProfileName")]
165    #[serde(skip_serializing_if = "Option::is_none")]
166    pub security_profile_name: Option<String>,
167    /// <p>The name of the thing responsible for the active violation.</p>
168    #[serde(rename = "thingName")]
169    #[serde(skip_serializing_if = "Option::is_none")]
170    pub thing_name: Option<String>,
171    /// <p>The ID of the active violation.</p>
172    #[serde(rename = "violationId")]
173    #[serde(skip_serializing_if = "Option::is_none")]
174    pub violation_id: Option<String>,
175    /// <p>The time the violation started.</p>
176    #[serde(rename = "violationStartTime")]
177    #[serde(skip_serializing_if = "Option::is_none")]
178    pub violation_start_time: Option<f64>,
179}
180
181#[derive(Clone, Debug, Default, PartialEq, Serialize)]
182#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
183pub struct AddThingToBillingGroupRequest {
184    /// <p>The ARN of the billing group.</p>
185    #[serde(rename = "billingGroupArn")]
186    #[serde(skip_serializing_if = "Option::is_none")]
187    pub billing_group_arn: Option<String>,
188    /// <p>The name of the billing group.</p>
189    #[serde(rename = "billingGroupName")]
190    #[serde(skip_serializing_if = "Option::is_none")]
191    pub billing_group_name: Option<String>,
192    /// <p>The ARN of the thing to be added to the billing group.</p>
193    #[serde(rename = "thingArn")]
194    #[serde(skip_serializing_if = "Option::is_none")]
195    pub thing_arn: Option<String>,
196    /// <p>The name of the thing to be added to the billing group.</p>
197    #[serde(rename = "thingName")]
198    #[serde(skip_serializing_if = "Option::is_none")]
199    pub thing_name: Option<String>,
200}
201
202#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
203#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
204pub struct AddThingToBillingGroupResponse {}
205
206#[derive(Clone, Debug, Default, PartialEq, Serialize)]
207#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
208pub struct AddThingToThingGroupRequest {
209    /// <p>Override dynamic thing groups with static thing groups when 10-group limit is reached. If a thing belongs to 10 thing groups, and one or more of those groups are dynamic thing groups, adding a thing to a static group removes the thing from the last dynamic group.</p>
210    #[serde(rename = "overrideDynamicGroups")]
211    #[serde(skip_serializing_if = "Option::is_none")]
212    pub override_dynamic_groups: Option<bool>,
213    /// <p>The ARN of the thing to add to a group.</p>
214    #[serde(rename = "thingArn")]
215    #[serde(skip_serializing_if = "Option::is_none")]
216    pub thing_arn: Option<String>,
217    /// <p>The ARN of the group to which you are adding a thing.</p>
218    #[serde(rename = "thingGroupArn")]
219    #[serde(skip_serializing_if = "Option::is_none")]
220    pub thing_group_arn: Option<String>,
221    /// <p>The name of the group to which you are adding a thing.</p>
222    #[serde(rename = "thingGroupName")]
223    #[serde(skip_serializing_if = "Option::is_none")]
224    pub thing_group_name: Option<String>,
225    /// <p>The name of the thing to add to a group.</p>
226    #[serde(rename = "thingName")]
227    #[serde(skip_serializing_if = "Option::is_none")]
228    pub thing_name: Option<String>,
229}
230
231#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
232#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
233pub struct AddThingToThingGroupResponse {}
234
235/// <p>Parameters used when defining a mitigation action that move a set of things to a thing group.</p>
236#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
237pub struct AddThingsToThingGroupParams {
238    /// <p>Specifies if this mitigation action can move the things that triggered the mitigation action even if they are part of one or more dynamic things groups.</p>
239    #[serde(rename = "overrideDynamicGroups")]
240    #[serde(skip_serializing_if = "Option::is_none")]
241    pub override_dynamic_groups: Option<bool>,
242    /// <p>The list of groups to which you want to add the things that triggered the mitigation action. You can add a thing to a maximum of 10 groups, but you cannot add a thing to more than one group in the same hierarchy.</p>
243    #[serde(rename = "thingGroupNames")]
244    pub thing_group_names: Vec<String>,
245}
246
247/// <p>A structure containing the alert target ARN and the role ARN.</p>
248#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
249pub struct AlertTarget {
250    /// <p>The ARN of the notification target to which alerts are sent.</p>
251    #[serde(rename = "alertTargetArn")]
252    pub alert_target_arn: String,
253    /// <p>The ARN of the role that grants permission to send alerts to the notification target.</p>
254    #[serde(rename = "roleArn")]
255    pub role_arn: String,
256}
257
258/// <p>Contains information that allowed the authorization.</p>
259#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
260#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
261pub struct Allowed {
262    /// <p>A list of policies that allowed the authentication.</p>
263    #[serde(rename = "policies")]
264    #[serde(skip_serializing_if = "Option::is_none")]
265    pub policies: Option<Vec<Policy>>,
266}
267
268/// <p>An asset property timestamp entry containing the following information.</p>
269#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
270pub struct AssetPropertyTimestamp {
271    /// <p>Optional. A string that contains the nanosecond time offset. Accepts substitution templates.</p>
272    #[serde(rename = "offsetInNanos")]
273    #[serde(skip_serializing_if = "Option::is_none")]
274    pub offset_in_nanos: Option<String>,
275    /// <p>A string that contains the time in seconds since epoch. Accepts substitution templates.</p>
276    #[serde(rename = "timeInSeconds")]
277    pub time_in_seconds: String,
278}
279
280/// <p>An asset property value entry containing the following information.</p>
281#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
282pub struct AssetPropertyValue {
283    /// <p>Optional. A string that describes the quality of the value. Accepts substitution templates. Must be <code>GOOD</code>, <code>BAD</code>, or <code>UNCERTAIN</code>.</p>
284    #[serde(rename = "quality")]
285    #[serde(skip_serializing_if = "Option::is_none")]
286    pub quality: Option<String>,
287    /// <p>The asset property value timestamp.</p>
288    #[serde(rename = "timestamp")]
289    pub timestamp: AssetPropertyTimestamp,
290    /// <p>The value of the asset property.</p>
291    #[serde(rename = "value")]
292    pub value: AssetPropertyVariant,
293}
294
295/// <p>Contains an asset property value (of a single type).</p>
296#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
297pub struct AssetPropertyVariant {
298    /// <p>Optional. A string that contains the boolean value (<code>true</code> or <code>false</code>) of the value entry. Accepts substitution templates.</p>
299    #[serde(rename = "booleanValue")]
300    #[serde(skip_serializing_if = "Option::is_none")]
301    pub boolean_value: Option<String>,
302    /// <p>Optional. A string that contains the double value of the value entry. Accepts substitution templates.</p>
303    #[serde(rename = "doubleValue")]
304    #[serde(skip_serializing_if = "Option::is_none")]
305    pub double_value: Option<String>,
306    /// <p>Optional. A string that contains the integer value of the value entry. Accepts substitution templates.</p>
307    #[serde(rename = "integerValue")]
308    #[serde(skip_serializing_if = "Option::is_none")]
309    pub integer_value: Option<String>,
310    /// <p>Optional. The string value of the value entry. Accepts substitution templates.</p>
311    #[serde(rename = "stringValue")]
312    #[serde(skip_serializing_if = "Option::is_none")]
313    pub string_value: Option<String>,
314}
315
316#[derive(Clone, Debug, Default, PartialEq, Serialize)]
317#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
318pub struct AssociateTargetsWithJobRequest {
319    /// <p>An optional comment string describing why the job was associated with the targets.</p>
320    #[serde(rename = "comment")]
321    #[serde(skip_serializing_if = "Option::is_none")]
322    pub comment: Option<String>,
323    /// <p>The unique identifier you assigned to this job when it was created.</p>
324    #[serde(rename = "jobId")]
325    pub job_id: String,
326    /// <p>A list of thing group ARNs that define the targets of the job.</p>
327    #[serde(rename = "targets")]
328    pub targets: Vec<String>,
329}
330
331#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
332#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
333pub struct AssociateTargetsWithJobResponse {
334    /// <p>A short text description of the job.</p>
335    #[serde(rename = "description")]
336    #[serde(skip_serializing_if = "Option::is_none")]
337    pub description: Option<String>,
338    /// <p>An ARN identifying the job.</p>
339    #[serde(rename = "jobArn")]
340    #[serde(skip_serializing_if = "Option::is_none")]
341    pub job_arn: Option<String>,
342    /// <p>The unique identifier you assigned to this job when it was created.</p>
343    #[serde(rename = "jobId")]
344    #[serde(skip_serializing_if = "Option::is_none")]
345    pub job_id: Option<String>,
346}
347
348#[derive(Clone, Debug, Default, PartialEq, Serialize)]
349#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
350pub struct AttachPolicyRequest {
351    /// <p>The name of the policy to attach.</p>
352    #[serde(rename = "policyName")]
353    pub policy_name: String,
354    /// <p>The <a href="https://docs.aws.amazon.com/iot/latest/developerguide/security-iam.html">identity</a> to which the policy is attached.</p>
355    #[serde(rename = "target")]
356    pub target: String,
357}
358
359/// <p>The input for the AttachPrincipalPolicy operation.</p>
360#[derive(Clone, Debug, Default, PartialEq, Serialize)]
361#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
362pub struct AttachPrincipalPolicyRequest {
363    /// <p>The policy name.</p>
364    #[serde(rename = "policyName")]
365    pub policy_name: String,
366    /// <p>The principal, which can be a certificate ARN (as returned from the CreateCertificate operation) or an Amazon Cognito ID.</p>
367    #[serde(rename = "principal")]
368    pub principal: String,
369}
370
371#[derive(Clone, Debug, Default, PartialEq, Serialize)]
372#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
373pub struct AttachSecurityProfileRequest {
374    /// <p>The security profile that is attached.</p>
375    #[serde(rename = "securityProfileName")]
376    pub security_profile_name: String,
377    /// <p>The ARN of the target (thing group) to which the security profile is attached.</p>
378    #[serde(rename = "securityProfileTargetArn")]
379    pub security_profile_target_arn: String,
380}
381
382#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
383#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
384pub struct AttachSecurityProfileResponse {}
385
386/// <p>The input for the AttachThingPrincipal operation.</p>
387#[derive(Clone, Debug, Default, PartialEq, Serialize)]
388#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
389pub struct AttachThingPrincipalRequest {
390    /// <p>The principal, which can be a certificate ARN (as returned from the CreateCertificate operation) or an Amazon Cognito ID.</p>
391    #[serde(rename = "principal")]
392    pub principal: String,
393    /// <p>The name of the thing.</p>
394    #[serde(rename = "thingName")]
395    pub thing_name: String,
396}
397
398/// <p>The output from the AttachThingPrincipal operation.</p>
399#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
400#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
401pub struct AttachThingPrincipalResponse {}
402
403/// <p>The attribute payload.</p>
404#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
405pub struct AttributePayload {
406    /// <p>A JSON string containing up to three key-value pair in JSON format. For example:</p> <p> <code>{\"attributes\":{\"string1\":\"string2\"}}</code> </p>
407    #[serde(rename = "attributes")]
408    #[serde(skip_serializing_if = "Option::is_none")]
409    pub attributes: Option<::std::collections::HashMap<String, String>>,
410    /// <p><p>Specifies whether the list of attributes provided in the <code>AttributePayload</code> is merged with the attributes stored in the registry, instead of overwriting them.</p> <p>To remove an attribute, call <code>UpdateThing</code> with an empty attribute value.</p> <note> <p>The <code>merge</code> attribute is only valid when calling <code>UpdateThing</code> or <code>UpdateThingGroup</code>.</p> </note></p>
411    #[serde(rename = "merge")]
412    #[serde(skip_serializing_if = "Option::is_none")]
413    pub merge: Option<bool>,
414}
415
416/// <p>Which audit checks are enabled and disabled for this account.</p>
417#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
418pub struct AuditCheckConfiguration {
419    /// <p>True if this audit check is enabled for this account.</p>
420    #[serde(rename = "enabled")]
421    #[serde(skip_serializing_if = "Option::is_none")]
422    pub enabled: Option<bool>,
423}
424
425/// <p>Information about the audit check.</p>
426#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
427#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
428pub struct AuditCheckDetails {
429    /// <p>True if the check is complete and found all resources compliant.</p>
430    #[serde(rename = "checkCompliant")]
431    #[serde(skip_serializing_if = "Option::is_none")]
432    pub check_compliant: Option<bool>,
433    /// <p>The completion status of this check. One of "IN_PROGRESS", "WAITING_FOR_DATA_COLLECTION", "CANCELED", "COMPLETED_COMPLIANT", "COMPLETED_NON_COMPLIANT", or "FAILED".</p>
434    #[serde(rename = "checkRunStatus")]
435    #[serde(skip_serializing_if = "Option::is_none")]
436    pub check_run_status: Option<String>,
437    /// <p>The code of any error encountered when this check is performed during this audit. One of "INSUFFICIENT_PERMISSIONS" or "AUDIT_CHECK_DISABLED".</p>
438    #[serde(rename = "errorCode")]
439    #[serde(skip_serializing_if = "Option::is_none")]
440    pub error_code: Option<String>,
441    /// <p>The message associated with any error encountered when this check is performed during this audit.</p>
442    #[serde(rename = "message")]
443    #[serde(skip_serializing_if = "Option::is_none")]
444    pub message: Option<String>,
445    /// <p>The number of resources that were found noncompliant during the check.</p>
446    #[serde(rename = "nonCompliantResourcesCount")]
447    #[serde(skip_serializing_if = "Option::is_none")]
448    pub non_compliant_resources_count: Option<i64>,
449    /// <p>The number of resources on which the check was performed.</p>
450    #[serde(rename = "totalResourcesCount")]
451    #[serde(skip_serializing_if = "Option::is_none")]
452    pub total_resources_count: Option<i64>,
453}
454
455/// <p>The findings (results) of the audit.</p>
456#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
457#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
458pub struct AuditFinding {
459    /// <p>The audit check that generated this result.</p>
460    #[serde(rename = "checkName")]
461    #[serde(skip_serializing_if = "Option::is_none")]
462    pub check_name: Option<String>,
463    /// <p>A unique identifier for this set of audit findings. This identifier is used to apply mitigation tasks to one or more sets of findings.</p>
464    #[serde(rename = "findingId")]
465    #[serde(skip_serializing_if = "Option::is_none")]
466    pub finding_id: Option<String>,
467    /// <p>The time the result (finding) was discovered.</p>
468    #[serde(rename = "findingTime")]
469    #[serde(skip_serializing_if = "Option::is_none")]
470    pub finding_time: Option<f64>,
471    /// <p>The resource that was found to be noncompliant with the audit check.</p>
472    #[serde(rename = "nonCompliantResource")]
473    #[serde(skip_serializing_if = "Option::is_none")]
474    pub non_compliant_resource: Option<NonCompliantResource>,
475    /// <p>The reason the resource was noncompliant.</p>
476    #[serde(rename = "reasonForNonCompliance")]
477    #[serde(skip_serializing_if = "Option::is_none")]
478    pub reason_for_non_compliance: Option<String>,
479    /// <p>A code that indicates the reason that the resource was noncompliant.</p>
480    #[serde(rename = "reasonForNonComplianceCode")]
481    #[serde(skip_serializing_if = "Option::is_none")]
482    pub reason_for_non_compliance_code: Option<String>,
483    /// <p>The list of related resources.</p>
484    #[serde(rename = "relatedResources")]
485    #[serde(skip_serializing_if = "Option::is_none")]
486    pub related_resources: Option<Vec<RelatedResource>>,
487    /// <p>The severity of the result (finding).</p>
488    #[serde(rename = "severity")]
489    #[serde(skip_serializing_if = "Option::is_none")]
490    pub severity: Option<String>,
491    /// <p>The ID of the audit that generated this result (finding).</p>
492    #[serde(rename = "taskId")]
493    #[serde(skip_serializing_if = "Option::is_none")]
494    pub task_id: Option<String>,
495    /// <p>The time the audit started.</p>
496    #[serde(rename = "taskStartTime")]
497    #[serde(skip_serializing_if = "Option::is_none")]
498    pub task_start_time: Option<f64>,
499}
500
501/// <p>Returned by ListAuditMitigationActionsTask, this object contains information that describes a mitigation action that has been started.</p>
502#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
503#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
504pub struct AuditMitigationActionExecutionMetadata {
505    /// <p>The unique identifier for the mitigation action being applied by the task.</p>
506    #[serde(rename = "actionId")]
507    #[serde(skip_serializing_if = "Option::is_none")]
508    pub action_id: Option<String>,
509    /// <p>The friendly name of the mitigation action being applied by the task.</p>
510    #[serde(rename = "actionName")]
511    #[serde(skip_serializing_if = "Option::is_none")]
512    pub action_name: Option<String>,
513    /// <p>The date and time when the task was completed or canceled. Blank if the task is still running.</p>
514    #[serde(rename = "endTime")]
515    #[serde(skip_serializing_if = "Option::is_none")]
516    pub end_time: Option<f64>,
517    /// <p>If an error occurred, the code that indicates which type of error occurred.</p>
518    #[serde(rename = "errorCode")]
519    #[serde(skip_serializing_if = "Option::is_none")]
520    pub error_code: Option<String>,
521    /// <p>The unique identifier for the findings to which the task and associated mitigation action are applied.</p>
522    #[serde(rename = "findingId")]
523    #[serde(skip_serializing_if = "Option::is_none")]
524    pub finding_id: Option<String>,
525    /// <p>If an error occurred, a message that describes the error.</p>
526    #[serde(rename = "message")]
527    #[serde(skip_serializing_if = "Option::is_none")]
528    pub message: Option<String>,
529    /// <p>The date and time when the task was started.</p>
530    #[serde(rename = "startTime")]
531    #[serde(skip_serializing_if = "Option::is_none")]
532    pub start_time: Option<f64>,
533    /// <p>The current status of the task being executed.</p>
534    #[serde(rename = "status")]
535    #[serde(skip_serializing_if = "Option::is_none")]
536    pub status: Option<String>,
537    /// <p>The unique identifier for the task that applies the mitigation action.</p>
538    #[serde(rename = "taskId")]
539    #[serde(skip_serializing_if = "Option::is_none")]
540    pub task_id: Option<String>,
541}
542
543/// <p>Information about an audit mitigation actions task that is returned by <code>ListAuditMitigationActionsTasks</code>.</p>
544#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
545#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
546pub struct AuditMitigationActionsTaskMetadata {
547    /// <p>The time at which the audit mitigation actions task was started.</p>
548    #[serde(rename = "startTime")]
549    #[serde(skip_serializing_if = "Option::is_none")]
550    pub start_time: Option<f64>,
551    /// <p>The unique identifier for the task.</p>
552    #[serde(rename = "taskId")]
553    #[serde(skip_serializing_if = "Option::is_none")]
554    pub task_id: Option<String>,
555    /// <p>The current state of the audit mitigation actions task.</p>
556    #[serde(rename = "taskStatus")]
557    #[serde(skip_serializing_if = "Option::is_none")]
558    pub task_status: Option<String>,
559}
560
561/// <p>Used in MitigationActionParams, this information identifies the target findings to which the mitigation actions are applied. Only one entry appears.</p>
562#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
563pub struct AuditMitigationActionsTaskTarget {
564    /// <p>Specifies a filter in the form of an audit check and set of reason codes that identify the findings from the audit to which the audit mitigation actions task apply.</p>
565    #[serde(rename = "auditCheckToReasonCodeFilter")]
566    #[serde(skip_serializing_if = "Option::is_none")]
567    pub audit_check_to_reason_code_filter: Option<::std::collections::HashMap<String, Vec<String>>>,
568    /// <p>If the task will apply a mitigation action to findings from a specific audit, this value uniquely identifies the audit.</p>
569    #[serde(rename = "auditTaskId")]
570    #[serde(skip_serializing_if = "Option::is_none")]
571    pub audit_task_id: Option<String>,
572    /// <p>If the task will apply a mitigation action to one or more listed findings, this value uniquely identifies those findings.</p>
573    #[serde(rename = "findingIds")]
574    #[serde(skip_serializing_if = "Option::is_none")]
575    pub finding_ids: Option<Vec<String>>,
576}
577
578/// <p>Information about the targets to which audit notifications are sent.</p>
579#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
580pub struct AuditNotificationTarget {
581    /// <p>True if notifications to the target are enabled.</p>
582    #[serde(rename = "enabled")]
583    #[serde(skip_serializing_if = "Option::is_none")]
584    pub enabled: Option<bool>,
585    /// <p>The ARN of the role that grants permission to send notifications to the target.</p>
586    #[serde(rename = "roleArn")]
587    #[serde(skip_serializing_if = "Option::is_none")]
588    pub role_arn: Option<String>,
589    /// <p>The ARN of the target (SNS topic) to which audit notifications are sent.</p>
590    #[serde(rename = "targetArn")]
591    #[serde(skip_serializing_if = "Option::is_none")]
592    pub target_arn: Option<String>,
593}
594
595/// <p>The audits that were performed.</p>
596#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
597#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
598pub struct AuditTaskMetadata {
599    /// <p>The ID of this audit.</p>
600    #[serde(rename = "taskId")]
601    #[serde(skip_serializing_if = "Option::is_none")]
602    pub task_id: Option<String>,
603    /// <p>The status of this audit. One of "IN_PROGRESS", "COMPLETED", "FAILED", or "CANCELED".</p>
604    #[serde(rename = "taskStatus")]
605    #[serde(skip_serializing_if = "Option::is_none")]
606    pub task_status: Option<String>,
607    /// <p>The type of this audit. One of "ON_DEMAND_AUDIT_TASK" or "SCHEDULED_AUDIT_TASK".</p>
608    #[serde(rename = "taskType")]
609    #[serde(skip_serializing_if = "Option::is_none")]
610    pub task_type: Option<String>,
611}
612
613/// <p>A collection of authorization information.</p>
614#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
615pub struct AuthInfo {
616    /// <p>The type of action for which the principal is being authorized.</p>
617    #[serde(rename = "actionType")]
618    #[serde(skip_serializing_if = "Option::is_none")]
619    pub action_type: Option<String>,
620    /// <p>The resources for which the principal is being authorized to perform the specified action.</p>
621    #[serde(rename = "resources")]
622    pub resources: Vec<String>,
623}
624
625/// <p>The authorizer result.</p>
626#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
627#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
628pub struct AuthResult {
629    /// <p>The policies and statements that allowed the specified action.</p>
630    #[serde(rename = "allowed")]
631    #[serde(skip_serializing_if = "Option::is_none")]
632    pub allowed: Option<Allowed>,
633    /// <p>The final authorization decision of this scenario. Multiple statements are taken into account when determining the authorization decision. An explicit deny statement can override multiple allow statements.</p>
634    #[serde(rename = "authDecision")]
635    #[serde(skip_serializing_if = "Option::is_none")]
636    pub auth_decision: Option<String>,
637    /// <p>Authorization information.</p>
638    #[serde(rename = "authInfo")]
639    #[serde(skip_serializing_if = "Option::is_none")]
640    pub auth_info: Option<AuthInfo>,
641    /// <p>The policies and statements that denied the specified action.</p>
642    #[serde(rename = "denied")]
643    #[serde(skip_serializing_if = "Option::is_none")]
644    pub denied: Option<Denied>,
645    /// <p>Contains any missing context values found while evaluating policy.</p>
646    #[serde(rename = "missingContextValues")]
647    #[serde(skip_serializing_if = "Option::is_none")]
648    pub missing_context_values: Option<Vec<String>>,
649}
650
651/// <p>An object that specifies the authorization service for a domain.</p>
652#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
653pub struct AuthorizerConfig {
654    /// <p>A Boolean that specifies whether the domain configuration's authorization service can be overridden.</p>
655    #[serde(rename = "allowAuthorizerOverride")]
656    #[serde(skip_serializing_if = "Option::is_none")]
657    pub allow_authorizer_override: Option<bool>,
658    /// <p>The name of the authorization service for a domain configuration.</p>
659    #[serde(rename = "defaultAuthorizerName")]
660    #[serde(skip_serializing_if = "Option::is_none")]
661    pub default_authorizer_name: Option<String>,
662}
663
664/// <p>The authorizer description.</p>
665#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
666#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
667pub struct AuthorizerDescription {
668    /// <p>The authorizer ARN.</p>
669    #[serde(rename = "authorizerArn")]
670    #[serde(skip_serializing_if = "Option::is_none")]
671    pub authorizer_arn: Option<String>,
672    /// <p>The authorizer's Lambda function ARN.</p>
673    #[serde(rename = "authorizerFunctionArn")]
674    #[serde(skip_serializing_if = "Option::is_none")]
675    pub authorizer_function_arn: Option<String>,
676    /// <p>The authorizer name.</p>
677    #[serde(rename = "authorizerName")]
678    #[serde(skip_serializing_if = "Option::is_none")]
679    pub authorizer_name: Option<String>,
680    /// <p>The UNIX timestamp of when the authorizer was created.</p>
681    #[serde(rename = "creationDate")]
682    #[serde(skip_serializing_if = "Option::is_none")]
683    pub creation_date: Option<f64>,
684    /// <p>The UNIX timestamp of when the authorizer was last updated.</p>
685    #[serde(rename = "lastModifiedDate")]
686    #[serde(skip_serializing_if = "Option::is_none")]
687    pub last_modified_date: Option<f64>,
688    /// <p>Specifies whether AWS IoT validates the token signature in an authorization request.</p>
689    #[serde(rename = "signingDisabled")]
690    #[serde(skip_serializing_if = "Option::is_none")]
691    pub signing_disabled: Option<bool>,
692    /// <p>The status of the authorizer.</p>
693    #[serde(rename = "status")]
694    #[serde(skip_serializing_if = "Option::is_none")]
695    pub status: Option<String>,
696    /// <p>The key used to extract the token from the HTTP headers.</p>
697    #[serde(rename = "tokenKeyName")]
698    #[serde(skip_serializing_if = "Option::is_none")]
699    pub token_key_name: Option<String>,
700    /// <p>The public keys used to validate the token signature returned by your custom authentication service.</p>
701    #[serde(rename = "tokenSigningPublicKeys")]
702    #[serde(skip_serializing_if = "Option::is_none")]
703    pub token_signing_public_keys: Option<::std::collections::HashMap<String, String>>,
704}
705
706/// <p>The authorizer summary.</p>
707#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
708#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
709pub struct AuthorizerSummary {
710    /// <p>The authorizer ARN.</p>
711    #[serde(rename = "authorizerArn")]
712    #[serde(skip_serializing_if = "Option::is_none")]
713    pub authorizer_arn: Option<String>,
714    /// <p>The authorizer name.</p>
715    #[serde(rename = "authorizerName")]
716    #[serde(skip_serializing_if = "Option::is_none")]
717    pub authorizer_name: Option<String>,
718}
719
720/// <p>The criteria that determine when and how a job abort takes place.</p>
721#[derive(Clone, Debug, Default, PartialEq, Serialize)]
722#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
723pub struct AwsJobAbortConfig {
724    /// <p>The list of criteria that determine when and how to abort the job.</p>
725    #[serde(rename = "abortCriteriaList")]
726    pub abort_criteria_list: Vec<AwsJobAbortCriteria>,
727}
728
729/// <p>The criteria that determine when and how a job abort takes place.</p>
730#[derive(Clone, Debug, Default, PartialEq, Serialize)]
731#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
732pub struct AwsJobAbortCriteria {
733    /// <p>The type of job action to take to initiate the job abort.</p>
734    #[serde(rename = "action")]
735    pub action: String,
736    /// <p>The type of job execution failures that can initiate a job abort.</p>
737    #[serde(rename = "failureType")]
738    pub failure_type: String,
739    /// <p>The minimum number of things which must receive job execution notifications before the job can be aborted.</p>
740    #[serde(rename = "minNumberOfExecutedThings")]
741    pub min_number_of_executed_things: i64,
742    /// <p>The minimum percentage of job execution failures that must occur to initiate the job abort.</p> <p>AWS IoT supports up to two digits after the decimal (for example, 10.9 and 10.99, but not 10.999).</p>
743    #[serde(rename = "thresholdPercentage")]
744    pub threshold_percentage: f64,
745}
746
747/// <p>Configuration for the rollout of OTA updates.</p>
748#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
749pub struct AwsJobExecutionsRolloutConfig {
750    /// <p>The rate of increase for a job rollout. This parameter allows you to define an exponential rate increase for a job rollout.</p>
751    #[serde(rename = "exponentialRate")]
752    #[serde(skip_serializing_if = "Option::is_none")]
753    pub exponential_rate: Option<AwsJobExponentialRolloutRate>,
754    /// <p>The maximum number of OTA update job executions started per minute.</p>
755    #[serde(rename = "maximumPerMinute")]
756    #[serde(skip_serializing_if = "Option::is_none")]
757    pub maximum_per_minute: Option<i64>,
758}
759
760/// <p>The rate of increase for a job rollout. This parameter allows you to define an exponential rate increase for a job rollout.</p>
761#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
762pub struct AwsJobExponentialRolloutRate {
763    /// <p>The minimum number of things that will be notified of a pending job, per minute, at the start of the job rollout. This is the initial rate of the rollout.</p>
764    #[serde(rename = "baseRatePerMinute")]
765    pub base_rate_per_minute: i64,
766    /// <p>The rate of increase for a job rollout. The number of things notified is multiplied by this factor.</p>
767    #[serde(rename = "incrementFactor")]
768    pub increment_factor: f64,
769    /// <p>The criteria to initiate the increase in rate of rollout for a job.</p> <p>AWS IoT supports up to one digit after the decimal (for example, 1.5, but not 1.55).</p>
770    #[serde(rename = "rateIncreaseCriteria")]
771    pub rate_increase_criteria: AwsJobRateIncreaseCriteria,
772}
773
774/// <p>Configuration information for pre-signed URLs. Valid when <code>protocols</code> contains HTTP.</p>
775#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
776pub struct AwsJobPresignedUrlConfig {
777    /// <p>How long (in seconds) pre-signed URLs are valid. Valid values are 60 - 3600, the default value is 1800 seconds. Pre-signed URLs are generated when a request for the job document is received.</p>
778    #[serde(rename = "expiresInSec")]
779    #[serde(skip_serializing_if = "Option::is_none")]
780    pub expires_in_sec: Option<i64>,
781}
782
783/// <p>The criteria to initiate the increase in rate of rollout for a job.</p>
784#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
785pub struct AwsJobRateIncreaseCriteria {
786    /// <p>When this number of things have been notified, it will initiate an increase in the rollout rate.</p>
787    #[serde(rename = "numberOfNotifiedThings")]
788    #[serde(skip_serializing_if = "Option::is_none")]
789    pub number_of_notified_things: Option<i64>,
790    /// <p>When this number of things have succeeded in their job execution, it will initiate an increase in the rollout rate.</p>
791    #[serde(rename = "numberOfSucceededThings")]
792    #[serde(skip_serializing_if = "Option::is_none")]
793    pub number_of_succeeded_things: Option<i64>,
794}
795
796/// <p>Specifies the amount of time each device has to finish its execution of the job. A timer is started when the job execution status is set to <code>IN_PROGRESS</code>. If the job execution status is not set to another terminal state before the timer expires, it will be automatically set to <code>TIMED_OUT</code>.</p>
797#[derive(Clone, Debug, Default, PartialEq, Serialize)]
798#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
799pub struct AwsJobTimeoutConfig {
800    /// <p>Specifies the amount of time, in minutes, this device has to finish execution of this job. The timeout interval can be anywhere between 1 minute and 7 days (1 to 10080 minutes). The in progress timer can't be updated and will apply to all job executions for the job. Whenever a job execution remains in the IN_PROGRESS status for longer than this interval, the job execution will fail and switch to the terminal <code>TIMED_OUT</code> status.</p>
801    #[serde(rename = "inProgressTimeoutInMinutes")]
802    #[serde(skip_serializing_if = "Option::is_none")]
803    pub in_progress_timeout_in_minutes: Option<i64>,
804}
805
806/// <p>A Device Defender security profile behavior.</p>
807#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
808pub struct Behavior {
809    /// <p>The criteria that determine if a device is behaving normally in regard to the <code>metric</code>.</p>
810    #[serde(rename = "criteria")]
811    #[serde(skip_serializing_if = "Option::is_none")]
812    pub criteria: Option<BehaviorCriteria>,
813    /// <p>What is measured by the behavior.</p>
814    #[serde(rename = "metric")]
815    #[serde(skip_serializing_if = "Option::is_none")]
816    pub metric: Option<String>,
817    /// <p>The dimension for a metric in your behavior. For example, using a <code>TOPIC_FILTER</code> dimension, you can narrow down the scope of the metric only to MQTT topics whose name match the pattern specified in the dimension.</p>
818    #[serde(rename = "metricDimension")]
819    #[serde(skip_serializing_if = "Option::is_none")]
820    pub metric_dimension: Option<MetricDimension>,
821    /// <p>The name you have given to the behavior.</p>
822    #[serde(rename = "name")]
823    pub name: String,
824}
825
826/// <p>The criteria by which the behavior is determined to be normal.</p>
827#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
828pub struct BehaviorCriteria {
829    /// <p>The operator that relates the thing measured (<code>metric</code>) to the criteria (containing a <code>value</code> or <code>statisticalThreshold</code>).</p>
830    #[serde(rename = "comparisonOperator")]
831    #[serde(skip_serializing_if = "Option::is_none")]
832    pub comparison_operator: Option<String>,
833    /// <p>If a device is in violation of the behavior for the specified number of consecutive datapoints, an alarm occurs. If not specified, the default is 1.</p>
834    #[serde(rename = "consecutiveDatapointsToAlarm")]
835    #[serde(skip_serializing_if = "Option::is_none")]
836    pub consecutive_datapoints_to_alarm: Option<i64>,
837    /// <p>If an alarm has occurred and the offending device is no longer in violation of the behavior for the specified number of consecutive datapoints, the alarm is cleared. If not specified, the default is 1.</p>
838    #[serde(rename = "consecutiveDatapointsToClear")]
839    #[serde(skip_serializing_if = "Option::is_none")]
840    pub consecutive_datapoints_to_clear: Option<i64>,
841    /// <p>Use this to specify the time duration over which the behavior is evaluated, for those criteria which have a time dimension (for example, <code>NUM_MESSAGES_SENT</code>). For a <code>statisticalThreshhold</code> metric comparison, measurements from all devices are accumulated over this time duration before being used to calculate percentiles, and later, measurements from an individual device are also accumulated over this time duration before being given a percentile rank.</p>
842    #[serde(rename = "durationSeconds")]
843    #[serde(skip_serializing_if = "Option::is_none")]
844    pub duration_seconds: Option<i64>,
845    /// <p>A statistical ranking (percentile) which indicates a threshold value by which a behavior is determined to be in compliance or in violation of the behavior.</p>
846    #[serde(rename = "statisticalThreshold")]
847    #[serde(skip_serializing_if = "Option::is_none")]
848    pub statistical_threshold: Option<StatisticalThreshold>,
849    /// <p>The value to be compared with the <code>metric</code>.</p>
850    #[serde(rename = "value")]
851    #[serde(skip_serializing_if = "Option::is_none")]
852    pub value: Option<MetricValue>,
853}
854
855/// <p>Additional information about the billing group.</p>
856#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
857#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
858pub struct BillingGroupMetadata {
859    /// <p>The date the billing group was created.</p>
860    #[serde(rename = "creationDate")]
861    #[serde(skip_serializing_if = "Option::is_none")]
862    pub creation_date: Option<f64>,
863}
864
865/// <p>The properties of a billing group.</p>
866#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
867pub struct BillingGroupProperties {
868    /// <p>The description of the billing group.</p>
869    #[serde(rename = "billingGroupDescription")]
870    #[serde(skip_serializing_if = "Option::is_none")]
871    pub billing_group_description: Option<String>,
872}
873
874/// <p>A CA certificate.</p>
875#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
876#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
877pub struct CACertificate {
878    /// <p>The ARN of the CA certificate.</p>
879    #[serde(rename = "certificateArn")]
880    #[serde(skip_serializing_if = "Option::is_none")]
881    pub certificate_arn: Option<String>,
882    /// <p>The ID of the CA certificate.</p>
883    #[serde(rename = "certificateId")]
884    #[serde(skip_serializing_if = "Option::is_none")]
885    pub certificate_id: Option<String>,
886    /// <p>The date the CA certificate was created.</p>
887    #[serde(rename = "creationDate")]
888    #[serde(skip_serializing_if = "Option::is_none")]
889    pub creation_date: Option<f64>,
890    /// <p>The status of the CA certificate.</p> <p>The status value REGISTER_INACTIVE is deprecated and should not be used.</p>
891    #[serde(rename = "status")]
892    #[serde(skip_serializing_if = "Option::is_none")]
893    pub status: Option<String>,
894}
895
896/// <p>Describes a CA certificate.</p>
897#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
898#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
899pub struct CACertificateDescription {
900    /// <p>Whether the CA certificate configured for auto registration of device certificates. Valid values are "ENABLE" and "DISABLE"</p>
901    #[serde(rename = "autoRegistrationStatus")]
902    #[serde(skip_serializing_if = "Option::is_none")]
903    pub auto_registration_status: Option<String>,
904    /// <p>The CA certificate ARN.</p>
905    #[serde(rename = "certificateArn")]
906    #[serde(skip_serializing_if = "Option::is_none")]
907    pub certificate_arn: Option<String>,
908    /// <p>The CA certificate ID.</p>
909    #[serde(rename = "certificateId")]
910    #[serde(skip_serializing_if = "Option::is_none")]
911    pub certificate_id: Option<String>,
912    /// <p>The CA certificate data, in PEM format.</p>
913    #[serde(rename = "certificatePem")]
914    #[serde(skip_serializing_if = "Option::is_none")]
915    pub certificate_pem: Option<String>,
916    /// <p>The date the CA certificate was created.</p>
917    #[serde(rename = "creationDate")]
918    #[serde(skip_serializing_if = "Option::is_none")]
919    pub creation_date: Option<f64>,
920    /// <p>The customer version of the CA certificate.</p>
921    #[serde(rename = "customerVersion")]
922    #[serde(skip_serializing_if = "Option::is_none")]
923    pub customer_version: Option<i64>,
924    /// <p>The generation ID of the CA certificate.</p>
925    #[serde(rename = "generationId")]
926    #[serde(skip_serializing_if = "Option::is_none")]
927    pub generation_id: Option<String>,
928    /// <p>The date the CA certificate was last modified.</p>
929    #[serde(rename = "lastModifiedDate")]
930    #[serde(skip_serializing_if = "Option::is_none")]
931    pub last_modified_date: Option<f64>,
932    /// <p>The owner of the CA certificate.</p>
933    #[serde(rename = "ownedBy")]
934    #[serde(skip_serializing_if = "Option::is_none")]
935    pub owned_by: Option<String>,
936    /// <p>The status of a CA certificate.</p>
937    #[serde(rename = "status")]
938    #[serde(skip_serializing_if = "Option::is_none")]
939    pub status: Option<String>,
940    /// <p>When the CA certificate is valid.</p>
941    #[serde(rename = "validity")]
942    #[serde(skip_serializing_if = "Option::is_none")]
943    pub validity: Option<CertificateValidity>,
944}
945
946#[derive(Clone, Debug, Default, PartialEq, Serialize)]
947#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
948pub struct CancelAuditMitigationActionsTaskRequest {
949    /// <p>The unique identifier for the task that you want to cancel. </p>
950    #[serde(rename = "taskId")]
951    pub task_id: String,
952}
953
954#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
955#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
956pub struct CancelAuditMitigationActionsTaskResponse {}
957
958#[derive(Clone, Debug, Default, PartialEq, Serialize)]
959#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
960pub struct CancelAuditTaskRequest {
961    /// <p>The ID of the audit you want to cancel. You can only cancel an audit that is "IN_PROGRESS".</p>
962    #[serde(rename = "taskId")]
963    pub task_id: String,
964}
965
966#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
967#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
968pub struct CancelAuditTaskResponse {}
969
970/// <p>The input for the CancelCertificateTransfer operation.</p>
971#[derive(Clone, Debug, Default, PartialEq, Serialize)]
972#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
973pub struct CancelCertificateTransferRequest {
974    /// <p>The ID of the certificate. (The last part of the certificate ARN contains the certificate ID.)</p>
975    #[serde(rename = "certificateId")]
976    pub certificate_id: String,
977}
978
979#[derive(Clone, Debug, Default, PartialEq, Serialize)]
980#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
981pub struct CancelJobExecutionRequest {
982    /// <p>(Optional) The expected current version of the job execution. Each time you update the job execution, its version is incremented. If the version of the job execution stored in Jobs does not match, the update is rejected with a VersionMismatch error, and an ErrorResponse that contains the current job execution status data is returned. (This makes it unnecessary to perform a separate DescribeJobExecution request in order to obtain the job execution status data.)</p>
983    #[serde(rename = "expectedVersion")]
984    #[serde(skip_serializing_if = "Option::is_none")]
985    pub expected_version: Option<i64>,
986    /// <p>(Optional) If <code>true</code> the job execution will be canceled if it has status IN_PROGRESS or QUEUED, otherwise the job execution will be canceled only if it has status QUEUED. If you attempt to cancel a job execution that is IN_PROGRESS, and you do not set <code>force</code> to <code>true</code>, then an <code>InvalidStateTransitionException</code> will be thrown. The default is <code>false</code>.</p> <p>Canceling a job execution which is "IN_PROGRESS", will cause the device to be unable to update the job execution status. Use caution and ensure that the device is able to recover to a valid state.</p>
987    #[serde(rename = "force")]
988    #[serde(skip_serializing_if = "Option::is_none")]
989    pub force: Option<bool>,
990    /// <p>The ID of the job to be canceled.</p>
991    #[serde(rename = "jobId")]
992    pub job_id: String,
993    /// <p>A collection of name/value pairs that describe the status of the job execution. If not specified, the statusDetails are unchanged. You can specify at most 10 name/value pairs.</p>
994    #[serde(rename = "statusDetails")]
995    #[serde(skip_serializing_if = "Option::is_none")]
996    pub status_details: Option<::std::collections::HashMap<String, String>>,
997    /// <p>The name of the thing whose execution of the job will be canceled.</p>
998    #[serde(rename = "thingName")]
999    pub thing_name: String,
1000}
1001
1002#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1003#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1004pub struct CancelJobRequest {
1005    /// <p>An optional comment string describing why the job was canceled.</p>
1006    #[serde(rename = "comment")]
1007    #[serde(skip_serializing_if = "Option::is_none")]
1008    pub comment: Option<String>,
1009    /// <p>(Optional) If <code>true</code> job executions with status "IN_PROGRESS" and "QUEUED" are canceled, otherwise only job executions with status "QUEUED" are canceled. The default is <code>false</code>.</p> <p>Canceling a job which is "IN_PROGRESS", will cause a device which is executing the job to be unable to update the job execution status. Use caution and ensure that each device executing a job which is canceled is able to recover to a valid state.</p>
1010    #[serde(rename = "force")]
1011    #[serde(skip_serializing_if = "Option::is_none")]
1012    pub force: Option<bool>,
1013    /// <p>The unique identifier you assigned to this job when it was created.</p>
1014    #[serde(rename = "jobId")]
1015    pub job_id: String,
1016    /// <p>(Optional)A reason code string that explains why the job was canceled.</p>
1017    #[serde(rename = "reasonCode")]
1018    #[serde(skip_serializing_if = "Option::is_none")]
1019    pub reason_code: Option<String>,
1020}
1021
1022#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1023#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1024pub struct CancelJobResponse {
1025    /// <p>A short text description of the job.</p>
1026    #[serde(rename = "description")]
1027    #[serde(skip_serializing_if = "Option::is_none")]
1028    pub description: Option<String>,
1029    /// <p>The job ARN.</p>
1030    #[serde(rename = "jobArn")]
1031    #[serde(skip_serializing_if = "Option::is_none")]
1032    pub job_arn: Option<String>,
1033    /// <p>The unique identifier you assigned to this job when it was created.</p>
1034    #[serde(rename = "jobId")]
1035    #[serde(skip_serializing_if = "Option::is_none")]
1036    pub job_id: Option<String>,
1037}
1038
1039/// <p>Information about a certificate.</p>
1040#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1041#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1042pub struct Certificate {
1043    /// <p>The ARN of the certificate.</p>
1044    #[serde(rename = "certificateArn")]
1045    #[serde(skip_serializing_if = "Option::is_none")]
1046    pub certificate_arn: Option<String>,
1047    /// <p>The ID of the certificate. (The last part of the certificate ARN contains the certificate ID.)</p>
1048    #[serde(rename = "certificateId")]
1049    #[serde(skip_serializing_if = "Option::is_none")]
1050    pub certificate_id: Option<String>,
1051    /// <p>The mode of the certificate.</p>
1052    #[serde(rename = "certificateMode")]
1053    #[serde(skip_serializing_if = "Option::is_none")]
1054    pub certificate_mode: Option<String>,
1055    /// <p>The date and time the certificate was created.</p>
1056    #[serde(rename = "creationDate")]
1057    #[serde(skip_serializing_if = "Option::is_none")]
1058    pub creation_date: Option<f64>,
1059    /// <p>The status of the certificate.</p> <p>The status value REGISTER_INACTIVE is deprecated and should not be used.</p>
1060    #[serde(rename = "status")]
1061    #[serde(skip_serializing_if = "Option::is_none")]
1062    pub status: Option<String>,
1063}
1064
1065/// <p>Describes a certificate.</p>
1066#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1067#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1068pub struct CertificateDescription {
1069    /// <p>The certificate ID of the CA certificate used to sign this certificate.</p>
1070    #[serde(rename = "caCertificateId")]
1071    #[serde(skip_serializing_if = "Option::is_none")]
1072    pub ca_certificate_id: Option<String>,
1073    /// <p>The ARN of the certificate.</p>
1074    #[serde(rename = "certificateArn")]
1075    #[serde(skip_serializing_if = "Option::is_none")]
1076    pub certificate_arn: Option<String>,
1077    /// <p>The ID of the certificate.</p>
1078    #[serde(rename = "certificateId")]
1079    #[serde(skip_serializing_if = "Option::is_none")]
1080    pub certificate_id: Option<String>,
1081    /// <p>The mode of the certificate.</p>
1082    #[serde(rename = "certificateMode")]
1083    #[serde(skip_serializing_if = "Option::is_none")]
1084    pub certificate_mode: Option<String>,
1085    /// <p>The certificate data, in PEM format.</p>
1086    #[serde(rename = "certificatePem")]
1087    #[serde(skip_serializing_if = "Option::is_none")]
1088    pub certificate_pem: Option<String>,
1089    /// <p>The date and time the certificate was created.</p>
1090    #[serde(rename = "creationDate")]
1091    #[serde(skip_serializing_if = "Option::is_none")]
1092    pub creation_date: Option<f64>,
1093    /// <p>The customer version of the certificate.</p>
1094    #[serde(rename = "customerVersion")]
1095    #[serde(skip_serializing_if = "Option::is_none")]
1096    pub customer_version: Option<i64>,
1097    /// <p>The generation ID of the certificate.</p>
1098    #[serde(rename = "generationId")]
1099    #[serde(skip_serializing_if = "Option::is_none")]
1100    pub generation_id: Option<String>,
1101    /// <p>The date and time the certificate was last modified.</p>
1102    #[serde(rename = "lastModifiedDate")]
1103    #[serde(skip_serializing_if = "Option::is_none")]
1104    pub last_modified_date: Option<f64>,
1105    /// <p>The ID of the AWS account that owns the certificate.</p>
1106    #[serde(rename = "ownedBy")]
1107    #[serde(skip_serializing_if = "Option::is_none")]
1108    pub owned_by: Option<String>,
1109    /// <p>The ID of the AWS account of the previous owner of the certificate.</p>
1110    #[serde(rename = "previousOwnedBy")]
1111    #[serde(skip_serializing_if = "Option::is_none")]
1112    pub previous_owned_by: Option<String>,
1113    /// <p>The status of the certificate.</p>
1114    #[serde(rename = "status")]
1115    #[serde(skip_serializing_if = "Option::is_none")]
1116    pub status: Option<String>,
1117    /// <p>The transfer data.</p>
1118    #[serde(rename = "transferData")]
1119    #[serde(skip_serializing_if = "Option::is_none")]
1120    pub transfer_data: Option<TransferData>,
1121    /// <p>When the certificate is valid.</p>
1122    #[serde(rename = "validity")]
1123    #[serde(skip_serializing_if = "Option::is_none")]
1124    pub validity: Option<CertificateValidity>,
1125}
1126
1127/// <p>When the certificate is valid.</p>
1128#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1129#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1130pub struct CertificateValidity {
1131    /// <p>The certificate is not valid after this date.</p>
1132    #[serde(rename = "notAfter")]
1133    #[serde(skip_serializing_if = "Option::is_none")]
1134    pub not_after: Option<f64>,
1135    /// <p>The certificate is not valid before this date.</p>
1136    #[serde(rename = "notBefore")]
1137    #[serde(skip_serializing_if = "Option::is_none")]
1138    pub not_before: Option<f64>,
1139}
1140
1141#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1142#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1143pub struct ClearDefaultAuthorizerRequest {}
1144
1145#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1146#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1147pub struct ClearDefaultAuthorizerResponse {}
1148
1149/// <p>Describes an action that updates a CloudWatch alarm.</p>
1150#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1151pub struct CloudwatchAlarmAction {
1152    /// <p>The CloudWatch alarm name.</p>
1153    #[serde(rename = "alarmName")]
1154    pub alarm_name: String,
1155    /// <p>The IAM role that allows access to the CloudWatch alarm.</p>
1156    #[serde(rename = "roleArn")]
1157    pub role_arn: String,
1158    /// <p>The reason for the alarm change.</p>
1159    #[serde(rename = "stateReason")]
1160    pub state_reason: String,
1161    /// <p>The value of the alarm state. Acceptable values are: OK, ALARM, INSUFFICIENT_DATA.</p>
1162    #[serde(rename = "stateValue")]
1163    pub state_value: String,
1164}
1165
1166/// <p>Describes an action that sends data to CloudWatch Logs.</p>
1167#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1168pub struct CloudwatchLogsAction {
1169    /// <p>The CloudWatch log group to which the action sends data.</p>
1170    #[serde(rename = "logGroupName")]
1171    pub log_group_name: String,
1172    /// <p>The IAM role that allows access to the CloudWatch log.</p>
1173    #[serde(rename = "roleArn")]
1174    pub role_arn: String,
1175}
1176
1177/// <p>Describes an action that captures a CloudWatch metric.</p>
1178#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1179pub struct CloudwatchMetricAction {
1180    /// <p>The CloudWatch metric name.</p>
1181    #[serde(rename = "metricName")]
1182    pub metric_name: String,
1183    /// <p>The CloudWatch metric namespace name.</p>
1184    #[serde(rename = "metricNamespace")]
1185    pub metric_namespace: String,
1186    /// <p>An optional <a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/cloudwatch_concepts.html#about_timestamp">Unix timestamp</a>.</p>
1187    #[serde(rename = "metricTimestamp")]
1188    #[serde(skip_serializing_if = "Option::is_none")]
1189    pub metric_timestamp: Option<String>,
1190    /// <p>The <a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/cloudwatch_concepts.html#Unit">metric unit</a> supported by CloudWatch.</p>
1191    #[serde(rename = "metricUnit")]
1192    pub metric_unit: String,
1193    /// <p>The CloudWatch metric value.</p>
1194    #[serde(rename = "metricValue")]
1195    pub metric_value: String,
1196    /// <p>The IAM role that allows access to the CloudWatch metric.</p>
1197    #[serde(rename = "roleArn")]
1198    pub role_arn: String,
1199}
1200
1201/// <p>Describes the method to use when code signing a file.</p>
1202#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1203pub struct CodeSigning {
1204    /// <p>The ID of the AWSSignerJob which was created to sign the file.</p>
1205    #[serde(rename = "awsSignerJobId")]
1206    #[serde(skip_serializing_if = "Option::is_none")]
1207    pub aws_signer_job_id: Option<String>,
1208    /// <p>A custom method for code signing a file.</p>
1209    #[serde(rename = "customCodeSigning")]
1210    #[serde(skip_serializing_if = "Option::is_none")]
1211    pub custom_code_signing: Option<CustomCodeSigning>,
1212    /// <p>Describes the code-signing job.</p>
1213    #[serde(rename = "startSigningJobParameter")]
1214    #[serde(skip_serializing_if = "Option::is_none")]
1215    pub start_signing_job_parameter: Option<StartSigningJobParameter>,
1216}
1217
1218/// <p>Describes the certificate chain being used when code signing a file.</p>
1219#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1220pub struct CodeSigningCertificateChain {
1221    /// <p>The name of the certificate.</p>
1222    #[serde(rename = "certificateName")]
1223    #[serde(skip_serializing_if = "Option::is_none")]
1224    pub certificate_name: Option<String>,
1225    /// <p>A base64 encoded binary representation of the code signing certificate chain.</p>
1226    #[serde(rename = "inlineDocument")]
1227    #[serde(skip_serializing_if = "Option::is_none")]
1228    pub inline_document: Option<String>,
1229}
1230
1231/// <p>Describes the signature for a file.</p>
1232#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1233pub struct CodeSigningSignature {
1234    /// <p>A base64 encoded binary representation of the code signing signature.</p>
1235    #[serde(rename = "inlineDocument")]
1236    #[serde(
1237        deserialize_with = "::rusoto_core::serialization::SerdeBlob::deserialize_blob",
1238        serialize_with = "::rusoto_core::serialization::SerdeBlob::serialize_blob",
1239        default
1240    )]
1241    #[serde(skip_serializing_if = "Option::is_none")]
1242    pub inline_document: Option<bytes::Bytes>,
1243}
1244
1245/// <p>Configuration.</p>
1246#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1247pub struct Configuration {
1248    /// <p>True to enable the configuration.</p>
1249    #[serde(rename = "Enabled")]
1250    #[serde(skip_serializing_if = "Option::is_none")]
1251    pub enabled: Option<bool>,
1252}
1253
1254#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1255#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1256pub struct ConfirmTopicRuleDestinationRequest {
1257    /// <p>The token used to confirm ownership or access to the topic rule confirmation URL.</p>
1258    #[serde(rename = "confirmationToken")]
1259    pub confirmation_token: String,
1260}
1261
1262#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1263#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1264pub struct ConfirmTopicRuleDestinationResponse {}
1265
1266#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1267#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1268pub struct CreateAuthorizerRequest {
1269    /// <p>The ARN of the authorizer's Lambda function.</p>
1270    #[serde(rename = "authorizerFunctionArn")]
1271    pub authorizer_function_arn: String,
1272    /// <p>The authorizer name.</p>
1273    #[serde(rename = "authorizerName")]
1274    pub authorizer_name: String,
1275    /// <p>Specifies whether AWS IoT validates the token signature in an authorization request.</p>
1276    #[serde(rename = "signingDisabled")]
1277    #[serde(skip_serializing_if = "Option::is_none")]
1278    pub signing_disabled: Option<bool>,
1279    /// <p>The status of the create authorizer request.</p>
1280    #[serde(rename = "status")]
1281    #[serde(skip_serializing_if = "Option::is_none")]
1282    pub status: Option<String>,
1283    /// <p><p>Metadata which can be used to manage the custom authorizer.</p> <note> <p>For URI Request parameters use format: ...key1=value1&amp;key2=value2...</p> <p>For the CLI command-line parameter use format: &amp;&amp;tags &quot;key1=value1&amp;key2=value2...&quot;</p> <p>For the cli-input-json file use format: &quot;tags&quot;: &quot;key1=value1&amp;key2=value2...&quot;</p> </note></p>
1284    #[serde(rename = "tags")]
1285    #[serde(skip_serializing_if = "Option::is_none")]
1286    pub tags: Option<Vec<Tag>>,
1287    /// <p>The name of the token key used to extract the token from the HTTP headers.</p>
1288    #[serde(rename = "tokenKeyName")]
1289    #[serde(skip_serializing_if = "Option::is_none")]
1290    pub token_key_name: Option<String>,
1291    /// <p>The public keys used to verify the digital signature returned by your custom authentication service.</p>
1292    #[serde(rename = "tokenSigningPublicKeys")]
1293    #[serde(skip_serializing_if = "Option::is_none")]
1294    pub token_signing_public_keys: Option<::std::collections::HashMap<String, String>>,
1295}
1296
1297#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1298#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1299pub struct CreateAuthorizerResponse {
1300    /// <p>The authorizer ARN.</p>
1301    #[serde(rename = "authorizerArn")]
1302    #[serde(skip_serializing_if = "Option::is_none")]
1303    pub authorizer_arn: Option<String>,
1304    /// <p>The authorizer's name.</p>
1305    #[serde(rename = "authorizerName")]
1306    #[serde(skip_serializing_if = "Option::is_none")]
1307    pub authorizer_name: Option<String>,
1308}
1309
1310#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1311#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1312pub struct CreateBillingGroupRequest {
1313    /// <p>The name you wish to give to the billing group.</p>
1314    #[serde(rename = "billingGroupName")]
1315    pub billing_group_name: String,
1316    /// <p>The properties of the billing group.</p>
1317    #[serde(rename = "billingGroupProperties")]
1318    #[serde(skip_serializing_if = "Option::is_none")]
1319    pub billing_group_properties: Option<BillingGroupProperties>,
1320    /// <p>Metadata which can be used to manage the billing group.</p>
1321    #[serde(rename = "tags")]
1322    #[serde(skip_serializing_if = "Option::is_none")]
1323    pub tags: Option<Vec<Tag>>,
1324}
1325
1326#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1327#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1328pub struct CreateBillingGroupResponse {
1329    /// <p>The ARN of the billing group.</p>
1330    #[serde(rename = "billingGroupArn")]
1331    #[serde(skip_serializing_if = "Option::is_none")]
1332    pub billing_group_arn: Option<String>,
1333    /// <p>The ID of the billing group.</p>
1334    #[serde(rename = "billingGroupId")]
1335    #[serde(skip_serializing_if = "Option::is_none")]
1336    pub billing_group_id: Option<String>,
1337    /// <p>The name you gave to the billing group.</p>
1338    #[serde(rename = "billingGroupName")]
1339    #[serde(skip_serializing_if = "Option::is_none")]
1340    pub billing_group_name: Option<String>,
1341}
1342
1343/// <p>The input for the CreateCertificateFromCsr operation.</p>
1344#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1345#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1346pub struct CreateCertificateFromCsrRequest {
1347    /// <p>The certificate signing request (CSR).</p>
1348    #[serde(rename = "certificateSigningRequest")]
1349    pub certificate_signing_request: String,
1350    /// <p>Specifies whether the certificate is active.</p>
1351    #[serde(rename = "setAsActive")]
1352    #[serde(skip_serializing_if = "Option::is_none")]
1353    pub set_as_active: Option<bool>,
1354}
1355
1356/// <p>The output from the CreateCertificateFromCsr operation.</p>
1357#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1358#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1359pub struct CreateCertificateFromCsrResponse {
1360    /// <p>The Amazon Resource Name (ARN) of the certificate. You can use the ARN as a principal for policy operations.</p>
1361    #[serde(rename = "certificateArn")]
1362    #[serde(skip_serializing_if = "Option::is_none")]
1363    pub certificate_arn: Option<String>,
1364    /// <p>The ID of the certificate. Certificate management operations only take a certificateId.</p>
1365    #[serde(rename = "certificateId")]
1366    #[serde(skip_serializing_if = "Option::is_none")]
1367    pub certificate_id: Option<String>,
1368    /// <p>The certificate data, in PEM format.</p>
1369    #[serde(rename = "certificatePem")]
1370    #[serde(skip_serializing_if = "Option::is_none")]
1371    pub certificate_pem: Option<String>,
1372}
1373
1374#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1375#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1376pub struct CreateDimensionRequest {
1377    /// <p>Each dimension must have a unique client request token. If you try to create a new dimension with the same token as a dimension that already exists, an exception occurs. If you omit this value, AWS SDKs will automatically generate a unique client request.</p>
1378    #[serde(rename = "clientRequestToken")]
1379    pub client_request_token: String,
1380    /// <p>A unique identifier for the dimension. Choose something that describes the type and value to make it easy to remember what it does.</p>
1381    #[serde(rename = "name")]
1382    pub name: String,
1383    /// <p>Specifies the value or list of values for the dimension. For <code>TOPIC_FILTER</code> dimensions, this is a pattern used to match the MQTT topic (for example, "admin/#").</p>
1384    #[serde(rename = "stringValues")]
1385    pub string_values: Vec<String>,
1386    /// <p>Metadata that can be used to manage the dimension.</p>
1387    #[serde(rename = "tags")]
1388    #[serde(skip_serializing_if = "Option::is_none")]
1389    pub tags: Option<Vec<Tag>>,
1390    /// <p>Specifies the type of dimension. Supported types: <code>TOPIC_FILTER.</code> </p>
1391    #[serde(rename = "type")]
1392    pub type_: String,
1393}
1394
1395#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1396#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1397pub struct CreateDimensionResponse {
1398    /// <p>The ARN (Amazon resource name) of the created dimension.</p>
1399    #[serde(rename = "arn")]
1400    #[serde(skip_serializing_if = "Option::is_none")]
1401    pub arn: Option<String>,
1402    /// <p>A unique identifier for the dimension.</p>
1403    #[serde(rename = "name")]
1404    #[serde(skip_serializing_if = "Option::is_none")]
1405    pub name: Option<String>,
1406}
1407
1408#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1409#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1410pub struct CreateDomainConfigurationRequest {
1411    /// <p>An object that specifies the authorization service for a domain.</p>
1412    #[serde(rename = "authorizerConfig")]
1413    #[serde(skip_serializing_if = "Option::is_none")]
1414    pub authorizer_config: Option<AuthorizerConfig>,
1415    /// <p>The name of the domain configuration. This value must be unique to a region.</p>
1416    #[serde(rename = "domainConfigurationName")]
1417    pub domain_configuration_name: String,
1418    /// <p>The name of the domain.</p>
1419    #[serde(rename = "domainName")]
1420    #[serde(skip_serializing_if = "Option::is_none")]
1421    pub domain_name: Option<String>,
1422    /// <p>The ARNs of the certificates that AWS IoT passes to the device during the TLS handshake. Currently you can specify only one certificate ARN. This value is not required for AWS-managed domains.</p>
1423    #[serde(rename = "serverCertificateArns")]
1424    #[serde(skip_serializing_if = "Option::is_none")]
1425    pub server_certificate_arns: Option<Vec<String>>,
1426    /// <p><p>The type of service delivered by the endpoint.</p> <note> <p>AWS IoT Core currently supports only the <code>DATA</code> service type.</p> </note></p>
1427    #[serde(rename = "serviceType")]
1428    #[serde(skip_serializing_if = "Option::is_none")]
1429    pub service_type: Option<String>,
1430    /// <p><p>Metadata which can be used to manage the domain configuration.</p> <note> <p>For URI Request parameters use format: ...key1=value1&amp;key2=value2...</p> <p>For the CLI command-line parameter use format: &amp;&amp;tags &quot;key1=value1&amp;key2=value2...&quot;</p> <p>For the cli-input-json file use format: &quot;tags&quot;: &quot;key1=value1&amp;key2=value2...&quot;</p> </note></p>
1431    #[serde(rename = "tags")]
1432    #[serde(skip_serializing_if = "Option::is_none")]
1433    pub tags: Option<Vec<Tag>>,
1434    /// <p>The certificate used to validate the server certificate and prove domain name ownership. This certificate must be signed by a public certificate authority. This value is not required for AWS-managed domains.</p>
1435    #[serde(rename = "validationCertificateArn")]
1436    #[serde(skip_serializing_if = "Option::is_none")]
1437    pub validation_certificate_arn: Option<String>,
1438}
1439
1440#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1441#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1442pub struct CreateDomainConfigurationResponse {
1443    /// <p>The ARN of the domain configuration.</p>
1444    #[serde(rename = "domainConfigurationArn")]
1445    #[serde(skip_serializing_if = "Option::is_none")]
1446    pub domain_configuration_arn: Option<String>,
1447    /// <p>The name of the domain configuration.</p>
1448    #[serde(rename = "domainConfigurationName")]
1449    #[serde(skip_serializing_if = "Option::is_none")]
1450    pub domain_configuration_name: Option<String>,
1451}
1452
1453#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1454#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1455pub struct CreateDynamicThingGroupRequest {
1456    /// <p><p>The dynamic thing group index name.</p> <note> <p>Currently one index is supported: &quot;AWS_Things&quot;.</p> </note></p>
1457    #[serde(rename = "indexName")]
1458    #[serde(skip_serializing_if = "Option::is_none")]
1459    pub index_name: Option<String>,
1460    /// <p>The dynamic thing group search query string.</p> <p>See <a href="https://docs.aws.amazon.com/iot/latest/developerguide/query-syntax.html">Query Syntax</a> for information about query string syntax.</p>
1461    #[serde(rename = "queryString")]
1462    pub query_string: String,
1463    /// <p><p>The dynamic thing group query version.</p> <note> <p>Currently one query version is supported: &quot;2017-09-30&quot;. If not specified, the query version defaults to this value.</p> </note></p>
1464    #[serde(rename = "queryVersion")]
1465    #[serde(skip_serializing_if = "Option::is_none")]
1466    pub query_version: Option<String>,
1467    /// <p>Metadata which can be used to manage the dynamic thing group.</p>
1468    #[serde(rename = "tags")]
1469    #[serde(skip_serializing_if = "Option::is_none")]
1470    pub tags: Option<Vec<Tag>>,
1471    /// <p>The dynamic thing group name to create.</p>
1472    #[serde(rename = "thingGroupName")]
1473    pub thing_group_name: String,
1474    /// <p>The dynamic thing group properties.</p>
1475    #[serde(rename = "thingGroupProperties")]
1476    #[serde(skip_serializing_if = "Option::is_none")]
1477    pub thing_group_properties: Option<ThingGroupProperties>,
1478}
1479
1480#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1481#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1482pub struct CreateDynamicThingGroupResponse {
1483    /// <p>The dynamic thing group index name.</p>
1484    #[serde(rename = "indexName")]
1485    #[serde(skip_serializing_if = "Option::is_none")]
1486    pub index_name: Option<String>,
1487    /// <p>The dynamic thing group search query string.</p>
1488    #[serde(rename = "queryString")]
1489    #[serde(skip_serializing_if = "Option::is_none")]
1490    pub query_string: Option<String>,
1491    /// <p>The dynamic thing group query version.</p>
1492    #[serde(rename = "queryVersion")]
1493    #[serde(skip_serializing_if = "Option::is_none")]
1494    pub query_version: Option<String>,
1495    /// <p>The dynamic thing group ARN.</p>
1496    #[serde(rename = "thingGroupArn")]
1497    #[serde(skip_serializing_if = "Option::is_none")]
1498    pub thing_group_arn: Option<String>,
1499    /// <p>The dynamic thing group ID.</p>
1500    #[serde(rename = "thingGroupId")]
1501    #[serde(skip_serializing_if = "Option::is_none")]
1502    pub thing_group_id: Option<String>,
1503    /// <p>The dynamic thing group name.</p>
1504    #[serde(rename = "thingGroupName")]
1505    #[serde(skip_serializing_if = "Option::is_none")]
1506    pub thing_group_name: Option<String>,
1507}
1508
1509#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1510#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1511pub struct CreateJobRequest {
1512    /// <p>Allows you to create criteria to abort a job.</p>
1513    #[serde(rename = "abortConfig")]
1514    #[serde(skip_serializing_if = "Option::is_none")]
1515    pub abort_config: Option<AbortConfig>,
1516    /// <p>A short text description of the job.</p>
1517    #[serde(rename = "description")]
1518    #[serde(skip_serializing_if = "Option::is_none")]
1519    pub description: Option<String>,
1520    /// <p><p>The job document.</p> <note> <p>If the job document resides in an S3 bucket, you must use a placeholder link when specifying the document.</p> <p>The placeholder link is of the following form:</p> <p> <code>${aws:iot:s3-presigned-url:https://s3.amazonaws.com/<i>bucket</i>/<i>key</i>}</code> </p> <p>where <i>bucket</i> is your bucket name and <i>key</i> is the object in the bucket to which you are linking.</p> </note></p>
1521    #[serde(rename = "document")]
1522    #[serde(skip_serializing_if = "Option::is_none")]
1523    pub document: Option<String>,
1524    /// <p>An S3 link to the job document.</p>
1525    #[serde(rename = "documentSource")]
1526    #[serde(skip_serializing_if = "Option::is_none")]
1527    pub document_source: Option<String>,
1528    /// <p>Allows you to create a staged rollout of the job.</p>
1529    #[serde(rename = "jobExecutionsRolloutConfig")]
1530    #[serde(skip_serializing_if = "Option::is_none")]
1531    pub job_executions_rollout_config: Option<JobExecutionsRolloutConfig>,
1532    /// <p>A job identifier which must be unique for your AWS account. We recommend using a UUID. Alpha-numeric characters, "-" and "_" are valid for use here.</p>
1533    #[serde(rename = "jobId")]
1534    pub job_id: String,
1535    /// <p>Configuration information for pre-signed S3 URLs.</p>
1536    #[serde(rename = "presignedUrlConfig")]
1537    #[serde(skip_serializing_if = "Option::is_none")]
1538    pub presigned_url_config: Option<PresignedUrlConfig>,
1539    /// <p>Metadata which can be used to manage the job.</p>
1540    #[serde(rename = "tags")]
1541    #[serde(skip_serializing_if = "Option::is_none")]
1542    pub tags: Option<Vec<Tag>>,
1543    /// <p>Specifies whether the job will continue to run (CONTINUOUS), or will be complete after all those things specified as targets have completed the job (SNAPSHOT). If continuous, the job may also be run on a thing when a change is detected in a target. For example, a job will run on a thing when the thing is added to a target group, even after the job was completed by all things originally in the group.</p>
1544    #[serde(rename = "targetSelection")]
1545    #[serde(skip_serializing_if = "Option::is_none")]
1546    pub target_selection: Option<String>,
1547    /// <p>A list of things and thing groups to which the job should be sent.</p>
1548    #[serde(rename = "targets")]
1549    pub targets: Vec<String>,
1550    /// <p>Specifies the amount of time each device has to finish its execution of the job. The timer is started when the job execution status is set to <code>IN_PROGRESS</code>. If the job execution status is not set to another terminal state before the time expires, it will be automatically set to <code>TIMED_OUT</code>.</p>
1551    #[serde(rename = "timeoutConfig")]
1552    #[serde(skip_serializing_if = "Option::is_none")]
1553    pub timeout_config: Option<TimeoutConfig>,
1554}
1555
1556#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1557#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1558pub struct CreateJobResponse {
1559    /// <p>The job description.</p>
1560    #[serde(rename = "description")]
1561    #[serde(skip_serializing_if = "Option::is_none")]
1562    pub description: Option<String>,
1563    /// <p>The job ARN.</p>
1564    #[serde(rename = "jobArn")]
1565    #[serde(skip_serializing_if = "Option::is_none")]
1566    pub job_arn: Option<String>,
1567    /// <p>The unique identifier you assigned to this job.</p>
1568    #[serde(rename = "jobId")]
1569    #[serde(skip_serializing_if = "Option::is_none")]
1570    pub job_id: Option<String>,
1571}
1572
1573/// <p>The input for the CreateKeysAndCertificate operation.</p>
1574#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1575#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1576pub struct CreateKeysAndCertificateRequest {
1577    /// <p>Specifies whether the certificate is active.</p>
1578    #[serde(rename = "setAsActive")]
1579    #[serde(skip_serializing_if = "Option::is_none")]
1580    pub set_as_active: Option<bool>,
1581}
1582
1583/// <p>The output of the CreateKeysAndCertificate operation.</p>
1584#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1585#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1586pub struct CreateKeysAndCertificateResponse {
1587    /// <p>The ARN of the certificate.</p>
1588    #[serde(rename = "certificateArn")]
1589    #[serde(skip_serializing_if = "Option::is_none")]
1590    pub certificate_arn: Option<String>,
1591    /// <p>The ID of the certificate. AWS IoT issues a default subject name for the certificate (for example, AWS IoT Certificate).</p>
1592    #[serde(rename = "certificateId")]
1593    #[serde(skip_serializing_if = "Option::is_none")]
1594    pub certificate_id: Option<String>,
1595    /// <p>The certificate data, in PEM format.</p>
1596    #[serde(rename = "certificatePem")]
1597    #[serde(skip_serializing_if = "Option::is_none")]
1598    pub certificate_pem: Option<String>,
1599    /// <p>The generated key pair.</p>
1600    #[serde(rename = "keyPair")]
1601    #[serde(skip_serializing_if = "Option::is_none")]
1602    pub key_pair: Option<KeyPair>,
1603}
1604
1605#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1606#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1607pub struct CreateMitigationActionRequest {
1608    /// <p>A friendly name for the action. Choose a friendly name that accurately describes the action (for example, <code>EnableLoggingAction</code>).</p>
1609    #[serde(rename = "actionName")]
1610    pub action_name: String,
1611    /// <p>Defines the type of action and the parameters for that action.</p>
1612    #[serde(rename = "actionParams")]
1613    pub action_params: MitigationActionParams,
1614    /// <p>The ARN of the IAM role that is used to apply the mitigation action.</p>
1615    #[serde(rename = "roleArn")]
1616    pub role_arn: String,
1617    /// <p>Metadata that can be used to manage the mitigation action.</p>
1618    #[serde(rename = "tags")]
1619    #[serde(skip_serializing_if = "Option::is_none")]
1620    pub tags: Option<Vec<Tag>>,
1621}
1622
1623#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1624#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1625pub struct CreateMitigationActionResponse {
1626    /// <p>The ARN for the new mitigation action.</p>
1627    #[serde(rename = "actionArn")]
1628    #[serde(skip_serializing_if = "Option::is_none")]
1629    pub action_arn: Option<String>,
1630    /// <p>A unique identifier for the new mitigation action.</p>
1631    #[serde(rename = "actionId")]
1632    #[serde(skip_serializing_if = "Option::is_none")]
1633    pub action_id: Option<String>,
1634}
1635
1636#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1637#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1638pub struct CreateOTAUpdateRequest {
1639    /// <p>A list of additional OTA update parameters which are name-value pairs.</p>
1640    #[serde(rename = "additionalParameters")]
1641    #[serde(skip_serializing_if = "Option::is_none")]
1642    pub additional_parameters: Option<::std::collections::HashMap<String, String>>,
1643    /// <p>The criteria that determine when and how a job abort takes place.</p>
1644    #[serde(rename = "awsJobAbortConfig")]
1645    #[serde(skip_serializing_if = "Option::is_none")]
1646    pub aws_job_abort_config: Option<AwsJobAbortConfig>,
1647    /// <p>Configuration for the rollout of OTA updates.</p>
1648    #[serde(rename = "awsJobExecutionsRolloutConfig")]
1649    #[serde(skip_serializing_if = "Option::is_none")]
1650    pub aws_job_executions_rollout_config: Option<AwsJobExecutionsRolloutConfig>,
1651    /// <p>Configuration information for pre-signed URLs.</p>
1652    #[serde(rename = "awsJobPresignedUrlConfig")]
1653    #[serde(skip_serializing_if = "Option::is_none")]
1654    pub aws_job_presigned_url_config: Option<AwsJobPresignedUrlConfig>,
1655    /// <p>Specifies the amount of time each device has to finish its execution of the job. A timer is started when the job execution status is set to <code>IN_PROGRESS</code>. If the job execution status is not set to another terminal state before the timer expires, it will be automatically set to <code>TIMED_OUT</code>.</p>
1656    #[serde(rename = "awsJobTimeoutConfig")]
1657    #[serde(skip_serializing_if = "Option::is_none")]
1658    pub aws_job_timeout_config: Option<AwsJobTimeoutConfig>,
1659    /// <p>The description of the OTA update.</p>
1660    #[serde(rename = "description")]
1661    #[serde(skip_serializing_if = "Option::is_none")]
1662    pub description: Option<String>,
1663    /// <p>The files to be streamed by the OTA update.</p>
1664    #[serde(rename = "files")]
1665    pub files: Vec<OTAUpdateFile>,
1666    /// <p>The ID of the OTA update to be created.</p>
1667    #[serde(rename = "otaUpdateId")]
1668    pub ota_update_id: String,
1669    /// <p>The protocol used to transfer the OTA update image. Valid values are [HTTP], [MQTT], [HTTP, MQTT]. When both HTTP and MQTT are specified, the target device can choose the protocol.</p>
1670    #[serde(rename = "protocols")]
1671    #[serde(skip_serializing_if = "Option::is_none")]
1672    pub protocols: Option<Vec<String>>,
1673    /// <p>The IAM role that grants AWS IoT access to the Amazon S3, AWS IoT jobs and AWS Code Signing resources to create an OTA update job.</p>
1674    #[serde(rename = "roleArn")]
1675    pub role_arn: String,
1676    /// <p>Metadata which can be used to manage updates.</p>
1677    #[serde(rename = "tags")]
1678    #[serde(skip_serializing_if = "Option::is_none")]
1679    pub tags: Option<Vec<Tag>>,
1680    /// <p>Specifies whether the update will continue to run (CONTINUOUS), or will be complete after all the things specified as targets have completed the update (SNAPSHOT). If continuous, the update may also be run on a thing when a change is detected in a target. For example, an update will run on a thing when the thing is added to a target group, even after the update was completed by all things originally in the group. Valid values: CONTINUOUS | SNAPSHOT.</p>
1681    #[serde(rename = "targetSelection")]
1682    #[serde(skip_serializing_if = "Option::is_none")]
1683    pub target_selection: Option<String>,
1684    /// <p>The devices targeted to receive OTA updates.</p>
1685    #[serde(rename = "targets")]
1686    pub targets: Vec<String>,
1687}
1688
1689#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1690#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1691pub struct CreateOTAUpdateResponse {
1692    /// <p>The AWS IoT job ARN associated with the OTA update.</p>
1693    #[serde(rename = "awsIotJobArn")]
1694    #[serde(skip_serializing_if = "Option::is_none")]
1695    pub aws_iot_job_arn: Option<String>,
1696    /// <p>The AWS IoT job ID associated with the OTA update.</p>
1697    #[serde(rename = "awsIotJobId")]
1698    #[serde(skip_serializing_if = "Option::is_none")]
1699    pub aws_iot_job_id: Option<String>,
1700    /// <p>The OTA update ARN.</p>
1701    #[serde(rename = "otaUpdateArn")]
1702    #[serde(skip_serializing_if = "Option::is_none")]
1703    pub ota_update_arn: Option<String>,
1704    /// <p>The OTA update ID.</p>
1705    #[serde(rename = "otaUpdateId")]
1706    #[serde(skip_serializing_if = "Option::is_none")]
1707    pub ota_update_id: Option<String>,
1708    /// <p>The OTA update status.</p>
1709    #[serde(rename = "otaUpdateStatus")]
1710    #[serde(skip_serializing_if = "Option::is_none")]
1711    pub ota_update_status: Option<String>,
1712}
1713
1714/// <p>The input for the CreatePolicy operation.</p>
1715#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1716#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1717pub struct CreatePolicyRequest {
1718    /// <p>The JSON document that describes the policy. <b>policyDocument</b> must have a minimum length of 1, with a maximum length of 2048, excluding whitespace.</p>
1719    #[serde(rename = "policyDocument")]
1720    pub policy_document: String,
1721    /// <p>The policy name.</p>
1722    #[serde(rename = "policyName")]
1723    pub policy_name: String,
1724    /// <p><p>Metadata which can be used to manage the policy.</p> <note> <p>For URI Request parameters use format: ...key1=value1&amp;key2=value2...</p> <p>For the CLI command-line parameter use format: &amp;&amp;tags &quot;key1=value1&amp;key2=value2...&quot;</p> <p>For the cli-input-json file use format: &quot;tags&quot;: &quot;key1=value1&amp;key2=value2...&quot;</p> </note></p>
1725    #[serde(rename = "tags")]
1726    #[serde(skip_serializing_if = "Option::is_none")]
1727    pub tags: Option<Vec<Tag>>,
1728}
1729
1730/// <p>The output from the CreatePolicy operation.</p>
1731#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1732#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1733pub struct CreatePolicyResponse {
1734    /// <p>The policy ARN.</p>
1735    #[serde(rename = "policyArn")]
1736    #[serde(skip_serializing_if = "Option::is_none")]
1737    pub policy_arn: Option<String>,
1738    /// <p>The JSON document that describes the policy.</p>
1739    #[serde(rename = "policyDocument")]
1740    #[serde(skip_serializing_if = "Option::is_none")]
1741    pub policy_document: Option<String>,
1742    /// <p>The policy name.</p>
1743    #[serde(rename = "policyName")]
1744    #[serde(skip_serializing_if = "Option::is_none")]
1745    pub policy_name: Option<String>,
1746    /// <p>The policy version ID.</p>
1747    #[serde(rename = "policyVersionId")]
1748    #[serde(skip_serializing_if = "Option::is_none")]
1749    pub policy_version_id: Option<String>,
1750}
1751
1752/// <p>The input for the CreatePolicyVersion operation.</p>
1753#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1754#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1755pub struct CreatePolicyVersionRequest {
1756    /// <p>The JSON document that describes the policy. Minimum length of 1. Maximum length of 2048, excluding whitespace.</p>
1757    #[serde(rename = "policyDocument")]
1758    pub policy_document: String,
1759    /// <p>The policy name.</p>
1760    #[serde(rename = "policyName")]
1761    pub policy_name: String,
1762    /// <p>Specifies whether the policy version is set as the default. When this parameter is true, the new policy version becomes the operative version (that is, the version that is in effect for the certificates to which the policy is attached).</p>
1763    #[serde(rename = "setAsDefault")]
1764    #[serde(skip_serializing_if = "Option::is_none")]
1765    pub set_as_default: Option<bool>,
1766}
1767
1768/// <p>The output of the CreatePolicyVersion operation.</p>
1769#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1770#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1771pub struct CreatePolicyVersionResponse {
1772    /// <p>Specifies whether the policy version is the default.</p>
1773    #[serde(rename = "isDefaultVersion")]
1774    #[serde(skip_serializing_if = "Option::is_none")]
1775    pub is_default_version: Option<bool>,
1776    /// <p>The policy ARN.</p>
1777    #[serde(rename = "policyArn")]
1778    #[serde(skip_serializing_if = "Option::is_none")]
1779    pub policy_arn: Option<String>,
1780    /// <p>The JSON document that describes the policy.</p>
1781    #[serde(rename = "policyDocument")]
1782    #[serde(skip_serializing_if = "Option::is_none")]
1783    pub policy_document: Option<String>,
1784    /// <p>The policy version ID.</p>
1785    #[serde(rename = "policyVersionId")]
1786    #[serde(skip_serializing_if = "Option::is_none")]
1787    pub policy_version_id: Option<String>,
1788}
1789
1790#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1791#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1792pub struct CreateProvisioningClaimRequest {
1793    /// <p>The name of the provisioning template to use.</p>
1794    #[serde(rename = "templateName")]
1795    pub template_name: String,
1796}
1797
1798#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1799#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1800pub struct CreateProvisioningClaimResponse {
1801    /// <p>The ID of the certificate.</p>
1802    #[serde(rename = "certificateId")]
1803    #[serde(skip_serializing_if = "Option::is_none")]
1804    pub certificate_id: Option<String>,
1805    /// <p>The provisioning claim certificate.</p>
1806    #[serde(rename = "certificatePem")]
1807    #[serde(skip_serializing_if = "Option::is_none")]
1808    pub certificate_pem: Option<String>,
1809    /// <p>The provisioning claim expiration time.</p>
1810    #[serde(rename = "expiration")]
1811    #[serde(skip_serializing_if = "Option::is_none")]
1812    pub expiration: Option<f64>,
1813    /// <p>The provisioning claim key pair.</p>
1814    #[serde(rename = "keyPair")]
1815    #[serde(skip_serializing_if = "Option::is_none")]
1816    pub key_pair: Option<KeyPair>,
1817}
1818
1819#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1820#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1821pub struct CreateProvisioningTemplateRequest {
1822    /// <p>The description of the fleet provisioning template.</p>
1823    #[serde(rename = "description")]
1824    #[serde(skip_serializing_if = "Option::is_none")]
1825    pub description: Option<String>,
1826    /// <p>True to enable the fleet provisioning template, otherwise false.</p>
1827    #[serde(rename = "enabled")]
1828    #[serde(skip_serializing_if = "Option::is_none")]
1829    pub enabled: Option<bool>,
1830    /// <p>Creates a pre-provisioning hook template.</p>
1831    #[serde(rename = "preProvisioningHook")]
1832    #[serde(skip_serializing_if = "Option::is_none")]
1833    pub pre_provisioning_hook: Option<ProvisioningHook>,
1834    /// <p>The role ARN for the role associated with the fleet provisioning template. This IoT role grants permission to provision a device.</p>
1835    #[serde(rename = "provisioningRoleArn")]
1836    pub provisioning_role_arn: String,
1837    /// <p><p>Metadata which can be used to manage the fleet provisioning template.</p> <note> <p>For URI Request parameters use format: ...key1=value1&amp;key2=value2...</p> <p>For the CLI command-line parameter use format: &amp;&amp;tags &quot;key1=value1&amp;key2=value2...&quot;</p> <p>For the cli-input-json file use format: &quot;tags&quot;: &quot;key1=value1&amp;key2=value2...&quot;</p> </note></p>
1838    #[serde(rename = "tags")]
1839    #[serde(skip_serializing_if = "Option::is_none")]
1840    pub tags: Option<Vec<Tag>>,
1841    /// <p>The JSON formatted contents of the fleet provisioning template.</p>
1842    #[serde(rename = "templateBody")]
1843    pub template_body: String,
1844    /// <p>The name of the fleet provisioning template.</p>
1845    #[serde(rename = "templateName")]
1846    pub template_name: String,
1847}
1848
1849#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1850#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1851pub struct CreateProvisioningTemplateResponse {
1852    /// <p>The default version of the fleet provisioning template.</p>
1853    #[serde(rename = "defaultVersionId")]
1854    #[serde(skip_serializing_if = "Option::is_none")]
1855    pub default_version_id: Option<i64>,
1856    /// <p>The ARN that identifies the provisioning template.</p>
1857    #[serde(rename = "templateArn")]
1858    #[serde(skip_serializing_if = "Option::is_none")]
1859    pub template_arn: Option<String>,
1860    /// <p>The name of the fleet provisioning template.</p>
1861    #[serde(rename = "templateName")]
1862    #[serde(skip_serializing_if = "Option::is_none")]
1863    pub template_name: Option<String>,
1864}
1865
1866#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1867#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1868pub struct CreateProvisioningTemplateVersionRequest {
1869    /// <p>Sets a fleet provision template version as the default version.</p>
1870    #[serde(rename = "setAsDefault")]
1871    #[serde(skip_serializing_if = "Option::is_none")]
1872    pub set_as_default: Option<bool>,
1873    /// <p>The JSON formatted contents of the fleet provisioning template.</p>
1874    #[serde(rename = "templateBody")]
1875    pub template_body: String,
1876    /// <p>The name of the fleet provisioning template.</p>
1877    #[serde(rename = "templateName")]
1878    pub template_name: String,
1879}
1880
1881#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1882#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1883pub struct CreateProvisioningTemplateVersionResponse {
1884    /// <p>True if the fleet provisioning template version is the default version, otherwise false.</p>
1885    #[serde(rename = "isDefaultVersion")]
1886    #[serde(skip_serializing_if = "Option::is_none")]
1887    pub is_default_version: Option<bool>,
1888    /// <p>The ARN that identifies the provisioning template.</p>
1889    #[serde(rename = "templateArn")]
1890    #[serde(skip_serializing_if = "Option::is_none")]
1891    pub template_arn: Option<String>,
1892    /// <p>The name of the fleet provisioning template.</p>
1893    #[serde(rename = "templateName")]
1894    #[serde(skip_serializing_if = "Option::is_none")]
1895    pub template_name: Option<String>,
1896    /// <p>The version of the fleet provisioning template.</p>
1897    #[serde(rename = "versionId")]
1898    #[serde(skip_serializing_if = "Option::is_none")]
1899    pub version_id: Option<i64>,
1900}
1901
1902#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1903#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1904pub struct CreateRoleAliasRequest {
1905    /// <p>How long (in seconds) the credentials will be valid.</p>
1906    #[serde(rename = "credentialDurationSeconds")]
1907    #[serde(skip_serializing_if = "Option::is_none")]
1908    pub credential_duration_seconds: Option<i64>,
1909    /// <p>The role alias that points to a role ARN. This allows you to change the role without having to update the device.</p>
1910    #[serde(rename = "roleAlias")]
1911    pub role_alias: String,
1912    /// <p>The role ARN.</p>
1913    #[serde(rename = "roleArn")]
1914    pub role_arn: String,
1915    /// <p><p>Metadata which can be used to manage the role alias.</p> <note> <p>For URI Request parameters use format: ...key1=value1&amp;key2=value2...</p> <p>For the CLI command-line parameter use format: &amp;&amp;tags &quot;key1=value1&amp;key2=value2...&quot;</p> <p>For the cli-input-json file use format: &quot;tags&quot;: &quot;key1=value1&amp;key2=value2...&quot;</p> </note></p>
1916    #[serde(rename = "tags")]
1917    #[serde(skip_serializing_if = "Option::is_none")]
1918    pub tags: Option<Vec<Tag>>,
1919}
1920
1921#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1922#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1923pub struct CreateRoleAliasResponse {
1924    /// <p>The role alias.</p>
1925    #[serde(rename = "roleAlias")]
1926    #[serde(skip_serializing_if = "Option::is_none")]
1927    pub role_alias: Option<String>,
1928    /// <p>The role alias ARN.</p>
1929    #[serde(rename = "roleAliasArn")]
1930    #[serde(skip_serializing_if = "Option::is_none")]
1931    pub role_alias_arn: Option<String>,
1932}
1933
1934#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1935#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1936pub struct CreateScheduledAuditRequest {
1937    /// <p>The day of the month on which the scheduled audit takes place. Can be "1" through "31" or "LAST". This field is required if the "frequency" parameter is set to "MONTHLY". If days 29-31 are specified, and the month does not have that many days, the audit takes place on the "LAST" day of the month.</p>
1938    #[serde(rename = "dayOfMonth")]
1939    #[serde(skip_serializing_if = "Option::is_none")]
1940    pub day_of_month: Option<String>,
1941    /// <p>The day of the week on which the scheduled audit takes place. Can be one of "SUN", "MON", "TUE", "WED", "THU", "FRI", or "SAT". This field is required if the "frequency" parameter is set to "WEEKLY" or "BIWEEKLY".</p>
1942    #[serde(rename = "dayOfWeek")]
1943    #[serde(skip_serializing_if = "Option::is_none")]
1944    pub day_of_week: Option<String>,
1945    /// <p>How often the scheduled audit takes place. Can be one of "DAILY", "WEEKLY", "BIWEEKLY" or "MONTHLY". The start time of each audit is determined by the system.</p>
1946    #[serde(rename = "frequency")]
1947    pub frequency: String,
1948    /// <p>The name you want to give to the scheduled audit. (Max. 128 chars)</p>
1949    #[serde(rename = "scheduledAuditName")]
1950    pub scheduled_audit_name: String,
1951    /// <p>Metadata that can be used to manage the scheduled audit.</p>
1952    #[serde(rename = "tags")]
1953    #[serde(skip_serializing_if = "Option::is_none")]
1954    pub tags: Option<Vec<Tag>>,
1955    /// <p>Which checks are performed during the scheduled audit. Checks must be enabled for your account. (Use <code>DescribeAccountAuditConfiguration</code> to see the list of all checks, including those that are enabled or use <code>UpdateAccountAuditConfiguration</code> to select which checks are enabled.)</p>
1956    #[serde(rename = "targetCheckNames")]
1957    pub target_check_names: Vec<String>,
1958}
1959
1960#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1961#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1962pub struct CreateScheduledAuditResponse {
1963    /// <p>The ARN of the scheduled audit.</p>
1964    #[serde(rename = "scheduledAuditArn")]
1965    #[serde(skip_serializing_if = "Option::is_none")]
1966    pub scheduled_audit_arn: Option<String>,
1967}
1968
1969#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1970#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1971pub struct CreateSecurityProfileRequest {
1972    /// <p>A list of metrics whose data is retained (stored). By default, data is retained for any metric used in the profile's <code>behaviors</code>, but it is also retained for any metric specified here.</p>
1973    #[serde(rename = "additionalMetricsToRetainV2")]
1974    #[serde(skip_serializing_if = "Option::is_none")]
1975    pub additional_metrics_to_retain_v2: Option<Vec<MetricToRetain>>,
1976    /// <p>Specifies the destinations to which alerts are sent. (Alerts are always sent to the console.) Alerts are generated when a device (thing) violates a behavior.</p>
1977    #[serde(rename = "alertTargets")]
1978    #[serde(skip_serializing_if = "Option::is_none")]
1979    pub alert_targets: Option<::std::collections::HashMap<String, AlertTarget>>,
1980    /// <p>Specifies the behaviors that, when violated by a device (thing), cause an alert.</p>
1981    #[serde(rename = "behaviors")]
1982    #[serde(skip_serializing_if = "Option::is_none")]
1983    pub behaviors: Option<Vec<Behavior>>,
1984    /// <p>A description of the security profile.</p>
1985    #[serde(rename = "securityProfileDescription")]
1986    #[serde(skip_serializing_if = "Option::is_none")]
1987    pub security_profile_description: Option<String>,
1988    /// <p>The name you are giving to the security profile.</p>
1989    #[serde(rename = "securityProfileName")]
1990    pub security_profile_name: String,
1991    /// <p>Metadata that can be used to manage the security profile.</p>
1992    #[serde(rename = "tags")]
1993    #[serde(skip_serializing_if = "Option::is_none")]
1994    pub tags: Option<Vec<Tag>>,
1995}
1996
1997#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1998#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1999pub struct CreateSecurityProfileResponse {
2000    /// <p>The ARN of the security profile.</p>
2001    #[serde(rename = "securityProfileArn")]
2002    #[serde(skip_serializing_if = "Option::is_none")]
2003    pub security_profile_arn: Option<String>,
2004    /// <p>The name you gave to the security profile.</p>
2005    #[serde(rename = "securityProfileName")]
2006    #[serde(skip_serializing_if = "Option::is_none")]
2007    pub security_profile_name: Option<String>,
2008}
2009
2010#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2011#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2012pub struct CreateStreamRequest {
2013    /// <p>A description of the stream.</p>
2014    #[serde(rename = "description")]
2015    #[serde(skip_serializing_if = "Option::is_none")]
2016    pub description: Option<String>,
2017    /// <p>The files to stream.</p>
2018    #[serde(rename = "files")]
2019    pub files: Vec<StreamFile>,
2020    /// <p>An IAM role that allows the IoT service principal assumes to access your S3 files.</p>
2021    #[serde(rename = "roleArn")]
2022    pub role_arn: String,
2023    /// <p>The stream ID.</p>
2024    #[serde(rename = "streamId")]
2025    pub stream_id: String,
2026    /// <p>Metadata which can be used to manage streams.</p>
2027    #[serde(rename = "tags")]
2028    #[serde(skip_serializing_if = "Option::is_none")]
2029    pub tags: Option<Vec<Tag>>,
2030}
2031
2032#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2033#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2034pub struct CreateStreamResponse {
2035    /// <p>A description of the stream.</p>
2036    #[serde(rename = "description")]
2037    #[serde(skip_serializing_if = "Option::is_none")]
2038    pub description: Option<String>,
2039    /// <p>The stream ARN.</p>
2040    #[serde(rename = "streamArn")]
2041    #[serde(skip_serializing_if = "Option::is_none")]
2042    pub stream_arn: Option<String>,
2043    /// <p>The stream ID.</p>
2044    #[serde(rename = "streamId")]
2045    #[serde(skip_serializing_if = "Option::is_none")]
2046    pub stream_id: Option<String>,
2047    /// <p>The version of the stream.</p>
2048    #[serde(rename = "streamVersion")]
2049    #[serde(skip_serializing_if = "Option::is_none")]
2050    pub stream_version: Option<i64>,
2051}
2052
2053#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2054#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2055pub struct CreateThingGroupRequest {
2056    /// <p>The name of the parent thing group.</p>
2057    #[serde(rename = "parentGroupName")]
2058    #[serde(skip_serializing_if = "Option::is_none")]
2059    pub parent_group_name: Option<String>,
2060    /// <p>Metadata which can be used to manage the thing group.</p>
2061    #[serde(rename = "tags")]
2062    #[serde(skip_serializing_if = "Option::is_none")]
2063    pub tags: Option<Vec<Tag>>,
2064    /// <p>The thing group name to create.</p>
2065    #[serde(rename = "thingGroupName")]
2066    pub thing_group_name: String,
2067    /// <p>The thing group properties.</p>
2068    #[serde(rename = "thingGroupProperties")]
2069    #[serde(skip_serializing_if = "Option::is_none")]
2070    pub thing_group_properties: Option<ThingGroupProperties>,
2071}
2072
2073#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2074#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2075pub struct CreateThingGroupResponse {
2076    /// <p>The thing group ARN.</p>
2077    #[serde(rename = "thingGroupArn")]
2078    #[serde(skip_serializing_if = "Option::is_none")]
2079    pub thing_group_arn: Option<String>,
2080    /// <p>The thing group ID.</p>
2081    #[serde(rename = "thingGroupId")]
2082    #[serde(skip_serializing_if = "Option::is_none")]
2083    pub thing_group_id: Option<String>,
2084    /// <p>The thing group name.</p>
2085    #[serde(rename = "thingGroupName")]
2086    #[serde(skip_serializing_if = "Option::is_none")]
2087    pub thing_group_name: Option<String>,
2088}
2089
2090/// <p>The input for the CreateThing operation.</p>
2091#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2092#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2093pub struct CreateThingRequest {
2094    /// <p>The attribute payload, which consists of up to three name/value pairs in a JSON document. For example:</p> <p> <code>{\"attributes\":{\"string1\":\"string2\"}}</code> </p>
2095    #[serde(rename = "attributePayload")]
2096    #[serde(skip_serializing_if = "Option::is_none")]
2097    pub attribute_payload: Option<AttributePayload>,
2098    /// <p>The name of the billing group the thing will be added to.</p>
2099    #[serde(rename = "billingGroupName")]
2100    #[serde(skip_serializing_if = "Option::is_none")]
2101    pub billing_group_name: Option<String>,
2102    /// <p>The name of the thing to create.</p> <p>You can't change a thing's name after you create it. To change a thing's name, you must create a new thing, give it the new name, and then delete the old thing.</p>
2103    #[serde(rename = "thingName")]
2104    pub thing_name: String,
2105    /// <p>The name of the thing type associated with the new thing.</p>
2106    #[serde(rename = "thingTypeName")]
2107    #[serde(skip_serializing_if = "Option::is_none")]
2108    pub thing_type_name: Option<String>,
2109}
2110
2111/// <p>The output of the CreateThing operation.</p>
2112#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2113#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2114pub struct CreateThingResponse {
2115    /// <p>The ARN of the new thing.</p>
2116    #[serde(rename = "thingArn")]
2117    #[serde(skip_serializing_if = "Option::is_none")]
2118    pub thing_arn: Option<String>,
2119    /// <p>The thing ID.</p>
2120    #[serde(rename = "thingId")]
2121    #[serde(skip_serializing_if = "Option::is_none")]
2122    pub thing_id: Option<String>,
2123    /// <p>The name of the new thing.</p>
2124    #[serde(rename = "thingName")]
2125    #[serde(skip_serializing_if = "Option::is_none")]
2126    pub thing_name: Option<String>,
2127}
2128
2129/// <p>The input for the CreateThingType operation.</p>
2130#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2131#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2132pub struct CreateThingTypeRequest {
2133    /// <p>Metadata which can be used to manage the thing type.</p>
2134    #[serde(rename = "tags")]
2135    #[serde(skip_serializing_if = "Option::is_none")]
2136    pub tags: Option<Vec<Tag>>,
2137    /// <p>The name of the thing type.</p>
2138    #[serde(rename = "thingTypeName")]
2139    pub thing_type_name: String,
2140    /// <p>The ThingTypeProperties for the thing type to create. It contains information about the new thing type including a description, and a list of searchable thing attribute names.</p>
2141    #[serde(rename = "thingTypeProperties")]
2142    #[serde(skip_serializing_if = "Option::is_none")]
2143    pub thing_type_properties: Option<ThingTypeProperties>,
2144}
2145
2146/// <p>The output of the CreateThingType operation.</p>
2147#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2148#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2149pub struct CreateThingTypeResponse {
2150    /// <p>The Amazon Resource Name (ARN) of the thing type.</p>
2151    #[serde(rename = "thingTypeArn")]
2152    #[serde(skip_serializing_if = "Option::is_none")]
2153    pub thing_type_arn: Option<String>,
2154    /// <p>The thing type ID.</p>
2155    #[serde(rename = "thingTypeId")]
2156    #[serde(skip_serializing_if = "Option::is_none")]
2157    pub thing_type_id: Option<String>,
2158    /// <p>The name of the thing type.</p>
2159    #[serde(rename = "thingTypeName")]
2160    #[serde(skip_serializing_if = "Option::is_none")]
2161    pub thing_type_name: Option<String>,
2162}
2163
2164#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2165#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2166pub struct CreateTopicRuleDestinationRequest {
2167    /// <p>The topic rule destination configuration.</p>
2168    #[serde(rename = "destinationConfiguration")]
2169    pub destination_configuration: TopicRuleDestinationConfiguration,
2170}
2171
2172#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2173#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2174pub struct CreateTopicRuleDestinationResponse {
2175    /// <p>The topic rule destination.</p>
2176    #[serde(rename = "topicRuleDestination")]
2177    #[serde(skip_serializing_if = "Option::is_none")]
2178    pub topic_rule_destination: Option<TopicRuleDestination>,
2179}
2180
2181/// <p>The input for the CreateTopicRule operation.</p>
2182#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2183#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2184pub struct CreateTopicRuleRequest {
2185    /// <p>The name of the rule.</p>
2186    #[serde(rename = "ruleName")]
2187    pub rule_name: String,
2188    /// <p><p>Metadata which can be used to manage the topic rule.</p> <note> <p>For URI Request parameters use format: ...key1=value1&amp;key2=value2...</p> <p>For the CLI command-line parameter use format: --tags &quot;key1=value1&amp;key2=value2...&quot;</p> <p>For the cli-input-json file use format: &quot;tags&quot;: &quot;key1=value1&amp;key2=value2...&quot;</p> </note></p>
2189    #[serde(rename = "tags")]
2190    #[serde(skip_serializing_if = "Option::is_none")]
2191    pub tags: Option<String>,
2192    /// <p>The rule payload.</p>
2193    #[serde(rename = "topicRulePayload")]
2194    pub topic_rule_payload: TopicRulePayload,
2195}
2196
2197/// <p>Describes a custom method used to code sign a file.</p>
2198#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2199pub struct CustomCodeSigning {
2200    /// <p>The certificate chain.</p>
2201    #[serde(rename = "certificateChain")]
2202    #[serde(skip_serializing_if = "Option::is_none")]
2203    pub certificate_chain: Option<CodeSigningCertificateChain>,
2204    /// <p>The hash algorithm used to code sign the file.</p>
2205    #[serde(rename = "hashAlgorithm")]
2206    #[serde(skip_serializing_if = "Option::is_none")]
2207    pub hash_algorithm: Option<String>,
2208    /// <p>The signature for the file.</p>
2209    #[serde(rename = "signature")]
2210    #[serde(skip_serializing_if = "Option::is_none")]
2211    pub signature: Option<CodeSigningSignature>,
2212    /// <p>The signature algorithm used to code sign the file.</p>
2213    #[serde(rename = "signatureAlgorithm")]
2214    #[serde(skip_serializing_if = "Option::is_none")]
2215    pub signature_algorithm: Option<String>,
2216}
2217
2218#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2219#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2220pub struct DeleteAccountAuditConfigurationRequest {
2221    /// <p>If true, all scheduled audits are deleted.</p>
2222    #[serde(rename = "deleteScheduledAudits")]
2223    #[serde(skip_serializing_if = "Option::is_none")]
2224    pub delete_scheduled_audits: Option<bool>,
2225}
2226
2227#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2228#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2229pub struct DeleteAccountAuditConfigurationResponse {}
2230
2231#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2232#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2233pub struct DeleteAuthorizerRequest {
2234    /// <p>The name of the authorizer to delete.</p>
2235    #[serde(rename = "authorizerName")]
2236    pub authorizer_name: String,
2237}
2238
2239#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2240#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2241pub struct DeleteAuthorizerResponse {}
2242
2243#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2244#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2245pub struct DeleteBillingGroupRequest {
2246    /// <p>The name of the billing group.</p>
2247    #[serde(rename = "billingGroupName")]
2248    pub billing_group_name: String,
2249    /// <p>The expected version of the billing group. If the version of the billing group does not match the expected version specified in the request, the <code>DeleteBillingGroup</code> request is rejected with a <code>VersionConflictException</code>.</p>
2250    #[serde(rename = "expectedVersion")]
2251    #[serde(skip_serializing_if = "Option::is_none")]
2252    pub expected_version: Option<i64>,
2253}
2254
2255#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2256#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2257pub struct DeleteBillingGroupResponse {}
2258
2259/// <p>Input for the DeleteCACertificate operation.</p>
2260#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2261#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2262pub struct DeleteCACertificateRequest {
2263    /// <p>The ID of the certificate to delete. (The last part of the certificate ARN contains the certificate ID.)</p>
2264    #[serde(rename = "certificateId")]
2265    pub certificate_id: String,
2266}
2267
2268/// <p>The output for the DeleteCACertificate operation.</p>
2269#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2270#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2271pub struct DeleteCACertificateResponse {}
2272
2273/// <p>The input for the DeleteCertificate operation.</p>
2274#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2275#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2276pub struct DeleteCertificateRequest {
2277    /// <p>The ID of the certificate. (The last part of the certificate ARN contains the certificate ID.)</p>
2278    #[serde(rename = "certificateId")]
2279    pub certificate_id: String,
2280    /// <p>Forces the deletion of a certificate if it is inactive and is not attached to an IoT thing.</p>
2281    #[serde(rename = "forceDelete")]
2282    #[serde(skip_serializing_if = "Option::is_none")]
2283    pub force_delete: Option<bool>,
2284}
2285
2286#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2287#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2288pub struct DeleteDimensionRequest {
2289    /// <p>The unique identifier for the dimension that you want to delete.</p>
2290    #[serde(rename = "name")]
2291    pub name: String,
2292}
2293
2294#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2295#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2296pub struct DeleteDimensionResponse {}
2297
2298#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2299#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2300pub struct DeleteDomainConfigurationRequest {
2301    /// <p>The name of the domain configuration to be deleted.</p>
2302    #[serde(rename = "domainConfigurationName")]
2303    pub domain_configuration_name: String,
2304}
2305
2306#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2307#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2308pub struct DeleteDomainConfigurationResponse {}
2309
2310#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2311#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2312pub struct DeleteDynamicThingGroupRequest {
2313    /// <p>The expected version of the dynamic thing group to delete.</p>
2314    #[serde(rename = "expectedVersion")]
2315    #[serde(skip_serializing_if = "Option::is_none")]
2316    pub expected_version: Option<i64>,
2317    /// <p>The name of the dynamic thing group to delete.</p>
2318    #[serde(rename = "thingGroupName")]
2319    pub thing_group_name: String,
2320}
2321
2322#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2323#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2324pub struct DeleteDynamicThingGroupResponse {}
2325
2326#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2327#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2328pub struct DeleteJobExecutionRequest {
2329    /// <p>The ID of the job execution to be deleted. The <code>executionNumber</code> refers to the execution of a particular job on a particular device.</p> <p>Note that once a job execution is deleted, the <code>executionNumber</code> may be reused by IoT, so be sure you get and use the correct value here.</p>
2330    #[serde(rename = "executionNumber")]
2331    pub execution_number: i64,
2332    /// <p><p>(Optional) When true, you can delete a job execution which is &quot;IN<em>PROGRESS&quot;. Otherwise, you can only delete a job execution which is in a terminal state (&quot;SUCCEEDED&quot;, &quot;FAILED&quot;, &quot;REJECTED&quot;, &quot;REMOVED&quot; or &quot;CANCELED&quot;) or an exception will occur. The default is false.</p> <note> <p>Deleting a job execution which is &quot;IN</em>PROGRESS&quot;, will cause the device to be unable to access job information or update the job execution status. Use caution and ensure that the device is able to recover to a valid state.</p> </note></p>
2333    #[serde(rename = "force")]
2334    #[serde(skip_serializing_if = "Option::is_none")]
2335    pub force: Option<bool>,
2336    /// <p>The ID of the job whose execution on a particular device will be deleted.</p>
2337    #[serde(rename = "jobId")]
2338    pub job_id: String,
2339    /// <p>The name of the thing whose job execution will be deleted.</p>
2340    #[serde(rename = "thingName")]
2341    pub thing_name: String,
2342}
2343
2344#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2345#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2346pub struct DeleteJobRequest {
2347    /// <p><p>(Optional) When true, you can delete a job which is &quot;IN<em>PROGRESS&quot;. Otherwise, you can only delete a job which is in a terminal state (&quot;COMPLETED&quot; or &quot;CANCELED&quot;) or an exception will occur. The default is false.</p> <note> <p>Deleting a job which is &quot;IN</em>PROGRESS&quot;, will cause a device which is executing the job to be unable to access job information or update the job execution status. Use caution and ensure that each device executing a job which is deleted is able to recover to a valid state.</p> </note></p>
2348    #[serde(rename = "force")]
2349    #[serde(skip_serializing_if = "Option::is_none")]
2350    pub force: Option<bool>,
2351    /// <p>The ID of the job to be deleted.</p> <p>After a job deletion is completed, you may reuse this jobId when you create a new job. However, this is not recommended, and you must ensure that your devices are not using the jobId to refer to the deleted job.</p>
2352    #[serde(rename = "jobId")]
2353    pub job_id: String,
2354}
2355
2356#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2357#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2358pub struct DeleteMitigationActionRequest {
2359    /// <p>The name of the mitigation action that you want to delete.</p>
2360    #[serde(rename = "actionName")]
2361    pub action_name: String,
2362}
2363
2364#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2365#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2366pub struct DeleteMitigationActionResponse {}
2367
2368#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2369#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2370pub struct DeleteOTAUpdateRequest {
2371    /// <p>Specifies if the stream associated with an OTA update should be deleted when the OTA update is deleted.</p>
2372    #[serde(rename = "deleteStream")]
2373    #[serde(skip_serializing_if = "Option::is_none")]
2374    pub delete_stream: Option<bool>,
2375    /// <p>Specifies if the AWS Job associated with the OTA update should be deleted when the OTA update is deleted.</p>
2376    #[serde(rename = "forceDeleteAWSJob")]
2377    #[serde(skip_serializing_if = "Option::is_none")]
2378    pub force_delete_aws_job: Option<bool>,
2379    /// <p>The ID of the OTA update to delete.</p>
2380    #[serde(rename = "otaUpdateId")]
2381    pub ota_update_id: String,
2382}
2383
2384#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2385#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2386pub struct DeleteOTAUpdateResponse {}
2387
2388/// <p>The input for the DeletePolicy operation.</p>
2389#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2390#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2391pub struct DeletePolicyRequest {
2392    /// <p>The name of the policy to delete.</p>
2393    #[serde(rename = "policyName")]
2394    pub policy_name: String,
2395}
2396
2397/// <p>The input for the DeletePolicyVersion operation.</p>
2398#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2399#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2400pub struct DeletePolicyVersionRequest {
2401    /// <p>The name of the policy.</p>
2402    #[serde(rename = "policyName")]
2403    pub policy_name: String,
2404    /// <p>The policy version ID.</p>
2405    #[serde(rename = "policyVersionId")]
2406    pub policy_version_id: String,
2407}
2408
2409#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2410#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2411pub struct DeleteProvisioningTemplateRequest {
2412    /// <p>The name of the fleet provision template to delete.</p>
2413    #[serde(rename = "templateName")]
2414    pub template_name: String,
2415}
2416
2417#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2418#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2419pub struct DeleteProvisioningTemplateResponse {}
2420
2421#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2422#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2423pub struct DeleteProvisioningTemplateVersionRequest {
2424    /// <p>The name of the fleet provisioning template version to delete.</p>
2425    #[serde(rename = "templateName")]
2426    pub template_name: String,
2427    /// <p>The fleet provisioning template version ID to delete.</p>
2428    #[serde(rename = "versionId")]
2429    pub version_id: i64,
2430}
2431
2432#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2433#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2434pub struct DeleteProvisioningTemplateVersionResponse {}
2435
2436/// <p>The input for the DeleteRegistrationCode operation.</p>
2437#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2438#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2439pub struct DeleteRegistrationCodeRequest {}
2440
2441/// <p>The output for the DeleteRegistrationCode operation.</p>
2442#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2443#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2444pub struct DeleteRegistrationCodeResponse {}
2445
2446#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2447#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2448pub struct DeleteRoleAliasRequest {
2449    /// <p>The role alias to delete.</p>
2450    #[serde(rename = "roleAlias")]
2451    pub role_alias: String,
2452}
2453
2454#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2455#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2456pub struct DeleteRoleAliasResponse {}
2457
2458#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2459#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2460pub struct DeleteScheduledAuditRequest {
2461    /// <p>The name of the scheduled audit you want to delete.</p>
2462    #[serde(rename = "scheduledAuditName")]
2463    pub scheduled_audit_name: String,
2464}
2465
2466#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2467#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2468pub struct DeleteScheduledAuditResponse {}
2469
2470#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2471#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2472pub struct DeleteSecurityProfileRequest {
2473    /// <p>The expected version of the security profile. A new version is generated whenever the security profile is updated. If you specify a value that is different from the actual version, a <code>VersionConflictException</code> is thrown.</p>
2474    #[serde(rename = "expectedVersion")]
2475    #[serde(skip_serializing_if = "Option::is_none")]
2476    pub expected_version: Option<i64>,
2477    /// <p>The name of the security profile to be deleted.</p>
2478    #[serde(rename = "securityProfileName")]
2479    pub security_profile_name: String,
2480}
2481
2482#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2483#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2484pub struct DeleteSecurityProfileResponse {}
2485
2486#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2487#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2488pub struct DeleteStreamRequest {
2489    /// <p>The stream ID.</p>
2490    #[serde(rename = "streamId")]
2491    pub stream_id: String,
2492}
2493
2494#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2495#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2496pub struct DeleteStreamResponse {}
2497
2498#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2499#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2500pub struct DeleteThingGroupRequest {
2501    /// <p>The expected version of the thing group to delete.</p>
2502    #[serde(rename = "expectedVersion")]
2503    #[serde(skip_serializing_if = "Option::is_none")]
2504    pub expected_version: Option<i64>,
2505    /// <p>The name of the thing group to delete.</p>
2506    #[serde(rename = "thingGroupName")]
2507    pub thing_group_name: String,
2508}
2509
2510#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2511#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2512pub struct DeleteThingGroupResponse {}
2513
2514/// <p>The input for the DeleteThing operation.</p>
2515#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2516#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2517pub struct DeleteThingRequest {
2518    /// <p>The expected version of the thing record in the registry. If the version of the record in the registry does not match the expected version specified in the request, the <code>DeleteThing</code> request is rejected with a <code>VersionConflictException</code>.</p>
2519    #[serde(rename = "expectedVersion")]
2520    #[serde(skip_serializing_if = "Option::is_none")]
2521    pub expected_version: Option<i64>,
2522    /// <p>The name of the thing to delete.</p>
2523    #[serde(rename = "thingName")]
2524    pub thing_name: String,
2525}
2526
2527/// <p>The output of the DeleteThing operation.</p>
2528#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2529#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2530pub struct DeleteThingResponse {}
2531
2532/// <p>The input for the DeleteThingType operation.</p>
2533#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2534#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2535pub struct DeleteThingTypeRequest {
2536    /// <p>The name of the thing type.</p>
2537    #[serde(rename = "thingTypeName")]
2538    pub thing_type_name: String,
2539}
2540
2541/// <p>The output for the DeleteThingType operation.</p>
2542#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2543#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2544pub struct DeleteThingTypeResponse {}
2545
2546#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2547#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2548pub struct DeleteTopicRuleDestinationRequest {
2549    /// <p>The ARN of the topic rule destination to delete.</p>
2550    #[serde(rename = "arn")]
2551    pub arn: String,
2552}
2553
2554#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2555#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2556pub struct DeleteTopicRuleDestinationResponse {}
2557
2558/// <p>The input for the DeleteTopicRule operation.</p>
2559#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2560#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2561pub struct DeleteTopicRuleRequest {
2562    /// <p>The name of the rule.</p>
2563    #[serde(rename = "ruleName")]
2564    pub rule_name: String,
2565}
2566
2567#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2568#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2569pub struct DeleteV2LoggingLevelRequest {
2570    /// <p>The name of the resource for which you are configuring logging.</p>
2571    #[serde(rename = "targetName")]
2572    pub target_name: String,
2573    /// <p>The type of resource for which you are configuring logging. Must be <code>THING_Group</code>.</p>
2574    #[serde(rename = "targetType")]
2575    pub target_type: String,
2576}
2577
2578/// <p>Contains information that denied the authorization.</p>
2579#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2580#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2581pub struct Denied {
2582    /// <p>Information that explicitly denies the authorization. </p>
2583    #[serde(rename = "explicitDeny")]
2584    #[serde(skip_serializing_if = "Option::is_none")]
2585    pub explicit_deny: Option<ExplicitDeny>,
2586    /// <p>Information that implicitly denies the authorization. When a policy doesn't explicitly deny or allow an action on a resource it is considered an implicit deny.</p>
2587    #[serde(rename = "implicitDeny")]
2588    #[serde(skip_serializing_if = "Option::is_none")]
2589    pub implicit_deny: Option<ImplicitDeny>,
2590}
2591
2592/// <p>The input for the DeprecateThingType operation.</p>
2593#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2594#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2595pub struct DeprecateThingTypeRequest {
2596    /// <p>The name of the thing type to deprecate.</p>
2597    #[serde(rename = "thingTypeName")]
2598    pub thing_type_name: String,
2599    /// <p>Whether to undeprecate a deprecated thing type. If <b>true</b>, the thing type will not be deprecated anymore and you can associate it with things.</p>
2600    #[serde(rename = "undoDeprecate")]
2601    #[serde(skip_serializing_if = "Option::is_none")]
2602    pub undo_deprecate: Option<bool>,
2603}
2604
2605/// <p>The output for the DeprecateThingType operation.</p>
2606#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2607#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2608pub struct DeprecateThingTypeResponse {}
2609
2610#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2611#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2612pub struct DescribeAccountAuditConfigurationRequest {}
2613
2614#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2615#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2616pub struct DescribeAccountAuditConfigurationResponse {
2617    /// <p>Which audit checks are enabled and disabled for this account.</p>
2618    #[serde(rename = "auditCheckConfigurations")]
2619    #[serde(skip_serializing_if = "Option::is_none")]
2620    pub audit_check_configurations:
2621        Option<::std::collections::HashMap<String, AuditCheckConfiguration>>,
2622    /// <p>Information about the targets to which audit notifications are sent for this account.</p>
2623    #[serde(rename = "auditNotificationTargetConfigurations")]
2624    #[serde(skip_serializing_if = "Option::is_none")]
2625    pub audit_notification_target_configurations:
2626        Option<::std::collections::HashMap<String, AuditNotificationTarget>>,
2627    /// <p>The ARN of the role that grants permission to AWS IoT to access information about your devices, policies, certificates, and other items as required when performing an audit.</p> <p>On the first call to <code>UpdateAccountAuditConfiguration</code>, this parameter is required.</p>
2628    #[serde(rename = "roleArn")]
2629    #[serde(skip_serializing_if = "Option::is_none")]
2630    pub role_arn: Option<String>,
2631}
2632
2633#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2634#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2635pub struct DescribeAuditFindingRequest {
2636    /// <p>A unique identifier for a single audit finding. You can use this identifier to apply mitigation actions to the finding.</p>
2637    #[serde(rename = "findingId")]
2638    pub finding_id: String,
2639}
2640
2641#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2642#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2643pub struct DescribeAuditFindingResponse {
2644    #[serde(rename = "finding")]
2645    #[serde(skip_serializing_if = "Option::is_none")]
2646    pub finding: Option<AuditFinding>,
2647}
2648
2649#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2650#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2651pub struct DescribeAuditMitigationActionsTaskRequest {
2652    /// <p>The unique identifier for the audit mitigation task.</p>
2653    #[serde(rename = "taskId")]
2654    pub task_id: String,
2655}
2656
2657#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2658#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2659pub struct DescribeAuditMitigationActionsTaskResponse {
2660    /// <p>Specifies the mitigation actions and their parameters that are applied as part of this task.</p>
2661    #[serde(rename = "actionsDefinition")]
2662    #[serde(skip_serializing_if = "Option::is_none")]
2663    pub actions_definition: Option<Vec<MitigationAction>>,
2664    /// <p>Specifies the mitigation actions that should be applied to specific audit checks.</p>
2665    #[serde(rename = "auditCheckToActionsMapping")]
2666    #[serde(skip_serializing_if = "Option::is_none")]
2667    pub audit_check_to_actions_mapping: Option<::std::collections::HashMap<String, Vec<String>>>,
2668    /// <p>The date and time when the task was completed or canceled.</p>
2669    #[serde(rename = "endTime")]
2670    #[serde(skip_serializing_if = "Option::is_none")]
2671    pub end_time: Option<f64>,
2672    /// <p>The date and time when the task was started.</p>
2673    #[serde(rename = "startTime")]
2674    #[serde(skip_serializing_if = "Option::is_none")]
2675    pub start_time: Option<f64>,
2676    /// <p>Identifies the findings to which the mitigation actions are applied. This can be by audit checks, by audit task, or a set of findings.</p>
2677    #[serde(rename = "target")]
2678    #[serde(skip_serializing_if = "Option::is_none")]
2679    pub target: Option<AuditMitigationActionsTaskTarget>,
2680    /// <p>Aggregate counts of the results when the mitigation tasks were applied to the findings for this audit mitigation actions task.</p>
2681    #[serde(rename = "taskStatistics")]
2682    #[serde(skip_serializing_if = "Option::is_none")]
2683    pub task_statistics: Option<::std::collections::HashMap<String, TaskStatisticsForAuditCheck>>,
2684    /// <p>The current status of the task.</p>
2685    #[serde(rename = "taskStatus")]
2686    #[serde(skip_serializing_if = "Option::is_none")]
2687    pub task_status: Option<String>,
2688}
2689
2690#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2691#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2692pub struct DescribeAuditTaskRequest {
2693    /// <p>The ID of the audit whose information you want to get.</p>
2694    #[serde(rename = "taskId")]
2695    pub task_id: String,
2696}
2697
2698#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2699#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2700pub struct DescribeAuditTaskResponse {
2701    /// <p>Detailed information about each check performed during this audit.</p>
2702    #[serde(rename = "auditDetails")]
2703    #[serde(skip_serializing_if = "Option::is_none")]
2704    pub audit_details: Option<::std::collections::HashMap<String, AuditCheckDetails>>,
2705    /// <p>The name of the scheduled audit (only if the audit was a scheduled audit).</p>
2706    #[serde(rename = "scheduledAuditName")]
2707    #[serde(skip_serializing_if = "Option::is_none")]
2708    pub scheduled_audit_name: Option<String>,
2709    /// <p>The time the audit started.</p>
2710    #[serde(rename = "taskStartTime")]
2711    #[serde(skip_serializing_if = "Option::is_none")]
2712    pub task_start_time: Option<f64>,
2713    /// <p>Statistical information about the audit.</p>
2714    #[serde(rename = "taskStatistics")]
2715    #[serde(skip_serializing_if = "Option::is_none")]
2716    pub task_statistics: Option<TaskStatistics>,
2717    /// <p>The status of the audit: one of "IN_PROGRESS", "COMPLETED", "FAILED", or "CANCELED".</p>
2718    #[serde(rename = "taskStatus")]
2719    #[serde(skip_serializing_if = "Option::is_none")]
2720    pub task_status: Option<String>,
2721    /// <p>The type of audit: "ON_DEMAND_AUDIT_TASK" or "SCHEDULED_AUDIT_TASK".</p>
2722    #[serde(rename = "taskType")]
2723    #[serde(skip_serializing_if = "Option::is_none")]
2724    pub task_type: Option<String>,
2725}
2726
2727#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2728#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2729pub struct DescribeAuthorizerRequest {
2730    /// <p>The name of the authorizer to describe.</p>
2731    #[serde(rename = "authorizerName")]
2732    pub authorizer_name: String,
2733}
2734
2735#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2736#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2737pub struct DescribeAuthorizerResponse {
2738    /// <p>The authorizer description.</p>
2739    #[serde(rename = "authorizerDescription")]
2740    #[serde(skip_serializing_if = "Option::is_none")]
2741    pub authorizer_description: Option<AuthorizerDescription>,
2742}
2743
2744#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2745#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2746pub struct DescribeBillingGroupRequest {
2747    /// <p>The name of the billing group.</p>
2748    #[serde(rename = "billingGroupName")]
2749    pub billing_group_name: String,
2750}
2751
2752#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2753#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2754pub struct DescribeBillingGroupResponse {
2755    /// <p>The ARN of the billing group.</p>
2756    #[serde(rename = "billingGroupArn")]
2757    #[serde(skip_serializing_if = "Option::is_none")]
2758    pub billing_group_arn: Option<String>,
2759    /// <p>The ID of the billing group.</p>
2760    #[serde(rename = "billingGroupId")]
2761    #[serde(skip_serializing_if = "Option::is_none")]
2762    pub billing_group_id: Option<String>,
2763    /// <p>Additional information about the billing group.</p>
2764    #[serde(rename = "billingGroupMetadata")]
2765    #[serde(skip_serializing_if = "Option::is_none")]
2766    pub billing_group_metadata: Option<BillingGroupMetadata>,
2767    /// <p>The name of the billing group.</p>
2768    #[serde(rename = "billingGroupName")]
2769    #[serde(skip_serializing_if = "Option::is_none")]
2770    pub billing_group_name: Option<String>,
2771    /// <p>The properties of the billing group.</p>
2772    #[serde(rename = "billingGroupProperties")]
2773    #[serde(skip_serializing_if = "Option::is_none")]
2774    pub billing_group_properties: Option<BillingGroupProperties>,
2775    /// <p>The version of the billing group.</p>
2776    #[serde(rename = "version")]
2777    #[serde(skip_serializing_if = "Option::is_none")]
2778    pub version: Option<i64>,
2779}
2780
2781/// <p>The input for the DescribeCACertificate operation.</p>
2782#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2783#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2784pub struct DescribeCACertificateRequest {
2785    /// <p>The CA certificate identifier.</p>
2786    #[serde(rename = "certificateId")]
2787    pub certificate_id: String,
2788}
2789
2790/// <p>The output from the DescribeCACertificate operation.</p>
2791#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2792#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2793pub struct DescribeCACertificateResponse {
2794    /// <p>The CA certificate description.</p>
2795    #[serde(rename = "certificateDescription")]
2796    #[serde(skip_serializing_if = "Option::is_none")]
2797    pub certificate_description: Option<CACertificateDescription>,
2798    /// <p>Information about the registration configuration.</p>
2799    #[serde(rename = "registrationConfig")]
2800    #[serde(skip_serializing_if = "Option::is_none")]
2801    pub registration_config: Option<RegistrationConfig>,
2802}
2803
2804/// <p>The input for the DescribeCertificate operation.</p>
2805#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2806#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2807pub struct DescribeCertificateRequest {
2808    /// <p>The ID of the certificate. (The last part of the certificate ARN contains the certificate ID.)</p>
2809    #[serde(rename = "certificateId")]
2810    pub certificate_id: String,
2811}
2812
2813/// <p>The output of the DescribeCertificate operation.</p>
2814#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2815#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2816pub struct DescribeCertificateResponse {
2817    /// <p>The description of the certificate.</p>
2818    #[serde(rename = "certificateDescription")]
2819    #[serde(skip_serializing_if = "Option::is_none")]
2820    pub certificate_description: Option<CertificateDescription>,
2821}
2822
2823#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2824#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2825pub struct DescribeDefaultAuthorizerRequest {}
2826
2827#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2828#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2829pub struct DescribeDefaultAuthorizerResponse {
2830    /// <p>The default authorizer's description.</p>
2831    #[serde(rename = "authorizerDescription")]
2832    #[serde(skip_serializing_if = "Option::is_none")]
2833    pub authorizer_description: Option<AuthorizerDescription>,
2834}
2835
2836#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2837#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2838pub struct DescribeDimensionRequest {
2839    /// <p>The unique identifier for the dimension.</p>
2840    #[serde(rename = "name")]
2841    pub name: String,
2842}
2843
2844#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2845#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2846pub struct DescribeDimensionResponse {
2847    /// <p>The ARN (Amazon resource name) for the dimension.</p>
2848    #[serde(rename = "arn")]
2849    #[serde(skip_serializing_if = "Option::is_none")]
2850    pub arn: Option<String>,
2851    /// <p>The date the dimension was created.</p>
2852    #[serde(rename = "creationDate")]
2853    #[serde(skip_serializing_if = "Option::is_none")]
2854    pub creation_date: Option<f64>,
2855    /// <p>The date the dimension was last modified.</p>
2856    #[serde(rename = "lastModifiedDate")]
2857    #[serde(skip_serializing_if = "Option::is_none")]
2858    pub last_modified_date: Option<f64>,
2859    /// <p>The unique identifier for the dimension.</p>
2860    #[serde(rename = "name")]
2861    #[serde(skip_serializing_if = "Option::is_none")]
2862    pub name: Option<String>,
2863    /// <p>The value or list of values used to scope the dimension. For example, for topic filters, this is the pattern used to match the MQTT topic name.</p>
2864    #[serde(rename = "stringValues")]
2865    #[serde(skip_serializing_if = "Option::is_none")]
2866    pub string_values: Option<Vec<String>>,
2867    /// <p>The type of the dimension.</p>
2868    #[serde(rename = "type")]
2869    #[serde(skip_serializing_if = "Option::is_none")]
2870    pub type_: Option<String>,
2871}
2872
2873#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2874#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2875pub struct DescribeDomainConfigurationRequest {
2876    /// <p>The name of the domain configuration.</p>
2877    #[serde(rename = "domainConfigurationName")]
2878    pub domain_configuration_name: String,
2879}
2880
2881#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2882#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2883pub struct DescribeDomainConfigurationResponse {
2884    /// <p>An object that specifies the authorization service for a domain.</p>
2885    #[serde(rename = "authorizerConfig")]
2886    #[serde(skip_serializing_if = "Option::is_none")]
2887    pub authorizer_config: Option<AuthorizerConfig>,
2888    /// <p>The ARN of the domain configuration.</p>
2889    #[serde(rename = "domainConfigurationArn")]
2890    #[serde(skip_serializing_if = "Option::is_none")]
2891    pub domain_configuration_arn: Option<String>,
2892    /// <p>The name of the domain configuration.</p>
2893    #[serde(rename = "domainConfigurationName")]
2894    #[serde(skip_serializing_if = "Option::is_none")]
2895    pub domain_configuration_name: Option<String>,
2896    /// <p>A Boolean value that specifies the current state of the domain configuration.</p>
2897    #[serde(rename = "domainConfigurationStatus")]
2898    #[serde(skip_serializing_if = "Option::is_none")]
2899    pub domain_configuration_status: Option<String>,
2900    /// <p>The name of the domain.</p>
2901    #[serde(rename = "domainName")]
2902    #[serde(skip_serializing_if = "Option::is_none")]
2903    pub domain_name: Option<String>,
2904    /// <p>The type of the domain.</p>
2905    #[serde(rename = "domainType")]
2906    #[serde(skip_serializing_if = "Option::is_none")]
2907    pub domain_type: Option<String>,
2908    /// <p>A list containing summary information about the server certificate included in the domain configuration.</p>
2909    #[serde(rename = "serverCertificates")]
2910    #[serde(skip_serializing_if = "Option::is_none")]
2911    pub server_certificates: Option<Vec<ServerCertificateSummary>>,
2912    /// <p>The type of service delivered by the endpoint.</p>
2913    #[serde(rename = "serviceType")]
2914    #[serde(skip_serializing_if = "Option::is_none")]
2915    pub service_type: Option<String>,
2916}
2917
2918/// <p>The input for the DescribeEndpoint operation.</p>
2919#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2920#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2921pub struct DescribeEndpointRequest {
2922    /// <p>The endpoint type. Valid endpoint types include:</p> <ul> <li> <p> <code>iot:Data</code> - Returns a VeriSign signed data endpoint.</p> </li> </ul> <ul> <li> <p> <code>iot:Data-ATS</code> - Returns an ATS signed data endpoint.</p> </li> </ul> <ul> <li> <p> <code>iot:CredentialProvider</code> - Returns an AWS IoT credentials provider API endpoint.</p> </li> </ul> <ul> <li> <p> <code>iot:Jobs</code> - Returns an AWS IoT device management Jobs API endpoint.</p> </li> </ul> <p>We strongly recommend that customers use the newer <code>iot:Data-ATS</code> endpoint type to avoid issues related to the widespread distrust of Symantec certificate authorities.</p>
2923    #[serde(rename = "endpointType")]
2924    #[serde(skip_serializing_if = "Option::is_none")]
2925    pub endpoint_type: Option<String>,
2926}
2927
2928/// <p>The output from the DescribeEndpoint operation.</p>
2929#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2930#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2931pub struct DescribeEndpointResponse {
2932    /// <p>The endpoint. The format of the endpoint is as follows: <i>identifier</i>.iot.<i>region</i>.amazonaws.com.</p>
2933    #[serde(rename = "endpointAddress")]
2934    #[serde(skip_serializing_if = "Option::is_none")]
2935    pub endpoint_address: Option<String>,
2936}
2937
2938#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2939#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2940pub struct DescribeEventConfigurationsRequest {}
2941
2942#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2943#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2944pub struct DescribeEventConfigurationsResponse {
2945    /// <p>The creation date of the event configuration.</p>
2946    #[serde(rename = "creationDate")]
2947    #[serde(skip_serializing_if = "Option::is_none")]
2948    pub creation_date: Option<f64>,
2949    /// <p>The event configurations.</p>
2950    #[serde(rename = "eventConfigurations")]
2951    #[serde(skip_serializing_if = "Option::is_none")]
2952    pub event_configurations: Option<::std::collections::HashMap<String, Configuration>>,
2953    /// <p>The date the event configurations were last modified.</p>
2954    #[serde(rename = "lastModifiedDate")]
2955    #[serde(skip_serializing_if = "Option::is_none")]
2956    pub last_modified_date: Option<f64>,
2957}
2958
2959#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2960#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2961pub struct DescribeIndexRequest {
2962    /// <p>The index name.</p>
2963    #[serde(rename = "indexName")]
2964    pub index_name: String,
2965}
2966
2967#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2968#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2969pub struct DescribeIndexResponse {
2970    /// <p>The index name.</p>
2971    #[serde(rename = "indexName")]
2972    #[serde(skip_serializing_if = "Option::is_none")]
2973    pub index_name: Option<String>,
2974    /// <p>The index status.</p>
2975    #[serde(rename = "indexStatus")]
2976    #[serde(skip_serializing_if = "Option::is_none")]
2977    pub index_status: Option<String>,
2978    /// <p><p>Contains a value that specifies the type of indexing performed. Valid values are:</p> <ul> <li> <p>REGISTRY – Your thing index contains only registry data.</p> </li> <li> <p>REGISTRY<em>AND</em>SHADOW - Your thing index contains registry data and shadow data.</p> </li> <li> <p>REGISTRY<em>AND</em>CONNECTIVITY<em>STATUS - Your thing index contains registry data and thing connectivity status data.</p> </li> <li> <p>REGISTRY</em>AND<em>SHADOW</em>AND<em>CONNECTIVITY</em>STATUS - Your thing index contains registry data, shadow data, and thing connectivity status data.</p> </li> </ul></p>
2979    #[serde(rename = "schema")]
2980    #[serde(skip_serializing_if = "Option::is_none")]
2981    pub schema: Option<String>,
2982}
2983
2984#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2985#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2986pub struct DescribeJobExecutionRequest {
2987    /// <p>A string (consisting of the digits "0" through "9" which is used to specify a particular job execution on a particular device.</p>
2988    #[serde(rename = "executionNumber")]
2989    #[serde(skip_serializing_if = "Option::is_none")]
2990    pub execution_number: Option<i64>,
2991    /// <p>The unique identifier you assigned to this job when it was created.</p>
2992    #[serde(rename = "jobId")]
2993    pub job_id: String,
2994    /// <p>The name of the thing on which the job execution is running.</p>
2995    #[serde(rename = "thingName")]
2996    pub thing_name: String,
2997}
2998
2999#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3000#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3001pub struct DescribeJobExecutionResponse {
3002    /// <p>Information about the job execution.</p>
3003    #[serde(rename = "execution")]
3004    #[serde(skip_serializing_if = "Option::is_none")]
3005    pub execution: Option<JobExecution>,
3006}
3007
3008#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3009#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3010pub struct DescribeJobRequest {
3011    /// <p>The unique identifier you assigned to this job when it was created.</p>
3012    #[serde(rename = "jobId")]
3013    pub job_id: String,
3014}
3015
3016#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3017#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3018pub struct DescribeJobResponse {
3019    /// <p>An S3 link to the job document.</p>
3020    #[serde(rename = "documentSource")]
3021    #[serde(skip_serializing_if = "Option::is_none")]
3022    pub document_source: Option<String>,
3023    /// <p>Information about the job.</p>
3024    #[serde(rename = "job")]
3025    #[serde(skip_serializing_if = "Option::is_none")]
3026    pub job: Option<Job>,
3027}
3028
3029#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3030#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3031pub struct DescribeMitigationActionRequest {
3032    /// <p>The friendly name that uniquely identifies the mitigation action.</p>
3033    #[serde(rename = "actionName")]
3034    pub action_name: String,
3035}
3036
3037#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3038#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3039pub struct DescribeMitigationActionResponse {
3040    /// <p>The ARN that identifies this migration action.</p>
3041    #[serde(rename = "actionArn")]
3042    #[serde(skip_serializing_if = "Option::is_none")]
3043    pub action_arn: Option<String>,
3044    /// <p>A unique identifier for this action.</p>
3045    #[serde(rename = "actionId")]
3046    #[serde(skip_serializing_if = "Option::is_none")]
3047    pub action_id: Option<String>,
3048    /// <p>The friendly name that uniquely identifies the mitigation action.</p>
3049    #[serde(rename = "actionName")]
3050    #[serde(skip_serializing_if = "Option::is_none")]
3051    pub action_name: Option<String>,
3052    /// <p>Parameters that control how the mitigation action is applied, specific to the type of mitigation action.</p>
3053    #[serde(rename = "actionParams")]
3054    #[serde(skip_serializing_if = "Option::is_none")]
3055    pub action_params: Option<MitigationActionParams>,
3056    /// <p>The type of mitigation action.</p>
3057    #[serde(rename = "actionType")]
3058    #[serde(skip_serializing_if = "Option::is_none")]
3059    pub action_type: Option<String>,
3060    /// <p>The date and time when the mitigation action was added to your AWS account.</p>
3061    #[serde(rename = "creationDate")]
3062    #[serde(skip_serializing_if = "Option::is_none")]
3063    pub creation_date: Option<f64>,
3064    /// <p>The date and time when the mitigation action was last changed.</p>
3065    #[serde(rename = "lastModifiedDate")]
3066    #[serde(skip_serializing_if = "Option::is_none")]
3067    pub last_modified_date: Option<f64>,
3068    /// <p>The ARN of the IAM role used to apply this action.</p>
3069    #[serde(rename = "roleArn")]
3070    #[serde(skip_serializing_if = "Option::is_none")]
3071    pub role_arn: Option<String>,
3072}
3073
3074#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3075#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3076pub struct DescribeProvisioningTemplateRequest {
3077    /// <p>The name of the fleet provisioning template.</p>
3078    #[serde(rename = "templateName")]
3079    pub template_name: String,
3080}
3081
3082#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3083#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3084pub struct DescribeProvisioningTemplateResponse {
3085    /// <p>The date when the fleet provisioning template was created.</p>
3086    #[serde(rename = "creationDate")]
3087    #[serde(skip_serializing_if = "Option::is_none")]
3088    pub creation_date: Option<f64>,
3089    /// <p>The default fleet template version ID.</p>
3090    #[serde(rename = "defaultVersionId")]
3091    #[serde(skip_serializing_if = "Option::is_none")]
3092    pub default_version_id: Option<i64>,
3093    /// <p>The description of the fleet provisioning template.</p>
3094    #[serde(rename = "description")]
3095    #[serde(skip_serializing_if = "Option::is_none")]
3096    pub description: Option<String>,
3097    /// <p>True if the fleet provisioning template is enabled, otherwise false.</p>
3098    #[serde(rename = "enabled")]
3099    #[serde(skip_serializing_if = "Option::is_none")]
3100    pub enabled: Option<bool>,
3101    /// <p>The date when the fleet provisioning template was last modified.</p>
3102    #[serde(rename = "lastModifiedDate")]
3103    #[serde(skip_serializing_if = "Option::is_none")]
3104    pub last_modified_date: Option<f64>,
3105    /// <p>Gets information about a pre-provisioned hook.</p>
3106    #[serde(rename = "preProvisioningHook")]
3107    #[serde(skip_serializing_if = "Option::is_none")]
3108    pub pre_provisioning_hook: Option<ProvisioningHook>,
3109    /// <p>The ARN of the role associated with the provisioning template. This IoT role grants permission to provision a device.</p>
3110    #[serde(rename = "provisioningRoleArn")]
3111    #[serde(skip_serializing_if = "Option::is_none")]
3112    pub provisioning_role_arn: Option<String>,
3113    /// <p>The ARN of the fleet provisioning template.</p>
3114    #[serde(rename = "templateArn")]
3115    #[serde(skip_serializing_if = "Option::is_none")]
3116    pub template_arn: Option<String>,
3117    /// <p>The JSON formatted contents of the fleet provisioning template.</p>
3118    #[serde(rename = "templateBody")]
3119    #[serde(skip_serializing_if = "Option::is_none")]
3120    pub template_body: Option<String>,
3121    /// <p>The name of the fleet provisioning template.</p>
3122    #[serde(rename = "templateName")]
3123    #[serde(skip_serializing_if = "Option::is_none")]
3124    pub template_name: Option<String>,
3125}
3126
3127#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3128#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3129pub struct DescribeProvisioningTemplateVersionRequest {
3130    /// <p>The template name.</p>
3131    #[serde(rename = "templateName")]
3132    pub template_name: String,
3133    /// <p>The fleet provisioning template version ID.</p>
3134    #[serde(rename = "versionId")]
3135    pub version_id: i64,
3136}
3137
3138#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3139#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3140pub struct DescribeProvisioningTemplateVersionResponse {
3141    /// <p>The date when the fleet provisioning template version was created.</p>
3142    #[serde(rename = "creationDate")]
3143    #[serde(skip_serializing_if = "Option::is_none")]
3144    pub creation_date: Option<f64>,
3145    /// <p>True if the fleet provisioning template version is the default version.</p>
3146    #[serde(rename = "isDefaultVersion")]
3147    #[serde(skip_serializing_if = "Option::is_none")]
3148    pub is_default_version: Option<bool>,
3149    /// <p>The JSON formatted contents of the fleet provisioning template version.</p>
3150    #[serde(rename = "templateBody")]
3151    #[serde(skip_serializing_if = "Option::is_none")]
3152    pub template_body: Option<String>,
3153    /// <p>The fleet provisioning template version ID.</p>
3154    #[serde(rename = "versionId")]
3155    #[serde(skip_serializing_if = "Option::is_none")]
3156    pub version_id: Option<i64>,
3157}
3158
3159#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3160#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3161pub struct DescribeRoleAliasRequest {
3162    /// <p>The role alias to describe.</p>
3163    #[serde(rename = "roleAlias")]
3164    pub role_alias: String,
3165}
3166
3167#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3168#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3169pub struct DescribeRoleAliasResponse {
3170    /// <p>The role alias description.</p>
3171    #[serde(rename = "roleAliasDescription")]
3172    #[serde(skip_serializing_if = "Option::is_none")]
3173    pub role_alias_description: Option<RoleAliasDescription>,
3174}
3175
3176#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3177#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3178pub struct DescribeScheduledAuditRequest {
3179    /// <p>The name of the scheduled audit whose information you want to get.</p>
3180    #[serde(rename = "scheduledAuditName")]
3181    pub scheduled_audit_name: String,
3182}
3183
3184#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3185#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3186pub struct DescribeScheduledAuditResponse {
3187    /// <p>The day of the month on which the scheduled audit takes place. Will be "1" through "31" or "LAST". If days 29-31 are specified, and the month does not have that many days, the audit takes place on the "LAST" day of the month.</p>
3188    #[serde(rename = "dayOfMonth")]
3189    #[serde(skip_serializing_if = "Option::is_none")]
3190    pub day_of_month: Option<String>,
3191    /// <p>The day of the week on which the scheduled audit takes place. One of "SUN", "MON", "TUE", "WED", "THU", "FRI", or "SAT".</p>
3192    #[serde(rename = "dayOfWeek")]
3193    #[serde(skip_serializing_if = "Option::is_none")]
3194    pub day_of_week: Option<String>,
3195    /// <p>How often the scheduled audit takes place. One of "DAILY", "WEEKLY", "BIWEEKLY", or "MONTHLY". The start time of each audit is determined by the system.</p>
3196    #[serde(rename = "frequency")]
3197    #[serde(skip_serializing_if = "Option::is_none")]
3198    pub frequency: Option<String>,
3199    /// <p>The ARN of the scheduled audit.</p>
3200    #[serde(rename = "scheduledAuditArn")]
3201    #[serde(skip_serializing_if = "Option::is_none")]
3202    pub scheduled_audit_arn: Option<String>,
3203    /// <p>The name of the scheduled audit.</p>
3204    #[serde(rename = "scheduledAuditName")]
3205    #[serde(skip_serializing_if = "Option::is_none")]
3206    pub scheduled_audit_name: Option<String>,
3207    /// <p>Which checks are performed during the scheduled audit. Checks must be enabled for your account. (Use <code>DescribeAccountAuditConfiguration</code> to see the list of all checks, including those that are enabled or use <code>UpdateAccountAuditConfiguration</code> to select which checks are enabled.)</p>
3208    #[serde(rename = "targetCheckNames")]
3209    #[serde(skip_serializing_if = "Option::is_none")]
3210    pub target_check_names: Option<Vec<String>>,
3211}
3212
3213#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3214#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3215pub struct DescribeSecurityProfileRequest {
3216    /// <p>The name of the security profile whose information you want to get.</p>
3217    #[serde(rename = "securityProfileName")]
3218    pub security_profile_name: String,
3219}
3220
3221#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3222#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3223pub struct DescribeSecurityProfileResponse {
3224    /// <p>A list of metrics whose data is retained (stored). By default, data is retained for any metric used in the profile's behaviors, but it is also retained for any metric specified here.</p>
3225    #[serde(rename = "additionalMetricsToRetainV2")]
3226    #[serde(skip_serializing_if = "Option::is_none")]
3227    pub additional_metrics_to_retain_v2: Option<Vec<MetricToRetain>>,
3228    /// <p>Where the alerts are sent. (Alerts are always sent to the console.)</p>
3229    #[serde(rename = "alertTargets")]
3230    #[serde(skip_serializing_if = "Option::is_none")]
3231    pub alert_targets: Option<::std::collections::HashMap<String, AlertTarget>>,
3232    /// <p>Specifies the behaviors that, when violated by a device (thing), cause an alert.</p>
3233    #[serde(rename = "behaviors")]
3234    #[serde(skip_serializing_if = "Option::is_none")]
3235    pub behaviors: Option<Vec<Behavior>>,
3236    /// <p>The time the security profile was created.</p>
3237    #[serde(rename = "creationDate")]
3238    #[serde(skip_serializing_if = "Option::is_none")]
3239    pub creation_date: Option<f64>,
3240    /// <p>The time the security profile was last modified.</p>
3241    #[serde(rename = "lastModifiedDate")]
3242    #[serde(skip_serializing_if = "Option::is_none")]
3243    pub last_modified_date: Option<f64>,
3244    /// <p>The ARN of the security profile.</p>
3245    #[serde(rename = "securityProfileArn")]
3246    #[serde(skip_serializing_if = "Option::is_none")]
3247    pub security_profile_arn: Option<String>,
3248    /// <p>A description of the security profile (associated with the security profile when it was created or updated).</p>
3249    #[serde(rename = "securityProfileDescription")]
3250    #[serde(skip_serializing_if = "Option::is_none")]
3251    pub security_profile_description: Option<String>,
3252    /// <p>The name of the security profile.</p>
3253    #[serde(rename = "securityProfileName")]
3254    #[serde(skip_serializing_if = "Option::is_none")]
3255    pub security_profile_name: Option<String>,
3256    /// <p>The version of the security profile. A new version is generated whenever the security profile is updated.</p>
3257    #[serde(rename = "version")]
3258    #[serde(skip_serializing_if = "Option::is_none")]
3259    pub version: Option<i64>,
3260}
3261
3262#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3263#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3264pub struct DescribeStreamRequest {
3265    /// <p>The stream ID.</p>
3266    #[serde(rename = "streamId")]
3267    pub stream_id: String,
3268}
3269
3270#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3271#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3272pub struct DescribeStreamResponse {
3273    /// <p>Information about the stream.</p>
3274    #[serde(rename = "streamInfo")]
3275    #[serde(skip_serializing_if = "Option::is_none")]
3276    pub stream_info: Option<StreamInfo>,
3277}
3278
3279#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3280#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3281pub struct DescribeThingGroupRequest {
3282    /// <p>The name of the thing group.</p>
3283    #[serde(rename = "thingGroupName")]
3284    pub thing_group_name: String,
3285}
3286
3287#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3288#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3289pub struct DescribeThingGroupResponse {
3290    /// <p>The dynamic thing group index name.</p>
3291    #[serde(rename = "indexName")]
3292    #[serde(skip_serializing_if = "Option::is_none")]
3293    pub index_name: Option<String>,
3294    /// <p>The dynamic thing group search query string.</p>
3295    #[serde(rename = "queryString")]
3296    #[serde(skip_serializing_if = "Option::is_none")]
3297    pub query_string: Option<String>,
3298    /// <p>The dynamic thing group query version.</p>
3299    #[serde(rename = "queryVersion")]
3300    #[serde(skip_serializing_if = "Option::is_none")]
3301    pub query_version: Option<String>,
3302    /// <p>The dynamic thing group status.</p>
3303    #[serde(rename = "status")]
3304    #[serde(skip_serializing_if = "Option::is_none")]
3305    pub status: Option<String>,
3306    /// <p>The thing group ARN.</p>
3307    #[serde(rename = "thingGroupArn")]
3308    #[serde(skip_serializing_if = "Option::is_none")]
3309    pub thing_group_arn: Option<String>,
3310    /// <p>The thing group ID.</p>
3311    #[serde(rename = "thingGroupId")]
3312    #[serde(skip_serializing_if = "Option::is_none")]
3313    pub thing_group_id: Option<String>,
3314    /// <p>Thing group metadata.</p>
3315    #[serde(rename = "thingGroupMetadata")]
3316    #[serde(skip_serializing_if = "Option::is_none")]
3317    pub thing_group_metadata: Option<ThingGroupMetadata>,
3318    /// <p>The name of the thing group.</p>
3319    #[serde(rename = "thingGroupName")]
3320    #[serde(skip_serializing_if = "Option::is_none")]
3321    pub thing_group_name: Option<String>,
3322    /// <p>The thing group properties.</p>
3323    #[serde(rename = "thingGroupProperties")]
3324    #[serde(skip_serializing_if = "Option::is_none")]
3325    pub thing_group_properties: Option<ThingGroupProperties>,
3326    /// <p>The version of the thing group.</p>
3327    #[serde(rename = "version")]
3328    #[serde(skip_serializing_if = "Option::is_none")]
3329    pub version: Option<i64>,
3330}
3331
3332#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3333#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3334pub struct DescribeThingRegistrationTaskRequest {
3335    /// <p>The task ID.</p>
3336    #[serde(rename = "taskId")]
3337    pub task_id: String,
3338}
3339
3340#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3341#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3342pub struct DescribeThingRegistrationTaskResponse {
3343    /// <p>The task creation date.</p>
3344    #[serde(rename = "creationDate")]
3345    #[serde(skip_serializing_if = "Option::is_none")]
3346    pub creation_date: Option<f64>,
3347    /// <p>The number of things that failed to be provisioned.</p>
3348    #[serde(rename = "failureCount")]
3349    #[serde(skip_serializing_if = "Option::is_none")]
3350    pub failure_count: Option<i64>,
3351    /// <p>The S3 bucket that contains the input file.</p>
3352    #[serde(rename = "inputFileBucket")]
3353    #[serde(skip_serializing_if = "Option::is_none")]
3354    pub input_file_bucket: Option<String>,
3355    /// <p>The input file key.</p>
3356    #[serde(rename = "inputFileKey")]
3357    #[serde(skip_serializing_if = "Option::is_none")]
3358    pub input_file_key: Option<String>,
3359    /// <p>The date when the task was last modified.</p>
3360    #[serde(rename = "lastModifiedDate")]
3361    #[serde(skip_serializing_if = "Option::is_none")]
3362    pub last_modified_date: Option<f64>,
3363    /// <p>The message.</p>
3364    #[serde(rename = "message")]
3365    #[serde(skip_serializing_if = "Option::is_none")]
3366    pub message: Option<String>,
3367    /// <p>The progress of the bulk provisioning task expressed as a percentage.</p>
3368    #[serde(rename = "percentageProgress")]
3369    #[serde(skip_serializing_if = "Option::is_none")]
3370    pub percentage_progress: Option<i64>,
3371    /// <p>The role ARN that grants access to the input file bucket.</p>
3372    #[serde(rename = "roleArn")]
3373    #[serde(skip_serializing_if = "Option::is_none")]
3374    pub role_arn: Option<String>,
3375    /// <p>The status of the bulk thing provisioning task.</p>
3376    #[serde(rename = "status")]
3377    #[serde(skip_serializing_if = "Option::is_none")]
3378    pub status: Option<String>,
3379    /// <p>The number of things successfully provisioned.</p>
3380    #[serde(rename = "successCount")]
3381    #[serde(skip_serializing_if = "Option::is_none")]
3382    pub success_count: Option<i64>,
3383    /// <p>The task ID.</p>
3384    #[serde(rename = "taskId")]
3385    #[serde(skip_serializing_if = "Option::is_none")]
3386    pub task_id: Option<String>,
3387    /// <p>The task's template.</p>
3388    #[serde(rename = "templateBody")]
3389    #[serde(skip_serializing_if = "Option::is_none")]
3390    pub template_body: Option<String>,
3391}
3392
3393/// <p>The input for the DescribeThing operation.</p>
3394#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3395#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3396pub struct DescribeThingRequest {
3397    /// <p>The name of the thing.</p>
3398    #[serde(rename = "thingName")]
3399    pub thing_name: String,
3400}
3401
3402/// <p>The output from the DescribeThing operation.</p>
3403#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3404#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3405pub struct DescribeThingResponse {
3406    /// <p>The thing attributes.</p>
3407    #[serde(rename = "attributes")]
3408    #[serde(skip_serializing_if = "Option::is_none")]
3409    pub attributes: Option<::std::collections::HashMap<String, String>>,
3410    /// <p>The name of the billing group the thing belongs to.</p>
3411    #[serde(rename = "billingGroupName")]
3412    #[serde(skip_serializing_if = "Option::is_none")]
3413    pub billing_group_name: Option<String>,
3414    /// <p>The default MQTT client ID. For a typical device, the thing name is also used as the default MQTT client ID. Although we don’t require a mapping between a thing's registry name and its use of MQTT client IDs, certificates, or shadow state, we recommend that you choose a thing name and use it as the MQTT client ID for the registry and the Device Shadow service.</p> <p>This lets you better organize your AWS IoT fleet without removing the flexibility of the underlying device certificate model or shadows.</p>
3415    #[serde(rename = "defaultClientId")]
3416    #[serde(skip_serializing_if = "Option::is_none")]
3417    pub default_client_id: Option<String>,
3418    /// <p>The ARN of the thing to describe.</p>
3419    #[serde(rename = "thingArn")]
3420    #[serde(skip_serializing_if = "Option::is_none")]
3421    pub thing_arn: Option<String>,
3422    /// <p>The ID of the thing to describe.</p>
3423    #[serde(rename = "thingId")]
3424    #[serde(skip_serializing_if = "Option::is_none")]
3425    pub thing_id: Option<String>,
3426    /// <p>The name of the thing.</p>
3427    #[serde(rename = "thingName")]
3428    #[serde(skip_serializing_if = "Option::is_none")]
3429    pub thing_name: Option<String>,
3430    /// <p>The thing type name.</p>
3431    #[serde(rename = "thingTypeName")]
3432    #[serde(skip_serializing_if = "Option::is_none")]
3433    pub thing_type_name: Option<String>,
3434    /// <p><p>The current version of the thing record in the registry.</p> <note> <p>To avoid unintentional changes to the information in the registry, you can pass the version information in the <code>expectedVersion</code> parameter of the <code>UpdateThing</code> and <code>DeleteThing</code> calls.</p> </note></p>
3435    #[serde(rename = "version")]
3436    #[serde(skip_serializing_if = "Option::is_none")]
3437    pub version: Option<i64>,
3438}
3439
3440/// <p>The input for the DescribeThingType operation.</p>
3441#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3442#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3443pub struct DescribeThingTypeRequest {
3444    /// <p>The name of the thing type.</p>
3445    #[serde(rename = "thingTypeName")]
3446    pub thing_type_name: String,
3447}
3448
3449/// <p>The output for the DescribeThingType operation.</p>
3450#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3451#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3452pub struct DescribeThingTypeResponse {
3453    /// <p>The thing type ARN.</p>
3454    #[serde(rename = "thingTypeArn")]
3455    #[serde(skip_serializing_if = "Option::is_none")]
3456    pub thing_type_arn: Option<String>,
3457    /// <p>The thing type ID.</p>
3458    #[serde(rename = "thingTypeId")]
3459    #[serde(skip_serializing_if = "Option::is_none")]
3460    pub thing_type_id: Option<String>,
3461    /// <p>The ThingTypeMetadata contains additional information about the thing type including: creation date and time, a value indicating whether the thing type is deprecated, and a date and time when it was deprecated.</p>
3462    #[serde(rename = "thingTypeMetadata")]
3463    #[serde(skip_serializing_if = "Option::is_none")]
3464    pub thing_type_metadata: Option<ThingTypeMetadata>,
3465    /// <p>The name of the thing type.</p>
3466    #[serde(rename = "thingTypeName")]
3467    #[serde(skip_serializing_if = "Option::is_none")]
3468    pub thing_type_name: Option<String>,
3469    /// <p>The ThingTypeProperties contains information about the thing type including description, and a list of searchable thing attribute names.</p>
3470    #[serde(rename = "thingTypeProperties")]
3471    #[serde(skip_serializing_if = "Option::is_none")]
3472    pub thing_type_properties: Option<ThingTypeProperties>,
3473}
3474
3475/// <p>Describes the location of the updated firmware.</p>
3476#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
3477pub struct Destination {
3478    /// <p>Describes the location in S3 of the updated firmware.</p>
3479    #[serde(rename = "s3Destination")]
3480    #[serde(skip_serializing_if = "Option::is_none")]
3481    pub s_3_destination: Option<S3Destination>,
3482}
3483
3484#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3485#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3486pub struct DetachPolicyRequest {
3487    /// <p>The policy to detach.</p>
3488    #[serde(rename = "policyName")]
3489    pub policy_name: String,
3490    /// <p>The target from which the policy will be detached.</p>
3491    #[serde(rename = "target")]
3492    pub target: String,
3493}
3494
3495/// <p>The input for the DetachPrincipalPolicy operation.</p>
3496#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3497#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3498pub struct DetachPrincipalPolicyRequest {
3499    /// <p>The name of the policy to detach.</p>
3500    #[serde(rename = "policyName")]
3501    pub policy_name: String,
3502    /// <p>The principal.</p> <p>If the principal is a certificate, specify the certificate ARN. If the principal is an Amazon Cognito identity, specify the identity ID.</p>
3503    #[serde(rename = "principal")]
3504    pub principal: String,
3505}
3506
3507#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3508#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3509pub struct DetachSecurityProfileRequest {
3510    /// <p>The security profile that is detached.</p>
3511    #[serde(rename = "securityProfileName")]
3512    pub security_profile_name: String,
3513    /// <p>The ARN of the thing group from which the security profile is detached.</p>
3514    #[serde(rename = "securityProfileTargetArn")]
3515    pub security_profile_target_arn: String,
3516}
3517
3518#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3519#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3520pub struct DetachSecurityProfileResponse {}
3521
3522/// <p>The input for the DetachThingPrincipal operation.</p>
3523#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3524#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3525pub struct DetachThingPrincipalRequest {
3526    /// <p>If the principal is a certificate, this value must be ARN of the certificate. If the principal is an Amazon Cognito identity, this value must be the ID of the Amazon Cognito identity.</p>
3527    #[serde(rename = "principal")]
3528    pub principal: String,
3529    /// <p>The name of the thing.</p>
3530    #[serde(rename = "thingName")]
3531    pub thing_name: String,
3532}
3533
3534/// <p>The output from the DetachThingPrincipal operation.</p>
3535#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3536#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3537pub struct DetachThingPrincipalResponse {}
3538
3539/// <p>The input for the DisableTopicRuleRequest operation.</p>
3540#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3541#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3542pub struct DisableTopicRuleRequest {
3543    /// <p>The name of the rule to disable.</p>
3544    #[serde(rename = "ruleName")]
3545    pub rule_name: String,
3546}
3547
3548/// <p><p>The summary of a domain configuration. A domain configuration specifies custom IoT-specific information about a domain. A domain configuration can be associated with an AWS-managed domain (for example, dbc123defghijk.iot.us-west-2.amazonaws.com), a customer managed domain, or a default endpoint.</p> <ul> <li> <p>Data</p> </li> <li> <p>Jobs</p> </li> <li> <p>CredentialProvider</p> </li> </ul> <note> <p>The domain configuration feature is in public preview and is subject to change.</p> </note></p>
3549#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3550#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3551pub struct DomainConfigurationSummary {
3552    /// <p>The ARN of the domain configuration.</p>
3553    #[serde(rename = "domainConfigurationArn")]
3554    #[serde(skip_serializing_if = "Option::is_none")]
3555    pub domain_configuration_arn: Option<String>,
3556    /// <p>The name of the domain configuration. This value must be unique to a region.</p>
3557    #[serde(rename = "domainConfigurationName")]
3558    #[serde(skip_serializing_if = "Option::is_none")]
3559    pub domain_configuration_name: Option<String>,
3560    /// <p>The type of service delivered by the endpoint.</p>
3561    #[serde(rename = "serviceType")]
3562    #[serde(skip_serializing_if = "Option::is_none")]
3563    pub service_type: Option<String>,
3564}
3565
3566/// <p>Describes an action to write to a DynamoDB table.</p> <p>The <code>tableName</code>, <code>hashKeyField</code>, and <code>rangeKeyField</code> values must match the values used when you created the table.</p> <p>The <code>hashKeyValue</code> and <code>rangeKeyvalue</code> fields use a substitution template syntax. These templates provide data at runtime. The syntax is as follows: ${<i>sql-expression</i>}.</p> <p>You can specify any valid expression in a WHERE or SELECT clause, including JSON properties, comparisons, calculations, and functions. For example, the following field uses the third level of the topic:</p> <p> <code>"hashKeyValue": "${topic(3)}"</code> </p> <p>The following field uses the timestamp:</p> <p> <code>"rangeKeyValue": "${timestamp()}"</code> </p>
3567#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
3568pub struct DynamoDBAction {
3569    /// <p>The hash key name.</p>
3570    #[serde(rename = "hashKeyField")]
3571    pub hash_key_field: String,
3572    /// <p>The hash key type. Valid values are "STRING" or "NUMBER"</p>
3573    #[serde(rename = "hashKeyType")]
3574    #[serde(skip_serializing_if = "Option::is_none")]
3575    pub hash_key_type: Option<String>,
3576    /// <p>The hash key value.</p>
3577    #[serde(rename = "hashKeyValue")]
3578    pub hash_key_value: String,
3579    /// <p>The type of operation to be performed. This follows the substitution template, so it can be <code>${operation}</code>, but the substitution must result in one of the following: <code>INSERT</code>, <code>UPDATE</code>, or <code>DELETE</code>.</p>
3580    #[serde(rename = "operation")]
3581    #[serde(skip_serializing_if = "Option::is_none")]
3582    pub operation: Option<String>,
3583    /// <p>The action payload. This name can be customized.</p>
3584    #[serde(rename = "payloadField")]
3585    #[serde(skip_serializing_if = "Option::is_none")]
3586    pub payload_field: Option<String>,
3587    /// <p>The range key name.</p>
3588    #[serde(rename = "rangeKeyField")]
3589    #[serde(skip_serializing_if = "Option::is_none")]
3590    pub range_key_field: Option<String>,
3591    /// <p>The range key type. Valid values are "STRING" or "NUMBER"</p>
3592    #[serde(rename = "rangeKeyType")]
3593    #[serde(skip_serializing_if = "Option::is_none")]
3594    pub range_key_type: Option<String>,
3595    /// <p>The range key value.</p>
3596    #[serde(rename = "rangeKeyValue")]
3597    #[serde(skip_serializing_if = "Option::is_none")]
3598    pub range_key_value: Option<String>,
3599    /// <p>The ARN of the IAM role that grants access to the DynamoDB table.</p>
3600    #[serde(rename = "roleArn")]
3601    pub role_arn: String,
3602    /// <p>The name of the DynamoDB table.</p>
3603    #[serde(rename = "tableName")]
3604    pub table_name: String,
3605}
3606
3607/// <p>Describes an action to write to a DynamoDB table.</p> <p>This DynamoDB action writes each attribute in the message payload into it's own column in the DynamoDB table.</p>
3608#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
3609pub struct DynamoDBv2Action {
3610    /// <p>Specifies the DynamoDB table to which the message data will be written. For example:</p> <p> <code>{ "dynamoDBv2": { "roleArn": "aws:iam:12341251:my-role" "putItem": { "tableName": "my-table" } } }</code> </p> <p>Each attribute in the message payload will be written to a separate column in the DynamoDB database.</p>
3611    #[serde(rename = "putItem")]
3612    pub put_item: PutItemInput,
3613    /// <p>The ARN of the IAM role that grants access to the DynamoDB table.</p>
3614    #[serde(rename = "roleArn")]
3615    pub role_arn: String,
3616}
3617
3618/// <p>The policy that has the effect on the authorization results.</p>
3619#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3620#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3621pub struct EffectivePolicy {
3622    /// <p>The policy ARN.</p>
3623    #[serde(rename = "policyArn")]
3624    #[serde(skip_serializing_if = "Option::is_none")]
3625    pub policy_arn: Option<String>,
3626    /// <p>The IAM policy document.</p>
3627    #[serde(rename = "policyDocument")]
3628    #[serde(skip_serializing_if = "Option::is_none")]
3629    pub policy_document: Option<String>,
3630    /// <p>The policy name.</p>
3631    #[serde(rename = "policyName")]
3632    #[serde(skip_serializing_if = "Option::is_none")]
3633    pub policy_name: Option<String>,
3634}
3635
3636/// <p>Describes an action that writes data to an Amazon Elasticsearch Service domain.</p>
3637#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
3638pub struct ElasticsearchAction {
3639    /// <p>The endpoint of your Elasticsearch domain.</p>
3640    #[serde(rename = "endpoint")]
3641    pub endpoint: String,
3642    /// <p>The unique identifier for the document you are storing.</p>
3643    #[serde(rename = "id")]
3644    pub id: String,
3645    /// <p>The Elasticsearch index where you want to store your data.</p>
3646    #[serde(rename = "index")]
3647    pub index: String,
3648    /// <p>The IAM role ARN that has access to Elasticsearch.</p>
3649    #[serde(rename = "roleArn")]
3650    pub role_arn: String,
3651    /// <p>The type of document you are storing.</p>
3652    #[serde(rename = "type")]
3653    pub type_: String,
3654}
3655
3656/// <p>Parameters used when defining a mitigation action that enable AWS IoT logging.</p>
3657#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
3658pub struct EnableIoTLoggingParams {
3659    /// <p>Specifies the types of information to be logged.</p>
3660    #[serde(rename = "logLevel")]
3661    pub log_level: String,
3662    /// <p>The ARN of the IAM role used for logging.</p>
3663    #[serde(rename = "roleArnForLogging")]
3664    pub role_arn_for_logging: String,
3665}
3666
3667/// <p>The input for the EnableTopicRuleRequest operation.</p>
3668#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3669#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3670pub struct EnableTopicRuleRequest {
3671    /// <p>The name of the topic rule to enable.</p>
3672    #[serde(rename = "ruleName")]
3673    pub rule_name: String,
3674}
3675
3676/// <p>Error information.</p>
3677#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3678#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3679pub struct ErrorInfo {
3680    /// <p>The error code.</p>
3681    #[serde(rename = "code")]
3682    #[serde(skip_serializing_if = "Option::is_none")]
3683    pub code: Option<String>,
3684    /// <p>The error message.</p>
3685    #[serde(rename = "message")]
3686    #[serde(skip_serializing_if = "Option::is_none")]
3687    pub message: Option<String>,
3688}
3689
3690/// <p>Information that explicitly denies authorization.</p>
3691#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3692#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3693pub struct ExplicitDeny {
3694    /// <p>The policies that denied the authorization.</p>
3695    #[serde(rename = "policies")]
3696    #[serde(skip_serializing_if = "Option::is_none")]
3697    pub policies: Option<Vec<Policy>>,
3698}
3699
3700/// <p>Allows you to create an exponential rate of rollout for a job.</p>
3701#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
3702pub struct ExponentialRolloutRate {
3703    /// <p>The minimum number of things that will be notified of a pending job, per minute at the start of job rollout. This parameter allows you to define the initial rate of rollout.</p>
3704    #[serde(rename = "baseRatePerMinute")]
3705    pub base_rate_per_minute: i64,
3706    /// <p>The exponential factor to increase the rate of rollout for a job.</p>
3707    #[serde(rename = "incrementFactor")]
3708    pub increment_factor: f64,
3709    /// <p>The criteria to initiate the increase in rate of rollout for a job.</p> <p>AWS IoT supports up to one digit after the decimal (for example, 1.5, but not 1.55).</p>
3710    #[serde(rename = "rateIncreaseCriteria")]
3711    pub rate_increase_criteria: RateIncreaseCriteria,
3712}
3713
3714/// <p>Describes the name and data type at a field.</p>
3715#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
3716pub struct Field {
3717    /// <p>The name of the field.</p>
3718    #[serde(rename = "name")]
3719    #[serde(skip_serializing_if = "Option::is_none")]
3720    pub name: Option<String>,
3721    /// <p>The datatype of the field.</p>
3722    #[serde(rename = "type")]
3723    #[serde(skip_serializing_if = "Option::is_none")]
3724    pub type_: Option<String>,
3725}
3726
3727/// <p>The location of the OTA update.</p>
3728#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
3729pub struct FileLocation {
3730    /// <p>The location of the updated firmware in S3.</p>
3731    #[serde(rename = "s3Location")]
3732    #[serde(skip_serializing_if = "Option::is_none")]
3733    pub s_3_location: Option<S3Location>,
3734    /// <p>The stream that contains the OTA update.</p>
3735    #[serde(rename = "stream")]
3736    #[serde(skip_serializing_if = "Option::is_none")]
3737    pub stream: Option<Stream>,
3738}
3739
3740/// <p>Describes an action that writes data to an Amazon Kinesis Firehose stream.</p>
3741#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
3742pub struct FirehoseAction {
3743    /// <p>The delivery stream name.</p>
3744    #[serde(rename = "deliveryStreamName")]
3745    pub delivery_stream_name: String,
3746    /// <p>The IAM role that grants access to the Amazon Kinesis Firehose stream.</p>
3747    #[serde(rename = "roleArn")]
3748    pub role_arn: String,
3749    /// <p>A character separator that will be used to separate records written to the Firehose stream. Valid values are: '\n' (newline), '\t' (tab), '\r\n' (Windows newline), ',' (comma).</p>
3750    #[serde(rename = "separator")]
3751    #[serde(skip_serializing_if = "Option::is_none")]
3752    pub separator: Option<String>,
3753}
3754
3755#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3756#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3757pub struct GetCardinalityRequest {
3758    /// <p>The field to aggregate.</p>
3759    #[serde(rename = "aggregationField")]
3760    #[serde(skip_serializing_if = "Option::is_none")]
3761    pub aggregation_field: Option<String>,
3762    /// <p>The name of the index to search.</p>
3763    #[serde(rename = "indexName")]
3764    #[serde(skip_serializing_if = "Option::is_none")]
3765    pub index_name: Option<String>,
3766    /// <p>The search query.</p>
3767    #[serde(rename = "queryString")]
3768    pub query_string: String,
3769    /// <p>The query version.</p>
3770    #[serde(rename = "queryVersion")]
3771    #[serde(skip_serializing_if = "Option::is_none")]
3772    pub query_version: Option<String>,
3773}
3774
3775#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3776#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3777pub struct GetCardinalityResponse {
3778    /// <p>The approximate count of unique values that match the query.</p>
3779    #[serde(rename = "cardinality")]
3780    #[serde(skip_serializing_if = "Option::is_none")]
3781    pub cardinality: Option<i64>,
3782}
3783
3784#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3785#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3786pub struct GetEffectivePoliciesRequest {
3787    /// <p>The Cognito identity pool ID.</p>
3788    #[serde(rename = "cognitoIdentityPoolId")]
3789    #[serde(skip_serializing_if = "Option::is_none")]
3790    pub cognito_identity_pool_id: Option<String>,
3791    /// <p>The principal.</p>
3792    #[serde(rename = "principal")]
3793    #[serde(skip_serializing_if = "Option::is_none")]
3794    pub principal: Option<String>,
3795    /// <p>The thing name.</p>
3796    #[serde(rename = "thingName")]
3797    #[serde(skip_serializing_if = "Option::is_none")]
3798    pub thing_name: Option<String>,
3799}
3800
3801#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3802#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3803pub struct GetEffectivePoliciesResponse {
3804    /// <p>The effective policies.</p>
3805    #[serde(rename = "effectivePolicies")]
3806    #[serde(skip_serializing_if = "Option::is_none")]
3807    pub effective_policies: Option<Vec<EffectivePolicy>>,
3808}
3809
3810#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3811#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3812pub struct GetIndexingConfigurationRequest {}
3813
3814#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3815#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3816pub struct GetIndexingConfigurationResponse {
3817    /// <p>The index configuration.</p>
3818    #[serde(rename = "thingGroupIndexingConfiguration")]
3819    #[serde(skip_serializing_if = "Option::is_none")]
3820    pub thing_group_indexing_configuration: Option<ThingGroupIndexingConfiguration>,
3821    /// <p>Thing indexing configuration.</p>
3822    #[serde(rename = "thingIndexingConfiguration")]
3823    #[serde(skip_serializing_if = "Option::is_none")]
3824    pub thing_indexing_configuration: Option<ThingIndexingConfiguration>,
3825}
3826
3827#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3828#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3829pub struct GetJobDocumentRequest {
3830    /// <p>The unique identifier you assigned to this job when it was created.</p>
3831    #[serde(rename = "jobId")]
3832    pub job_id: String,
3833}
3834
3835#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3836#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3837pub struct GetJobDocumentResponse {
3838    /// <p>The job document content.</p>
3839    #[serde(rename = "document")]
3840    #[serde(skip_serializing_if = "Option::is_none")]
3841    pub document: Option<String>,
3842}
3843
3844/// <p>The input for the GetLoggingOptions operation.</p>
3845#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3846#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3847pub struct GetLoggingOptionsRequest {}
3848
3849/// <p>The output from the GetLoggingOptions operation.</p>
3850#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3851#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3852pub struct GetLoggingOptionsResponse {
3853    /// <p>The logging level.</p>
3854    #[serde(rename = "logLevel")]
3855    #[serde(skip_serializing_if = "Option::is_none")]
3856    pub log_level: Option<String>,
3857    /// <p>The ARN of the IAM role that grants access.</p>
3858    #[serde(rename = "roleArn")]
3859    #[serde(skip_serializing_if = "Option::is_none")]
3860    pub role_arn: Option<String>,
3861}
3862
3863#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3864#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3865pub struct GetOTAUpdateRequest {
3866    /// <p>The OTA update ID.</p>
3867    #[serde(rename = "otaUpdateId")]
3868    pub ota_update_id: String,
3869}
3870
3871#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3872#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3873pub struct GetOTAUpdateResponse {
3874    /// <p>The OTA update info.</p>
3875    #[serde(rename = "otaUpdateInfo")]
3876    #[serde(skip_serializing_if = "Option::is_none")]
3877    pub ota_update_info: Option<OTAUpdateInfo>,
3878}
3879
3880#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3881#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3882pub struct GetPercentilesRequest {
3883    /// <p>The field to aggregate.</p>
3884    #[serde(rename = "aggregationField")]
3885    #[serde(skip_serializing_if = "Option::is_none")]
3886    pub aggregation_field: Option<String>,
3887    /// <p>The name of the index to search.</p>
3888    #[serde(rename = "indexName")]
3889    #[serde(skip_serializing_if = "Option::is_none")]
3890    pub index_name: Option<String>,
3891    /// <p>The percentile groups returned.</p>
3892    #[serde(rename = "percents")]
3893    #[serde(skip_serializing_if = "Option::is_none")]
3894    pub percents: Option<Vec<f64>>,
3895    /// <p>The query string.</p>
3896    #[serde(rename = "queryString")]
3897    pub query_string: String,
3898    /// <p>The query version.</p>
3899    #[serde(rename = "queryVersion")]
3900    #[serde(skip_serializing_if = "Option::is_none")]
3901    pub query_version: Option<String>,
3902}
3903
3904#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3905#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3906pub struct GetPercentilesResponse {
3907    /// <p>The percentile values of the aggregated fields.</p>
3908    #[serde(rename = "percentiles")]
3909    #[serde(skip_serializing_if = "Option::is_none")]
3910    pub percentiles: Option<Vec<PercentPair>>,
3911}
3912
3913/// <p>The input for the GetPolicy operation.</p>
3914#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3915#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3916pub struct GetPolicyRequest {
3917    /// <p>The name of the policy.</p>
3918    #[serde(rename = "policyName")]
3919    pub policy_name: String,
3920}
3921
3922/// <p>The output from the GetPolicy operation.</p>
3923#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3924#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3925pub struct GetPolicyResponse {
3926    /// <p>The date the policy was created.</p>
3927    #[serde(rename = "creationDate")]
3928    #[serde(skip_serializing_if = "Option::is_none")]
3929    pub creation_date: Option<f64>,
3930    /// <p>The default policy version ID.</p>
3931    #[serde(rename = "defaultVersionId")]
3932    #[serde(skip_serializing_if = "Option::is_none")]
3933    pub default_version_id: Option<String>,
3934    /// <p>The generation ID of the policy.</p>
3935    #[serde(rename = "generationId")]
3936    #[serde(skip_serializing_if = "Option::is_none")]
3937    pub generation_id: Option<String>,
3938    /// <p>The date the policy was last modified.</p>
3939    #[serde(rename = "lastModifiedDate")]
3940    #[serde(skip_serializing_if = "Option::is_none")]
3941    pub last_modified_date: Option<f64>,
3942    /// <p>The policy ARN.</p>
3943    #[serde(rename = "policyArn")]
3944    #[serde(skip_serializing_if = "Option::is_none")]
3945    pub policy_arn: Option<String>,
3946    /// <p>The JSON document that describes the policy.</p>
3947    #[serde(rename = "policyDocument")]
3948    #[serde(skip_serializing_if = "Option::is_none")]
3949    pub policy_document: Option<String>,
3950    /// <p>The policy name.</p>
3951    #[serde(rename = "policyName")]
3952    #[serde(skip_serializing_if = "Option::is_none")]
3953    pub policy_name: Option<String>,
3954}
3955
3956/// <p>The input for the GetPolicyVersion operation.</p>
3957#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3958#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3959pub struct GetPolicyVersionRequest {
3960    /// <p>The name of the policy.</p>
3961    #[serde(rename = "policyName")]
3962    pub policy_name: String,
3963    /// <p>The policy version ID.</p>
3964    #[serde(rename = "policyVersionId")]
3965    pub policy_version_id: String,
3966}
3967
3968/// <p>The output from the GetPolicyVersion operation.</p>
3969#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3970#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3971pub struct GetPolicyVersionResponse {
3972    /// <p>The date the policy was created.</p>
3973    #[serde(rename = "creationDate")]
3974    #[serde(skip_serializing_if = "Option::is_none")]
3975    pub creation_date: Option<f64>,
3976    /// <p>The generation ID of the policy version.</p>
3977    #[serde(rename = "generationId")]
3978    #[serde(skip_serializing_if = "Option::is_none")]
3979    pub generation_id: Option<String>,
3980    /// <p>Specifies whether the policy version is the default.</p>
3981    #[serde(rename = "isDefaultVersion")]
3982    #[serde(skip_serializing_if = "Option::is_none")]
3983    pub is_default_version: Option<bool>,
3984    /// <p>The date the policy was last modified.</p>
3985    #[serde(rename = "lastModifiedDate")]
3986    #[serde(skip_serializing_if = "Option::is_none")]
3987    pub last_modified_date: Option<f64>,
3988    /// <p>The policy ARN.</p>
3989    #[serde(rename = "policyArn")]
3990    #[serde(skip_serializing_if = "Option::is_none")]
3991    pub policy_arn: Option<String>,
3992    /// <p>The JSON document that describes the policy.</p>
3993    #[serde(rename = "policyDocument")]
3994    #[serde(skip_serializing_if = "Option::is_none")]
3995    pub policy_document: Option<String>,
3996    /// <p>The policy name.</p>
3997    #[serde(rename = "policyName")]
3998    #[serde(skip_serializing_if = "Option::is_none")]
3999    pub policy_name: Option<String>,
4000    /// <p>The policy version ID.</p>
4001    #[serde(rename = "policyVersionId")]
4002    #[serde(skip_serializing_if = "Option::is_none")]
4003    pub policy_version_id: Option<String>,
4004}
4005
4006/// <p>The input to the GetRegistrationCode operation.</p>
4007#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4008#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4009pub struct GetRegistrationCodeRequest {}
4010
4011/// <p>The output from the GetRegistrationCode operation.</p>
4012#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4013#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4014pub struct GetRegistrationCodeResponse {
4015    /// <p>The CA certificate registration code.</p>
4016    #[serde(rename = "registrationCode")]
4017    #[serde(skip_serializing_if = "Option::is_none")]
4018    pub registration_code: Option<String>,
4019}
4020
4021#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4022#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4023pub struct GetStatisticsRequest {
4024    /// <p>The aggregation field name.</p>
4025    #[serde(rename = "aggregationField")]
4026    #[serde(skip_serializing_if = "Option::is_none")]
4027    pub aggregation_field: Option<String>,
4028    /// <p>The name of the index to search. The default value is <code>AWS_Things</code>.</p>
4029    #[serde(rename = "indexName")]
4030    #[serde(skip_serializing_if = "Option::is_none")]
4031    pub index_name: Option<String>,
4032    /// <p>The query used to search. You can specify "*" for the query string to get the count of all indexed things in your AWS account.</p>
4033    #[serde(rename = "queryString")]
4034    pub query_string: String,
4035    /// <p>The version of the query used to search.</p>
4036    #[serde(rename = "queryVersion")]
4037    #[serde(skip_serializing_if = "Option::is_none")]
4038    pub query_version: Option<String>,
4039}
4040
4041#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4042#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4043pub struct GetStatisticsResponse {
4044    /// <p>The statistics returned by the Fleet Indexing service based on the query and aggregation field.</p>
4045    #[serde(rename = "statistics")]
4046    #[serde(skip_serializing_if = "Option::is_none")]
4047    pub statistics: Option<Statistics>,
4048}
4049
4050#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4051#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4052pub struct GetTopicRuleDestinationRequest {
4053    /// <p>The ARN of the topic rule destination.</p>
4054    #[serde(rename = "arn")]
4055    pub arn: String,
4056}
4057
4058#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4059#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4060pub struct GetTopicRuleDestinationResponse {
4061    /// <p>The topic rule destination.</p>
4062    #[serde(rename = "topicRuleDestination")]
4063    #[serde(skip_serializing_if = "Option::is_none")]
4064    pub topic_rule_destination: Option<TopicRuleDestination>,
4065}
4066
4067/// <p>The input for the GetTopicRule operation.</p>
4068#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4069#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4070pub struct GetTopicRuleRequest {
4071    /// <p>The name of the rule.</p>
4072    #[serde(rename = "ruleName")]
4073    pub rule_name: String,
4074}
4075
4076/// <p>The output from the GetTopicRule operation.</p>
4077#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4078#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4079pub struct GetTopicRuleResponse {
4080    /// <p>The rule.</p>
4081    #[serde(rename = "rule")]
4082    #[serde(skip_serializing_if = "Option::is_none")]
4083    pub rule: Option<TopicRule>,
4084    /// <p>The rule ARN.</p>
4085    #[serde(rename = "ruleArn")]
4086    #[serde(skip_serializing_if = "Option::is_none")]
4087    pub rule_arn: Option<String>,
4088}
4089
4090#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4091#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4092pub struct GetV2LoggingOptionsRequest {}
4093
4094#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4095#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4096pub struct GetV2LoggingOptionsResponse {
4097    /// <p>The default log level.</p>
4098    #[serde(rename = "defaultLogLevel")]
4099    #[serde(skip_serializing_if = "Option::is_none")]
4100    pub default_log_level: Option<String>,
4101    /// <p>Disables all logs.</p>
4102    #[serde(rename = "disableAllLogs")]
4103    #[serde(skip_serializing_if = "Option::is_none")]
4104    pub disable_all_logs: Option<bool>,
4105    /// <p>The IAM role ARN AWS IoT uses to write to your CloudWatch logs.</p>
4106    #[serde(rename = "roleArn")]
4107    #[serde(skip_serializing_if = "Option::is_none")]
4108    pub role_arn: Option<String>,
4109}
4110
4111/// <p>The name and ARN of a group.</p>
4112#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4113#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4114pub struct GroupNameAndArn {
4115    /// <p>The group ARN.</p>
4116    #[serde(rename = "groupArn")]
4117    #[serde(skip_serializing_if = "Option::is_none")]
4118    pub group_arn: Option<String>,
4119    /// <p>The group name.</p>
4120    #[serde(rename = "groupName")]
4121    #[serde(skip_serializing_if = "Option::is_none")]
4122    pub group_name: Option<String>,
4123}
4124
4125/// <p>Send data to an HTTPS endpoint.</p>
4126#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4127pub struct HttpAction {
4128    /// <p>The authentication method to use when sending data to an HTTPS endpoint.</p>
4129    #[serde(rename = "auth")]
4130    #[serde(skip_serializing_if = "Option::is_none")]
4131    pub auth: Option<HttpAuthorization>,
4132    /// <p>The URL to which AWS IoT sends a confirmation message. The value of the confirmation URL must be a prefix of the endpoint URL. If you do not specify a confirmation URL AWS IoT uses the endpoint URL as the confirmation URL. If you use substitution templates in the confirmationUrl, you must create and enable topic rule destinations that match each possible value of the substitution template before traffic is allowed to your endpoint URL.</p>
4133    #[serde(rename = "confirmationUrl")]
4134    #[serde(skip_serializing_if = "Option::is_none")]
4135    pub confirmation_url: Option<String>,
4136    /// <p>The HTTP headers to send with the message data.</p>
4137    #[serde(rename = "headers")]
4138    #[serde(skip_serializing_if = "Option::is_none")]
4139    pub headers: Option<Vec<HttpActionHeader>>,
4140    /// <p>The endpoint URL. If substitution templates are used in the URL, you must also specify a <code>confirmationUrl</code>. If this is a new destination, a new <code>TopicRuleDestination</code> is created if possible.</p>
4141    #[serde(rename = "url")]
4142    pub url: String,
4143}
4144
4145/// <p>The HTTP action header.</p>
4146#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4147pub struct HttpActionHeader {
4148    /// <p>The HTTP header key.</p>
4149    #[serde(rename = "key")]
4150    pub key: String,
4151    /// <p>The HTTP header value. Substitution templates are supported.</p>
4152    #[serde(rename = "value")]
4153    pub value: String,
4154}
4155
4156/// <p>The authorization method used to send messages.</p>
4157#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4158pub struct HttpAuthorization {
4159    /// <p>Use Sig V4 authorization. For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html">Signature Version 4 Signing Process</a>.</p>
4160    #[serde(rename = "sigv4")]
4161    #[serde(skip_serializing_if = "Option::is_none")]
4162    pub sigv_4: Option<SigV4Authorization>,
4163}
4164
4165/// <p>Specifies the HTTP context to use for the test authorizer request.</p>
4166#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4167#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4168pub struct HttpContext {
4169    /// <p>The header keys and values in an HTTP authorization request.</p>
4170    #[serde(rename = "headers")]
4171    #[serde(skip_serializing_if = "Option::is_none")]
4172    pub headers: Option<::std::collections::HashMap<String, String>>,
4173    /// <p>The query string keys and values in an HTTP authorization request.</p>
4174    #[serde(rename = "queryString")]
4175    #[serde(skip_serializing_if = "Option::is_none")]
4176    pub query_string: Option<String>,
4177}
4178
4179/// <p>HTTP URL destination configuration used by the topic rule's HTTP action.</p>
4180#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4181#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4182pub struct HttpUrlDestinationConfiguration {
4183    /// <p>The URL AWS IoT uses to confirm ownership of or access to the topic rule destination URL.</p>
4184    #[serde(rename = "confirmationUrl")]
4185    pub confirmation_url: String,
4186}
4187
4188/// <p>HTTP URL destination properties.</p>
4189#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4190#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4191pub struct HttpUrlDestinationProperties {
4192    /// <p>The URL used to confirm the HTTP topic rule destination URL.</p>
4193    #[serde(rename = "confirmationUrl")]
4194    #[serde(skip_serializing_if = "Option::is_none")]
4195    pub confirmation_url: Option<String>,
4196}
4197
4198/// <p>Information about an HTTP URL destination.</p>
4199#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4200#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4201pub struct HttpUrlDestinationSummary {
4202    /// <p>The URL used to confirm ownership of or access to the HTTP topic rule destination URL.</p>
4203    #[serde(rename = "confirmationUrl")]
4204    #[serde(skip_serializing_if = "Option::is_none")]
4205    pub confirmation_url: Option<String>,
4206}
4207
4208/// <p>Information that implicitly denies authorization. When policy doesn't explicitly deny or allow an action on a resource it is considered an implicit deny.</p>
4209#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4210#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4211pub struct ImplicitDeny {
4212    /// <p>Policies that don't contain a matching allow or deny statement for the specified action on the specified resource. </p>
4213    #[serde(rename = "policies")]
4214    #[serde(skip_serializing_if = "Option::is_none")]
4215    pub policies: Option<Vec<Policy>>,
4216}
4217
4218/// <p>Sends message data to an AWS IoT Analytics channel.</p>
4219#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4220pub struct IotAnalyticsAction {
4221    /// <p>(deprecated) The ARN of the IoT Analytics channel to which message data will be sent.</p>
4222    #[serde(rename = "channelArn")]
4223    #[serde(skip_serializing_if = "Option::is_none")]
4224    pub channel_arn: Option<String>,
4225    /// <p>The name of the IoT Analytics channel to which message data will be sent.</p>
4226    #[serde(rename = "channelName")]
4227    #[serde(skip_serializing_if = "Option::is_none")]
4228    pub channel_name: Option<String>,
4229    /// <p>The ARN of the role which has a policy that grants IoT Analytics permission to send message data via IoT Analytics (iotanalytics:BatchPutMessage).</p>
4230    #[serde(rename = "roleArn")]
4231    #[serde(skip_serializing_if = "Option::is_none")]
4232    pub role_arn: Option<String>,
4233}
4234
4235/// <p>Sends an input to an AWS IoT Events detector.</p>
4236#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4237pub struct IotEventsAction {
4238    /// <p>The name of the AWS IoT Events input.</p>
4239    #[serde(rename = "inputName")]
4240    pub input_name: String,
4241    /// <p>[Optional] Use this to ensure that only one input (message) with a given messageId will be processed by an AWS IoT Events detector.</p>
4242    #[serde(rename = "messageId")]
4243    #[serde(skip_serializing_if = "Option::is_none")]
4244    pub message_id: Option<String>,
4245    /// <p>The ARN of the role that grants AWS IoT permission to send an input to an AWS IoT Events detector. ("Action":"iotevents:BatchPutMessage").</p>
4246    #[serde(rename = "roleArn")]
4247    pub role_arn: String,
4248}
4249
4250/// <p>Describes an action to send data from an MQTT message that triggered the rule to AWS IoT SiteWise asset properties.</p>
4251#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4252pub struct IotSiteWiseAction {
4253    /// <p>A list of asset property value entries.</p>
4254    #[serde(rename = "putAssetPropertyValueEntries")]
4255    pub put_asset_property_value_entries: Vec<PutAssetPropertyValueEntry>,
4256    /// <p>The ARN of the role that grants AWS IoT permission to send an asset property value to AWS IoTSiteWise. (<code>"Action": "iotsitewise:BatchPutAssetPropertyValue"</code>). The trust policy can restrict access to specific asset hierarchy paths.</p>
4257    #[serde(rename = "roleArn")]
4258    pub role_arn: String,
4259}
4260
4261/// <p>The <code>Job</code> object contains details about a job.</p>
4262#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4263#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4264pub struct Job {
4265    /// <p>Configuration for criteria to abort the job.</p>
4266    #[serde(rename = "abortConfig")]
4267    #[serde(skip_serializing_if = "Option::is_none")]
4268    pub abort_config: Option<AbortConfig>,
4269    /// <p>If the job was updated, describes the reason for the update.</p>
4270    #[serde(rename = "comment")]
4271    #[serde(skip_serializing_if = "Option::is_none")]
4272    pub comment: Option<String>,
4273    /// <p>The time, in seconds since the epoch, when the job was completed.</p>
4274    #[serde(rename = "completedAt")]
4275    #[serde(skip_serializing_if = "Option::is_none")]
4276    pub completed_at: Option<f64>,
4277    /// <p>The time, in seconds since the epoch, when the job was created.</p>
4278    #[serde(rename = "createdAt")]
4279    #[serde(skip_serializing_if = "Option::is_none")]
4280    pub created_at: Option<f64>,
4281    /// <p>A short text description of the job.</p>
4282    #[serde(rename = "description")]
4283    #[serde(skip_serializing_if = "Option::is_none")]
4284    pub description: Option<String>,
4285    /// <p>Will be <code>true</code> if the job was canceled with the optional <code>force</code> parameter set to <code>true</code>.</p>
4286    #[serde(rename = "forceCanceled")]
4287    #[serde(skip_serializing_if = "Option::is_none")]
4288    pub force_canceled: Option<bool>,
4289    /// <p>An ARN identifying the job with format "arn:aws:iot:region:account:job/jobId".</p>
4290    #[serde(rename = "jobArn")]
4291    #[serde(skip_serializing_if = "Option::is_none")]
4292    pub job_arn: Option<String>,
4293    /// <p>Allows you to create a staged rollout of a job.</p>
4294    #[serde(rename = "jobExecutionsRolloutConfig")]
4295    #[serde(skip_serializing_if = "Option::is_none")]
4296    pub job_executions_rollout_config: Option<JobExecutionsRolloutConfig>,
4297    /// <p>The unique identifier you assigned to this job when it was created.</p>
4298    #[serde(rename = "jobId")]
4299    #[serde(skip_serializing_if = "Option::is_none")]
4300    pub job_id: Option<String>,
4301    /// <p>Details about the job process.</p>
4302    #[serde(rename = "jobProcessDetails")]
4303    #[serde(skip_serializing_if = "Option::is_none")]
4304    pub job_process_details: Option<JobProcessDetails>,
4305    /// <p>The time, in seconds since the epoch, when the job was last updated.</p>
4306    #[serde(rename = "lastUpdatedAt")]
4307    #[serde(skip_serializing_if = "Option::is_none")]
4308    pub last_updated_at: Option<f64>,
4309    /// <p>Configuration for pre-signed S3 URLs.</p>
4310    #[serde(rename = "presignedUrlConfig")]
4311    #[serde(skip_serializing_if = "Option::is_none")]
4312    pub presigned_url_config: Option<PresignedUrlConfig>,
4313    /// <p>If the job was updated, provides the reason code for the update.</p>
4314    #[serde(rename = "reasonCode")]
4315    #[serde(skip_serializing_if = "Option::is_none")]
4316    pub reason_code: Option<String>,
4317    /// <p>The status of the job, one of <code>IN_PROGRESS</code>, <code>CANCELED</code>, <code>DELETION_IN_PROGRESS</code> or <code>COMPLETED</code>. </p>
4318    #[serde(rename = "status")]
4319    #[serde(skip_serializing_if = "Option::is_none")]
4320    pub status: Option<String>,
4321    /// <p>Specifies whether the job will continue to run (CONTINUOUS), or will be complete after all those things specified as targets have completed the job (SNAPSHOT). If continuous, the job may also be run on a thing when a change is detected in a target. For example, a job will run on a device when the thing representing the device is added to a target group, even after the job was completed by all things originally in the group. </p>
4322    #[serde(rename = "targetSelection")]
4323    #[serde(skip_serializing_if = "Option::is_none")]
4324    pub target_selection: Option<String>,
4325    /// <p>A list of IoT things and thing groups to which the job should be sent.</p>
4326    #[serde(rename = "targets")]
4327    #[serde(skip_serializing_if = "Option::is_none")]
4328    pub targets: Option<Vec<String>>,
4329    /// <p>Specifies the amount of time each device has to finish its execution of the job. A timer is started when the job execution status is set to <code>IN_PROGRESS</code>. If the job execution status is not set to another terminal state before the timer expires, it will be automatically set to <code>TIMED_OUT</code>.</p>
4330    #[serde(rename = "timeoutConfig")]
4331    #[serde(skip_serializing_if = "Option::is_none")]
4332    pub timeout_config: Option<TimeoutConfig>,
4333}
4334
4335/// <p>The job execution object represents the execution of a job on a particular device.</p>
4336#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4337#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4338pub struct JobExecution {
4339    /// <p>The estimated number of seconds that remain before the job execution status will be changed to <code>TIMED_OUT</code>. The timeout interval can be anywhere between 1 minute and 7 days (1 to 10080 minutes). The actual job execution timeout can occur up to 60 seconds later than the estimated duration. This value will not be included if the job execution has reached a terminal status.</p>
4340    #[serde(rename = "approximateSecondsBeforeTimedOut")]
4341    #[serde(skip_serializing_if = "Option::is_none")]
4342    pub approximate_seconds_before_timed_out: Option<i64>,
4343    /// <p>A string (consisting of the digits "0" through "9") which identifies this particular job execution on this particular device. It can be used in commands which return or update job execution information. </p>
4344    #[serde(rename = "executionNumber")]
4345    #[serde(skip_serializing_if = "Option::is_none")]
4346    pub execution_number: Option<i64>,
4347    /// <p>Will be <code>true</code> if the job execution was canceled with the optional <code>force</code> parameter set to <code>true</code>.</p>
4348    #[serde(rename = "forceCanceled")]
4349    #[serde(skip_serializing_if = "Option::is_none")]
4350    pub force_canceled: Option<bool>,
4351    /// <p>The unique identifier you assigned to the job when it was created.</p>
4352    #[serde(rename = "jobId")]
4353    #[serde(skip_serializing_if = "Option::is_none")]
4354    pub job_id: Option<String>,
4355    /// <p>The time, in seconds since the epoch, when the job execution was last updated.</p>
4356    #[serde(rename = "lastUpdatedAt")]
4357    #[serde(skip_serializing_if = "Option::is_none")]
4358    pub last_updated_at: Option<f64>,
4359    /// <p>The time, in seconds since the epoch, when the job execution was queued.</p>
4360    #[serde(rename = "queuedAt")]
4361    #[serde(skip_serializing_if = "Option::is_none")]
4362    pub queued_at: Option<f64>,
4363    /// <p>The time, in seconds since the epoch, when the job execution started.</p>
4364    #[serde(rename = "startedAt")]
4365    #[serde(skip_serializing_if = "Option::is_none")]
4366    pub started_at: Option<f64>,
4367    /// <p>The status of the job execution (IN_PROGRESS, QUEUED, FAILED, SUCCEEDED, TIMED_OUT, CANCELED, or REJECTED).</p>
4368    #[serde(rename = "status")]
4369    #[serde(skip_serializing_if = "Option::is_none")]
4370    pub status: Option<String>,
4371    /// <p>A collection of name/value pairs that describe the status of the job execution.</p>
4372    #[serde(rename = "statusDetails")]
4373    #[serde(skip_serializing_if = "Option::is_none")]
4374    pub status_details: Option<JobExecutionStatusDetails>,
4375    /// <p>The ARN of the thing on which the job execution is running.</p>
4376    #[serde(rename = "thingArn")]
4377    #[serde(skip_serializing_if = "Option::is_none")]
4378    pub thing_arn: Option<String>,
4379    /// <p>The version of the job execution. Job execution versions are incremented each time they are updated by a device.</p>
4380    #[serde(rename = "versionNumber")]
4381    #[serde(skip_serializing_if = "Option::is_none")]
4382    pub version_number: Option<i64>,
4383}
4384
4385/// <p>Details of the job execution status.</p>
4386#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4387#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4388pub struct JobExecutionStatusDetails {
4389    /// <p>The job execution status.</p>
4390    #[serde(rename = "detailsMap")]
4391    #[serde(skip_serializing_if = "Option::is_none")]
4392    pub details_map: Option<::std::collections::HashMap<String, String>>,
4393}
4394
4395/// <p>The job execution summary.</p>
4396#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4397#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4398pub struct JobExecutionSummary {
4399    /// <p>A string (consisting of the digits "0" through "9") which identifies this particular job execution on this particular device. It can be used later in commands which return or update job execution information.</p>
4400    #[serde(rename = "executionNumber")]
4401    #[serde(skip_serializing_if = "Option::is_none")]
4402    pub execution_number: Option<i64>,
4403    /// <p>The time, in seconds since the epoch, when the job execution was last updated.</p>
4404    #[serde(rename = "lastUpdatedAt")]
4405    #[serde(skip_serializing_if = "Option::is_none")]
4406    pub last_updated_at: Option<f64>,
4407    /// <p>The time, in seconds since the epoch, when the job execution was queued.</p>
4408    #[serde(rename = "queuedAt")]
4409    #[serde(skip_serializing_if = "Option::is_none")]
4410    pub queued_at: Option<f64>,
4411    /// <p>The time, in seconds since the epoch, when the job execution started.</p>
4412    #[serde(rename = "startedAt")]
4413    #[serde(skip_serializing_if = "Option::is_none")]
4414    pub started_at: Option<f64>,
4415    /// <p>The status of the job execution.</p>
4416    #[serde(rename = "status")]
4417    #[serde(skip_serializing_if = "Option::is_none")]
4418    pub status: Option<String>,
4419}
4420
4421/// <p>Contains a summary of information about job executions for a specific job.</p>
4422#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4423#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4424pub struct JobExecutionSummaryForJob {
4425    /// <p>Contains a subset of information about a job execution.</p>
4426    #[serde(rename = "jobExecutionSummary")]
4427    #[serde(skip_serializing_if = "Option::is_none")]
4428    pub job_execution_summary: Option<JobExecutionSummary>,
4429    /// <p>The ARN of the thing on which the job execution is running.</p>
4430    #[serde(rename = "thingArn")]
4431    #[serde(skip_serializing_if = "Option::is_none")]
4432    pub thing_arn: Option<String>,
4433}
4434
4435/// <p>The job execution summary for a thing.</p>
4436#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4437#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4438pub struct JobExecutionSummaryForThing {
4439    /// <p>Contains a subset of information about a job execution.</p>
4440    #[serde(rename = "jobExecutionSummary")]
4441    #[serde(skip_serializing_if = "Option::is_none")]
4442    pub job_execution_summary: Option<JobExecutionSummary>,
4443    /// <p>The unique identifier you assigned to this job when it was created.</p>
4444    #[serde(rename = "jobId")]
4445    #[serde(skip_serializing_if = "Option::is_none")]
4446    pub job_id: Option<String>,
4447}
4448
4449/// <p>Allows you to create a staged rollout of a job.</p>
4450#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4451pub struct JobExecutionsRolloutConfig {
4452    /// <p>The rate of increase for a job rollout. This parameter allows you to define an exponential rate for a job rollout.</p>
4453    #[serde(rename = "exponentialRate")]
4454    #[serde(skip_serializing_if = "Option::is_none")]
4455    pub exponential_rate: Option<ExponentialRolloutRate>,
4456    /// <p>The maximum number of things that will be notified of a pending job, per minute. This parameter allows you to create a staged rollout.</p>
4457    #[serde(rename = "maximumPerMinute")]
4458    #[serde(skip_serializing_if = "Option::is_none")]
4459    pub maximum_per_minute: Option<i64>,
4460}
4461
4462/// <p>The job process details.</p>
4463#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4464#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4465pub struct JobProcessDetails {
4466    /// <p>The number of things that cancelled the job.</p>
4467    #[serde(rename = "numberOfCanceledThings")]
4468    #[serde(skip_serializing_if = "Option::is_none")]
4469    pub number_of_canceled_things: Option<i64>,
4470    /// <p>The number of things that failed executing the job.</p>
4471    #[serde(rename = "numberOfFailedThings")]
4472    #[serde(skip_serializing_if = "Option::is_none")]
4473    pub number_of_failed_things: Option<i64>,
4474    /// <p>The number of things currently executing the job.</p>
4475    #[serde(rename = "numberOfInProgressThings")]
4476    #[serde(skip_serializing_if = "Option::is_none")]
4477    pub number_of_in_progress_things: Option<i64>,
4478    /// <p>The number of things that are awaiting execution of the job.</p>
4479    #[serde(rename = "numberOfQueuedThings")]
4480    #[serde(skip_serializing_if = "Option::is_none")]
4481    pub number_of_queued_things: Option<i64>,
4482    /// <p>The number of things that rejected the job.</p>
4483    #[serde(rename = "numberOfRejectedThings")]
4484    #[serde(skip_serializing_if = "Option::is_none")]
4485    pub number_of_rejected_things: Option<i64>,
4486    /// <p>The number of things that are no longer scheduled to execute the job because they have been deleted or have been removed from the group that was a target of the job.</p>
4487    #[serde(rename = "numberOfRemovedThings")]
4488    #[serde(skip_serializing_if = "Option::is_none")]
4489    pub number_of_removed_things: Option<i64>,
4490    /// <p>The number of things which successfully completed the job.</p>
4491    #[serde(rename = "numberOfSucceededThings")]
4492    #[serde(skip_serializing_if = "Option::is_none")]
4493    pub number_of_succeeded_things: Option<i64>,
4494    /// <p>The number of things whose job execution status is <code>TIMED_OUT</code>.</p>
4495    #[serde(rename = "numberOfTimedOutThings")]
4496    #[serde(skip_serializing_if = "Option::is_none")]
4497    pub number_of_timed_out_things: Option<i64>,
4498    /// <p>The target devices to which the job execution is being rolled out. This value will be null after the job execution has finished rolling out to all the target devices.</p>
4499    #[serde(rename = "processingTargets")]
4500    #[serde(skip_serializing_if = "Option::is_none")]
4501    pub processing_targets: Option<Vec<String>>,
4502}
4503
4504/// <p>The job summary.</p>
4505#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4506#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4507pub struct JobSummary {
4508    /// <p>The time, in seconds since the epoch, when the job completed.</p>
4509    #[serde(rename = "completedAt")]
4510    #[serde(skip_serializing_if = "Option::is_none")]
4511    pub completed_at: Option<f64>,
4512    /// <p>The time, in seconds since the epoch, when the job was created.</p>
4513    #[serde(rename = "createdAt")]
4514    #[serde(skip_serializing_if = "Option::is_none")]
4515    pub created_at: Option<f64>,
4516    /// <p>The job ARN.</p>
4517    #[serde(rename = "jobArn")]
4518    #[serde(skip_serializing_if = "Option::is_none")]
4519    pub job_arn: Option<String>,
4520    /// <p>The unique identifier you assigned to this job when it was created.</p>
4521    #[serde(rename = "jobId")]
4522    #[serde(skip_serializing_if = "Option::is_none")]
4523    pub job_id: Option<String>,
4524    /// <p>The time, in seconds since the epoch, when the job was last updated.</p>
4525    #[serde(rename = "lastUpdatedAt")]
4526    #[serde(skip_serializing_if = "Option::is_none")]
4527    pub last_updated_at: Option<f64>,
4528    /// <p>The job summary status.</p>
4529    #[serde(rename = "status")]
4530    #[serde(skip_serializing_if = "Option::is_none")]
4531    pub status: Option<String>,
4532    /// <p>Specifies whether the job will continue to run (CONTINUOUS), or will be complete after all those things specified as targets have completed the job (SNAPSHOT). If continuous, the job may also be run on a thing when a change is detected in a target. For example, a job will run on a thing when the thing is added to a target group, even after the job was completed by all things originally in the group.</p>
4533    #[serde(rename = "targetSelection")]
4534    #[serde(skip_serializing_if = "Option::is_none")]
4535    pub target_selection: Option<String>,
4536    /// <p>The ID of the thing group.</p>
4537    #[serde(rename = "thingGroupId")]
4538    #[serde(skip_serializing_if = "Option::is_none")]
4539    pub thing_group_id: Option<String>,
4540}
4541
4542/// <p>Describes a key pair.</p>
4543#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4544#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4545pub struct KeyPair {
4546    /// <p>The private key.</p>
4547    #[serde(rename = "PrivateKey")]
4548    #[serde(skip_serializing_if = "Option::is_none")]
4549    pub private_key: Option<String>,
4550    /// <p>The public key.</p>
4551    #[serde(rename = "PublicKey")]
4552    #[serde(skip_serializing_if = "Option::is_none")]
4553    pub public_key: Option<String>,
4554}
4555
4556/// <p>Describes an action to write data to an Amazon Kinesis stream.</p>
4557#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4558pub struct KinesisAction {
4559    /// <p>The partition key.</p>
4560    #[serde(rename = "partitionKey")]
4561    #[serde(skip_serializing_if = "Option::is_none")]
4562    pub partition_key: Option<String>,
4563    /// <p>The ARN of the IAM role that grants access to the Amazon Kinesis stream.</p>
4564    #[serde(rename = "roleArn")]
4565    pub role_arn: String,
4566    /// <p>The name of the Amazon Kinesis stream.</p>
4567    #[serde(rename = "streamName")]
4568    pub stream_name: String,
4569}
4570
4571/// <p>Describes an action to invoke a Lambda function.</p>
4572#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4573pub struct LambdaAction {
4574    /// <p>The ARN of the Lambda function.</p>
4575    #[serde(rename = "functionArn")]
4576    pub function_arn: String,
4577}
4578
4579#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4580#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4581pub struct ListActiveViolationsRequest {
4582    /// <p>The maximum number of results to return at one time.</p>
4583    #[serde(rename = "maxResults")]
4584    #[serde(skip_serializing_if = "Option::is_none")]
4585    pub max_results: Option<i64>,
4586    /// <p>The token for the next set of results.</p>
4587    #[serde(rename = "nextToken")]
4588    #[serde(skip_serializing_if = "Option::is_none")]
4589    pub next_token: Option<String>,
4590    /// <p>The name of the Device Defender security profile for which violations are listed.</p>
4591    #[serde(rename = "securityProfileName")]
4592    #[serde(skip_serializing_if = "Option::is_none")]
4593    pub security_profile_name: Option<String>,
4594    /// <p>The name of the thing whose active violations are listed.</p>
4595    #[serde(rename = "thingName")]
4596    #[serde(skip_serializing_if = "Option::is_none")]
4597    pub thing_name: Option<String>,
4598}
4599
4600#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4601#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4602pub struct ListActiveViolationsResponse {
4603    /// <p>The list of active violations.</p>
4604    #[serde(rename = "activeViolations")]
4605    #[serde(skip_serializing_if = "Option::is_none")]
4606    pub active_violations: Option<Vec<ActiveViolation>>,
4607    /// <p>A token that can be used to retrieve the next set of results, or <code>null</code> if there are no additional results.</p>
4608    #[serde(rename = "nextToken")]
4609    #[serde(skip_serializing_if = "Option::is_none")]
4610    pub next_token: Option<String>,
4611}
4612
4613#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4614#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4615pub struct ListAttachedPoliciesRequest {
4616    /// <p>The token to retrieve the next set of results.</p>
4617    #[serde(rename = "marker")]
4618    #[serde(skip_serializing_if = "Option::is_none")]
4619    pub marker: Option<String>,
4620    /// <p>The maximum number of results to be returned per request.</p>
4621    #[serde(rename = "pageSize")]
4622    #[serde(skip_serializing_if = "Option::is_none")]
4623    pub page_size: Option<i64>,
4624    /// <p>When true, recursively list attached policies.</p>
4625    #[serde(rename = "recursive")]
4626    #[serde(skip_serializing_if = "Option::is_none")]
4627    pub recursive: Option<bool>,
4628    /// <p>The group or principal for which the policies will be listed.</p>
4629    #[serde(rename = "target")]
4630    pub target: String,
4631}
4632
4633#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4634#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4635pub struct ListAttachedPoliciesResponse {
4636    /// <p>The token to retrieve the next set of results, or ``null`` if there are no more results.</p>
4637    #[serde(rename = "nextMarker")]
4638    #[serde(skip_serializing_if = "Option::is_none")]
4639    pub next_marker: Option<String>,
4640    /// <p>The policies.</p>
4641    #[serde(rename = "policies")]
4642    #[serde(skip_serializing_if = "Option::is_none")]
4643    pub policies: Option<Vec<Policy>>,
4644}
4645
4646#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4647#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4648pub struct ListAuditFindingsRequest {
4649    /// <p>A filter to limit results to the findings for the specified audit check.</p>
4650    #[serde(rename = "checkName")]
4651    #[serde(skip_serializing_if = "Option::is_none")]
4652    pub check_name: Option<String>,
4653    /// <p>A filter to limit results to those found before the specified time. You must specify either the startTime and endTime or the taskId, but not both.</p>
4654    #[serde(rename = "endTime")]
4655    #[serde(skip_serializing_if = "Option::is_none")]
4656    pub end_time: Option<f64>,
4657    /// <p>The maximum number of results to return at one time. The default is 25.</p>
4658    #[serde(rename = "maxResults")]
4659    #[serde(skip_serializing_if = "Option::is_none")]
4660    pub max_results: Option<i64>,
4661    /// <p>The token for the next set of results.</p>
4662    #[serde(rename = "nextToken")]
4663    #[serde(skip_serializing_if = "Option::is_none")]
4664    pub next_token: Option<String>,
4665    /// <p>Information identifying the noncompliant resource.</p>
4666    #[serde(rename = "resourceIdentifier")]
4667    #[serde(skip_serializing_if = "Option::is_none")]
4668    pub resource_identifier: Option<ResourceIdentifier>,
4669    /// <p>A filter to limit results to those found after the specified time. You must specify either the startTime and endTime or the taskId, but not both.</p>
4670    #[serde(rename = "startTime")]
4671    #[serde(skip_serializing_if = "Option::is_none")]
4672    pub start_time: Option<f64>,
4673    /// <p>A filter to limit results to the audit with the specified ID. You must specify either the taskId or the startTime and endTime, but not both.</p>
4674    #[serde(rename = "taskId")]
4675    #[serde(skip_serializing_if = "Option::is_none")]
4676    pub task_id: Option<String>,
4677}
4678
4679#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4680#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4681pub struct ListAuditFindingsResponse {
4682    /// <p>The findings (results) of the audit.</p>
4683    #[serde(rename = "findings")]
4684    #[serde(skip_serializing_if = "Option::is_none")]
4685    pub findings: Option<Vec<AuditFinding>>,
4686    /// <p>A token that can be used to retrieve the next set of results, or <code>null</code> if there are no additional results.</p>
4687    #[serde(rename = "nextToken")]
4688    #[serde(skip_serializing_if = "Option::is_none")]
4689    pub next_token: Option<String>,
4690}
4691
4692#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4693#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4694pub struct ListAuditMitigationActionsExecutionsRequest {
4695    /// <p>Specify this filter to limit results to those with a specific status.</p>
4696    #[serde(rename = "actionStatus")]
4697    #[serde(skip_serializing_if = "Option::is_none")]
4698    pub action_status: Option<String>,
4699    /// <p>Specify this filter to limit results to those that were applied to a specific audit finding.</p>
4700    #[serde(rename = "findingId")]
4701    pub finding_id: String,
4702    /// <p>The maximum number of results to return at one time. The default is 25.</p>
4703    #[serde(rename = "maxResults")]
4704    #[serde(skip_serializing_if = "Option::is_none")]
4705    pub max_results: Option<i64>,
4706    /// <p>The token for the next set of results.</p>
4707    #[serde(rename = "nextToken")]
4708    #[serde(skip_serializing_if = "Option::is_none")]
4709    pub next_token: Option<String>,
4710    /// <p>Specify this filter to limit results to actions for a specific audit mitigation actions task.</p>
4711    #[serde(rename = "taskId")]
4712    pub task_id: String,
4713}
4714
4715#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4716#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4717pub struct ListAuditMitigationActionsExecutionsResponse {
4718    /// <p>A set of task execution results based on the input parameters. Details include the mitigation action applied, start time, and task status.</p>
4719    #[serde(rename = "actionsExecutions")]
4720    #[serde(skip_serializing_if = "Option::is_none")]
4721    pub actions_executions: Option<Vec<AuditMitigationActionExecutionMetadata>>,
4722    /// <p>The token for the next set of results.</p>
4723    #[serde(rename = "nextToken")]
4724    #[serde(skip_serializing_if = "Option::is_none")]
4725    pub next_token: Option<String>,
4726}
4727
4728#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4729#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4730pub struct ListAuditMitigationActionsTasksRequest {
4731    /// <p>Specify this filter to limit results to tasks that were applied to results for a specific audit.</p>
4732    #[serde(rename = "auditTaskId")]
4733    #[serde(skip_serializing_if = "Option::is_none")]
4734    pub audit_task_id: Option<String>,
4735    /// <p>Specify this filter to limit results to tasks that were completed or canceled on or before a specific date and time.</p>
4736    #[serde(rename = "endTime")]
4737    pub end_time: f64,
4738    /// <p>Specify this filter to limit results to tasks that were applied to a specific audit finding.</p>
4739    #[serde(rename = "findingId")]
4740    #[serde(skip_serializing_if = "Option::is_none")]
4741    pub finding_id: Option<String>,
4742    /// <p>The maximum number of results to return at one time. The default is 25.</p>
4743    #[serde(rename = "maxResults")]
4744    #[serde(skip_serializing_if = "Option::is_none")]
4745    pub max_results: Option<i64>,
4746    /// <p>The token for the next set of results.</p>
4747    #[serde(rename = "nextToken")]
4748    #[serde(skip_serializing_if = "Option::is_none")]
4749    pub next_token: Option<String>,
4750    /// <p>Specify this filter to limit results to tasks that began on or after a specific date and time.</p>
4751    #[serde(rename = "startTime")]
4752    pub start_time: f64,
4753    /// <p>Specify this filter to limit results to tasks that are in a specific state.</p>
4754    #[serde(rename = "taskStatus")]
4755    #[serde(skip_serializing_if = "Option::is_none")]
4756    pub task_status: Option<String>,
4757}
4758
4759#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4760#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4761pub struct ListAuditMitigationActionsTasksResponse {
4762    /// <p>The token for the next set of results.</p>
4763    #[serde(rename = "nextToken")]
4764    #[serde(skip_serializing_if = "Option::is_none")]
4765    pub next_token: Option<String>,
4766    /// <p>The collection of audit mitigation tasks that matched the filter criteria.</p>
4767    #[serde(rename = "tasks")]
4768    #[serde(skip_serializing_if = "Option::is_none")]
4769    pub tasks: Option<Vec<AuditMitigationActionsTaskMetadata>>,
4770}
4771
4772#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4773#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4774pub struct ListAuditTasksRequest {
4775    /// <p>The end of the time period.</p>
4776    #[serde(rename = "endTime")]
4777    pub end_time: f64,
4778    /// <p>The maximum number of results to return at one time. The default is 25.</p>
4779    #[serde(rename = "maxResults")]
4780    #[serde(skip_serializing_if = "Option::is_none")]
4781    pub max_results: Option<i64>,
4782    /// <p>The token for the next set of results.</p>
4783    #[serde(rename = "nextToken")]
4784    #[serde(skip_serializing_if = "Option::is_none")]
4785    pub next_token: Option<String>,
4786    /// <p>The beginning of the time period. Audit information is retained for a limited time (180 days). Requesting a start time prior to what is retained results in an "InvalidRequestException".</p>
4787    #[serde(rename = "startTime")]
4788    pub start_time: f64,
4789    /// <p>A filter to limit the output to audits with the specified completion status: can be one of "IN_PROGRESS", "COMPLETED", "FAILED", or "CANCELED".</p>
4790    #[serde(rename = "taskStatus")]
4791    #[serde(skip_serializing_if = "Option::is_none")]
4792    pub task_status: Option<String>,
4793    /// <p>A filter to limit the output to the specified type of audit: can be one of "ON_DEMAND_AUDIT_TASK" or "SCHEDULED__AUDIT_TASK".</p>
4794    #[serde(rename = "taskType")]
4795    #[serde(skip_serializing_if = "Option::is_none")]
4796    pub task_type: Option<String>,
4797}
4798
4799#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4800#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4801pub struct ListAuditTasksResponse {
4802    /// <p>A token that can be used to retrieve the next set of results, or <code>null</code> if there are no additional results.</p>
4803    #[serde(rename = "nextToken")]
4804    #[serde(skip_serializing_if = "Option::is_none")]
4805    pub next_token: Option<String>,
4806    /// <p>The audits that were performed during the specified time period.</p>
4807    #[serde(rename = "tasks")]
4808    #[serde(skip_serializing_if = "Option::is_none")]
4809    pub tasks: Option<Vec<AuditTaskMetadata>>,
4810}
4811
4812#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4813#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4814pub struct ListAuthorizersRequest {
4815    /// <p>Return the list of authorizers in ascending alphabetical order.</p>
4816    #[serde(rename = "ascendingOrder")]
4817    #[serde(skip_serializing_if = "Option::is_none")]
4818    pub ascending_order: Option<bool>,
4819    /// <p>A marker used to get the next set of results.</p>
4820    #[serde(rename = "marker")]
4821    #[serde(skip_serializing_if = "Option::is_none")]
4822    pub marker: Option<String>,
4823    /// <p>The maximum number of results to return at one time.</p>
4824    #[serde(rename = "pageSize")]
4825    #[serde(skip_serializing_if = "Option::is_none")]
4826    pub page_size: Option<i64>,
4827    /// <p>The status of the list authorizers request.</p>
4828    #[serde(rename = "status")]
4829    #[serde(skip_serializing_if = "Option::is_none")]
4830    pub status: Option<String>,
4831}
4832
4833#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4834#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4835pub struct ListAuthorizersResponse {
4836    /// <p>The authorizers.</p>
4837    #[serde(rename = "authorizers")]
4838    #[serde(skip_serializing_if = "Option::is_none")]
4839    pub authorizers: Option<Vec<AuthorizerSummary>>,
4840    /// <p>A marker used to get the next set of results.</p>
4841    #[serde(rename = "nextMarker")]
4842    #[serde(skip_serializing_if = "Option::is_none")]
4843    pub next_marker: Option<String>,
4844}
4845
4846#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4847#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4848pub struct ListBillingGroupsRequest {
4849    /// <p>The maximum number of results to return per request.</p>
4850    #[serde(rename = "maxResults")]
4851    #[serde(skip_serializing_if = "Option::is_none")]
4852    pub max_results: Option<i64>,
4853    /// <p>Limit the results to billing groups whose names have the given prefix.</p>
4854    #[serde(rename = "namePrefixFilter")]
4855    #[serde(skip_serializing_if = "Option::is_none")]
4856    pub name_prefix_filter: Option<String>,
4857    /// <p>The token to retrieve the next set of results.</p>
4858    #[serde(rename = "nextToken")]
4859    #[serde(skip_serializing_if = "Option::is_none")]
4860    pub next_token: Option<String>,
4861}
4862
4863#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4864#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4865pub struct ListBillingGroupsResponse {
4866    /// <p>The list of billing groups.</p>
4867    #[serde(rename = "billingGroups")]
4868    #[serde(skip_serializing_if = "Option::is_none")]
4869    pub billing_groups: Option<Vec<GroupNameAndArn>>,
4870    /// <p>The token used to get the next set of results, or <b>null</b> if there are no additional results.</p>
4871    #[serde(rename = "nextToken")]
4872    #[serde(skip_serializing_if = "Option::is_none")]
4873    pub next_token: Option<String>,
4874}
4875
4876/// <p>Input for the ListCACertificates operation.</p>
4877#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4878#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4879pub struct ListCACertificatesRequest {
4880    /// <p>Determines the order of the results.</p>
4881    #[serde(rename = "ascendingOrder")]
4882    #[serde(skip_serializing_if = "Option::is_none")]
4883    pub ascending_order: Option<bool>,
4884    /// <p>The marker for the next set of results.</p>
4885    #[serde(rename = "marker")]
4886    #[serde(skip_serializing_if = "Option::is_none")]
4887    pub marker: Option<String>,
4888    /// <p>The result page size.</p>
4889    #[serde(rename = "pageSize")]
4890    #[serde(skip_serializing_if = "Option::is_none")]
4891    pub page_size: Option<i64>,
4892}
4893
4894/// <p>The output from the ListCACertificates operation.</p>
4895#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4896#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4897pub struct ListCACertificatesResponse {
4898    /// <p>The CA certificates registered in your AWS account.</p>
4899    #[serde(rename = "certificates")]
4900    #[serde(skip_serializing_if = "Option::is_none")]
4901    pub certificates: Option<Vec<CACertificate>>,
4902    /// <p>The current position within the list of CA certificates.</p>
4903    #[serde(rename = "nextMarker")]
4904    #[serde(skip_serializing_if = "Option::is_none")]
4905    pub next_marker: Option<String>,
4906}
4907
4908/// <p>The input to the ListCertificatesByCA operation.</p>
4909#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4910#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4911pub struct ListCertificatesByCARequest {
4912    /// <p>Specifies the order for results. If True, the results are returned in ascending order, based on the creation date.</p>
4913    #[serde(rename = "ascendingOrder")]
4914    #[serde(skip_serializing_if = "Option::is_none")]
4915    pub ascending_order: Option<bool>,
4916    /// <p>The ID of the CA certificate. This operation will list all registered device certificate that were signed by this CA certificate.</p>
4917    #[serde(rename = "caCertificateId")]
4918    pub ca_certificate_id: String,
4919    /// <p>The marker for the next set of results.</p>
4920    #[serde(rename = "marker")]
4921    #[serde(skip_serializing_if = "Option::is_none")]
4922    pub marker: Option<String>,
4923    /// <p>The result page size.</p>
4924    #[serde(rename = "pageSize")]
4925    #[serde(skip_serializing_if = "Option::is_none")]
4926    pub page_size: Option<i64>,
4927}
4928
4929/// <p>The output of the ListCertificatesByCA operation.</p>
4930#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4931#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4932pub struct ListCertificatesByCAResponse {
4933    /// <p>The device certificates signed by the specified CA certificate.</p>
4934    #[serde(rename = "certificates")]
4935    #[serde(skip_serializing_if = "Option::is_none")]
4936    pub certificates: Option<Vec<Certificate>>,
4937    /// <p>The marker for the next set of results, or null if there are no additional results.</p>
4938    #[serde(rename = "nextMarker")]
4939    #[serde(skip_serializing_if = "Option::is_none")]
4940    pub next_marker: Option<String>,
4941}
4942
4943/// <p>The input for the ListCertificates operation.</p>
4944#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4945#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4946pub struct ListCertificatesRequest {
4947    /// <p>Specifies the order for results. If True, the results are returned in ascending order, based on the creation date.</p>
4948    #[serde(rename = "ascendingOrder")]
4949    #[serde(skip_serializing_if = "Option::is_none")]
4950    pub ascending_order: Option<bool>,
4951    /// <p>The marker for the next set of results.</p>
4952    #[serde(rename = "marker")]
4953    #[serde(skip_serializing_if = "Option::is_none")]
4954    pub marker: Option<String>,
4955    /// <p>The result page size.</p>
4956    #[serde(rename = "pageSize")]
4957    #[serde(skip_serializing_if = "Option::is_none")]
4958    pub page_size: Option<i64>,
4959}
4960
4961/// <p>The output of the ListCertificates operation.</p>
4962#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4963#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4964pub struct ListCertificatesResponse {
4965    /// <p>The descriptions of the certificates.</p>
4966    #[serde(rename = "certificates")]
4967    #[serde(skip_serializing_if = "Option::is_none")]
4968    pub certificates: Option<Vec<Certificate>>,
4969    /// <p>The marker for the next set of results, or null if there are no additional results.</p>
4970    #[serde(rename = "nextMarker")]
4971    #[serde(skip_serializing_if = "Option::is_none")]
4972    pub next_marker: Option<String>,
4973}
4974
4975#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4976#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4977pub struct ListDimensionsRequest {
4978    /// <p>The maximum number of results to retrieve at one time.</p>
4979    #[serde(rename = "maxResults")]
4980    #[serde(skip_serializing_if = "Option::is_none")]
4981    pub max_results: Option<i64>,
4982    /// <p>The token for the next set of results.</p>
4983    #[serde(rename = "nextToken")]
4984    #[serde(skip_serializing_if = "Option::is_none")]
4985    pub next_token: Option<String>,
4986}
4987
4988#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4989#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4990pub struct ListDimensionsResponse {
4991    /// <p>A list of the names of the defined dimensions. Use <code>DescribeDimension</code> to get details for a dimension.</p>
4992    #[serde(rename = "dimensionNames")]
4993    #[serde(skip_serializing_if = "Option::is_none")]
4994    pub dimension_names: Option<Vec<String>>,
4995    /// <p>A token that can be used to retrieve the next set of results, or <code>null</code> if there are no additional results.</p>
4996    #[serde(rename = "nextToken")]
4997    #[serde(skip_serializing_if = "Option::is_none")]
4998    pub next_token: Option<String>,
4999}
5000
5001#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5002#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5003pub struct ListDomainConfigurationsRequest {
5004    /// <p>The marker for the next set of results.</p>
5005    #[serde(rename = "marker")]
5006    #[serde(skip_serializing_if = "Option::is_none")]
5007    pub marker: Option<String>,
5008    /// <p>The result page size.</p>
5009    #[serde(rename = "pageSize")]
5010    #[serde(skip_serializing_if = "Option::is_none")]
5011    pub page_size: Option<i64>,
5012    /// <p>The type of service delivered by the endpoint.</p>
5013    #[serde(rename = "serviceType")]
5014    #[serde(skip_serializing_if = "Option::is_none")]
5015    pub service_type: Option<String>,
5016}
5017
5018#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5019#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5020pub struct ListDomainConfigurationsResponse {
5021    /// <p>A list of objects that contain summary information about the user's domain configurations.</p>
5022    #[serde(rename = "domainConfigurations")]
5023    #[serde(skip_serializing_if = "Option::is_none")]
5024    pub domain_configurations: Option<Vec<DomainConfigurationSummary>>,
5025    /// <p>The marker for the next set of results.</p>
5026    #[serde(rename = "nextMarker")]
5027    #[serde(skip_serializing_if = "Option::is_none")]
5028    pub next_marker: Option<String>,
5029}
5030
5031#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5032#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5033pub struct ListIndicesRequest {
5034    /// <p>The maximum number of results to return at one time.</p>
5035    #[serde(rename = "maxResults")]
5036    #[serde(skip_serializing_if = "Option::is_none")]
5037    pub max_results: Option<i64>,
5038    /// <p>The token used to get the next set of results, or <code>null</code> if there are no additional results.</p>
5039    #[serde(rename = "nextToken")]
5040    #[serde(skip_serializing_if = "Option::is_none")]
5041    pub next_token: Option<String>,
5042}
5043
5044#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5045#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5046pub struct ListIndicesResponse {
5047    /// <p>The index names.</p>
5048    #[serde(rename = "indexNames")]
5049    #[serde(skip_serializing_if = "Option::is_none")]
5050    pub index_names: Option<Vec<String>>,
5051    /// <p>The token used to get the next set of results, or <code>null</code> if there are no additional results.</p>
5052    #[serde(rename = "nextToken")]
5053    #[serde(skip_serializing_if = "Option::is_none")]
5054    pub next_token: Option<String>,
5055}
5056
5057#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5058#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5059pub struct ListJobExecutionsForJobRequest {
5060    /// <p>The unique identifier you assigned to this job when it was created.</p>
5061    #[serde(rename = "jobId")]
5062    pub job_id: String,
5063    /// <p>The maximum number of results to be returned per request.</p>
5064    #[serde(rename = "maxResults")]
5065    #[serde(skip_serializing_if = "Option::is_none")]
5066    pub max_results: Option<i64>,
5067    /// <p>The token to retrieve the next set of results.</p>
5068    #[serde(rename = "nextToken")]
5069    #[serde(skip_serializing_if = "Option::is_none")]
5070    pub next_token: Option<String>,
5071    /// <p>The status of the job.</p>
5072    #[serde(rename = "status")]
5073    #[serde(skip_serializing_if = "Option::is_none")]
5074    pub status: Option<String>,
5075}
5076
5077#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5078#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5079pub struct ListJobExecutionsForJobResponse {
5080    /// <p>A list of job execution summaries.</p>
5081    #[serde(rename = "executionSummaries")]
5082    #[serde(skip_serializing_if = "Option::is_none")]
5083    pub execution_summaries: Option<Vec<JobExecutionSummaryForJob>>,
5084    /// <p>The token for the next set of results, or <b>null</b> if there are no additional results.</p>
5085    #[serde(rename = "nextToken")]
5086    #[serde(skip_serializing_if = "Option::is_none")]
5087    pub next_token: Option<String>,
5088}
5089
5090#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5091#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5092pub struct ListJobExecutionsForThingRequest {
5093    /// <p>The maximum number of results to be returned per request.</p>
5094    #[serde(rename = "maxResults")]
5095    #[serde(skip_serializing_if = "Option::is_none")]
5096    pub max_results: Option<i64>,
5097    /// <p>The token to retrieve the next set of results.</p>
5098    #[serde(rename = "nextToken")]
5099    #[serde(skip_serializing_if = "Option::is_none")]
5100    pub next_token: Option<String>,
5101    /// <p>An optional filter that lets you search for jobs that have the specified status.</p>
5102    #[serde(rename = "status")]
5103    #[serde(skip_serializing_if = "Option::is_none")]
5104    pub status: Option<String>,
5105    /// <p>The thing name.</p>
5106    #[serde(rename = "thingName")]
5107    pub thing_name: String,
5108}
5109
5110#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5111#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5112pub struct ListJobExecutionsForThingResponse {
5113    /// <p>A list of job execution summaries.</p>
5114    #[serde(rename = "executionSummaries")]
5115    #[serde(skip_serializing_if = "Option::is_none")]
5116    pub execution_summaries: Option<Vec<JobExecutionSummaryForThing>>,
5117    /// <p>The token for the next set of results, or <b>null</b> if there are no additional results.</p>
5118    #[serde(rename = "nextToken")]
5119    #[serde(skip_serializing_if = "Option::is_none")]
5120    pub next_token: Option<String>,
5121}
5122
5123#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5124#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5125pub struct ListJobsRequest {
5126    /// <p>The maximum number of results to return per request.</p>
5127    #[serde(rename = "maxResults")]
5128    #[serde(skip_serializing_if = "Option::is_none")]
5129    pub max_results: Option<i64>,
5130    /// <p>The token to retrieve the next set of results.</p>
5131    #[serde(rename = "nextToken")]
5132    #[serde(skip_serializing_if = "Option::is_none")]
5133    pub next_token: Option<String>,
5134    /// <p>An optional filter that lets you search for jobs that have the specified status.</p>
5135    #[serde(rename = "status")]
5136    #[serde(skip_serializing_if = "Option::is_none")]
5137    pub status: Option<String>,
5138    /// <p>Specifies whether the job will continue to run (CONTINUOUS), or will be complete after all those things specified as targets have completed the job (SNAPSHOT). If continuous, the job may also be run on a thing when a change is detected in a target. For example, a job will run on a thing when the thing is added to a target group, even after the job was completed by all things originally in the group. </p>
5139    #[serde(rename = "targetSelection")]
5140    #[serde(skip_serializing_if = "Option::is_none")]
5141    pub target_selection: Option<String>,
5142    /// <p>A filter that limits the returned jobs to those for the specified group.</p>
5143    #[serde(rename = "thingGroupId")]
5144    #[serde(skip_serializing_if = "Option::is_none")]
5145    pub thing_group_id: Option<String>,
5146    /// <p>A filter that limits the returned jobs to those for the specified group.</p>
5147    #[serde(rename = "thingGroupName")]
5148    #[serde(skip_serializing_if = "Option::is_none")]
5149    pub thing_group_name: Option<String>,
5150}
5151
5152#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5153#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5154pub struct ListJobsResponse {
5155    /// <p>A list of jobs.</p>
5156    #[serde(rename = "jobs")]
5157    #[serde(skip_serializing_if = "Option::is_none")]
5158    pub jobs: Option<Vec<JobSummary>>,
5159    /// <p>The token for the next set of results, or <b>null</b> if there are no additional results.</p>
5160    #[serde(rename = "nextToken")]
5161    #[serde(skip_serializing_if = "Option::is_none")]
5162    pub next_token: Option<String>,
5163}
5164
5165#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5166#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5167pub struct ListMitigationActionsRequest {
5168    /// <p>Specify a value to limit the result to mitigation actions with a specific action type.</p>
5169    #[serde(rename = "actionType")]
5170    #[serde(skip_serializing_if = "Option::is_none")]
5171    pub action_type: Option<String>,
5172    /// <p>The maximum number of results to return at one time. The default is 25.</p>
5173    #[serde(rename = "maxResults")]
5174    #[serde(skip_serializing_if = "Option::is_none")]
5175    pub max_results: Option<i64>,
5176    /// <p>The token for the next set of results.</p>
5177    #[serde(rename = "nextToken")]
5178    #[serde(skip_serializing_if = "Option::is_none")]
5179    pub next_token: Option<String>,
5180}
5181
5182#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5183#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5184pub struct ListMitigationActionsResponse {
5185    /// <p>A set of actions that matched the specified filter criteria.</p>
5186    #[serde(rename = "actionIdentifiers")]
5187    #[serde(skip_serializing_if = "Option::is_none")]
5188    pub action_identifiers: Option<Vec<MitigationActionIdentifier>>,
5189    /// <p>The token for the next set of results.</p>
5190    #[serde(rename = "nextToken")]
5191    #[serde(skip_serializing_if = "Option::is_none")]
5192    pub next_token: Option<String>,
5193}
5194
5195#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5196#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5197pub struct ListOTAUpdatesRequest {
5198    /// <p>The maximum number of results to return at one time.</p>
5199    #[serde(rename = "maxResults")]
5200    #[serde(skip_serializing_if = "Option::is_none")]
5201    pub max_results: Option<i64>,
5202    /// <p>A token used to retrieve the next set of results.</p>
5203    #[serde(rename = "nextToken")]
5204    #[serde(skip_serializing_if = "Option::is_none")]
5205    pub next_token: Option<String>,
5206    /// <p>The OTA update job status.</p>
5207    #[serde(rename = "otaUpdateStatus")]
5208    #[serde(skip_serializing_if = "Option::is_none")]
5209    pub ota_update_status: Option<String>,
5210}
5211
5212#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5213#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5214pub struct ListOTAUpdatesResponse {
5215    /// <p>A token to use to get the next set of results.</p>
5216    #[serde(rename = "nextToken")]
5217    #[serde(skip_serializing_if = "Option::is_none")]
5218    pub next_token: Option<String>,
5219    /// <p>A list of OTA update jobs.</p>
5220    #[serde(rename = "otaUpdates")]
5221    #[serde(skip_serializing_if = "Option::is_none")]
5222    pub ota_updates: Option<Vec<OTAUpdateSummary>>,
5223}
5224
5225/// <p>The input to the ListOutgoingCertificates operation.</p>
5226#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5227#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5228pub struct ListOutgoingCertificatesRequest {
5229    /// <p>Specifies the order for results. If True, the results are returned in ascending order, based on the creation date.</p>
5230    #[serde(rename = "ascendingOrder")]
5231    #[serde(skip_serializing_if = "Option::is_none")]
5232    pub ascending_order: Option<bool>,
5233    /// <p>The marker for the next set of results.</p>
5234    #[serde(rename = "marker")]
5235    #[serde(skip_serializing_if = "Option::is_none")]
5236    pub marker: Option<String>,
5237    /// <p>The result page size.</p>
5238    #[serde(rename = "pageSize")]
5239    #[serde(skip_serializing_if = "Option::is_none")]
5240    pub page_size: Option<i64>,
5241}
5242
5243/// <p>The output from the ListOutgoingCertificates operation.</p>
5244#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5245#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5246pub struct ListOutgoingCertificatesResponse {
5247    /// <p>The marker for the next set of results.</p>
5248    #[serde(rename = "nextMarker")]
5249    #[serde(skip_serializing_if = "Option::is_none")]
5250    pub next_marker: Option<String>,
5251    /// <p>The certificates that are being transferred but not yet accepted.</p>
5252    #[serde(rename = "outgoingCertificates")]
5253    #[serde(skip_serializing_if = "Option::is_none")]
5254    pub outgoing_certificates: Option<Vec<OutgoingCertificate>>,
5255}
5256
5257/// <p>The input for the ListPolicies operation.</p>
5258#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5259#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5260pub struct ListPoliciesRequest {
5261    /// <p>Specifies the order for results. If true, the results are returned in ascending creation order.</p>
5262    #[serde(rename = "ascendingOrder")]
5263    #[serde(skip_serializing_if = "Option::is_none")]
5264    pub ascending_order: Option<bool>,
5265    /// <p>The marker for the next set of results.</p>
5266    #[serde(rename = "marker")]
5267    #[serde(skip_serializing_if = "Option::is_none")]
5268    pub marker: Option<String>,
5269    /// <p>The result page size.</p>
5270    #[serde(rename = "pageSize")]
5271    #[serde(skip_serializing_if = "Option::is_none")]
5272    pub page_size: Option<i64>,
5273}
5274
5275/// <p>The output from the ListPolicies operation.</p>
5276#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5277#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5278pub struct ListPoliciesResponse {
5279    /// <p>The marker for the next set of results, or null if there are no additional results.</p>
5280    #[serde(rename = "nextMarker")]
5281    #[serde(skip_serializing_if = "Option::is_none")]
5282    pub next_marker: Option<String>,
5283    /// <p>The descriptions of the policies.</p>
5284    #[serde(rename = "policies")]
5285    #[serde(skip_serializing_if = "Option::is_none")]
5286    pub policies: Option<Vec<Policy>>,
5287}
5288
5289/// <p>The input for the ListPolicyPrincipals operation.</p>
5290#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5291#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5292pub struct ListPolicyPrincipalsRequest {
5293    /// <p>Specifies the order for results. If true, the results are returned in ascending creation order.</p>
5294    #[serde(rename = "ascendingOrder")]
5295    #[serde(skip_serializing_if = "Option::is_none")]
5296    pub ascending_order: Option<bool>,
5297    /// <p>The marker for the next set of results.</p>
5298    #[serde(rename = "marker")]
5299    #[serde(skip_serializing_if = "Option::is_none")]
5300    pub marker: Option<String>,
5301    /// <p>The result page size.</p>
5302    #[serde(rename = "pageSize")]
5303    #[serde(skip_serializing_if = "Option::is_none")]
5304    pub page_size: Option<i64>,
5305    /// <p>The policy name.</p>
5306    #[serde(rename = "policyName")]
5307    pub policy_name: String,
5308}
5309
5310/// <p>The output from the ListPolicyPrincipals operation.</p>
5311#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5312#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5313pub struct ListPolicyPrincipalsResponse {
5314    /// <p>The marker for the next set of results, or null if there are no additional results.</p>
5315    #[serde(rename = "nextMarker")]
5316    #[serde(skip_serializing_if = "Option::is_none")]
5317    pub next_marker: Option<String>,
5318    /// <p>The descriptions of the principals.</p>
5319    #[serde(rename = "principals")]
5320    #[serde(skip_serializing_if = "Option::is_none")]
5321    pub principals: Option<Vec<String>>,
5322}
5323
5324/// <p>The input for the ListPolicyVersions operation.</p>
5325#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5326#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5327pub struct ListPolicyVersionsRequest {
5328    /// <p>The policy name.</p>
5329    #[serde(rename = "policyName")]
5330    pub policy_name: String,
5331}
5332
5333/// <p>The output from the ListPolicyVersions operation.</p>
5334#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5335#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5336pub struct ListPolicyVersionsResponse {
5337    /// <p>The policy versions.</p>
5338    #[serde(rename = "policyVersions")]
5339    #[serde(skip_serializing_if = "Option::is_none")]
5340    pub policy_versions: Option<Vec<PolicyVersion>>,
5341}
5342
5343/// <p>The input for the ListPrincipalPolicies operation.</p>
5344#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5345#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5346pub struct ListPrincipalPoliciesRequest {
5347    /// <p>Specifies the order for results. If true, results are returned in ascending creation order.</p>
5348    #[serde(rename = "ascendingOrder")]
5349    #[serde(skip_serializing_if = "Option::is_none")]
5350    pub ascending_order: Option<bool>,
5351    /// <p>The marker for the next set of results.</p>
5352    #[serde(rename = "marker")]
5353    #[serde(skip_serializing_if = "Option::is_none")]
5354    pub marker: Option<String>,
5355    /// <p>The result page size.</p>
5356    #[serde(rename = "pageSize")]
5357    #[serde(skip_serializing_if = "Option::is_none")]
5358    pub page_size: Option<i64>,
5359    /// <p>The principal.</p>
5360    #[serde(rename = "principal")]
5361    pub principal: String,
5362}
5363
5364/// <p>The output from the ListPrincipalPolicies operation.</p>
5365#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5366#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5367pub struct ListPrincipalPoliciesResponse {
5368    /// <p>The marker for the next set of results, or null if there are no additional results.</p>
5369    #[serde(rename = "nextMarker")]
5370    #[serde(skip_serializing_if = "Option::is_none")]
5371    pub next_marker: Option<String>,
5372    /// <p>The policies.</p>
5373    #[serde(rename = "policies")]
5374    #[serde(skip_serializing_if = "Option::is_none")]
5375    pub policies: Option<Vec<Policy>>,
5376}
5377
5378/// <p>The input for the ListPrincipalThings operation.</p>
5379#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5380#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5381pub struct ListPrincipalThingsRequest {
5382    /// <p>The maximum number of results to return in this operation.</p>
5383    #[serde(rename = "maxResults")]
5384    #[serde(skip_serializing_if = "Option::is_none")]
5385    pub max_results: Option<i64>,
5386    /// <p>The token to retrieve the next set of results.</p>
5387    #[serde(rename = "nextToken")]
5388    #[serde(skip_serializing_if = "Option::is_none")]
5389    pub next_token: Option<String>,
5390    /// <p>The principal.</p>
5391    #[serde(rename = "principal")]
5392    pub principal: String,
5393}
5394
5395/// <p>The output from the ListPrincipalThings operation.</p>
5396#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5397#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5398pub struct ListPrincipalThingsResponse {
5399    /// <p>The token used to get the next set of results, or <b>null</b> if there are no additional results.</p>
5400    #[serde(rename = "nextToken")]
5401    #[serde(skip_serializing_if = "Option::is_none")]
5402    pub next_token: Option<String>,
5403    /// <p>The things.</p>
5404    #[serde(rename = "things")]
5405    #[serde(skip_serializing_if = "Option::is_none")]
5406    pub things: Option<Vec<String>>,
5407}
5408
5409#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5410#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5411pub struct ListProvisioningTemplateVersionsRequest {
5412    /// <p>The maximum number of results to return at one time.</p>
5413    #[serde(rename = "maxResults")]
5414    #[serde(skip_serializing_if = "Option::is_none")]
5415    pub max_results: Option<i64>,
5416    /// <p>A token to retrieve the next set of results.</p>
5417    #[serde(rename = "nextToken")]
5418    #[serde(skip_serializing_if = "Option::is_none")]
5419    pub next_token: Option<String>,
5420    /// <p>The name of the fleet provisioning template.</p>
5421    #[serde(rename = "templateName")]
5422    pub template_name: String,
5423}
5424
5425#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5426#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5427pub struct ListProvisioningTemplateVersionsResponse {
5428    /// <p>A token to retrieve the next set of results.</p>
5429    #[serde(rename = "nextToken")]
5430    #[serde(skip_serializing_if = "Option::is_none")]
5431    pub next_token: Option<String>,
5432    /// <p>The list of fleet provisioning template versions.</p>
5433    #[serde(rename = "versions")]
5434    #[serde(skip_serializing_if = "Option::is_none")]
5435    pub versions: Option<Vec<ProvisioningTemplateVersionSummary>>,
5436}
5437
5438#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5439#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5440pub struct ListProvisioningTemplatesRequest {
5441    /// <p>The maximum number of results to return at one time.</p>
5442    #[serde(rename = "maxResults")]
5443    #[serde(skip_serializing_if = "Option::is_none")]
5444    pub max_results: Option<i64>,
5445    /// <p>A token to retrieve the next set of results.</p>
5446    #[serde(rename = "nextToken")]
5447    #[serde(skip_serializing_if = "Option::is_none")]
5448    pub next_token: Option<String>,
5449}
5450
5451#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5452#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5453pub struct ListProvisioningTemplatesResponse {
5454    /// <p>A token to retrieve the next set of results.</p>
5455    #[serde(rename = "nextToken")]
5456    #[serde(skip_serializing_if = "Option::is_none")]
5457    pub next_token: Option<String>,
5458    /// <p>A list of fleet provisioning templates</p>
5459    #[serde(rename = "templates")]
5460    #[serde(skip_serializing_if = "Option::is_none")]
5461    pub templates: Option<Vec<ProvisioningTemplateSummary>>,
5462}
5463
5464#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5465#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5466pub struct ListRoleAliasesRequest {
5467    /// <p>Return the list of role aliases in ascending alphabetical order.</p>
5468    #[serde(rename = "ascendingOrder")]
5469    #[serde(skip_serializing_if = "Option::is_none")]
5470    pub ascending_order: Option<bool>,
5471    /// <p>A marker used to get the next set of results.</p>
5472    #[serde(rename = "marker")]
5473    #[serde(skip_serializing_if = "Option::is_none")]
5474    pub marker: Option<String>,
5475    /// <p>The maximum number of results to return at one time.</p>
5476    #[serde(rename = "pageSize")]
5477    #[serde(skip_serializing_if = "Option::is_none")]
5478    pub page_size: Option<i64>,
5479}
5480
5481#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5482#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5483pub struct ListRoleAliasesResponse {
5484    /// <p>A marker used to get the next set of results.</p>
5485    #[serde(rename = "nextMarker")]
5486    #[serde(skip_serializing_if = "Option::is_none")]
5487    pub next_marker: Option<String>,
5488    /// <p>The role aliases.</p>
5489    #[serde(rename = "roleAliases")]
5490    #[serde(skip_serializing_if = "Option::is_none")]
5491    pub role_aliases: Option<Vec<String>>,
5492}
5493
5494#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5495#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5496pub struct ListScheduledAuditsRequest {
5497    /// <p>The maximum number of results to return at one time. The default is 25.</p>
5498    #[serde(rename = "maxResults")]
5499    #[serde(skip_serializing_if = "Option::is_none")]
5500    pub max_results: Option<i64>,
5501    /// <p>The token for the next set of results.</p>
5502    #[serde(rename = "nextToken")]
5503    #[serde(skip_serializing_if = "Option::is_none")]
5504    pub next_token: Option<String>,
5505}
5506
5507#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5508#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5509pub struct ListScheduledAuditsResponse {
5510    /// <p>A token that can be used to retrieve the next set of results, or <code>null</code> if there are no additional results.</p>
5511    #[serde(rename = "nextToken")]
5512    #[serde(skip_serializing_if = "Option::is_none")]
5513    pub next_token: Option<String>,
5514    /// <p>The list of scheduled audits.</p>
5515    #[serde(rename = "scheduledAudits")]
5516    #[serde(skip_serializing_if = "Option::is_none")]
5517    pub scheduled_audits: Option<Vec<ScheduledAuditMetadata>>,
5518}
5519
5520#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5521#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5522pub struct ListSecurityProfilesForTargetRequest {
5523    /// <p>The maximum number of results to return at one time.</p>
5524    #[serde(rename = "maxResults")]
5525    #[serde(skip_serializing_if = "Option::is_none")]
5526    pub max_results: Option<i64>,
5527    /// <p>The token for the next set of results.</p>
5528    #[serde(rename = "nextToken")]
5529    #[serde(skip_serializing_if = "Option::is_none")]
5530    pub next_token: Option<String>,
5531    /// <p>If true, return child groups too.</p>
5532    #[serde(rename = "recursive")]
5533    #[serde(skip_serializing_if = "Option::is_none")]
5534    pub recursive: Option<bool>,
5535    /// <p>The ARN of the target (thing group) whose attached security profiles you want to get.</p>
5536    #[serde(rename = "securityProfileTargetArn")]
5537    pub security_profile_target_arn: String,
5538}
5539
5540#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5541#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5542pub struct ListSecurityProfilesForTargetResponse {
5543    /// <p>A token that can be used to retrieve the next set of results, or <code>null</code> if there are no additional results.</p>
5544    #[serde(rename = "nextToken")]
5545    #[serde(skip_serializing_if = "Option::is_none")]
5546    pub next_token: Option<String>,
5547    /// <p>A list of security profiles and their associated targets.</p>
5548    #[serde(rename = "securityProfileTargetMappings")]
5549    #[serde(skip_serializing_if = "Option::is_none")]
5550    pub security_profile_target_mappings: Option<Vec<SecurityProfileTargetMapping>>,
5551}
5552
5553#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5554#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5555pub struct ListSecurityProfilesRequest {
5556    /// <p>A filter to limit results to the security profiles that use the defined dimension.</p>
5557    #[serde(rename = "dimensionName")]
5558    #[serde(skip_serializing_if = "Option::is_none")]
5559    pub dimension_name: Option<String>,
5560    /// <p>The maximum number of results to return at one time.</p>
5561    #[serde(rename = "maxResults")]
5562    #[serde(skip_serializing_if = "Option::is_none")]
5563    pub max_results: Option<i64>,
5564    /// <p>The token for the next set of results.</p>
5565    #[serde(rename = "nextToken")]
5566    #[serde(skip_serializing_if = "Option::is_none")]
5567    pub next_token: Option<String>,
5568}
5569
5570#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5571#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5572pub struct ListSecurityProfilesResponse {
5573    /// <p>A token that can be used to retrieve the next set of results, or <code>null</code> if there are no additional results.</p>
5574    #[serde(rename = "nextToken")]
5575    #[serde(skip_serializing_if = "Option::is_none")]
5576    pub next_token: Option<String>,
5577    /// <p>A list of security profile identifiers (names and ARNs).</p>
5578    #[serde(rename = "securityProfileIdentifiers")]
5579    #[serde(skip_serializing_if = "Option::is_none")]
5580    pub security_profile_identifiers: Option<Vec<SecurityProfileIdentifier>>,
5581}
5582
5583#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5584#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5585pub struct ListStreamsRequest {
5586    /// <p>Set to true to return the list of streams in ascending order.</p>
5587    #[serde(rename = "ascendingOrder")]
5588    #[serde(skip_serializing_if = "Option::is_none")]
5589    pub ascending_order: Option<bool>,
5590    /// <p>The maximum number of results to return at a time.</p>
5591    #[serde(rename = "maxResults")]
5592    #[serde(skip_serializing_if = "Option::is_none")]
5593    pub max_results: Option<i64>,
5594    /// <p>A token used to get the next set of results.</p>
5595    #[serde(rename = "nextToken")]
5596    #[serde(skip_serializing_if = "Option::is_none")]
5597    pub next_token: Option<String>,
5598}
5599
5600#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5601#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5602pub struct ListStreamsResponse {
5603    /// <p>A token used to get the next set of results.</p>
5604    #[serde(rename = "nextToken")]
5605    #[serde(skip_serializing_if = "Option::is_none")]
5606    pub next_token: Option<String>,
5607    /// <p>A list of streams.</p>
5608    #[serde(rename = "streams")]
5609    #[serde(skip_serializing_if = "Option::is_none")]
5610    pub streams: Option<Vec<StreamSummary>>,
5611}
5612
5613#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5614#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5615pub struct ListTagsForResourceRequest {
5616    /// <p>The token to retrieve the next set of results.</p>
5617    #[serde(rename = "nextToken")]
5618    #[serde(skip_serializing_if = "Option::is_none")]
5619    pub next_token: Option<String>,
5620    /// <p>The ARN of the resource.</p>
5621    #[serde(rename = "resourceArn")]
5622    pub resource_arn: String,
5623}
5624
5625#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5626#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5627pub struct ListTagsForResourceResponse {
5628    /// <p>The token used to get the next set of results, or <b>null</b> if there are no additional results.</p>
5629    #[serde(rename = "nextToken")]
5630    #[serde(skip_serializing_if = "Option::is_none")]
5631    pub next_token: Option<String>,
5632    /// <p>The list of tags assigned to the resource.</p>
5633    #[serde(rename = "tags")]
5634    #[serde(skip_serializing_if = "Option::is_none")]
5635    pub tags: Option<Vec<Tag>>,
5636}
5637
5638#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5639#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5640pub struct ListTargetsForPolicyRequest {
5641    /// <p>A marker used to get the next set of results.</p>
5642    #[serde(rename = "marker")]
5643    #[serde(skip_serializing_if = "Option::is_none")]
5644    pub marker: Option<String>,
5645    /// <p>The maximum number of results to return at one time.</p>
5646    #[serde(rename = "pageSize")]
5647    #[serde(skip_serializing_if = "Option::is_none")]
5648    pub page_size: Option<i64>,
5649    /// <p>The policy name.</p>
5650    #[serde(rename = "policyName")]
5651    pub policy_name: String,
5652}
5653
5654#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5655#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5656pub struct ListTargetsForPolicyResponse {
5657    /// <p>A marker used to get the next set of results.</p>
5658    #[serde(rename = "nextMarker")]
5659    #[serde(skip_serializing_if = "Option::is_none")]
5660    pub next_marker: Option<String>,
5661    /// <p>The policy targets.</p>
5662    #[serde(rename = "targets")]
5663    #[serde(skip_serializing_if = "Option::is_none")]
5664    pub targets: Option<Vec<String>>,
5665}
5666
5667#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5668#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5669pub struct ListTargetsForSecurityProfileRequest {
5670    /// <p>The maximum number of results to return at one time.</p>
5671    #[serde(rename = "maxResults")]
5672    #[serde(skip_serializing_if = "Option::is_none")]
5673    pub max_results: Option<i64>,
5674    /// <p>The token for the next set of results.</p>
5675    #[serde(rename = "nextToken")]
5676    #[serde(skip_serializing_if = "Option::is_none")]
5677    pub next_token: Option<String>,
5678    /// <p>The security profile.</p>
5679    #[serde(rename = "securityProfileName")]
5680    pub security_profile_name: String,
5681}
5682
5683#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5684#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5685pub struct ListTargetsForSecurityProfileResponse {
5686    /// <p>A token that can be used to retrieve the next set of results, or <code>null</code> if there are no additional results.</p>
5687    #[serde(rename = "nextToken")]
5688    #[serde(skip_serializing_if = "Option::is_none")]
5689    pub next_token: Option<String>,
5690    /// <p>The thing groups to which the security profile is attached.</p>
5691    #[serde(rename = "securityProfileTargets")]
5692    #[serde(skip_serializing_if = "Option::is_none")]
5693    pub security_profile_targets: Option<Vec<SecurityProfileTarget>>,
5694}
5695
5696#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5697#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5698pub struct ListThingGroupsForThingRequest {
5699    /// <p>The maximum number of results to return at one time.</p>
5700    #[serde(rename = "maxResults")]
5701    #[serde(skip_serializing_if = "Option::is_none")]
5702    pub max_results: Option<i64>,
5703    /// <p>The token to retrieve the next set of results.</p>
5704    #[serde(rename = "nextToken")]
5705    #[serde(skip_serializing_if = "Option::is_none")]
5706    pub next_token: Option<String>,
5707    /// <p>The thing name.</p>
5708    #[serde(rename = "thingName")]
5709    pub thing_name: String,
5710}
5711
5712#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5713#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5714pub struct ListThingGroupsForThingResponse {
5715    /// <p>The token used to get the next set of results, or <b>null</b> if there are no additional results.</p>
5716    #[serde(rename = "nextToken")]
5717    #[serde(skip_serializing_if = "Option::is_none")]
5718    pub next_token: Option<String>,
5719    /// <p>The thing groups.</p>
5720    #[serde(rename = "thingGroups")]
5721    #[serde(skip_serializing_if = "Option::is_none")]
5722    pub thing_groups: Option<Vec<GroupNameAndArn>>,
5723}
5724
5725#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5726#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5727pub struct ListThingGroupsRequest {
5728    /// <p>The maximum number of results to return at one time.</p>
5729    #[serde(rename = "maxResults")]
5730    #[serde(skip_serializing_if = "Option::is_none")]
5731    pub max_results: Option<i64>,
5732    /// <p>A filter that limits the results to those with the specified name prefix.</p>
5733    #[serde(rename = "namePrefixFilter")]
5734    #[serde(skip_serializing_if = "Option::is_none")]
5735    pub name_prefix_filter: Option<String>,
5736    /// <p>The token to retrieve the next set of results.</p>
5737    #[serde(rename = "nextToken")]
5738    #[serde(skip_serializing_if = "Option::is_none")]
5739    pub next_token: Option<String>,
5740    /// <p>A filter that limits the results to those with the specified parent group.</p>
5741    #[serde(rename = "parentGroup")]
5742    #[serde(skip_serializing_if = "Option::is_none")]
5743    pub parent_group: Option<String>,
5744    /// <p>If true, return child groups as well.</p>
5745    #[serde(rename = "recursive")]
5746    #[serde(skip_serializing_if = "Option::is_none")]
5747    pub recursive: Option<bool>,
5748}
5749
5750#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5751#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5752pub struct ListThingGroupsResponse {
5753    /// <p>The token used to get the next set of results, or <b>null</b> if there are no additional results.</p>
5754    #[serde(rename = "nextToken")]
5755    #[serde(skip_serializing_if = "Option::is_none")]
5756    pub next_token: Option<String>,
5757    /// <p>The thing groups.</p>
5758    #[serde(rename = "thingGroups")]
5759    #[serde(skip_serializing_if = "Option::is_none")]
5760    pub thing_groups: Option<Vec<GroupNameAndArn>>,
5761}
5762
5763/// <p>The input for the ListThingPrincipal operation.</p>
5764#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5765#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5766pub struct ListThingPrincipalsRequest {
5767    /// <p>The name of the thing.</p>
5768    #[serde(rename = "thingName")]
5769    pub thing_name: String,
5770}
5771
5772/// <p>The output from the ListThingPrincipals operation.</p>
5773#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5774#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5775pub struct ListThingPrincipalsResponse {
5776    /// <p>The principals associated with the thing.</p>
5777    #[serde(rename = "principals")]
5778    #[serde(skip_serializing_if = "Option::is_none")]
5779    pub principals: Option<Vec<String>>,
5780}
5781
5782#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5783#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5784pub struct ListThingRegistrationTaskReportsRequest {
5785    /// <p>The maximum number of results to return per request.</p>
5786    #[serde(rename = "maxResults")]
5787    #[serde(skip_serializing_if = "Option::is_none")]
5788    pub max_results: Option<i64>,
5789    /// <p>The token to retrieve the next set of results.</p>
5790    #[serde(rename = "nextToken")]
5791    #[serde(skip_serializing_if = "Option::is_none")]
5792    pub next_token: Option<String>,
5793    /// <p>The type of task report.</p>
5794    #[serde(rename = "reportType")]
5795    pub report_type: String,
5796    /// <p>The id of the task.</p>
5797    #[serde(rename = "taskId")]
5798    pub task_id: String,
5799}
5800
5801#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5802#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5803pub struct ListThingRegistrationTaskReportsResponse {
5804    /// <p>The token used to get the next set of results, or <b>null</b> if there are no additional results.</p>
5805    #[serde(rename = "nextToken")]
5806    #[serde(skip_serializing_if = "Option::is_none")]
5807    pub next_token: Option<String>,
5808    /// <p>The type of task report.</p>
5809    #[serde(rename = "reportType")]
5810    #[serde(skip_serializing_if = "Option::is_none")]
5811    pub report_type: Option<String>,
5812    /// <p>Links to the task resources.</p>
5813    #[serde(rename = "resourceLinks")]
5814    #[serde(skip_serializing_if = "Option::is_none")]
5815    pub resource_links: Option<Vec<String>>,
5816}
5817
5818#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5819#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5820pub struct ListThingRegistrationTasksRequest {
5821    /// <p>The maximum number of results to return at one time.</p>
5822    #[serde(rename = "maxResults")]
5823    #[serde(skip_serializing_if = "Option::is_none")]
5824    pub max_results: Option<i64>,
5825    /// <p>The token to retrieve the next set of results.</p>
5826    #[serde(rename = "nextToken")]
5827    #[serde(skip_serializing_if = "Option::is_none")]
5828    pub next_token: Option<String>,
5829    /// <p>The status of the bulk thing provisioning task.</p>
5830    #[serde(rename = "status")]
5831    #[serde(skip_serializing_if = "Option::is_none")]
5832    pub status: Option<String>,
5833}
5834
5835#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5836#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5837pub struct ListThingRegistrationTasksResponse {
5838    /// <p>The token used to get the next set of results, or <b>null</b> if there are no additional results.</p>
5839    #[serde(rename = "nextToken")]
5840    #[serde(skip_serializing_if = "Option::is_none")]
5841    pub next_token: Option<String>,
5842    /// <p>A list of bulk thing provisioning task IDs.</p>
5843    #[serde(rename = "taskIds")]
5844    #[serde(skip_serializing_if = "Option::is_none")]
5845    pub task_ids: Option<Vec<String>>,
5846}
5847
5848/// <p>The input for the ListThingTypes operation.</p>
5849#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5850#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5851pub struct ListThingTypesRequest {
5852    /// <p>The maximum number of results to return in this operation.</p>
5853    #[serde(rename = "maxResults")]
5854    #[serde(skip_serializing_if = "Option::is_none")]
5855    pub max_results: Option<i64>,
5856    /// <p>The token to retrieve the next set of results.</p>
5857    #[serde(rename = "nextToken")]
5858    #[serde(skip_serializing_if = "Option::is_none")]
5859    pub next_token: Option<String>,
5860    /// <p>The name of the thing type.</p>
5861    #[serde(rename = "thingTypeName")]
5862    #[serde(skip_serializing_if = "Option::is_none")]
5863    pub thing_type_name: Option<String>,
5864}
5865
5866/// <p>The output for the ListThingTypes operation.</p>
5867#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5868#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5869pub struct ListThingTypesResponse {
5870    /// <p>The token for the next set of results, or <b>null</b> if there are no additional results.</p>
5871    #[serde(rename = "nextToken")]
5872    #[serde(skip_serializing_if = "Option::is_none")]
5873    pub next_token: Option<String>,
5874    /// <p>The thing types.</p>
5875    #[serde(rename = "thingTypes")]
5876    #[serde(skip_serializing_if = "Option::is_none")]
5877    pub thing_types: Option<Vec<ThingTypeDefinition>>,
5878}
5879
5880#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5881#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5882pub struct ListThingsInBillingGroupRequest {
5883    /// <p>The name of the billing group.</p>
5884    #[serde(rename = "billingGroupName")]
5885    pub billing_group_name: String,
5886    /// <p>The maximum number of results to return per request.</p>
5887    #[serde(rename = "maxResults")]
5888    #[serde(skip_serializing_if = "Option::is_none")]
5889    pub max_results: Option<i64>,
5890    /// <p>The token to retrieve the next set of results.</p>
5891    #[serde(rename = "nextToken")]
5892    #[serde(skip_serializing_if = "Option::is_none")]
5893    pub next_token: Option<String>,
5894}
5895
5896#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5897#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5898pub struct ListThingsInBillingGroupResponse {
5899    /// <p>The token used to get the next set of results, or <b>null</b> if there are no additional results.</p>
5900    #[serde(rename = "nextToken")]
5901    #[serde(skip_serializing_if = "Option::is_none")]
5902    pub next_token: Option<String>,
5903    /// <p>A list of things in the billing group.</p>
5904    #[serde(rename = "things")]
5905    #[serde(skip_serializing_if = "Option::is_none")]
5906    pub things: Option<Vec<String>>,
5907}
5908
5909#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5910#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5911pub struct ListThingsInThingGroupRequest {
5912    /// <p>The maximum number of results to return at one time.</p>
5913    #[serde(rename = "maxResults")]
5914    #[serde(skip_serializing_if = "Option::is_none")]
5915    pub max_results: Option<i64>,
5916    /// <p>The token to retrieve the next set of results.</p>
5917    #[serde(rename = "nextToken")]
5918    #[serde(skip_serializing_if = "Option::is_none")]
5919    pub next_token: Option<String>,
5920    /// <p>When true, list things in this thing group and in all child groups as well.</p>
5921    #[serde(rename = "recursive")]
5922    #[serde(skip_serializing_if = "Option::is_none")]
5923    pub recursive: Option<bool>,
5924    /// <p>The thing group name.</p>
5925    #[serde(rename = "thingGroupName")]
5926    pub thing_group_name: String,
5927}
5928
5929#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5930#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5931pub struct ListThingsInThingGroupResponse {
5932    /// <p>The token used to get the next set of results, or <b>null</b> if there are no additional results.</p>
5933    #[serde(rename = "nextToken")]
5934    #[serde(skip_serializing_if = "Option::is_none")]
5935    pub next_token: Option<String>,
5936    /// <p>The things in the specified thing group.</p>
5937    #[serde(rename = "things")]
5938    #[serde(skip_serializing_if = "Option::is_none")]
5939    pub things: Option<Vec<String>>,
5940}
5941
5942/// <p>The input for the ListThings operation.</p>
5943#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5944#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5945pub struct ListThingsRequest {
5946    /// <p>The attribute name used to search for things.</p>
5947    #[serde(rename = "attributeName")]
5948    #[serde(skip_serializing_if = "Option::is_none")]
5949    pub attribute_name: Option<String>,
5950    /// <p>The attribute value used to search for things.</p>
5951    #[serde(rename = "attributeValue")]
5952    #[serde(skip_serializing_if = "Option::is_none")]
5953    pub attribute_value: Option<String>,
5954    /// <p>The maximum number of results to return in this operation.</p>
5955    #[serde(rename = "maxResults")]
5956    #[serde(skip_serializing_if = "Option::is_none")]
5957    pub max_results: Option<i64>,
5958    /// <p>The token to retrieve the next set of results.</p>
5959    #[serde(rename = "nextToken")]
5960    #[serde(skip_serializing_if = "Option::is_none")]
5961    pub next_token: Option<String>,
5962    /// <p>The name of the thing type used to search for things.</p>
5963    #[serde(rename = "thingTypeName")]
5964    #[serde(skip_serializing_if = "Option::is_none")]
5965    pub thing_type_name: Option<String>,
5966}
5967
5968/// <p>The output from the ListThings operation.</p>
5969#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5970#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5971pub struct ListThingsResponse {
5972    /// <p>The token used to get the next set of results, or <b>null</b> if there are no additional results.</p>
5973    #[serde(rename = "nextToken")]
5974    #[serde(skip_serializing_if = "Option::is_none")]
5975    pub next_token: Option<String>,
5976    /// <p>The things.</p>
5977    #[serde(rename = "things")]
5978    #[serde(skip_serializing_if = "Option::is_none")]
5979    pub things: Option<Vec<ThingAttribute>>,
5980}
5981
5982#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5983#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5984pub struct ListTopicRuleDestinationsRequest {
5985    /// <p>The maximum number of results to return at one time.</p>
5986    #[serde(rename = "maxResults")]
5987    #[serde(skip_serializing_if = "Option::is_none")]
5988    pub max_results: Option<i64>,
5989    /// <p>The token to retrieve the next set of results.</p>
5990    #[serde(rename = "nextToken")]
5991    #[serde(skip_serializing_if = "Option::is_none")]
5992    pub next_token: Option<String>,
5993}
5994
5995#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5996#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5997pub struct ListTopicRuleDestinationsResponse {
5998    /// <p>Information about a topic rule destination.</p>
5999    #[serde(rename = "destinationSummaries")]
6000    #[serde(skip_serializing_if = "Option::is_none")]
6001    pub destination_summaries: Option<Vec<TopicRuleDestinationSummary>>,
6002    /// <p>The token to retrieve the next set of results.</p>
6003    #[serde(rename = "nextToken")]
6004    #[serde(skip_serializing_if = "Option::is_none")]
6005    pub next_token: Option<String>,
6006}
6007
6008/// <p>The input for the ListTopicRules operation.</p>
6009#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6010#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6011pub struct ListTopicRulesRequest {
6012    /// <p>The maximum number of results to return.</p>
6013    #[serde(rename = "maxResults")]
6014    #[serde(skip_serializing_if = "Option::is_none")]
6015    pub max_results: Option<i64>,
6016    /// <p>A token used to retrieve the next value.</p>
6017    #[serde(rename = "nextToken")]
6018    #[serde(skip_serializing_if = "Option::is_none")]
6019    pub next_token: Option<String>,
6020    /// <p>Specifies whether the rule is disabled.</p>
6021    #[serde(rename = "ruleDisabled")]
6022    #[serde(skip_serializing_if = "Option::is_none")]
6023    pub rule_disabled: Option<bool>,
6024    /// <p>The topic.</p>
6025    #[serde(rename = "topic")]
6026    #[serde(skip_serializing_if = "Option::is_none")]
6027    pub topic: Option<String>,
6028}
6029
6030/// <p>The output from the ListTopicRules operation.</p>
6031#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6032#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6033pub struct ListTopicRulesResponse {
6034    /// <p>A token used to retrieve the next value.</p>
6035    #[serde(rename = "nextToken")]
6036    #[serde(skip_serializing_if = "Option::is_none")]
6037    pub next_token: Option<String>,
6038    /// <p>The rules.</p>
6039    #[serde(rename = "rules")]
6040    #[serde(skip_serializing_if = "Option::is_none")]
6041    pub rules: Option<Vec<TopicRuleListItem>>,
6042}
6043
6044#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6045#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6046pub struct ListV2LoggingLevelsRequest {
6047    /// <p>The maximum number of results to return at one time.</p>
6048    #[serde(rename = "maxResults")]
6049    #[serde(skip_serializing_if = "Option::is_none")]
6050    pub max_results: Option<i64>,
6051    /// <p>The token used to get the next set of results, or <b>null</b> if there are no additional results.</p>
6052    #[serde(rename = "nextToken")]
6053    #[serde(skip_serializing_if = "Option::is_none")]
6054    pub next_token: Option<String>,
6055    /// <p>The type of resource for which you are configuring logging. Must be <code>THING_Group</code>.</p>
6056    #[serde(rename = "targetType")]
6057    #[serde(skip_serializing_if = "Option::is_none")]
6058    pub target_type: Option<String>,
6059}
6060
6061#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6062#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6063pub struct ListV2LoggingLevelsResponse {
6064    /// <p>The logging configuration for a target.</p>
6065    #[serde(rename = "logTargetConfigurations")]
6066    #[serde(skip_serializing_if = "Option::is_none")]
6067    pub log_target_configurations: Option<Vec<LogTargetConfiguration>>,
6068    /// <p>The token used to get the next set of results, or <b>null</b> if there are no additional results.</p>
6069    #[serde(rename = "nextToken")]
6070    #[serde(skip_serializing_if = "Option::is_none")]
6071    pub next_token: Option<String>,
6072}
6073
6074#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6075#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6076pub struct ListViolationEventsRequest {
6077    /// <p>The end time for the alerts to be listed.</p>
6078    #[serde(rename = "endTime")]
6079    pub end_time: f64,
6080    /// <p>The maximum number of results to return at one time.</p>
6081    #[serde(rename = "maxResults")]
6082    #[serde(skip_serializing_if = "Option::is_none")]
6083    pub max_results: Option<i64>,
6084    /// <p>The token for the next set of results.</p>
6085    #[serde(rename = "nextToken")]
6086    #[serde(skip_serializing_if = "Option::is_none")]
6087    pub next_token: Option<String>,
6088    /// <p>A filter to limit results to those alerts generated by the specified security profile.</p>
6089    #[serde(rename = "securityProfileName")]
6090    #[serde(skip_serializing_if = "Option::is_none")]
6091    pub security_profile_name: Option<String>,
6092    /// <p>The start time for the alerts to be listed.</p>
6093    #[serde(rename = "startTime")]
6094    pub start_time: f64,
6095    /// <p>A filter to limit results to those alerts caused by the specified thing.</p>
6096    #[serde(rename = "thingName")]
6097    #[serde(skip_serializing_if = "Option::is_none")]
6098    pub thing_name: Option<String>,
6099}
6100
6101#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6102#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6103pub struct ListViolationEventsResponse {
6104    /// <p>A token that can be used to retrieve the next set of results, or <code>null</code> if there are no additional results.</p>
6105    #[serde(rename = "nextToken")]
6106    #[serde(skip_serializing_if = "Option::is_none")]
6107    pub next_token: Option<String>,
6108    /// <p>The security profile violation alerts issued for this account during the given time period, potentially filtered by security profile, behavior violated, or thing (device) violating.</p>
6109    #[serde(rename = "violationEvents")]
6110    #[serde(skip_serializing_if = "Option::is_none")]
6111    pub violation_events: Option<Vec<ViolationEvent>>,
6112}
6113
6114/// <p>A log target.</p>
6115#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6116pub struct LogTarget {
6117    /// <p>The target name.</p>
6118    #[serde(rename = "targetName")]
6119    #[serde(skip_serializing_if = "Option::is_none")]
6120    pub target_name: Option<String>,
6121    /// <p>The target type.</p>
6122    #[serde(rename = "targetType")]
6123    pub target_type: String,
6124}
6125
6126/// <p>The target configuration.</p>
6127#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6128#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6129pub struct LogTargetConfiguration {
6130    /// <p>The logging level.</p>
6131    #[serde(rename = "logLevel")]
6132    #[serde(skip_serializing_if = "Option::is_none")]
6133    pub log_level: Option<String>,
6134    /// <p>A log target</p>
6135    #[serde(rename = "logTarget")]
6136    #[serde(skip_serializing_if = "Option::is_none")]
6137    pub log_target: Option<LogTarget>,
6138}
6139
6140/// <p>Describes the logging options payload.</p>
6141#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6142#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6143pub struct LoggingOptionsPayload {
6144    /// <p>The log level.</p>
6145    #[serde(rename = "logLevel")]
6146    #[serde(skip_serializing_if = "Option::is_none")]
6147    pub log_level: Option<String>,
6148    /// <p>The ARN of the IAM role that grants access.</p>
6149    #[serde(rename = "roleArn")]
6150    pub role_arn: String,
6151}
6152
6153/// <p>The dimension of a metric.</p>
6154#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6155pub struct MetricDimension {
6156    /// <p>A unique identifier for the dimension.</p>
6157    #[serde(rename = "dimensionName")]
6158    pub dimension_name: String,
6159    /// <p>Defines how the <code>dimensionValues</code> of a dimension are interpreted. For example, for dimension type TOPIC_FILTER, the <code>IN</code> operator, a message will be counted only if its topic matches one of the topic filters. With <code>NOT_IN</code> operator, a message will be counted only if it doesn't match any of the topic filters. The operator is optional: if it's not provided (is <code>null</code>), it will be interpreted as <code>IN</code>.</p>
6160    #[serde(rename = "operator")]
6161    #[serde(skip_serializing_if = "Option::is_none")]
6162    pub operator: Option<String>,
6163}
6164
6165/// <p>The metric you want to retain. Dimensions are optional.</p>
6166#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6167pub struct MetricToRetain {
6168    /// <p>What is measured by the behavior.</p>
6169    #[serde(rename = "metric")]
6170    pub metric: String,
6171    /// <p>The dimension of a metric.</p>
6172    #[serde(rename = "metricDimension")]
6173    #[serde(skip_serializing_if = "Option::is_none")]
6174    pub metric_dimension: Option<MetricDimension>,
6175}
6176
6177/// <p>The value to be compared with the <code>metric</code>.</p>
6178#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6179pub struct MetricValue {
6180    /// <p>If the <code>comparisonOperator</code> calls for a set of CIDRs, use this to specify that set to be compared with the <code>metric</code>.</p>
6181    #[serde(rename = "cidrs")]
6182    #[serde(skip_serializing_if = "Option::is_none")]
6183    pub cidrs: Option<Vec<String>>,
6184    /// <p>If the <code>comparisonOperator</code> calls for a numeric value, use this to specify that numeric value to be compared with the <code>metric</code>.</p>
6185    #[serde(rename = "count")]
6186    #[serde(skip_serializing_if = "Option::is_none")]
6187    pub count: Option<i64>,
6188    /// <p>If the <code>comparisonOperator</code> calls for a set of ports, use this to specify that set to be compared with the <code>metric</code>.</p>
6189    #[serde(rename = "ports")]
6190    #[serde(skip_serializing_if = "Option::is_none")]
6191    pub ports: Option<Vec<i64>>,
6192}
6193
6194/// <p>Describes which changes should be applied as part of a mitigation action.</p>
6195#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6196#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6197pub struct MitigationAction {
6198    /// <p>The set of parameters for this mitigation action. The parameters vary, depending on the kind of action you apply.</p>
6199    #[serde(rename = "actionParams")]
6200    #[serde(skip_serializing_if = "Option::is_none")]
6201    pub action_params: Option<MitigationActionParams>,
6202    /// <p>A unique identifier for the mitigation action.</p>
6203    #[serde(rename = "id")]
6204    #[serde(skip_serializing_if = "Option::is_none")]
6205    pub id: Option<String>,
6206    /// <p>A user-friendly name for the mitigation action.</p>
6207    #[serde(rename = "name")]
6208    #[serde(skip_serializing_if = "Option::is_none")]
6209    pub name: Option<String>,
6210    /// <p>The IAM role ARN used to apply this mitigation action.</p>
6211    #[serde(rename = "roleArn")]
6212    #[serde(skip_serializing_if = "Option::is_none")]
6213    pub role_arn: Option<String>,
6214}
6215
6216/// <p>Information that identifies a mitigation action. This information is returned by ListMitigationActions.</p>
6217#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6218#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6219pub struct MitigationActionIdentifier {
6220    /// <p>The IAM role ARN used to apply this mitigation action.</p>
6221    #[serde(rename = "actionArn")]
6222    #[serde(skip_serializing_if = "Option::is_none")]
6223    pub action_arn: Option<String>,
6224    /// <p>The friendly name of the mitigation action.</p>
6225    #[serde(rename = "actionName")]
6226    #[serde(skip_serializing_if = "Option::is_none")]
6227    pub action_name: Option<String>,
6228    /// <p>The date when this mitigation action was created.</p>
6229    #[serde(rename = "creationDate")]
6230    #[serde(skip_serializing_if = "Option::is_none")]
6231    pub creation_date: Option<f64>,
6232}
6233
6234/// <p>The set of parameters for this mitigation action. You can specify only one type of parameter (in other words, you can apply only one action for each defined mitigation action).</p>
6235#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6236pub struct MitigationActionParams {
6237    /// <p>Parameters to define a mitigation action that moves devices associated with a certificate to one or more specified thing groups, typically for quarantine.</p>
6238    #[serde(rename = "addThingsToThingGroupParams")]
6239    #[serde(skip_serializing_if = "Option::is_none")]
6240    pub add_things_to_thing_group_params: Option<AddThingsToThingGroupParams>,
6241    /// <p>Parameters to define a mitigation action that enables AWS IoT logging at a specified level of detail.</p>
6242    #[serde(rename = "enableIoTLoggingParams")]
6243    #[serde(skip_serializing_if = "Option::is_none")]
6244    pub enable_io_t_logging_params: Option<EnableIoTLoggingParams>,
6245    /// <p>Parameters to define a mitigation action that publishes findings to Amazon SNS. You can implement your own custom actions in response to the Amazon SNS messages.</p>
6246    #[serde(rename = "publishFindingToSnsParams")]
6247    #[serde(skip_serializing_if = "Option::is_none")]
6248    pub publish_finding_to_sns_params: Option<PublishFindingToSnsParams>,
6249    /// <p>Parameters to define a mitigation action that adds a blank policy to restrict permissions.</p>
6250    #[serde(rename = "replaceDefaultPolicyVersionParams")]
6251    #[serde(skip_serializing_if = "Option::is_none")]
6252    pub replace_default_policy_version_params: Option<ReplaceDefaultPolicyVersionParams>,
6253    /// <p>Parameters to define a mitigation action that changes the state of the CA certificate to inactive.</p>
6254    #[serde(rename = "updateCACertificateParams")]
6255    #[serde(skip_serializing_if = "Option::is_none")]
6256    pub update_ca_certificate_params: Option<UpdateCACertificateParams>,
6257    /// <p>Parameters to define a mitigation action that changes the state of the device certificate to inactive.</p>
6258    #[serde(rename = "updateDeviceCertificateParams")]
6259    #[serde(skip_serializing_if = "Option::is_none")]
6260    pub update_device_certificate_params: Option<UpdateDeviceCertificateParams>,
6261}
6262
6263/// <p>Specifies the MQTT context to use for the test authorizer request</p>
6264#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6265#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6266pub struct MqttContext {
6267    /// <p>The value of the <code>clientId</code> key in an MQTT authorization request.</p>
6268    #[serde(rename = "clientId")]
6269    #[serde(skip_serializing_if = "Option::is_none")]
6270    pub client_id: Option<String>,
6271    /// <p>The value of the <code>password</code> key in an MQTT authorization request.</p>
6272    #[serde(rename = "password")]
6273    #[serde(
6274        deserialize_with = "::rusoto_core::serialization::SerdeBlob::deserialize_blob",
6275        serialize_with = "::rusoto_core::serialization::SerdeBlob::serialize_blob",
6276        default
6277    )]
6278    #[serde(skip_serializing_if = "Option::is_none")]
6279    pub password: Option<bytes::Bytes>,
6280    /// <p>The value of the <code>username</code> key in an MQTT authorization request.</p>
6281    #[serde(rename = "username")]
6282    #[serde(skip_serializing_if = "Option::is_none")]
6283    pub username: Option<String>,
6284}
6285
6286/// <p>Information about the resource that was noncompliant with the audit check.</p>
6287#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6288#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6289pub struct NonCompliantResource {
6290    /// <p>Other information about the noncompliant resource.</p>
6291    #[serde(rename = "additionalInfo")]
6292    #[serde(skip_serializing_if = "Option::is_none")]
6293    pub additional_info: Option<::std::collections::HashMap<String, String>>,
6294    /// <p>Information that identifies the noncompliant resource.</p>
6295    #[serde(rename = "resourceIdentifier")]
6296    #[serde(skip_serializing_if = "Option::is_none")]
6297    pub resource_identifier: Option<ResourceIdentifier>,
6298    /// <p>The type of the noncompliant resource.</p>
6299    #[serde(rename = "resourceType")]
6300    #[serde(skip_serializing_if = "Option::is_none")]
6301    pub resource_type: Option<String>,
6302}
6303
6304/// <p>Describes a file to be associated with an OTA update.</p>
6305#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6306pub struct OTAUpdateFile {
6307    /// <p>A list of name/attribute pairs.</p>
6308    #[serde(rename = "attributes")]
6309    #[serde(skip_serializing_if = "Option::is_none")]
6310    pub attributes: Option<::std::collections::HashMap<String, String>>,
6311    /// <p>The code signing method of the file.</p>
6312    #[serde(rename = "codeSigning")]
6313    #[serde(skip_serializing_if = "Option::is_none")]
6314    pub code_signing: Option<CodeSigning>,
6315    /// <p>The location of the updated firmware.</p>
6316    #[serde(rename = "fileLocation")]
6317    #[serde(skip_serializing_if = "Option::is_none")]
6318    pub file_location: Option<FileLocation>,
6319    /// <p>The name of the file.</p>
6320    #[serde(rename = "fileName")]
6321    #[serde(skip_serializing_if = "Option::is_none")]
6322    pub file_name: Option<String>,
6323    /// <p>The file version.</p>
6324    #[serde(rename = "fileVersion")]
6325    #[serde(skip_serializing_if = "Option::is_none")]
6326    pub file_version: Option<String>,
6327}
6328
6329/// <p>Information about an OTA update.</p>
6330#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6331#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6332pub struct OTAUpdateInfo {
6333    /// <p>A collection of name/value pairs</p>
6334    #[serde(rename = "additionalParameters")]
6335    #[serde(skip_serializing_if = "Option::is_none")]
6336    pub additional_parameters: Option<::std::collections::HashMap<String, String>>,
6337    /// <p>The AWS IoT job ARN associated with the OTA update.</p>
6338    #[serde(rename = "awsIotJobArn")]
6339    #[serde(skip_serializing_if = "Option::is_none")]
6340    pub aws_iot_job_arn: Option<String>,
6341    /// <p>The AWS IoT job ID associated with the OTA update.</p>
6342    #[serde(rename = "awsIotJobId")]
6343    #[serde(skip_serializing_if = "Option::is_none")]
6344    pub aws_iot_job_id: Option<String>,
6345    /// <p>Configuration for the rollout of OTA updates.</p>
6346    #[serde(rename = "awsJobExecutionsRolloutConfig")]
6347    #[serde(skip_serializing_if = "Option::is_none")]
6348    pub aws_job_executions_rollout_config: Option<AwsJobExecutionsRolloutConfig>,
6349    /// <p>Configuration information for pre-signed URLs. Valid when <code>protocols</code> contains HTTP.</p>
6350    #[serde(rename = "awsJobPresignedUrlConfig")]
6351    #[serde(skip_serializing_if = "Option::is_none")]
6352    pub aws_job_presigned_url_config: Option<AwsJobPresignedUrlConfig>,
6353    /// <p>The date when the OTA update was created.</p>
6354    #[serde(rename = "creationDate")]
6355    #[serde(skip_serializing_if = "Option::is_none")]
6356    pub creation_date: Option<f64>,
6357    /// <p>A description of the OTA update.</p>
6358    #[serde(rename = "description")]
6359    #[serde(skip_serializing_if = "Option::is_none")]
6360    pub description: Option<String>,
6361    /// <p>Error information associated with the OTA update.</p>
6362    #[serde(rename = "errorInfo")]
6363    #[serde(skip_serializing_if = "Option::is_none")]
6364    pub error_info: Option<ErrorInfo>,
6365    /// <p>The date when the OTA update was last updated.</p>
6366    #[serde(rename = "lastModifiedDate")]
6367    #[serde(skip_serializing_if = "Option::is_none")]
6368    pub last_modified_date: Option<f64>,
6369    /// <p>The OTA update ARN.</p>
6370    #[serde(rename = "otaUpdateArn")]
6371    #[serde(skip_serializing_if = "Option::is_none")]
6372    pub ota_update_arn: Option<String>,
6373    /// <p>A list of files associated with the OTA update.</p>
6374    #[serde(rename = "otaUpdateFiles")]
6375    #[serde(skip_serializing_if = "Option::is_none")]
6376    pub ota_update_files: Option<Vec<OTAUpdateFile>>,
6377    /// <p>The OTA update ID.</p>
6378    #[serde(rename = "otaUpdateId")]
6379    #[serde(skip_serializing_if = "Option::is_none")]
6380    pub ota_update_id: Option<String>,
6381    /// <p>The status of the OTA update.</p>
6382    #[serde(rename = "otaUpdateStatus")]
6383    #[serde(skip_serializing_if = "Option::is_none")]
6384    pub ota_update_status: Option<String>,
6385    /// <p>The protocol used to transfer the OTA update image. Valid values are [HTTP], [MQTT], [HTTP, MQTT]. When both HTTP and MQTT are specified, the target device can choose the protocol.</p>
6386    #[serde(rename = "protocols")]
6387    #[serde(skip_serializing_if = "Option::is_none")]
6388    pub protocols: Option<Vec<String>>,
6389    /// <p>Specifies whether the OTA update will continue to run (CONTINUOUS), or will be complete after all those things specified as targets have completed the OTA update (SNAPSHOT). If continuous, the OTA update may also be run on a thing when a change is detected in a target. For example, an OTA update will run on a thing when the thing is added to a target group, even after the OTA update was completed by all things originally in the group. </p>
6390    #[serde(rename = "targetSelection")]
6391    #[serde(skip_serializing_if = "Option::is_none")]
6392    pub target_selection: Option<String>,
6393    /// <p>The targets of the OTA update.</p>
6394    #[serde(rename = "targets")]
6395    #[serde(skip_serializing_if = "Option::is_none")]
6396    pub targets: Option<Vec<String>>,
6397}
6398
6399/// <p>An OTA update summary.</p>
6400#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6401#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6402pub struct OTAUpdateSummary {
6403    /// <p>The date when the OTA update was created.</p>
6404    #[serde(rename = "creationDate")]
6405    #[serde(skip_serializing_if = "Option::is_none")]
6406    pub creation_date: Option<f64>,
6407    /// <p>The OTA update ARN.</p>
6408    #[serde(rename = "otaUpdateArn")]
6409    #[serde(skip_serializing_if = "Option::is_none")]
6410    pub ota_update_arn: Option<String>,
6411    /// <p>The OTA update ID.</p>
6412    #[serde(rename = "otaUpdateId")]
6413    #[serde(skip_serializing_if = "Option::is_none")]
6414    pub ota_update_id: Option<String>,
6415}
6416
6417/// <p>A certificate that has been transferred but not yet accepted.</p>
6418#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6419#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6420pub struct OutgoingCertificate {
6421    /// <p>The certificate ARN.</p>
6422    #[serde(rename = "certificateArn")]
6423    #[serde(skip_serializing_if = "Option::is_none")]
6424    pub certificate_arn: Option<String>,
6425    /// <p>The certificate ID.</p>
6426    #[serde(rename = "certificateId")]
6427    #[serde(skip_serializing_if = "Option::is_none")]
6428    pub certificate_id: Option<String>,
6429    /// <p>The certificate creation date.</p>
6430    #[serde(rename = "creationDate")]
6431    #[serde(skip_serializing_if = "Option::is_none")]
6432    pub creation_date: Option<f64>,
6433    /// <p>The date the transfer was initiated.</p>
6434    #[serde(rename = "transferDate")]
6435    #[serde(skip_serializing_if = "Option::is_none")]
6436    pub transfer_date: Option<f64>,
6437    /// <p>The transfer message.</p>
6438    #[serde(rename = "transferMessage")]
6439    #[serde(skip_serializing_if = "Option::is_none")]
6440    pub transfer_message: Option<String>,
6441    /// <p>The AWS account to which the transfer was made.</p>
6442    #[serde(rename = "transferredTo")]
6443    #[serde(skip_serializing_if = "Option::is_none")]
6444    pub transferred_to: Option<String>,
6445}
6446
6447/// <p>Describes the percentile and percentile value.</p>
6448#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6449#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6450pub struct PercentPair {
6451    /// <p>The percentile.</p>
6452    #[serde(rename = "percent")]
6453    #[serde(skip_serializing_if = "Option::is_none")]
6454    pub percent: Option<f64>,
6455    /// <p>The value of the percentile.</p>
6456    #[serde(rename = "value")]
6457    #[serde(skip_serializing_if = "Option::is_none")]
6458    pub value: Option<f64>,
6459}
6460
6461/// <p>Describes an AWS IoT policy.</p>
6462#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6463#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6464pub struct Policy {
6465    /// <p>The policy ARN.</p>
6466    #[serde(rename = "policyArn")]
6467    #[serde(skip_serializing_if = "Option::is_none")]
6468    pub policy_arn: Option<String>,
6469    /// <p>The policy name.</p>
6470    #[serde(rename = "policyName")]
6471    #[serde(skip_serializing_if = "Option::is_none")]
6472    pub policy_name: Option<String>,
6473}
6474
6475/// <p>Describes a policy version.</p>
6476#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6477#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6478pub struct PolicyVersion {
6479    /// <p>The date and time the policy was created.</p>
6480    #[serde(rename = "createDate")]
6481    #[serde(skip_serializing_if = "Option::is_none")]
6482    pub create_date: Option<f64>,
6483    /// <p>Specifies whether the policy version is the default.</p>
6484    #[serde(rename = "isDefaultVersion")]
6485    #[serde(skip_serializing_if = "Option::is_none")]
6486    pub is_default_version: Option<bool>,
6487    /// <p>The policy version ID.</p>
6488    #[serde(rename = "versionId")]
6489    #[serde(skip_serializing_if = "Option::is_none")]
6490    pub version_id: Option<String>,
6491}
6492
6493/// <p>Information about the version of the policy associated with the resource.</p>
6494#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6495pub struct PolicyVersionIdentifier {
6496    /// <p>The name of the policy.</p>
6497    #[serde(rename = "policyName")]
6498    #[serde(skip_serializing_if = "Option::is_none")]
6499    pub policy_name: Option<String>,
6500    /// <p>The ID of the version of the policy associated with the resource.</p>
6501    #[serde(rename = "policyVersionId")]
6502    #[serde(skip_serializing_if = "Option::is_none")]
6503    pub policy_version_id: Option<String>,
6504}
6505
6506/// <p>Configuration for pre-signed S3 URLs.</p>
6507#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6508pub struct PresignedUrlConfig {
6509    /// <p>How long (in seconds) pre-signed URLs are valid. Valid values are 60 - 3600, the default value is 3600 seconds. Pre-signed URLs are generated when Jobs receives an MQTT request for the job document.</p>
6510    #[serde(rename = "expiresInSec")]
6511    #[serde(skip_serializing_if = "Option::is_none")]
6512    pub expires_in_sec: Option<i64>,
6513    /// <p>The ARN of an IAM role that grants grants permission to download files from the S3 bucket where the job data/updates are stored. The role must also grant permission for IoT to download the files.</p>
6514    #[serde(rename = "roleArn")]
6515    #[serde(skip_serializing_if = "Option::is_none")]
6516    pub role_arn: Option<String>,
6517}
6518
6519/// <p>Structure that contains <code>payloadVersion</code> and <code>targetArn</code>.</p>
6520#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6521pub struct ProvisioningHook {
6522    /// <p>The payload that was sent to the target function.</p> <p> <i>Note:</i> Only Lambda functions are currently supported.</p>
6523    #[serde(rename = "payloadVersion")]
6524    #[serde(skip_serializing_if = "Option::is_none")]
6525    pub payload_version: Option<String>,
6526    /// <p>The ARN of the target function.</p> <p> <i>Note:</i> Only Lambda functions are currently supported.</p>
6527    #[serde(rename = "targetArn")]
6528    pub target_arn: String,
6529}
6530
6531/// <p>A summary of information about a fleet provisioning template.</p>
6532#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6533#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6534pub struct ProvisioningTemplateSummary {
6535    /// <p>The date when the fleet provisioning template summary was created.</p>
6536    #[serde(rename = "creationDate")]
6537    #[serde(skip_serializing_if = "Option::is_none")]
6538    pub creation_date: Option<f64>,
6539    /// <p>The description of the fleet provisioning template.</p>
6540    #[serde(rename = "description")]
6541    #[serde(skip_serializing_if = "Option::is_none")]
6542    pub description: Option<String>,
6543    /// <p>True if the fleet provision template is enabled, otherwise false.</p>
6544    #[serde(rename = "enabled")]
6545    #[serde(skip_serializing_if = "Option::is_none")]
6546    pub enabled: Option<bool>,
6547    /// <p>The date when the fleet provisioning template summary was last modified.</p>
6548    #[serde(rename = "lastModifiedDate")]
6549    #[serde(skip_serializing_if = "Option::is_none")]
6550    pub last_modified_date: Option<f64>,
6551    /// <p>The ARN of the fleet provisioning template.</p>
6552    #[serde(rename = "templateArn")]
6553    #[serde(skip_serializing_if = "Option::is_none")]
6554    pub template_arn: Option<String>,
6555    /// <p>The name of the fleet provisioning template.</p>
6556    #[serde(rename = "templateName")]
6557    #[serde(skip_serializing_if = "Option::is_none")]
6558    pub template_name: Option<String>,
6559}
6560
6561/// <p>A summary of information about a fleet provision template version.</p>
6562#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6563#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6564pub struct ProvisioningTemplateVersionSummary {
6565    /// <p>The date when the fleet provisioning template version was created</p>
6566    #[serde(rename = "creationDate")]
6567    #[serde(skip_serializing_if = "Option::is_none")]
6568    pub creation_date: Option<f64>,
6569    /// <p>True if the fleet provisioning template version is the default version, otherwise false.</p>
6570    #[serde(rename = "isDefaultVersion")]
6571    #[serde(skip_serializing_if = "Option::is_none")]
6572    pub is_default_version: Option<bool>,
6573    /// <p>The ID of the fleet privisioning template version.</p>
6574    #[serde(rename = "versionId")]
6575    #[serde(skip_serializing_if = "Option::is_none")]
6576    pub version_id: Option<i64>,
6577}
6578
6579/// <p>Parameters to define a mitigation action that publishes findings to Amazon SNS. You can implement your own custom actions in response to the Amazon SNS messages.</p>
6580#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6581pub struct PublishFindingToSnsParams {
6582    /// <p>The ARN of the topic to which you want to publish the findings.</p>
6583    #[serde(rename = "topicArn")]
6584    pub topic_arn: String,
6585}
6586
6587/// <p>An asset property value entry containing the following information.</p>
6588#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6589pub struct PutAssetPropertyValueEntry {
6590    /// <p>The ID of the AWS IoT SiteWise asset. You must specify either a <code>propertyAlias</code> or both an <code>aliasId</code> and a <code>propertyId</code>. Accepts substitution templates.</p>
6591    #[serde(rename = "assetId")]
6592    #[serde(skip_serializing_if = "Option::is_none")]
6593    pub asset_id: Option<String>,
6594    /// <p>Optional. A unique identifier for this entry that you can define to better track which message caused an error in case of failure. Accepts substitution templates. Defaults to a new UUID.</p>
6595    #[serde(rename = "entryId")]
6596    #[serde(skip_serializing_if = "Option::is_none")]
6597    pub entry_id: Option<String>,
6598    /// <p>The name of the property alias associated with your asset property. You must specify either a <code>propertyAlias</code> or both an <code>aliasId</code> and a <code>propertyId</code>. Accepts substitution templates.</p>
6599    #[serde(rename = "propertyAlias")]
6600    #[serde(skip_serializing_if = "Option::is_none")]
6601    pub property_alias: Option<String>,
6602    /// <p>The ID of the asset's property. You must specify either a <code>propertyAlias</code> or both an <code>aliasId</code> and a <code>propertyId</code>. Accepts substitution templates.</p>
6603    #[serde(rename = "propertyId")]
6604    #[serde(skip_serializing_if = "Option::is_none")]
6605    pub property_id: Option<String>,
6606    /// <p>A list of property values to insert that each contain timestamp, quality, and value (TQV) information.</p>
6607    #[serde(rename = "propertyValues")]
6608    pub property_values: Vec<AssetPropertyValue>,
6609}
6610
6611/// <p>The input for the DynamoActionVS action that specifies the DynamoDB table to which the message data will be written.</p>
6612#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6613pub struct PutItemInput {
6614    /// <p>The table where the message data will be written.</p>
6615    #[serde(rename = "tableName")]
6616    pub table_name: String,
6617}
6618
6619/// <p>Allows you to define a criteria to initiate the increase in rate of rollout for a job.</p>
6620#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6621pub struct RateIncreaseCriteria {
6622    /// <p>The threshold for number of notified things that will initiate the increase in rate of rollout.</p>
6623    #[serde(rename = "numberOfNotifiedThings")]
6624    #[serde(skip_serializing_if = "Option::is_none")]
6625    pub number_of_notified_things: Option<i64>,
6626    /// <p>The threshold for number of succeeded things that will initiate the increase in rate of rollout.</p>
6627    #[serde(rename = "numberOfSucceededThings")]
6628    #[serde(skip_serializing_if = "Option::is_none")]
6629    pub number_of_succeeded_things: Option<i64>,
6630}
6631
6632/// <p>The input to the RegisterCACertificate operation.</p>
6633#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6634#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6635pub struct RegisterCACertificateRequest {
6636    /// <p>Allows this CA certificate to be used for auto registration of device certificates.</p>
6637    #[serde(rename = "allowAutoRegistration")]
6638    #[serde(skip_serializing_if = "Option::is_none")]
6639    pub allow_auto_registration: Option<bool>,
6640    /// <p>The CA certificate.</p>
6641    #[serde(rename = "caCertificate")]
6642    pub ca_certificate: String,
6643    /// <p>Information about the registration configuration.</p>
6644    #[serde(rename = "registrationConfig")]
6645    #[serde(skip_serializing_if = "Option::is_none")]
6646    pub registration_config: Option<RegistrationConfig>,
6647    /// <p>A boolean value that specifies if the CA certificate is set to active.</p>
6648    #[serde(rename = "setAsActive")]
6649    #[serde(skip_serializing_if = "Option::is_none")]
6650    pub set_as_active: Option<bool>,
6651    /// <p><p>Metadata which can be used to manage the CA certificate.</p> <note> <p>For URI Request parameters use format: ...key1=value1&amp;key2=value2...</p> <p>For the CLI command-line parameter use format: &amp;&amp;tags &quot;key1=value1&amp;key2=value2...&quot;</p> <p>For the cli-input-json file use format: &quot;tags&quot;: &quot;key1=value1&amp;key2=value2...&quot;</p> </note></p>
6652    #[serde(rename = "tags")]
6653    #[serde(skip_serializing_if = "Option::is_none")]
6654    pub tags: Option<Vec<Tag>>,
6655    /// <p>The private key verification certificate.</p>
6656    #[serde(rename = "verificationCertificate")]
6657    pub verification_certificate: String,
6658}
6659
6660/// <p>The output from the RegisterCACertificateResponse operation.</p>
6661#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6662#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6663pub struct RegisterCACertificateResponse {
6664    /// <p>The CA certificate ARN.</p>
6665    #[serde(rename = "certificateArn")]
6666    #[serde(skip_serializing_if = "Option::is_none")]
6667    pub certificate_arn: Option<String>,
6668    /// <p>The CA certificate identifier.</p>
6669    #[serde(rename = "certificateId")]
6670    #[serde(skip_serializing_if = "Option::is_none")]
6671    pub certificate_id: Option<String>,
6672}
6673
6674/// <p>The input to the RegisterCertificate operation.</p>
6675#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6676#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6677pub struct RegisterCertificateRequest {
6678    /// <p>The CA certificate used to sign the device certificate being registered.</p>
6679    #[serde(rename = "caCertificatePem")]
6680    #[serde(skip_serializing_if = "Option::is_none")]
6681    pub ca_certificate_pem: Option<String>,
6682    /// <p>The certificate data, in PEM format.</p>
6683    #[serde(rename = "certificatePem")]
6684    pub certificate_pem: String,
6685    /// <p>The status of the register certificate request.</p>
6686    #[serde(rename = "status")]
6687    #[serde(skip_serializing_if = "Option::is_none")]
6688    pub status: Option<String>,
6689}
6690
6691/// <p>The output from the RegisterCertificate operation.</p>
6692#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6693#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6694pub struct RegisterCertificateResponse {
6695    /// <p>The certificate ARN.</p>
6696    #[serde(rename = "certificateArn")]
6697    #[serde(skip_serializing_if = "Option::is_none")]
6698    pub certificate_arn: Option<String>,
6699    /// <p>The certificate identifier.</p>
6700    #[serde(rename = "certificateId")]
6701    #[serde(skip_serializing_if = "Option::is_none")]
6702    pub certificate_id: Option<String>,
6703}
6704
6705#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6706#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6707pub struct RegisterCertificateWithoutCARequest {
6708    /// <p>The certificate data, in PEM format.</p>
6709    #[serde(rename = "certificatePem")]
6710    pub certificate_pem: String,
6711    /// <p>The status of the register certificate request.</p>
6712    #[serde(rename = "status")]
6713    #[serde(skip_serializing_if = "Option::is_none")]
6714    pub status: Option<String>,
6715}
6716
6717#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6718#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6719pub struct RegisterCertificateWithoutCAResponse {
6720    /// <p>The Amazon Resource Name (ARN) of the registered certificate.</p>
6721    #[serde(rename = "certificateArn")]
6722    #[serde(skip_serializing_if = "Option::is_none")]
6723    pub certificate_arn: Option<String>,
6724    /// <p>The ID of the registered certificate. (The last part of the certificate ARN contains the certificate ID.</p>
6725    #[serde(rename = "certificateId")]
6726    #[serde(skip_serializing_if = "Option::is_none")]
6727    pub certificate_id: Option<String>,
6728}
6729
6730#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6731#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6732pub struct RegisterThingRequest {
6733    /// <p>The parameters for provisioning a thing. See <a href="https://docs.aws.amazon.com/iot/latest/developerguide/provision-template.html">Provisioning Templates</a> for more information.</p>
6734    #[serde(rename = "parameters")]
6735    #[serde(skip_serializing_if = "Option::is_none")]
6736    pub parameters: Option<::std::collections::HashMap<String, String>>,
6737    /// <p>The provisioning template. See <a href="https://docs.aws.amazon.com/iot/latest/developerguide/provision-w-cert.html">Provisioning Devices That Have Device Certificates</a> for more information.</p>
6738    #[serde(rename = "templateBody")]
6739    pub template_body: String,
6740}
6741
6742#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6743#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6744pub struct RegisterThingResponse {
6745    /// <p>The certificate data, in PEM format.</p>
6746    #[serde(rename = "certificatePem")]
6747    #[serde(skip_serializing_if = "Option::is_none")]
6748    pub certificate_pem: Option<String>,
6749    /// <p>ARNs for the generated resources.</p>
6750    #[serde(rename = "resourceArns")]
6751    #[serde(skip_serializing_if = "Option::is_none")]
6752    pub resource_arns: Option<::std::collections::HashMap<String, String>>,
6753}
6754
6755/// <p>The registration configuration.</p>
6756#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6757pub struct RegistrationConfig {
6758    /// <p>The ARN of the role.</p>
6759    #[serde(rename = "roleArn")]
6760    #[serde(skip_serializing_if = "Option::is_none")]
6761    pub role_arn: Option<String>,
6762    /// <p>The template body.</p>
6763    #[serde(rename = "templateBody")]
6764    #[serde(skip_serializing_if = "Option::is_none")]
6765    pub template_body: Option<String>,
6766}
6767
6768/// <p>The input for the RejectCertificateTransfer operation.</p>
6769#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6770#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6771pub struct RejectCertificateTransferRequest {
6772    /// <p>The ID of the certificate. (The last part of the certificate ARN contains the certificate ID.)</p>
6773    #[serde(rename = "certificateId")]
6774    pub certificate_id: String,
6775    /// <p>The reason the certificate transfer was rejected.</p>
6776    #[serde(rename = "rejectReason")]
6777    #[serde(skip_serializing_if = "Option::is_none")]
6778    pub reject_reason: Option<String>,
6779}
6780
6781/// <p>Information about a related resource.</p>
6782#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6783#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6784pub struct RelatedResource {
6785    /// <p>Other information about the resource.</p>
6786    #[serde(rename = "additionalInfo")]
6787    #[serde(skip_serializing_if = "Option::is_none")]
6788    pub additional_info: Option<::std::collections::HashMap<String, String>>,
6789    /// <p>Information that identifies the resource.</p>
6790    #[serde(rename = "resourceIdentifier")]
6791    #[serde(skip_serializing_if = "Option::is_none")]
6792    pub resource_identifier: Option<ResourceIdentifier>,
6793    /// <p>The type of resource.</p>
6794    #[serde(rename = "resourceType")]
6795    #[serde(skip_serializing_if = "Option::is_none")]
6796    pub resource_type: Option<String>,
6797}
6798
6799#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6800#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6801pub struct RemoveThingFromBillingGroupRequest {
6802    /// <p>The ARN of the billing group.</p>
6803    #[serde(rename = "billingGroupArn")]
6804    #[serde(skip_serializing_if = "Option::is_none")]
6805    pub billing_group_arn: Option<String>,
6806    /// <p>The name of the billing group.</p>
6807    #[serde(rename = "billingGroupName")]
6808    #[serde(skip_serializing_if = "Option::is_none")]
6809    pub billing_group_name: Option<String>,
6810    /// <p>The ARN of the thing to be removed from the billing group.</p>
6811    #[serde(rename = "thingArn")]
6812    #[serde(skip_serializing_if = "Option::is_none")]
6813    pub thing_arn: Option<String>,
6814    /// <p>The name of the thing to be removed from the billing group.</p>
6815    #[serde(rename = "thingName")]
6816    #[serde(skip_serializing_if = "Option::is_none")]
6817    pub thing_name: Option<String>,
6818}
6819
6820#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6821#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6822pub struct RemoveThingFromBillingGroupResponse {}
6823
6824#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6825#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6826pub struct RemoveThingFromThingGroupRequest {
6827    /// <p>The ARN of the thing to remove from the group.</p>
6828    #[serde(rename = "thingArn")]
6829    #[serde(skip_serializing_if = "Option::is_none")]
6830    pub thing_arn: Option<String>,
6831    /// <p>The group ARN.</p>
6832    #[serde(rename = "thingGroupArn")]
6833    #[serde(skip_serializing_if = "Option::is_none")]
6834    pub thing_group_arn: Option<String>,
6835    /// <p>The group name.</p>
6836    #[serde(rename = "thingGroupName")]
6837    #[serde(skip_serializing_if = "Option::is_none")]
6838    pub thing_group_name: Option<String>,
6839    /// <p>The name of the thing to remove from the group.</p>
6840    #[serde(rename = "thingName")]
6841    #[serde(skip_serializing_if = "Option::is_none")]
6842    pub thing_name: Option<String>,
6843}
6844
6845#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6846#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6847pub struct RemoveThingFromThingGroupResponse {}
6848
6849/// <p>Parameters to define a mitigation action that adds a blank policy to restrict permissions.</p>
6850#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6851pub struct ReplaceDefaultPolicyVersionParams {
6852    /// <p>The name of the template to be applied. The only supported value is <code>BLANK_POLICY</code>.</p>
6853    #[serde(rename = "templateName")]
6854    pub template_name: String,
6855}
6856
6857/// <p>The input for the ReplaceTopicRule operation.</p>
6858#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6859#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6860pub struct ReplaceTopicRuleRequest {
6861    /// <p>The name of the rule.</p>
6862    #[serde(rename = "ruleName")]
6863    pub rule_name: String,
6864    /// <p>The rule payload.</p>
6865    #[serde(rename = "topicRulePayload")]
6866    pub topic_rule_payload: TopicRulePayload,
6867}
6868
6869/// <p>Describes an action to republish to another topic.</p>
6870#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6871pub struct RepublishAction {
6872    /// <p>The Quality of Service (QoS) level to use when republishing messages. The default value is 0.</p>
6873    #[serde(rename = "qos")]
6874    #[serde(skip_serializing_if = "Option::is_none")]
6875    pub qos: Option<i64>,
6876    /// <p>The ARN of the IAM role that grants access.</p>
6877    #[serde(rename = "roleArn")]
6878    pub role_arn: String,
6879    /// <p>The name of the MQTT topic.</p>
6880    #[serde(rename = "topic")]
6881    pub topic: String,
6882}
6883
6884/// <p>Information that identifies the noncompliant resource.</p>
6885#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6886pub struct ResourceIdentifier {
6887    /// <p>The account with which the resource is associated.</p>
6888    #[serde(rename = "account")]
6889    #[serde(skip_serializing_if = "Option::is_none")]
6890    pub account: Option<String>,
6891    /// <p>The ID of the CA certificate used to authorize the certificate.</p>
6892    #[serde(rename = "caCertificateId")]
6893    #[serde(skip_serializing_if = "Option::is_none")]
6894    pub ca_certificate_id: Option<String>,
6895    /// <p>The client ID.</p>
6896    #[serde(rename = "clientId")]
6897    #[serde(skip_serializing_if = "Option::is_none")]
6898    pub client_id: Option<String>,
6899    /// <p>The ID of the Amazon Cognito identity pool.</p>
6900    #[serde(rename = "cognitoIdentityPoolId")]
6901    #[serde(skip_serializing_if = "Option::is_none")]
6902    pub cognito_identity_pool_id: Option<String>,
6903    /// <p>The ID of the certificate attached to the resource.</p>
6904    #[serde(rename = "deviceCertificateId")]
6905    #[serde(skip_serializing_if = "Option::is_none")]
6906    pub device_certificate_id: Option<String>,
6907    /// <p>The ARN of the IAM role that has overly permissive actions.</p>
6908    #[serde(rename = "iamRoleArn")]
6909    #[serde(skip_serializing_if = "Option::is_none")]
6910    pub iam_role_arn: Option<String>,
6911    /// <p>The version of the policy associated with the resource.</p>
6912    #[serde(rename = "policyVersionIdentifier")]
6913    #[serde(skip_serializing_if = "Option::is_none")]
6914    pub policy_version_identifier: Option<PolicyVersionIdentifier>,
6915    /// <p>The ARN of the role alias that has overly permissive actions.</p>
6916    #[serde(rename = "roleAliasArn")]
6917    #[serde(skip_serializing_if = "Option::is_none")]
6918    pub role_alias_arn: Option<String>,
6919}
6920
6921/// <p>Role alias description.</p>
6922#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6923#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6924pub struct RoleAliasDescription {
6925    /// <p>The UNIX timestamp of when the role alias was created.</p>
6926    #[serde(rename = "creationDate")]
6927    #[serde(skip_serializing_if = "Option::is_none")]
6928    pub creation_date: Option<f64>,
6929    /// <p>The number of seconds for which the credential is valid.</p>
6930    #[serde(rename = "credentialDurationSeconds")]
6931    #[serde(skip_serializing_if = "Option::is_none")]
6932    pub credential_duration_seconds: Option<i64>,
6933    /// <p>The UNIX timestamp of when the role alias was last modified.</p>
6934    #[serde(rename = "lastModifiedDate")]
6935    #[serde(skip_serializing_if = "Option::is_none")]
6936    pub last_modified_date: Option<f64>,
6937    /// <p>The role alias owner.</p>
6938    #[serde(rename = "owner")]
6939    #[serde(skip_serializing_if = "Option::is_none")]
6940    pub owner: Option<String>,
6941    /// <p>The role alias.</p>
6942    #[serde(rename = "roleAlias")]
6943    #[serde(skip_serializing_if = "Option::is_none")]
6944    pub role_alias: Option<String>,
6945    /// <p>The ARN of the role alias.</p>
6946    #[serde(rename = "roleAliasArn")]
6947    #[serde(skip_serializing_if = "Option::is_none")]
6948    pub role_alias_arn: Option<String>,
6949    /// <p>The role ARN.</p>
6950    #[serde(rename = "roleArn")]
6951    #[serde(skip_serializing_if = "Option::is_none")]
6952    pub role_arn: Option<String>,
6953}
6954
6955/// <p>Describes an action to write data to an Amazon S3 bucket.</p>
6956#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6957pub struct S3Action {
6958    /// <p>The Amazon S3 bucket.</p>
6959    #[serde(rename = "bucketName")]
6960    pub bucket_name: String,
6961    /// <p>The Amazon S3 canned ACL that controls access to the object identified by the object key. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl">S3 canned ACLs</a>.</p>
6962    #[serde(rename = "cannedAcl")]
6963    #[serde(skip_serializing_if = "Option::is_none")]
6964    pub canned_acl: Option<String>,
6965    /// <p>The object key.</p>
6966    #[serde(rename = "key")]
6967    pub key: String,
6968    /// <p>The ARN of the IAM role that grants access.</p>
6969    #[serde(rename = "roleArn")]
6970    pub role_arn: String,
6971}
6972
6973/// <p>Describes the location of updated firmware in S3.</p>
6974#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6975pub struct S3Destination {
6976    /// <p>The S3 bucket that contains the updated firmware.</p>
6977    #[serde(rename = "bucket")]
6978    #[serde(skip_serializing_if = "Option::is_none")]
6979    pub bucket: Option<String>,
6980    /// <p>The S3 prefix.</p>
6981    #[serde(rename = "prefix")]
6982    #[serde(skip_serializing_if = "Option::is_none")]
6983    pub prefix: Option<String>,
6984}
6985
6986/// <p>The S3 location.</p>
6987#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6988pub struct S3Location {
6989    /// <p>The S3 bucket.</p>
6990    #[serde(rename = "bucket")]
6991    #[serde(skip_serializing_if = "Option::is_none")]
6992    pub bucket: Option<String>,
6993    /// <p>The S3 key.</p>
6994    #[serde(rename = "key")]
6995    #[serde(skip_serializing_if = "Option::is_none")]
6996    pub key: Option<String>,
6997    /// <p>The S3 bucket version.</p>
6998    #[serde(rename = "version")]
6999    #[serde(skip_serializing_if = "Option::is_none")]
7000    pub version: Option<String>,
7001}
7002
7003/// <p>Describes an action to write a message to a Salesforce IoT Cloud Input Stream.</p>
7004#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
7005pub struct SalesforceAction {
7006    /// <p>The token used to authenticate access to the Salesforce IoT Cloud Input Stream. The token is available from the Salesforce IoT Cloud platform after creation of the Input Stream.</p>
7007    #[serde(rename = "token")]
7008    pub token: String,
7009    /// <p>The URL exposed by the Salesforce IoT Cloud Input Stream. The URL is available from the Salesforce IoT Cloud platform after creation of the Input Stream.</p>
7010    #[serde(rename = "url")]
7011    pub url: String,
7012}
7013
7014/// <p>Information about the scheduled audit.</p>
7015#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7016#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7017pub struct ScheduledAuditMetadata {
7018    /// <p>The day of the month on which the scheduled audit is run (if the <code>frequency</code> is "MONTHLY"). If days 29-31 are specified, and the month does not have that many days, the audit takes place on the "LAST" day of the month.</p>
7019    #[serde(rename = "dayOfMonth")]
7020    #[serde(skip_serializing_if = "Option::is_none")]
7021    pub day_of_month: Option<String>,
7022    /// <p>The day of the week on which the scheduled audit is run (if the <code>frequency</code> is "WEEKLY" or "BIWEEKLY").</p>
7023    #[serde(rename = "dayOfWeek")]
7024    #[serde(skip_serializing_if = "Option::is_none")]
7025    pub day_of_week: Option<String>,
7026    /// <p>How often the scheduled audit occurs.</p>
7027    #[serde(rename = "frequency")]
7028    #[serde(skip_serializing_if = "Option::is_none")]
7029    pub frequency: Option<String>,
7030    /// <p>The ARN of the scheduled audit.</p>
7031    #[serde(rename = "scheduledAuditArn")]
7032    #[serde(skip_serializing_if = "Option::is_none")]
7033    pub scheduled_audit_arn: Option<String>,
7034    /// <p>The name of the scheduled audit.</p>
7035    #[serde(rename = "scheduledAuditName")]
7036    #[serde(skip_serializing_if = "Option::is_none")]
7037    pub scheduled_audit_name: Option<String>,
7038}
7039
7040#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7041#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7042pub struct SearchIndexRequest {
7043    /// <p>The search index name.</p>
7044    #[serde(rename = "indexName")]
7045    #[serde(skip_serializing_if = "Option::is_none")]
7046    pub index_name: Option<String>,
7047    /// <p>The maximum number of results to return at one time.</p>
7048    #[serde(rename = "maxResults")]
7049    #[serde(skip_serializing_if = "Option::is_none")]
7050    pub max_results: Option<i64>,
7051    /// <p>The token used to get the next set of results, or <code>null</code> if there are no additional results.</p>
7052    #[serde(rename = "nextToken")]
7053    #[serde(skip_serializing_if = "Option::is_none")]
7054    pub next_token: Option<String>,
7055    /// <p>The search query string.</p>
7056    #[serde(rename = "queryString")]
7057    pub query_string: String,
7058    /// <p>The query version.</p>
7059    #[serde(rename = "queryVersion")]
7060    #[serde(skip_serializing_if = "Option::is_none")]
7061    pub query_version: Option<String>,
7062}
7063
7064#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7065#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7066pub struct SearchIndexResponse {
7067    /// <p>The token used to get the next set of results, or <code>null</code> if there are no additional results.</p>
7068    #[serde(rename = "nextToken")]
7069    #[serde(skip_serializing_if = "Option::is_none")]
7070    pub next_token: Option<String>,
7071    /// <p>The thing groups that match the search query.</p>
7072    #[serde(rename = "thingGroups")]
7073    #[serde(skip_serializing_if = "Option::is_none")]
7074    pub thing_groups: Option<Vec<ThingGroupDocument>>,
7075    /// <p>The things that match the search query.</p>
7076    #[serde(rename = "things")]
7077    #[serde(skip_serializing_if = "Option::is_none")]
7078    pub things: Option<Vec<ThingDocument>>,
7079}
7080
7081/// <p>Identifying information for a Device Defender security profile.</p>
7082#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7083#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7084pub struct SecurityProfileIdentifier {
7085    /// <p>The ARN of the security profile.</p>
7086    #[serde(rename = "arn")]
7087    pub arn: String,
7088    /// <p>The name you have given to the security profile.</p>
7089    #[serde(rename = "name")]
7090    pub name: String,
7091}
7092
7093/// <p>A target to which an alert is sent when a security profile behavior is violated.</p>
7094#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7095#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7096pub struct SecurityProfileTarget {
7097    /// <p>The ARN of the security profile.</p>
7098    #[serde(rename = "arn")]
7099    pub arn: String,
7100}
7101
7102/// <p>Information about a security profile and the target associated with it.</p>
7103#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7104#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7105pub struct SecurityProfileTargetMapping {
7106    /// <p>Information that identifies the security profile.</p>
7107    #[serde(rename = "securityProfileIdentifier")]
7108    #[serde(skip_serializing_if = "Option::is_none")]
7109    pub security_profile_identifier: Option<SecurityProfileIdentifier>,
7110    /// <p>Information about the target (thing group) associated with the security profile.</p>
7111    #[serde(rename = "target")]
7112    #[serde(skip_serializing_if = "Option::is_none")]
7113    pub target: Option<SecurityProfileTarget>,
7114}
7115
7116/// <p>An object that contains information about a server certificate.</p>
7117#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7118#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7119pub struct ServerCertificateSummary {
7120    /// <p>The ARN of the server certificate.</p>
7121    #[serde(rename = "serverCertificateArn")]
7122    #[serde(skip_serializing_if = "Option::is_none")]
7123    pub server_certificate_arn: Option<String>,
7124    /// <p>The status of the server certificate.</p>
7125    #[serde(rename = "serverCertificateStatus")]
7126    #[serde(skip_serializing_if = "Option::is_none")]
7127    pub server_certificate_status: Option<String>,
7128    /// <p>Details that explain the status of the server certificate.</p>
7129    #[serde(rename = "serverCertificateStatusDetail")]
7130    #[serde(skip_serializing_if = "Option::is_none")]
7131    pub server_certificate_status_detail: Option<String>,
7132}
7133
7134#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7135#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7136pub struct SetDefaultAuthorizerRequest {
7137    /// <p>The authorizer name.</p>
7138    #[serde(rename = "authorizerName")]
7139    pub authorizer_name: String,
7140}
7141
7142#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7143#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7144pub struct SetDefaultAuthorizerResponse {
7145    /// <p>The authorizer ARN.</p>
7146    #[serde(rename = "authorizerArn")]
7147    #[serde(skip_serializing_if = "Option::is_none")]
7148    pub authorizer_arn: Option<String>,
7149    /// <p>The authorizer name.</p>
7150    #[serde(rename = "authorizerName")]
7151    #[serde(skip_serializing_if = "Option::is_none")]
7152    pub authorizer_name: Option<String>,
7153}
7154
7155/// <p>The input for the SetDefaultPolicyVersion operation.</p>
7156#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7157#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7158pub struct SetDefaultPolicyVersionRequest {
7159    /// <p>The policy name.</p>
7160    #[serde(rename = "policyName")]
7161    pub policy_name: String,
7162    /// <p>The policy version ID.</p>
7163    #[serde(rename = "policyVersionId")]
7164    pub policy_version_id: String,
7165}
7166
7167/// <p>The input for the SetLoggingOptions operation.</p>
7168#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7169#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7170pub struct SetLoggingOptionsRequest {
7171    /// <p>The logging options payload.</p>
7172    #[serde(rename = "loggingOptionsPayload")]
7173    pub logging_options_payload: LoggingOptionsPayload,
7174}
7175
7176#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7177#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7178pub struct SetV2LoggingLevelRequest {
7179    /// <p>The log level.</p>
7180    #[serde(rename = "logLevel")]
7181    pub log_level: String,
7182    /// <p>The log target.</p>
7183    #[serde(rename = "logTarget")]
7184    pub log_target: LogTarget,
7185}
7186
7187#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7188#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7189pub struct SetV2LoggingOptionsRequest {
7190    /// <p>The default logging level.</p>
7191    #[serde(rename = "defaultLogLevel")]
7192    #[serde(skip_serializing_if = "Option::is_none")]
7193    pub default_log_level: Option<String>,
7194    /// <p>If true all logs are disabled. The default is false.</p>
7195    #[serde(rename = "disableAllLogs")]
7196    #[serde(skip_serializing_if = "Option::is_none")]
7197    pub disable_all_logs: Option<bool>,
7198    /// <p>The ARN of the role that allows IoT to write to Cloudwatch logs.</p>
7199    #[serde(rename = "roleArn")]
7200    #[serde(skip_serializing_if = "Option::is_none")]
7201    pub role_arn: Option<String>,
7202}
7203
7204/// <p>Use Sig V4 authorization.</p>
7205#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
7206pub struct SigV4Authorization {
7207    /// <p>The ARN of the signing role.</p>
7208    #[serde(rename = "roleArn")]
7209    pub role_arn: String,
7210    /// <p>The service name to use while signing with Sig V4.</p>
7211    #[serde(rename = "serviceName")]
7212    pub service_name: String,
7213    /// <p>The signing region.</p>
7214    #[serde(rename = "signingRegion")]
7215    pub signing_region: String,
7216}
7217
7218/// <p>Describes the code-signing profile.</p>
7219#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
7220pub struct SigningProfileParameter {
7221    /// <p>Certificate ARN.</p>
7222    #[serde(rename = "certificateArn")]
7223    #[serde(skip_serializing_if = "Option::is_none")]
7224    pub certificate_arn: Option<String>,
7225    /// <p>The location of the code-signing certificate on your device.</p>
7226    #[serde(rename = "certificatePathOnDevice")]
7227    #[serde(skip_serializing_if = "Option::is_none")]
7228    pub certificate_path_on_device: Option<String>,
7229    /// <p>The hardware platform of your device.</p>
7230    #[serde(rename = "platform")]
7231    #[serde(skip_serializing_if = "Option::is_none")]
7232    pub platform: Option<String>,
7233}
7234
7235/// <p>Describes an action to publish to an Amazon SNS topic.</p>
7236#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
7237pub struct SnsAction {
7238    /// <p>(Optional) The message format of the message to publish. Accepted values are "JSON" and "RAW". The default value of the attribute is "RAW". SNS uses this setting to determine if the payload should be parsed and relevant platform-specific bits of the payload should be extracted. To read more about SNS message formats, see <a href="https://docs.aws.amazon.com/sns/latest/dg/json-formats.html">https://docs.aws.amazon.com/sns/latest/dg/json-formats.html</a> refer to their official documentation.</p>
7239    #[serde(rename = "messageFormat")]
7240    #[serde(skip_serializing_if = "Option::is_none")]
7241    pub message_format: Option<String>,
7242    /// <p>The ARN of the IAM role that grants access.</p>
7243    #[serde(rename = "roleArn")]
7244    pub role_arn: String,
7245    /// <p>The ARN of the SNS topic.</p>
7246    #[serde(rename = "targetArn")]
7247    pub target_arn: String,
7248}
7249
7250/// <p>Describes an action to publish data to an Amazon SQS queue.</p>
7251#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
7252pub struct SqsAction {
7253    /// <p>The URL of the Amazon SQS queue.</p>
7254    #[serde(rename = "queueUrl")]
7255    pub queue_url: String,
7256    /// <p>The ARN of the IAM role that grants access.</p>
7257    #[serde(rename = "roleArn")]
7258    pub role_arn: String,
7259    /// <p>Specifies whether to use Base64 encoding.</p>
7260    #[serde(rename = "useBase64")]
7261    #[serde(skip_serializing_if = "Option::is_none")]
7262    pub use_base_64: Option<bool>,
7263}
7264
7265#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7266#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7267pub struct StartAuditMitigationActionsTaskRequest {
7268    /// <p>For an audit check, specifies which mitigation actions to apply. Those actions must be defined in your AWS account.</p>
7269    #[serde(rename = "auditCheckToActionsMapping")]
7270    pub audit_check_to_actions_mapping: ::std::collections::HashMap<String, Vec<String>>,
7271    /// <p>Each audit mitigation task must have a unique client request token. If you try to start a new task with the same token as a task that already exists, an exception occurs. If you omit this value, a unique client request token is generated automatically.</p>
7272    #[serde(rename = "clientRequestToken")]
7273    pub client_request_token: String,
7274    /// <p>Specifies the audit findings to which the mitigation actions are applied. You can apply them to a type of audit check, to all findings from an audit, or to a speecific set of findings.</p>
7275    #[serde(rename = "target")]
7276    pub target: AuditMitigationActionsTaskTarget,
7277    /// <p>A unique identifier for the task. You can use this identifier to check the status of the task or to cancel it.</p>
7278    #[serde(rename = "taskId")]
7279    pub task_id: String,
7280}
7281
7282#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7283#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7284pub struct StartAuditMitigationActionsTaskResponse {
7285    /// <p>The unique identifier for the audit mitigation task. This matches the <code>taskId</code> that you specified in the request.</p>
7286    #[serde(rename = "taskId")]
7287    #[serde(skip_serializing_if = "Option::is_none")]
7288    pub task_id: Option<String>,
7289}
7290
7291#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7292#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7293pub struct StartOnDemandAuditTaskRequest {
7294    /// <p>Which checks are performed during the audit. The checks you specify must be enabled for your account or an exception occurs. Use <code>DescribeAccountAuditConfiguration</code> to see the list of all checks, including those that are enabled or <code>UpdateAccountAuditConfiguration</code> to select which checks are enabled.</p>
7295    #[serde(rename = "targetCheckNames")]
7296    pub target_check_names: Vec<String>,
7297}
7298
7299#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7300#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7301pub struct StartOnDemandAuditTaskResponse {
7302    /// <p>The ID of the on-demand audit you started.</p>
7303    #[serde(rename = "taskId")]
7304    #[serde(skip_serializing_if = "Option::is_none")]
7305    pub task_id: Option<String>,
7306}
7307
7308/// <p>Information required to start a signing job.</p>
7309#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
7310pub struct StartSigningJobParameter {
7311    /// <p>The location to write the code-signed file.</p>
7312    #[serde(rename = "destination")]
7313    #[serde(skip_serializing_if = "Option::is_none")]
7314    pub destination: Option<Destination>,
7315    /// <p>The code-signing profile name.</p>
7316    #[serde(rename = "signingProfileName")]
7317    #[serde(skip_serializing_if = "Option::is_none")]
7318    pub signing_profile_name: Option<String>,
7319    /// <p>Describes the code-signing profile.</p>
7320    #[serde(rename = "signingProfileParameter")]
7321    #[serde(skip_serializing_if = "Option::is_none")]
7322    pub signing_profile_parameter: Option<SigningProfileParameter>,
7323}
7324
7325#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7326#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7327pub struct StartThingRegistrationTaskRequest {
7328    /// <p>The S3 bucket that contains the input file.</p>
7329    #[serde(rename = "inputFileBucket")]
7330    pub input_file_bucket: String,
7331    /// <p>The name of input file within the S3 bucket. This file contains a newline delimited JSON file. Each line contains the parameter values to provision one device (thing).</p>
7332    #[serde(rename = "inputFileKey")]
7333    pub input_file_key: String,
7334    /// <p>The IAM role ARN that grants permission the input file.</p>
7335    #[serde(rename = "roleArn")]
7336    pub role_arn: String,
7337    /// <p>The provisioning template.</p>
7338    #[serde(rename = "templateBody")]
7339    pub template_body: String,
7340}
7341
7342#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7343#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7344pub struct StartThingRegistrationTaskResponse {
7345    /// <p>The bulk thing provisioning task ID.</p>
7346    #[serde(rename = "taskId")]
7347    #[serde(skip_serializing_if = "Option::is_none")]
7348    pub task_id: Option<String>,
7349}
7350
7351/// <p>A statistical ranking (percentile) which indicates a threshold value by which a behavior is determined to be in compliance or in violation of the behavior.</p>
7352#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
7353pub struct StatisticalThreshold {
7354    /// <p>The percentile which resolves to a threshold value by which compliance with a behavior is determined. Metrics are collected over the specified period (<code>durationSeconds</code>) from all reporting devices in your account and statistical ranks are calculated. Then, the measurements from a device are collected over the same period. If the accumulated measurements from the device fall above or below (<code>comparisonOperator</code>) the value associated with the percentile specified, then the device is considered to be in compliance with the behavior, otherwise a violation occurs.</p>
7355    #[serde(rename = "statistic")]
7356    #[serde(skip_serializing_if = "Option::is_none")]
7357    pub statistic: Option<String>,
7358}
7359
7360/// <p>A map of key-value pairs for all supported statistics. Currently, only count is supported.</p>
7361#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7362#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7363pub struct Statistics {
7364    /// <p>The average of the aggregated field values.</p>
7365    #[serde(rename = "average")]
7366    #[serde(skip_serializing_if = "Option::is_none")]
7367    pub average: Option<f64>,
7368    /// <p>The count of things that match the query.</p>
7369    #[serde(rename = "count")]
7370    #[serde(skip_serializing_if = "Option::is_none")]
7371    pub count: Option<i64>,
7372    /// <p>The maximum aggregated field value.</p>
7373    #[serde(rename = "maximum")]
7374    #[serde(skip_serializing_if = "Option::is_none")]
7375    pub maximum: Option<f64>,
7376    /// <p>The minimum aggregated field value.</p>
7377    #[serde(rename = "minimum")]
7378    #[serde(skip_serializing_if = "Option::is_none")]
7379    pub minimum: Option<f64>,
7380    /// <p>The standard deviation of the aggregated field values.</p>
7381    #[serde(rename = "stdDeviation")]
7382    #[serde(skip_serializing_if = "Option::is_none")]
7383    pub std_deviation: Option<f64>,
7384    /// <p>The sum of the aggregated field values.</p>
7385    #[serde(rename = "sum")]
7386    #[serde(skip_serializing_if = "Option::is_none")]
7387    pub sum: Option<f64>,
7388    /// <p>The sum of the squares of the aggregated field values.</p>
7389    #[serde(rename = "sumOfSquares")]
7390    #[serde(skip_serializing_if = "Option::is_none")]
7391    pub sum_of_squares: Option<f64>,
7392    /// <p>The variance of the aggregated field values.</p>
7393    #[serde(rename = "variance")]
7394    #[serde(skip_serializing_if = "Option::is_none")]
7395    pub variance: Option<f64>,
7396}
7397
7398/// <p>Starts execution of a Step Functions state machine.</p>
7399#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
7400pub struct StepFunctionsAction {
7401    /// <p>(Optional) A name will be given to the state machine execution consisting of this prefix followed by a UUID. Step Functions automatically creates a unique name for each state machine execution if one is not provided.</p>
7402    #[serde(rename = "executionNamePrefix")]
7403    #[serde(skip_serializing_if = "Option::is_none")]
7404    pub execution_name_prefix: Option<String>,
7405    /// <p>The ARN of the role that grants IoT permission to start execution of a state machine ("Action":"states:StartExecution").</p>
7406    #[serde(rename = "roleArn")]
7407    pub role_arn: String,
7408    /// <p>The name of the Step Functions state machine whose execution will be started.</p>
7409    #[serde(rename = "stateMachineName")]
7410    pub state_machine_name: String,
7411}
7412
7413#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7414#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7415pub struct StopThingRegistrationTaskRequest {
7416    /// <p>The bulk thing provisioning task ID.</p>
7417    #[serde(rename = "taskId")]
7418    pub task_id: String,
7419}
7420
7421#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7422#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7423pub struct StopThingRegistrationTaskResponse {}
7424
7425/// <p>Describes a group of files that can be streamed.</p>
7426#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
7427pub struct Stream {
7428    /// <p>The ID of a file associated with a stream.</p>
7429    #[serde(rename = "fileId")]
7430    #[serde(skip_serializing_if = "Option::is_none")]
7431    pub file_id: Option<i64>,
7432    /// <p>The stream ID.</p>
7433    #[serde(rename = "streamId")]
7434    #[serde(skip_serializing_if = "Option::is_none")]
7435    pub stream_id: Option<String>,
7436}
7437
7438/// <p>Represents a file to stream.</p>
7439#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
7440pub struct StreamFile {
7441    /// <p>The file ID.</p>
7442    #[serde(rename = "fileId")]
7443    #[serde(skip_serializing_if = "Option::is_none")]
7444    pub file_id: Option<i64>,
7445    /// <p>The location of the file in S3.</p>
7446    #[serde(rename = "s3Location")]
7447    #[serde(skip_serializing_if = "Option::is_none")]
7448    pub s_3_location: Option<S3Location>,
7449}
7450
7451/// <p>Information about a stream.</p>
7452#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7453#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7454pub struct StreamInfo {
7455    /// <p>The date when the stream was created.</p>
7456    #[serde(rename = "createdAt")]
7457    #[serde(skip_serializing_if = "Option::is_none")]
7458    pub created_at: Option<f64>,
7459    /// <p>The description of the stream.</p>
7460    #[serde(rename = "description")]
7461    #[serde(skip_serializing_if = "Option::is_none")]
7462    pub description: Option<String>,
7463    /// <p>The files to stream.</p>
7464    #[serde(rename = "files")]
7465    #[serde(skip_serializing_if = "Option::is_none")]
7466    pub files: Option<Vec<StreamFile>>,
7467    /// <p>The date when the stream was last updated.</p>
7468    #[serde(rename = "lastUpdatedAt")]
7469    #[serde(skip_serializing_if = "Option::is_none")]
7470    pub last_updated_at: Option<f64>,
7471    /// <p>An IAM role AWS IoT assumes to access your S3 files.</p>
7472    #[serde(rename = "roleArn")]
7473    #[serde(skip_serializing_if = "Option::is_none")]
7474    pub role_arn: Option<String>,
7475    /// <p>The stream ARN.</p>
7476    #[serde(rename = "streamArn")]
7477    #[serde(skip_serializing_if = "Option::is_none")]
7478    pub stream_arn: Option<String>,
7479    /// <p>The stream ID.</p>
7480    #[serde(rename = "streamId")]
7481    #[serde(skip_serializing_if = "Option::is_none")]
7482    pub stream_id: Option<String>,
7483    /// <p>The stream version.</p>
7484    #[serde(rename = "streamVersion")]
7485    #[serde(skip_serializing_if = "Option::is_none")]
7486    pub stream_version: Option<i64>,
7487}
7488
7489/// <p>A summary of a stream.</p>
7490#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7491#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7492pub struct StreamSummary {
7493    /// <p>A description of the stream.</p>
7494    #[serde(rename = "description")]
7495    #[serde(skip_serializing_if = "Option::is_none")]
7496    pub description: Option<String>,
7497    /// <p>The stream ARN.</p>
7498    #[serde(rename = "streamArn")]
7499    #[serde(skip_serializing_if = "Option::is_none")]
7500    pub stream_arn: Option<String>,
7501    /// <p>The stream ID.</p>
7502    #[serde(rename = "streamId")]
7503    #[serde(skip_serializing_if = "Option::is_none")]
7504    pub stream_id: Option<String>,
7505    /// <p>The stream version.</p>
7506    #[serde(rename = "streamVersion")]
7507    #[serde(skip_serializing_if = "Option::is_none")]
7508    pub stream_version: Option<i64>,
7509}
7510
7511/// <p>A set of key/value pairs that are used to manage the resource.</p>
7512#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
7513pub struct Tag {
7514    /// <p>The tag's key.</p>
7515    #[serde(rename = "Key")]
7516    pub key: String,
7517    /// <p>The tag's value.</p>
7518    #[serde(rename = "Value")]
7519    #[serde(skip_serializing_if = "Option::is_none")]
7520    pub value: Option<String>,
7521}
7522
7523#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7524#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7525pub struct TagResourceRequest {
7526    /// <p>The ARN of the resource.</p>
7527    #[serde(rename = "resourceArn")]
7528    pub resource_arn: String,
7529    /// <p>The new or modified tags for the resource.</p>
7530    #[serde(rename = "tags")]
7531    pub tags: Vec<Tag>,
7532}
7533
7534#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7535#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7536pub struct TagResourceResponse {}
7537
7538/// <p>Statistics for the checks performed during the audit.</p>
7539#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7540#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7541pub struct TaskStatistics {
7542    /// <p>The number of checks that did not run because the audit was canceled.</p>
7543    #[serde(rename = "canceledChecks")]
7544    #[serde(skip_serializing_if = "Option::is_none")]
7545    pub canceled_checks: Option<i64>,
7546    /// <p>The number of checks that found compliant resources.</p>
7547    #[serde(rename = "compliantChecks")]
7548    #[serde(skip_serializing_if = "Option::is_none")]
7549    pub compliant_checks: Option<i64>,
7550    /// <p>The number of checks.</p>
7551    #[serde(rename = "failedChecks")]
7552    #[serde(skip_serializing_if = "Option::is_none")]
7553    pub failed_checks: Option<i64>,
7554    /// <p>The number of checks in progress.</p>
7555    #[serde(rename = "inProgressChecks")]
7556    #[serde(skip_serializing_if = "Option::is_none")]
7557    pub in_progress_checks: Option<i64>,
7558    /// <p>The number of checks that found noncompliant resources.</p>
7559    #[serde(rename = "nonCompliantChecks")]
7560    #[serde(skip_serializing_if = "Option::is_none")]
7561    pub non_compliant_checks: Option<i64>,
7562    /// <p>The number of checks in this audit.</p>
7563    #[serde(rename = "totalChecks")]
7564    #[serde(skip_serializing_if = "Option::is_none")]
7565    pub total_checks: Option<i64>,
7566    /// <p>The number of checks waiting for data collection.</p>
7567    #[serde(rename = "waitingForDataCollectionChecks")]
7568    #[serde(skip_serializing_if = "Option::is_none")]
7569    pub waiting_for_data_collection_checks: Option<i64>,
7570}
7571
7572/// <p>Provides summary counts of how many tasks for findings are in a particular state. This information is included in the response from DescribeAuditMitigationActionsTask.</p>
7573#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7574#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7575pub struct TaskStatisticsForAuditCheck {
7576    /// <p>The number of findings to which the mitigation action task was canceled when applied.</p>
7577    #[serde(rename = "canceledFindingsCount")]
7578    #[serde(skip_serializing_if = "Option::is_none")]
7579    pub canceled_findings_count: Option<i64>,
7580    /// <p>The number of findings for which at least one of the actions failed when applied.</p>
7581    #[serde(rename = "failedFindingsCount")]
7582    #[serde(skip_serializing_if = "Option::is_none")]
7583    pub failed_findings_count: Option<i64>,
7584    /// <p>The number of findings skipped because of filter conditions provided in the parameters to the command.</p>
7585    #[serde(rename = "skippedFindingsCount")]
7586    #[serde(skip_serializing_if = "Option::is_none")]
7587    pub skipped_findings_count: Option<i64>,
7588    /// <p>The number of findings for which all mitigation actions succeeded when applied.</p>
7589    #[serde(rename = "succeededFindingsCount")]
7590    #[serde(skip_serializing_if = "Option::is_none")]
7591    pub succeeded_findings_count: Option<i64>,
7592    /// <p>The total number of findings to which a task is being applied.</p>
7593    #[serde(rename = "totalFindingsCount")]
7594    #[serde(skip_serializing_if = "Option::is_none")]
7595    pub total_findings_count: Option<i64>,
7596}
7597
7598#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7599#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7600pub struct TestAuthorizationRequest {
7601    /// <p>A list of authorization info objects. Simulating authorization will create a response for each <code>authInfo</code> object in the list.</p>
7602    #[serde(rename = "authInfos")]
7603    pub auth_infos: Vec<AuthInfo>,
7604    /// <p>The MQTT client ID.</p>
7605    #[serde(rename = "clientId")]
7606    #[serde(skip_serializing_if = "Option::is_none")]
7607    pub client_id: Option<String>,
7608    /// <p>The Cognito identity pool ID.</p>
7609    #[serde(rename = "cognitoIdentityPoolId")]
7610    #[serde(skip_serializing_if = "Option::is_none")]
7611    pub cognito_identity_pool_id: Option<String>,
7612    /// <p>When testing custom authorization, the policies specified here are treated as if they are attached to the principal being authorized.</p>
7613    #[serde(rename = "policyNamesToAdd")]
7614    #[serde(skip_serializing_if = "Option::is_none")]
7615    pub policy_names_to_add: Option<Vec<String>>,
7616    /// <p>When testing custom authorization, the policies specified here are treated as if they are not attached to the principal being authorized.</p>
7617    #[serde(rename = "policyNamesToSkip")]
7618    #[serde(skip_serializing_if = "Option::is_none")]
7619    pub policy_names_to_skip: Option<Vec<String>>,
7620    /// <p>The principal.</p>
7621    #[serde(rename = "principal")]
7622    #[serde(skip_serializing_if = "Option::is_none")]
7623    pub principal: Option<String>,
7624}
7625
7626#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7627#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7628pub struct TestAuthorizationResponse {
7629    /// <p>The authentication results.</p>
7630    #[serde(rename = "authResults")]
7631    #[serde(skip_serializing_if = "Option::is_none")]
7632    pub auth_results: Option<Vec<AuthResult>>,
7633}
7634
7635#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7636#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7637pub struct TestInvokeAuthorizerRequest {
7638    /// <p>The custom authorizer name.</p>
7639    #[serde(rename = "authorizerName")]
7640    pub authorizer_name: String,
7641    /// <p>Specifies a test HTTP authorization request.</p>
7642    #[serde(rename = "httpContext")]
7643    #[serde(skip_serializing_if = "Option::is_none")]
7644    pub http_context: Option<HttpContext>,
7645    /// <p>Specifies a test MQTT authorization request.</p>
7646    #[serde(rename = "mqttContext")]
7647    #[serde(skip_serializing_if = "Option::is_none")]
7648    pub mqtt_context: Option<MqttContext>,
7649    /// <p>Specifies a test TLS authorization request.</p>
7650    #[serde(rename = "tlsContext")]
7651    #[serde(skip_serializing_if = "Option::is_none")]
7652    pub tls_context: Option<TlsContext>,
7653    /// <p>The token returned by your custom authentication service.</p>
7654    #[serde(rename = "token")]
7655    #[serde(skip_serializing_if = "Option::is_none")]
7656    pub token: Option<String>,
7657    /// <p>The signature made with the token and your custom authentication service's private key. This value must be Base-64-encoded.</p>
7658    #[serde(rename = "tokenSignature")]
7659    #[serde(skip_serializing_if = "Option::is_none")]
7660    pub token_signature: Option<String>,
7661}
7662
7663#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7664#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7665pub struct TestInvokeAuthorizerResponse {
7666    /// <p>The number of seconds after which the connection is terminated.</p>
7667    #[serde(rename = "disconnectAfterInSeconds")]
7668    #[serde(skip_serializing_if = "Option::is_none")]
7669    pub disconnect_after_in_seconds: Option<i64>,
7670    /// <p>True if the token is authenticated, otherwise false.</p>
7671    #[serde(rename = "isAuthenticated")]
7672    #[serde(skip_serializing_if = "Option::is_none")]
7673    pub is_authenticated: Option<bool>,
7674    /// <p>IAM policy documents.</p>
7675    #[serde(rename = "policyDocuments")]
7676    #[serde(skip_serializing_if = "Option::is_none")]
7677    pub policy_documents: Option<Vec<String>>,
7678    /// <p>The principal ID.</p>
7679    #[serde(rename = "principalId")]
7680    #[serde(skip_serializing_if = "Option::is_none")]
7681    pub principal_id: Option<String>,
7682    /// <p>The number of seconds after which the temporary credentials are refreshed.</p>
7683    #[serde(rename = "refreshAfterInSeconds")]
7684    #[serde(skip_serializing_if = "Option::is_none")]
7685    pub refresh_after_in_seconds: Option<i64>,
7686}
7687
7688/// <p>The properties of the thing, including thing name, thing type name, and a list of thing attributes.</p>
7689#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7690#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7691pub struct ThingAttribute {
7692    /// <p>A list of thing attributes which are name-value pairs.</p>
7693    #[serde(rename = "attributes")]
7694    #[serde(skip_serializing_if = "Option::is_none")]
7695    pub attributes: Option<::std::collections::HashMap<String, String>>,
7696    /// <p>The thing ARN.</p>
7697    #[serde(rename = "thingArn")]
7698    #[serde(skip_serializing_if = "Option::is_none")]
7699    pub thing_arn: Option<String>,
7700    /// <p>The name of the thing.</p>
7701    #[serde(rename = "thingName")]
7702    #[serde(skip_serializing_if = "Option::is_none")]
7703    pub thing_name: Option<String>,
7704    /// <p>The name of the thing type, if the thing has been associated with a type.</p>
7705    #[serde(rename = "thingTypeName")]
7706    #[serde(skip_serializing_if = "Option::is_none")]
7707    pub thing_type_name: Option<String>,
7708    /// <p>The version of the thing record in the registry.</p>
7709    #[serde(rename = "version")]
7710    #[serde(skip_serializing_if = "Option::is_none")]
7711    pub version: Option<i64>,
7712}
7713
7714/// <p>The connectivity status of the thing.</p>
7715#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7716#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7717pub struct ThingConnectivity {
7718    /// <p>True if the thing is connected to the AWS IoT service; false if it is not connected.</p>
7719    #[serde(rename = "connected")]
7720    #[serde(skip_serializing_if = "Option::is_none")]
7721    pub connected: Option<bool>,
7722    /// <p>The epoch time (in milliseconds) when the thing last connected or disconnected. If the thing has been disconnected for more than a few weeks, the time value might be missing.</p>
7723    #[serde(rename = "timestamp")]
7724    #[serde(skip_serializing_if = "Option::is_none")]
7725    pub timestamp: Option<i64>,
7726}
7727
7728/// <p>The thing search index document.</p>
7729#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7730#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7731pub struct ThingDocument {
7732    /// <p>The attributes.</p>
7733    #[serde(rename = "attributes")]
7734    #[serde(skip_serializing_if = "Option::is_none")]
7735    pub attributes: Option<::std::collections::HashMap<String, String>>,
7736    /// <p>Indicates whether the thing is connected to the AWS IoT service.</p>
7737    #[serde(rename = "connectivity")]
7738    #[serde(skip_serializing_if = "Option::is_none")]
7739    pub connectivity: Option<ThingConnectivity>,
7740    /// <p>The shadow.</p>
7741    #[serde(rename = "shadow")]
7742    #[serde(skip_serializing_if = "Option::is_none")]
7743    pub shadow: Option<String>,
7744    /// <p>Thing group names.</p>
7745    #[serde(rename = "thingGroupNames")]
7746    #[serde(skip_serializing_if = "Option::is_none")]
7747    pub thing_group_names: Option<Vec<String>>,
7748    /// <p>The thing ID.</p>
7749    #[serde(rename = "thingId")]
7750    #[serde(skip_serializing_if = "Option::is_none")]
7751    pub thing_id: Option<String>,
7752    /// <p>The thing name.</p>
7753    #[serde(rename = "thingName")]
7754    #[serde(skip_serializing_if = "Option::is_none")]
7755    pub thing_name: Option<String>,
7756    /// <p>The thing type name.</p>
7757    #[serde(rename = "thingTypeName")]
7758    #[serde(skip_serializing_if = "Option::is_none")]
7759    pub thing_type_name: Option<String>,
7760}
7761
7762/// <p>The thing group search index document.</p>
7763#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7764#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7765pub struct ThingGroupDocument {
7766    /// <p>The thing group attributes.</p>
7767    #[serde(rename = "attributes")]
7768    #[serde(skip_serializing_if = "Option::is_none")]
7769    pub attributes: Option<::std::collections::HashMap<String, String>>,
7770    /// <p>Parent group names.</p>
7771    #[serde(rename = "parentGroupNames")]
7772    #[serde(skip_serializing_if = "Option::is_none")]
7773    pub parent_group_names: Option<Vec<String>>,
7774    /// <p>The thing group description.</p>
7775    #[serde(rename = "thingGroupDescription")]
7776    #[serde(skip_serializing_if = "Option::is_none")]
7777    pub thing_group_description: Option<String>,
7778    /// <p>The thing group ID.</p>
7779    #[serde(rename = "thingGroupId")]
7780    #[serde(skip_serializing_if = "Option::is_none")]
7781    pub thing_group_id: Option<String>,
7782    /// <p>The thing group name.</p>
7783    #[serde(rename = "thingGroupName")]
7784    #[serde(skip_serializing_if = "Option::is_none")]
7785    pub thing_group_name: Option<String>,
7786}
7787
7788/// <p>Thing group indexing configuration.</p>
7789#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
7790pub struct ThingGroupIndexingConfiguration {
7791    /// <p>A list of thing group fields to index. This list cannot contain any managed fields. Use the GetIndexingConfiguration API to get a list of managed fields.</p> <p>Contains custom field names and their data type.</p>
7792    #[serde(rename = "customFields")]
7793    #[serde(skip_serializing_if = "Option::is_none")]
7794    pub custom_fields: Option<Vec<Field>>,
7795    /// <p>Contains fields that are indexed and whose types are already known by the Fleet Indexing service.</p>
7796    #[serde(rename = "managedFields")]
7797    #[serde(skip_serializing_if = "Option::is_none")]
7798    pub managed_fields: Option<Vec<Field>>,
7799    /// <p>Thing group indexing mode.</p>
7800    #[serde(rename = "thingGroupIndexingMode")]
7801    pub thing_group_indexing_mode: String,
7802}
7803
7804/// <p>Thing group metadata.</p>
7805#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7806#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7807pub struct ThingGroupMetadata {
7808    /// <p>The UNIX timestamp of when the thing group was created.</p>
7809    #[serde(rename = "creationDate")]
7810    #[serde(skip_serializing_if = "Option::is_none")]
7811    pub creation_date: Option<f64>,
7812    /// <p>The parent thing group name.</p>
7813    #[serde(rename = "parentGroupName")]
7814    #[serde(skip_serializing_if = "Option::is_none")]
7815    pub parent_group_name: Option<String>,
7816    /// <p>The root parent thing group.</p>
7817    #[serde(rename = "rootToParentThingGroups")]
7818    #[serde(skip_serializing_if = "Option::is_none")]
7819    pub root_to_parent_thing_groups: Option<Vec<GroupNameAndArn>>,
7820}
7821
7822/// <p>Thing group properties.</p>
7823#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
7824pub struct ThingGroupProperties {
7825    /// <p>The thing group attributes in JSON format.</p>
7826    #[serde(rename = "attributePayload")]
7827    #[serde(skip_serializing_if = "Option::is_none")]
7828    pub attribute_payload: Option<AttributePayload>,
7829    /// <p>The thing group description.</p>
7830    #[serde(rename = "thingGroupDescription")]
7831    #[serde(skip_serializing_if = "Option::is_none")]
7832    pub thing_group_description: Option<String>,
7833}
7834
7835/// <p>The thing indexing configuration. For more information, see <a href="https://docs.aws.amazon.com/iot/latest/developerguide/managing-index.html">Managing Thing Indexing</a>.</p>
7836#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
7837pub struct ThingIndexingConfiguration {
7838    /// <p>Contains custom field names and their data type.</p>
7839    #[serde(rename = "customFields")]
7840    #[serde(skip_serializing_if = "Option::is_none")]
7841    pub custom_fields: Option<Vec<Field>>,
7842    /// <p>Contains fields that are indexed and whose types are already known by the Fleet Indexing service.</p>
7843    #[serde(rename = "managedFields")]
7844    #[serde(skip_serializing_if = "Option::is_none")]
7845    pub managed_fields: Option<Vec<Field>>,
7846    /// <p><p>Thing connectivity indexing mode. Valid values are: </p> <ul> <li> <p>STATUS – Your thing index contains connectivity status. To enable thing connectivity indexing, thingIndexMode must not be set to OFF.</p> </li> <li> <p>OFF - Thing connectivity status indexing is disabled.</p> </li> </ul></p>
7847    #[serde(rename = "thingConnectivityIndexingMode")]
7848    #[serde(skip_serializing_if = "Option::is_none")]
7849    pub thing_connectivity_indexing_mode: Option<String>,
7850    /// <p><p>Thing indexing mode. Valid values are:</p> <ul> <li> <p>REGISTRY – Your thing index contains registry data only.</p> </li> <li> <p>REGISTRY<em>AND</em>SHADOW - Your thing index contains registry and shadow data.</p> </li> <li> <p>OFF - Thing indexing is disabled.</p> </li> </ul></p>
7851    #[serde(rename = "thingIndexingMode")]
7852    pub thing_indexing_mode: String,
7853}
7854
7855/// <p>The definition of the thing type, including thing type name and description.</p>
7856#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7857#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7858pub struct ThingTypeDefinition {
7859    /// <p>The thing type ARN.</p>
7860    #[serde(rename = "thingTypeArn")]
7861    #[serde(skip_serializing_if = "Option::is_none")]
7862    pub thing_type_arn: Option<String>,
7863    /// <p>The ThingTypeMetadata contains additional information about the thing type including: creation date and time, a value indicating whether the thing type is deprecated, and a date and time when it was deprecated.</p>
7864    #[serde(rename = "thingTypeMetadata")]
7865    #[serde(skip_serializing_if = "Option::is_none")]
7866    pub thing_type_metadata: Option<ThingTypeMetadata>,
7867    /// <p>The name of the thing type.</p>
7868    #[serde(rename = "thingTypeName")]
7869    #[serde(skip_serializing_if = "Option::is_none")]
7870    pub thing_type_name: Option<String>,
7871    /// <p>The ThingTypeProperties for the thing type.</p>
7872    #[serde(rename = "thingTypeProperties")]
7873    #[serde(skip_serializing_if = "Option::is_none")]
7874    pub thing_type_properties: Option<ThingTypeProperties>,
7875}
7876
7877/// <p>The ThingTypeMetadata contains additional information about the thing type including: creation date and time, a value indicating whether the thing type is deprecated, and a date and time when time was deprecated.</p>
7878#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7879#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7880pub struct ThingTypeMetadata {
7881    /// <p>The date and time when the thing type was created.</p>
7882    #[serde(rename = "creationDate")]
7883    #[serde(skip_serializing_if = "Option::is_none")]
7884    pub creation_date: Option<f64>,
7885    /// <p>Whether the thing type is deprecated. If <b>true</b>, no new things could be associated with this type.</p>
7886    #[serde(rename = "deprecated")]
7887    #[serde(skip_serializing_if = "Option::is_none")]
7888    pub deprecated: Option<bool>,
7889    /// <p>The date and time when the thing type was deprecated.</p>
7890    #[serde(rename = "deprecationDate")]
7891    #[serde(skip_serializing_if = "Option::is_none")]
7892    pub deprecation_date: Option<f64>,
7893}
7894
7895/// <p>The ThingTypeProperties contains information about the thing type including: a thing type description, and a list of searchable thing attribute names.</p>
7896#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
7897pub struct ThingTypeProperties {
7898    /// <p>A list of searchable thing attribute names.</p>
7899    #[serde(rename = "searchableAttributes")]
7900    #[serde(skip_serializing_if = "Option::is_none")]
7901    pub searchable_attributes: Option<Vec<String>>,
7902    /// <p>The description of the thing type.</p>
7903    #[serde(rename = "thingTypeDescription")]
7904    #[serde(skip_serializing_if = "Option::is_none")]
7905    pub thing_type_description: Option<String>,
7906}
7907
7908/// <p>Specifies the amount of time each device has to finish its execution of the job. A timer is started when the job execution status is set to <code>IN_PROGRESS</code>. If the job execution status is not set to another terminal state before the timer expires, it will be automatically set to <code>TIMED_OUT</code>.</p>
7909#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
7910pub struct TimeoutConfig {
7911    /// <p>Specifies the amount of time, in minutes, this device has to finish execution of this job. The timeout interval can be anywhere between 1 minute and 7 days (1 to 10080 minutes). The in progress timer can't be updated and will apply to all job executions for the job. Whenever a job execution remains in the IN_PROGRESS status for longer than this interval, the job execution will fail and switch to the terminal <code>TIMED_OUT</code> status.</p>
7912    #[serde(rename = "inProgressTimeoutInMinutes")]
7913    #[serde(skip_serializing_if = "Option::is_none")]
7914    pub in_progress_timeout_in_minutes: Option<i64>,
7915}
7916
7917/// <p>Specifies the TLS context to use for the test authorizer request.</p>
7918#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7919#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7920pub struct TlsContext {
7921    /// <p>The value of the <code>serverName</code> key in a TLS authorization request.</p>
7922    #[serde(rename = "serverName")]
7923    #[serde(skip_serializing_if = "Option::is_none")]
7924    pub server_name: Option<String>,
7925}
7926
7927/// <p>Describes a rule.</p>
7928#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7929#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7930pub struct TopicRule {
7931    /// <p>The actions associated with the rule.</p>
7932    #[serde(rename = "actions")]
7933    #[serde(skip_serializing_if = "Option::is_none")]
7934    pub actions: Option<Vec<Action>>,
7935    /// <p>The version of the SQL rules engine to use when evaluating the rule.</p>
7936    #[serde(rename = "awsIotSqlVersion")]
7937    #[serde(skip_serializing_if = "Option::is_none")]
7938    pub aws_iot_sql_version: Option<String>,
7939    /// <p>The date and time the rule was created.</p>
7940    #[serde(rename = "createdAt")]
7941    #[serde(skip_serializing_if = "Option::is_none")]
7942    pub created_at: Option<f64>,
7943    /// <p>The description of the rule.</p>
7944    #[serde(rename = "description")]
7945    #[serde(skip_serializing_if = "Option::is_none")]
7946    pub description: Option<String>,
7947    /// <p>The action to perform when an error occurs.</p>
7948    #[serde(rename = "errorAction")]
7949    #[serde(skip_serializing_if = "Option::is_none")]
7950    pub error_action: Option<Action>,
7951    /// <p>Specifies whether the rule is disabled.</p>
7952    #[serde(rename = "ruleDisabled")]
7953    #[serde(skip_serializing_if = "Option::is_none")]
7954    pub rule_disabled: Option<bool>,
7955    /// <p>The name of the rule.</p>
7956    #[serde(rename = "ruleName")]
7957    #[serde(skip_serializing_if = "Option::is_none")]
7958    pub rule_name: Option<String>,
7959    /// <p>The SQL statement used to query the topic. When using a SQL query with multiple lines, be sure to escape the newline characters.</p>
7960    #[serde(rename = "sql")]
7961    #[serde(skip_serializing_if = "Option::is_none")]
7962    pub sql: Option<String>,
7963}
7964
7965/// <p>A topic rule destination.</p>
7966#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7967#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7968pub struct TopicRuleDestination {
7969    /// <p>The topic rule destination URL.</p>
7970    #[serde(rename = "arn")]
7971    #[serde(skip_serializing_if = "Option::is_none")]
7972    pub arn: Option<String>,
7973    /// <p>Properties of the HTTP URL.</p>
7974    #[serde(rename = "httpUrlProperties")]
7975    #[serde(skip_serializing_if = "Option::is_none")]
7976    pub http_url_properties: Option<HttpUrlDestinationProperties>,
7977    /// <p><p>The status of the topic rule destination. Valid values are:</p> <dl> <dt>IN<em>PROGRESS</dt> <dd> <p>A topic rule destination was created but has not been confirmed. You can set <code>status</code> to <code>IN</em>PROGRESS</code> by calling <code>UpdateTopicRuleDestination</code>. Calling <code>UpdateTopicRuleDestination</code> causes a new confirmation challenge to be sent to your confirmation endpoint.</p> </dd> <dt>ENABLED</dt> <dd> <p>Confirmation was completed, and traffic to this destination is allowed. You can set <code>status</code> to <code>DISABLED</code> by calling <code>UpdateTopicRuleDestination</code>.</p> </dd> <dt>DISABLED</dt> <dd> <p>Confirmation was completed, and traffic to this destination is not allowed. You can set <code>status</code> to <code>ENABLED</code> by calling <code>UpdateTopicRuleDestination</code>.</p> </dd> <dt>ERROR</dt> <dd> <p>Confirmation could not be completed, for example if the confirmation timed out. You can call <code>GetTopicRuleDestination</code> for details about the error. You can set <code>status</code> to <code>IN_PROGRESS</code> by calling <code>UpdateTopicRuleDestination</code>. Calling <code>UpdateTopicRuleDestination</code> causes a new confirmation challenge to be sent to your confirmation endpoint.</p> </dd> </dl></p>
7978    #[serde(rename = "status")]
7979    #[serde(skip_serializing_if = "Option::is_none")]
7980    pub status: Option<String>,
7981    /// <p>Additional details or reason why the topic rule destination is in the current status.</p>
7982    #[serde(rename = "statusReason")]
7983    #[serde(skip_serializing_if = "Option::is_none")]
7984    pub status_reason: Option<String>,
7985}
7986
7987/// <p>Configuration of the topic rule destination.</p>
7988#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7989#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7990pub struct TopicRuleDestinationConfiguration {
7991    /// <p>Configuration of the HTTP URL.</p>
7992    #[serde(rename = "httpUrlConfiguration")]
7993    #[serde(skip_serializing_if = "Option::is_none")]
7994    pub http_url_configuration: Option<HttpUrlDestinationConfiguration>,
7995}
7996
7997/// <p>Information about the topic rule destination.</p>
7998#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7999#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8000pub struct TopicRuleDestinationSummary {
8001    /// <p>The topic rule destination ARN.</p>
8002    #[serde(rename = "arn")]
8003    #[serde(skip_serializing_if = "Option::is_none")]
8004    pub arn: Option<String>,
8005    /// <p>Information about the HTTP URL.</p>
8006    #[serde(rename = "httpUrlSummary")]
8007    #[serde(skip_serializing_if = "Option::is_none")]
8008    pub http_url_summary: Option<HttpUrlDestinationSummary>,
8009    /// <p><p>The status of the topic rule destination. Valid values are:</p> <dl> <dt>IN<em>PROGRESS</dt> <dd> <p>A topic rule destination was created but has not been confirmed. You can set <code>status</code> to <code>IN</em>PROGRESS</code> by calling <code>UpdateTopicRuleDestination</code>. Calling <code>UpdateTopicRuleDestination</code> causes a new confirmation challenge to be sent to your confirmation endpoint.</p> </dd> <dt>ENABLED</dt> <dd> <p>Confirmation was completed, and traffic to this destination is allowed. You can set <code>status</code> to <code>DISABLED</code> by calling <code>UpdateTopicRuleDestination</code>.</p> </dd> <dt>DISABLED</dt> <dd> <p>Confirmation was completed, and traffic to this destination is not allowed. You can set <code>status</code> to <code>ENABLED</code> by calling <code>UpdateTopicRuleDestination</code>.</p> </dd> <dt>ERROR</dt> <dd> <p>Confirmation could not be completed, for example if the confirmation timed out. You can call <code>GetTopicRuleDestination</code> for details about the error. You can set <code>status</code> to <code>IN_PROGRESS</code> by calling <code>UpdateTopicRuleDestination</code>. Calling <code>UpdateTopicRuleDestination</code> causes a new confirmation challenge to be sent to your confirmation endpoint.</p> </dd> </dl></p>
8010    #[serde(rename = "status")]
8011    #[serde(skip_serializing_if = "Option::is_none")]
8012    pub status: Option<String>,
8013    /// <p>The reason the topic rule destination is in the current status.</p>
8014    #[serde(rename = "statusReason")]
8015    #[serde(skip_serializing_if = "Option::is_none")]
8016    pub status_reason: Option<String>,
8017}
8018
8019/// <p>Describes a rule.</p>
8020#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
8021#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8022pub struct TopicRuleListItem {
8023    /// <p>The date and time the rule was created.</p>
8024    #[serde(rename = "createdAt")]
8025    #[serde(skip_serializing_if = "Option::is_none")]
8026    pub created_at: Option<f64>,
8027    /// <p>The rule ARN.</p>
8028    #[serde(rename = "ruleArn")]
8029    #[serde(skip_serializing_if = "Option::is_none")]
8030    pub rule_arn: Option<String>,
8031    /// <p>Specifies whether the rule is disabled.</p>
8032    #[serde(rename = "ruleDisabled")]
8033    #[serde(skip_serializing_if = "Option::is_none")]
8034    pub rule_disabled: Option<bool>,
8035    /// <p>The name of the rule.</p>
8036    #[serde(rename = "ruleName")]
8037    #[serde(skip_serializing_if = "Option::is_none")]
8038    pub rule_name: Option<String>,
8039    /// <p>The pattern for the topic names that apply.</p>
8040    #[serde(rename = "topicPattern")]
8041    #[serde(skip_serializing_if = "Option::is_none")]
8042    pub topic_pattern: Option<String>,
8043}
8044
8045/// <p>Describes a rule.</p>
8046#[derive(Clone, Debug, Default, PartialEq, Serialize)]
8047#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
8048pub struct TopicRulePayload {
8049    /// <p>The actions associated with the rule.</p>
8050    #[serde(rename = "actions")]
8051    pub actions: Vec<Action>,
8052    /// <p>The version of the SQL rules engine to use when evaluating the rule.</p>
8053    #[serde(rename = "awsIotSqlVersion")]
8054    #[serde(skip_serializing_if = "Option::is_none")]
8055    pub aws_iot_sql_version: Option<String>,
8056    /// <p>The description of the rule.</p>
8057    #[serde(rename = "description")]
8058    #[serde(skip_serializing_if = "Option::is_none")]
8059    pub description: Option<String>,
8060    /// <p>The action to take when an error occurs.</p>
8061    #[serde(rename = "errorAction")]
8062    #[serde(skip_serializing_if = "Option::is_none")]
8063    pub error_action: Option<Action>,
8064    /// <p>Specifies whether the rule is disabled.</p>
8065    #[serde(rename = "ruleDisabled")]
8066    #[serde(skip_serializing_if = "Option::is_none")]
8067    pub rule_disabled: Option<bool>,
8068    /// <p>The SQL statement used to query the topic. For more information, see <a href="https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html#aws-iot-sql-reference">AWS IoT SQL Reference</a> in the <i>AWS IoT Developer Guide</i>.</p>
8069    #[serde(rename = "sql")]
8070    pub sql: String,
8071}
8072
8073/// <p>The input for the TransferCertificate operation.</p>
8074#[derive(Clone, Debug, Default, PartialEq, Serialize)]
8075#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
8076pub struct TransferCertificateRequest {
8077    /// <p>The ID of the certificate. (The last part of the certificate ARN contains the certificate ID.)</p>
8078    #[serde(rename = "certificateId")]
8079    pub certificate_id: String,
8080    /// <p>The AWS account.</p>
8081    #[serde(rename = "targetAwsAccount")]
8082    pub target_aws_account: String,
8083    /// <p>The transfer message.</p>
8084    #[serde(rename = "transferMessage")]
8085    #[serde(skip_serializing_if = "Option::is_none")]
8086    pub transfer_message: Option<String>,
8087}
8088
8089/// <p>The output from the TransferCertificate operation.</p>
8090#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
8091#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8092pub struct TransferCertificateResponse {
8093    /// <p>The ARN of the certificate.</p>
8094    #[serde(rename = "transferredCertificateArn")]
8095    #[serde(skip_serializing_if = "Option::is_none")]
8096    pub transferred_certificate_arn: Option<String>,
8097}
8098
8099/// <p>Data used to transfer a certificate to an AWS account.</p>
8100#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
8101#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8102pub struct TransferData {
8103    /// <p>The date the transfer was accepted.</p>
8104    #[serde(rename = "acceptDate")]
8105    #[serde(skip_serializing_if = "Option::is_none")]
8106    pub accept_date: Option<f64>,
8107    /// <p>The date the transfer was rejected.</p>
8108    #[serde(rename = "rejectDate")]
8109    #[serde(skip_serializing_if = "Option::is_none")]
8110    pub reject_date: Option<f64>,
8111    /// <p>The reason why the transfer was rejected.</p>
8112    #[serde(rename = "rejectReason")]
8113    #[serde(skip_serializing_if = "Option::is_none")]
8114    pub reject_reason: Option<String>,
8115    /// <p>The date the transfer took place.</p>
8116    #[serde(rename = "transferDate")]
8117    #[serde(skip_serializing_if = "Option::is_none")]
8118    pub transfer_date: Option<f64>,
8119    /// <p>The transfer message.</p>
8120    #[serde(rename = "transferMessage")]
8121    #[serde(skip_serializing_if = "Option::is_none")]
8122    pub transfer_message: Option<String>,
8123}
8124
8125#[derive(Clone, Debug, Default, PartialEq, Serialize)]
8126#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
8127pub struct UntagResourceRequest {
8128    /// <p>The ARN of the resource.</p>
8129    #[serde(rename = "resourceArn")]
8130    pub resource_arn: String,
8131    /// <p>A list of the keys of the tags to be removed from the resource.</p>
8132    #[serde(rename = "tagKeys")]
8133    pub tag_keys: Vec<String>,
8134}
8135
8136#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
8137#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8138pub struct UntagResourceResponse {}
8139
8140#[derive(Clone, Debug, Default, PartialEq, Serialize)]
8141#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
8142pub struct UpdateAccountAuditConfigurationRequest {
8143    /// <p>Specifies which audit checks are enabled and disabled for this account. Use <code>DescribeAccountAuditConfiguration</code> to see the list of all checks, including those that are currently enabled.</p> <p>Some data collection might start immediately when certain checks are enabled. When a check is disabled, any data collected so far in relation to the check is deleted.</p> <p>You cannot disable a check if it is used by any scheduled audit. You must first delete the check from the scheduled audit or delete the scheduled audit itself.</p> <p>On the first call to <code>UpdateAccountAuditConfiguration</code>, this parameter is required and must specify at least one enabled check.</p>
8144    #[serde(rename = "auditCheckConfigurations")]
8145    #[serde(skip_serializing_if = "Option::is_none")]
8146    pub audit_check_configurations:
8147        Option<::std::collections::HashMap<String, AuditCheckConfiguration>>,
8148    /// <p>Information about the targets to which audit notifications are sent.</p>
8149    #[serde(rename = "auditNotificationTargetConfigurations")]
8150    #[serde(skip_serializing_if = "Option::is_none")]
8151    pub audit_notification_target_configurations:
8152        Option<::std::collections::HashMap<String, AuditNotificationTarget>>,
8153    /// <p>The ARN of the role that grants permission to AWS IoT to access information about your devices, policies, certificates and other items as required when performing an audit.</p>
8154    #[serde(rename = "roleArn")]
8155    #[serde(skip_serializing_if = "Option::is_none")]
8156    pub role_arn: Option<String>,
8157}
8158
8159#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
8160#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8161pub struct UpdateAccountAuditConfigurationResponse {}
8162
8163#[derive(Clone, Debug, Default, PartialEq, Serialize)]
8164#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
8165pub struct UpdateAuthorizerRequest {
8166    /// <p>The ARN of the authorizer's Lambda function.</p>
8167    #[serde(rename = "authorizerFunctionArn")]
8168    #[serde(skip_serializing_if = "Option::is_none")]
8169    pub authorizer_function_arn: Option<String>,
8170    /// <p>The authorizer name.</p>
8171    #[serde(rename = "authorizerName")]
8172    pub authorizer_name: String,
8173    /// <p>The status of the update authorizer request.</p>
8174    #[serde(rename = "status")]
8175    #[serde(skip_serializing_if = "Option::is_none")]
8176    pub status: Option<String>,
8177    /// <p>The key used to extract the token from the HTTP headers. </p>
8178    #[serde(rename = "tokenKeyName")]
8179    #[serde(skip_serializing_if = "Option::is_none")]
8180    pub token_key_name: Option<String>,
8181    /// <p>The public keys used to verify the token signature.</p>
8182    #[serde(rename = "tokenSigningPublicKeys")]
8183    #[serde(skip_serializing_if = "Option::is_none")]
8184    pub token_signing_public_keys: Option<::std::collections::HashMap<String, String>>,
8185}
8186
8187#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
8188#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8189pub struct UpdateAuthorizerResponse {
8190    /// <p>The authorizer ARN.</p>
8191    #[serde(rename = "authorizerArn")]
8192    #[serde(skip_serializing_if = "Option::is_none")]
8193    pub authorizer_arn: Option<String>,
8194    /// <p>The authorizer name.</p>
8195    #[serde(rename = "authorizerName")]
8196    #[serde(skip_serializing_if = "Option::is_none")]
8197    pub authorizer_name: Option<String>,
8198}
8199
8200#[derive(Clone, Debug, Default, PartialEq, Serialize)]
8201#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
8202pub struct UpdateBillingGroupRequest {
8203    /// <p>The name of the billing group.</p>
8204    #[serde(rename = "billingGroupName")]
8205    pub billing_group_name: String,
8206    /// <p>The properties of the billing group.</p>
8207    #[serde(rename = "billingGroupProperties")]
8208    pub billing_group_properties: BillingGroupProperties,
8209    /// <p>The expected version of the billing group. If the version of the billing group does not match the expected version specified in the request, the <code>UpdateBillingGroup</code> request is rejected with a <code>VersionConflictException</code>.</p>
8210    #[serde(rename = "expectedVersion")]
8211    #[serde(skip_serializing_if = "Option::is_none")]
8212    pub expected_version: Option<i64>,
8213}
8214
8215#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
8216#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8217pub struct UpdateBillingGroupResponse {
8218    /// <p>The latest version of the billing group.</p>
8219    #[serde(rename = "version")]
8220    #[serde(skip_serializing_if = "Option::is_none")]
8221    pub version: Option<i64>,
8222}
8223
8224/// <p>Parameters to define a mitigation action that changes the state of the CA certificate to inactive.</p>
8225#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
8226pub struct UpdateCACertificateParams {
8227    /// <p>The action that you want to apply to the CA cerrtificate. The only supported value is <code>DEACTIVATE</code>.</p>
8228    #[serde(rename = "action")]
8229    pub action: String,
8230}
8231
8232/// <p>The input to the UpdateCACertificate operation.</p>
8233#[derive(Clone, Debug, Default, PartialEq, Serialize)]
8234#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
8235pub struct UpdateCACertificateRequest {
8236    /// <p>The CA certificate identifier.</p>
8237    #[serde(rename = "certificateId")]
8238    pub certificate_id: String,
8239    /// <p>The new value for the auto registration status. Valid values are: "ENABLE" or "DISABLE".</p>
8240    #[serde(rename = "newAutoRegistrationStatus")]
8241    #[serde(skip_serializing_if = "Option::is_none")]
8242    pub new_auto_registration_status: Option<String>,
8243    /// <p>The updated status of the CA certificate.</p> <p> <b>Note:</b> The status value REGISTER_INACTIVE is deprecated and should not be used.</p>
8244    #[serde(rename = "newStatus")]
8245    #[serde(skip_serializing_if = "Option::is_none")]
8246    pub new_status: Option<String>,
8247    /// <p>Information about the registration configuration.</p>
8248    #[serde(rename = "registrationConfig")]
8249    #[serde(skip_serializing_if = "Option::is_none")]
8250    pub registration_config: Option<RegistrationConfig>,
8251    /// <p>If true, removes auto registration.</p>
8252    #[serde(rename = "removeAutoRegistration")]
8253    #[serde(skip_serializing_if = "Option::is_none")]
8254    pub remove_auto_registration: Option<bool>,
8255}
8256
8257/// <p>The input for the UpdateCertificate operation.</p>
8258#[derive(Clone, Debug, Default, PartialEq, Serialize)]
8259#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
8260pub struct UpdateCertificateRequest {
8261    /// <p>The ID of the certificate. (The last part of the certificate ARN contains the certificate ID.)</p>
8262    #[serde(rename = "certificateId")]
8263    pub certificate_id: String,
8264    /// <p>The new status.</p> <p> <b>Note:</b> Setting the status to PENDING_TRANSFER or PENDING_ACTIVATION will result in an exception being thrown. PENDING_TRANSFER and PENDING_ACTIVATION are statuses used internally by AWS IoT. They are not intended for developer use.</p> <p> <b>Note:</b> The status value REGISTER_INACTIVE is deprecated and should not be used.</p>
8265    #[serde(rename = "newStatus")]
8266    pub new_status: String,
8267}
8268
8269/// <p>Parameters to define a mitigation action that changes the state of the device certificate to inactive.</p>
8270#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
8271pub struct UpdateDeviceCertificateParams {
8272    /// <p>The action that you want to apply to the device cerrtificate. The only supported value is <code>DEACTIVATE</code>.</p>
8273    #[serde(rename = "action")]
8274    pub action: String,
8275}
8276
8277#[derive(Clone, Debug, Default, PartialEq, Serialize)]
8278#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
8279pub struct UpdateDimensionRequest {
8280    /// <p>A unique identifier for the dimension. Choose something that describes the type and value to make it easy to remember what it does.</p>
8281    #[serde(rename = "name")]
8282    pub name: String,
8283    /// <p>Specifies the value or list of values for the dimension. For <code>TOPIC_FILTER</code> dimensions, this is a pattern used to match the MQTT topic (for example, "admin/#").</p>
8284    #[serde(rename = "stringValues")]
8285    pub string_values: Vec<String>,
8286}
8287
8288#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
8289#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8290pub struct UpdateDimensionResponse {
8291    /// <p>The ARN (Amazon resource name) of the created dimension.</p>
8292    #[serde(rename = "arn")]
8293    #[serde(skip_serializing_if = "Option::is_none")]
8294    pub arn: Option<String>,
8295    /// <p>The date and time, in milliseconds since epoch, when the dimension was initially created.</p>
8296    #[serde(rename = "creationDate")]
8297    #[serde(skip_serializing_if = "Option::is_none")]
8298    pub creation_date: Option<f64>,
8299    /// <p>The date and time, in milliseconds since epoch, when the dimension was most recently updated.</p>
8300    #[serde(rename = "lastModifiedDate")]
8301    #[serde(skip_serializing_if = "Option::is_none")]
8302    pub last_modified_date: Option<f64>,
8303    /// <p>A unique identifier for the dimension.</p>
8304    #[serde(rename = "name")]
8305    #[serde(skip_serializing_if = "Option::is_none")]
8306    pub name: Option<String>,
8307    /// <p>The value or list of values used to scope the dimension. For example, for topic filters, this is the pattern used to match the MQTT topic name.</p>
8308    #[serde(rename = "stringValues")]
8309    #[serde(skip_serializing_if = "Option::is_none")]
8310    pub string_values: Option<Vec<String>>,
8311    /// <p>The type of the dimension.</p>
8312    #[serde(rename = "type")]
8313    #[serde(skip_serializing_if = "Option::is_none")]
8314    pub type_: Option<String>,
8315}
8316
8317#[derive(Clone, Debug, Default, PartialEq, Serialize)]
8318#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
8319pub struct UpdateDomainConfigurationRequest {
8320    /// <p>An object that specifies the authorization service for a domain.</p>
8321    #[serde(rename = "authorizerConfig")]
8322    #[serde(skip_serializing_if = "Option::is_none")]
8323    pub authorizer_config: Option<AuthorizerConfig>,
8324    /// <p>The name of the domain configuration to be updated.</p>
8325    #[serde(rename = "domainConfigurationName")]
8326    pub domain_configuration_name: String,
8327    /// <p>The status to which the domain configuration should be updated.</p>
8328    #[serde(rename = "domainConfigurationStatus")]
8329    #[serde(skip_serializing_if = "Option::is_none")]
8330    pub domain_configuration_status: Option<String>,
8331    /// <p>Removes the authorization configuration from a domain.</p>
8332    #[serde(rename = "removeAuthorizerConfig")]
8333    #[serde(skip_serializing_if = "Option::is_none")]
8334    pub remove_authorizer_config: Option<bool>,
8335}
8336
8337#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
8338#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8339pub struct UpdateDomainConfigurationResponse {
8340    /// <p>The ARN of the domain configuration that was updated.</p>
8341    #[serde(rename = "domainConfigurationArn")]
8342    #[serde(skip_serializing_if = "Option::is_none")]
8343    pub domain_configuration_arn: Option<String>,
8344    /// <p>The name of the domain configuration that was updated.</p>
8345    #[serde(rename = "domainConfigurationName")]
8346    #[serde(skip_serializing_if = "Option::is_none")]
8347    pub domain_configuration_name: Option<String>,
8348}
8349
8350#[derive(Clone, Debug, Default, PartialEq, Serialize)]
8351#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
8352pub struct UpdateDynamicThingGroupRequest {
8353    /// <p>The expected version of the dynamic thing group to update.</p>
8354    #[serde(rename = "expectedVersion")]
8355    #[serde(skip_serializing_if = "Option::is_none")]
8356    pub expected_version: Option<i64>,
8357    /// <p><p>The dynamic thing group index to update.</p> <note> <p>Currently one index is supported: &#39;AWS_Things&#39;.</p> </note></p>
8358    #[serde(rename = "indexName")]
8359    #[serde(skip_serializing_if = "Option::is_none")]
8360    pub index_name: Option<String>,
8361    /// <p>The dynamic thing group search query string to update.</p>
8362    #[serde(rename = "queryString")]
8363    #[serde(skip_serializing_if = "Option::is_none")]
8364    pub query_string: Option<String>,
8365    /// <p><p>The dynamic thing group query version to update.</p> <note> <p>Currently one query version is supported: &quot;2017-09-30&quot;. If not specified, the query version defaults to this value.</p> </note></p>
8366    #[serde(rename = "queryVersion")]
8367    #[serde(skip_serializing_if = "Option::is_none")]
8368    pub query_version: Option<String>,
8369    /// <p>The name of the dynamic thing group to update.</p>
8370    #[serde(rename = "thingGroupName")]
8371    pub thing_group_name: String,
8372    /// <p>The dynamic thing group properties to update.</p>
8373    #[serde(rename = "thingGroupProperties")]
8374    pub thing_group_properties: ThingGroupProperties,
8375}
8376
8377#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
8378#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8379pub struct UpdateDynamicThingGroupResponse {
8380    /// <p>The dynamic thing group version.</p>
8381    #[serde(rename = "version")]
8382    #[serde(skip_serializing_if = "Option::is_none")]
8383    pub version: Option<i64>,
8384}
8385
8386#[derive(Clone, Debug, Default, PartialEq, Serialize)]
8387#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
8388pub struct UpdateEventConfigurationsRequest {
8389    /// <p>The new event configuration values.</p>
8390    #[serde(rename = "eventConfigurations")]
8391    #[serde(skip_serializing_if = "Option::is_none")]
8392    pub event_configurations: Option<::std::collections::HashMap<String, Configuration>>,
8393}
8394
8395#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
8396#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8397pub struct UpdateEventConfigurationsResponse {}
8398
8399#[derive(Clone, Debug, Default, PartialEq, Serialize)]
8400#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
8401pub struct UpdateIndexingConfigurationRequest {
8402    /// <p>Thing group indexing configuration.</p>
8403    #[serde(rename = "thingGroupIndexingConfiguration")]
8404    #[serde(skip_serializing_if = "Option::is_none")]
8405    pub thing_group_indexing_configuration: Option<ThingGroupIndexingConfiguration>,
8406    /// <p>Thing indexing configuration.</p>
8407    #[serde(rename = "thingIndexingConfiguration")]
8408    #[serde(skip_serializing_if = "Option::is_none")]
8409    pub thing_indexing_configuration: Option<ThingIndexingConfiguration>,
8410}
8411
8412#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
8413#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8414pub struct UpdateIndexingConfigurationResponse {}
8415
8416#[derive(Clone, Debug, Default, PartialEq, Serialize)]
8417#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
8418pub struct UpdateJobRequest {
8419    /// <p>Allows you to create criteria to abort a job.</p>
8420    #[serde(rename = "abortConfig")]
8421    #[serde(skip_serializing_if = "Option::is_none")]
8422    pub abort_config: Option<AbortConfig>,
8423    /// <p>A short text description of the job.</p>
8424    #[serde(rename = "description")]
8425    #[serde(skip_serializing_if = "Option::is_none")]
8426    pub description: Option<String>,
8427    /// <p>Allows you to create a staged rollout of the job.</p>
8428    #[serde(rename = "jobExecutionsRolloutConfig")]
8429    #[serde(skip_serializing_if = "Option::is_none")]
8430    pub job_executions_rollout_config: Option<JobExecutionsRolloutConfig>,
8431    /// <p>The ID of the job to be updated.</p>
8432    #[serde(rename = "jobId")]
8433    pub job_id: String,
8434    /// <p>Configuration information for pre-signed S3 URLs.</p>
8435    #[serde(rename = "presignedUrlConfig")]
8436    #[serde(skip_serializing_if = "Option::is_none")]
8437    pub presigned_url_config: Option<PresignedUrlConfig>,
8438    /// <p>Specifies the amount of time each device has to finish its execution of the job. The timer is started when the job execution status is set to <code>IN_PROGRESS</code>. If the job execution status is not set to another terminal state before the time expires, it will be automatically set to <code>TIMED_OUT</code>. </p>
8439    #[serde(rename = "timeoutConfig")]
8440    #[serde(skip_serializing_if = "Option::is_none")]
8441    pub timeout_config: Option<TimeoutConfig>,
8442}
8443
8444#[derive(Clone, Debug, Default, PartialEq, Serialize)]
8445#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
8446pub struct UpdateMitigationActionRequest {
8447    /// <p>The friendly name for the mitigation action. You can't change the name by using <code>UpdateMitigationAction</code>. Instead, you must delete and re-create the mitigation action with the new name.</p>
8448    #[serde(rename = "actionName")]
8449    pub action_name: String,
8450    /// <p>Defines the type of action and the parameters for that action.</p>
8451    #[serde(rename = "actionParams")]
8452    #[serde(skip_serializing_if = "Option::is_none")]
8453    pub action_params: Option<MitigationActionParams>,
8454    /// <p>The ARN of the IAM role that is used to apply the mitigation action.</p>
8455    #[serde(rename = "roleArn")]
8456    #[serde(skip_serializing_if = "Option::is_none")]
8457    pub role_arn: Option<String>,
8458}
8459
8460#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
8461#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8462pub struct UpdateMitigationActionResponse {
8463    /// <p>The ARN for the new mitigation action.</p>
8464    #[serde(rename = "actionArn")]
8465    #[serde(skip_serializing_if = "Option::is_none")]
8466    pub action_arn: Option<String>,
8467    /// <p>A unique identifier for the mitigation action.</p>
8468    #[serde(rename = "actionId")]
8469    #[serde(skip_serializing_if = "Option::is_none")]
8470    pub action_id: Option<String>,
8471}
8472
8473#[derive(Clone, Debug, Default, PartialEq, Serialize)]
8474#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
8475pub struct UpdateProvisioningTemplateRequest {
8476    /// <p>The ID of the default provisioning template version.</p>
8477    #[serde(rename = "defaultVersionId")]
8478    #[serde(skip_serializing_if = "Option::is_none")]
8479    pub default_version_id: Option<i64>,
8480    /// <p>The description of the fleet provisioning template.</p>
8481    #[serde(rename = "description")]
8482    #[serde(skip_serializing_if = "Option::is_none")]
8483    pub description: Option<String>,
8484    /// <p>True to enable the fleet provisioning template, otherwise false.</p>
8485    #[serde(rename = "enabled")]
8486    #[serde(skip_serializing_if = "Option::is_none")]
8487    pub enabled: Option<bool>,
8488    /// <p>Updates the pre-provisioning hook template.</p>
8489    #[serde(rename = "preProvisioningHook")]
8490    #[serde(skip_serializing_if = "Option::is_none")]
8491    pub pre_provisioning_hook: Option<ProvisioningHook>,
8492    /// <p>The ARN of the role associated with the provisioning template. This IoT role grants permission to provision a device.</p>
8493    #[serde(rename = "provisioningRoleArn")]
8494    #[serde(skip_serializing_if = "Option::is_none")]
8495    pub provisioning_role_arn: Option<String>,
8496    /// <p>Removes pre-provisioning hook template.</p>
8497    #[serde(rename = "removePreProvisioningHook")]
8498    #[serde(skip_serializing_if = "Option::is_none")]
8499    pub remove_pre_provisioning_hook: Option<bool>,
8500    /// <p>The name of the fleet provisioning template.</p>
8501    #[serde(rename = "templateName")]
8502    pub template_name: String,
8503}
8504
8505#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
8506#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8507pub struct UpdateProvisioningTemplateResponse {}
8508
8509#[derive(Clone, Debug, Default, PartialEq, Serialize)]
8510#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
8511pub struct UpdateRoleAliasRequest {
8512    /// <p>The number of seconds the credential will be valid.</p>
8513    #[serde(rename = "credentialDurationSeconds")]
8514    #[serde(skip_serializing_if = "Option::is_none")]
8515    pub credential_duration_seconds: Option<i64>,
8516    /// <p>The role alias to update.</p>
8517    #[serde(rename = "roleAlias")]
8518    pub role_alias: String,
8519    /// <p>The role ARN.</p>
8520    #[serde(rename = "roleArn")]
8521    #[serde(skip_serializing_if = "Option::is_none")]
8522    pub role_arn: Option<String>,
8523}
8524
8525#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
8526#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8527pub struct UpdateRoleAliasResponse {
8528    /// <p>The role alias.</p>
8529    #[serde(rename = "roleAlias")]
8530    #[serde(skip_serializing_if = "Option::is_none")]
8531    pub role_alias: Option<String>,
8532    /// <p>The role alias ARN.</p>
8533    #[serde(rename = "roleAliasArn")]
8534    #[serde(skip_serializing_if = "Option::is_none")]
8535    pub role_alias_arn: Option<String>,
8536}
8537
8538#[derive(Clone, Debug, Default, PartialEq, Serialize)]
8539#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
8540pub struct UpdateScheduledAuditRequest {
8541    /// <p>The day of the month on which the scheduled audit takes place. Can be "1" through "31" or "LAST". This field is required if the "frequency" parameter is set to "MONTHLY". If days 29-31 are specified, and the month does not have that many days, the audit takes place on the "LAST" day of the month.</p>
8542    #[serde(rename = "dayOfMonth")]
8543    #[serde(skip_serializing_if = "Option::is_none")]
8544    pub day_of_month: Option<String>,
8545    /// <p>The day of the week on which the scheduled audit takes place. Can be one of "SUN", "MON", "TUE", "WED", "THU", "FRI", or "SAT". This field is required if the "frequency" parameter is set to "WEEKLY" or "BIWEEKLY".</p>
8546    #[serde(rename = "dayOfWeek")]
8547    #[serde(skip_serializing_if = "Option::is_none")]
8548    pub day_of_week: Option<String>,
8549    /// <p>How often the scheduled audit takes place. Can be one of "DAILY", "WEEKLY", "BIWEEKLY", or "MONTHLY". The start time of each audit is determined by the system.</p>
8550    #[serde(rename = "frequency")]
8551    #[serde(skip_serializing_if = "Option::is_none")]
8552    pub frequency: Option<String>,
8553    /// <p>The name of the scheduled audit. (Max. 128 chars)</p>
8554    #[serde(rename = "scheduledAuditName")]
8555    pub scheduled_audit_name: String,
8556    /// <p>Which checks are performed during the scheduled audit. Checks must be enabled for your account. (Use <code>DescribeAccountAuditConfiguration</code> to see the list of all checks, including those that are enabled or use <code>UpdateAccountAuditConfiguration</code> to select which checks are enabled.)</p>
8557    #[serde(rename = "targetCheckNames")]
8558    #[serde(skip_serializing_if = "Option::is_none")]
8559    pub target_check_names: Option<Vec<String>>,
8560}
8561
8562#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
8563#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8564pub struct UpdateScheduledAuditResponse {
8565    /// <p>The ARN of the scheduled audit.</p>
8566    #[serde(rename = "scheduledAuditArn")]
8567    #[serde(skip_serializing_if = "Option::is_none")]
8568    pub scheduled_audit_arn: Option<String>,
8569}
8570
8571#[derive(Clone, Debug, Default, PartialEq, Serialize)]
8572#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
8573pub struct UpdateSecurityProfileRequest {
8574    /// <p>A list of metrics whose data is retained (stored). By default, data is retained for any metric used in the profile's behaviors, but it is also retained for any metric specified here.</p>
8575    #[serde(rename = "additionalMetricsToRetainV2")]
8576    #[serde(skip_serializing_if = "Option::is_none")]
8577    pub additional_metrics_to_retain_v2: Option<Vec<MetricToRetain>>,
8578    /// <p>Where the alerts are sent. (Alerts are always sent to the console.)</p>
8579    #[serde(rename = "alertTargets")]
8580    #[serde(skip_serializing_if = "Option::is_none")]
8581    pub alert_targets: Option<::std::collections::HashMap<String, AlertTarget>>,
8582    /// <p>Specifies the behaviors that, when violated by a device (thing), cause an alert.</p>
8583    #[serde(rename = "behaviors")]
8584    #[serde(skip_serializing_if = "Option::is_none")]
8585    pub behaviors: Option<Vec<Behavior>>,
8586    /// <p>If true, delete all <code>additionalMetricsToRetain</code> defined for this security profile. If any <code>additionalMetricsToRetain</code> are defined in the current invocation, an exception occurs.</p>
8587    #[serde(rename = "deleteAdditionalMetricsToRetain")]
8588    #[serde(skip_serializing_if = "Option::is_none")]
8589    pub delete_additional_metrics_to_retain: Option<bool>,
8590    /// <p>If true, delete all <code>alertTargets</code> defined for this security profile. If any <code>alertTargets</code> are defined in the current invocation, an exception occurs.</p>
8591    #[serde(rename = "deleteAlertTargets")]
8592    #[serde(skip_serializing_if = "Option::is_none")]
8593    pub delete_alert_targets: Option<bool>,
8594    /// <p>If true, delete all <code>behaviors</code> defined for this security profile. If any <code>behaviors</code> are defined in the current invocation, an exception occurs.</p>
8595    #[serde(rename = "deleteBehaviors")]
8596    #[serde(skip_serializing_if = "Option::is_none")]
8597    pub delete_behaviors: Option<bool>,
8598    /// <p>The expected version of the security profile. A new version is generated whenever the security profile is updated. If you specify a value that is different from the actual version, a <code>VersionConflictException</code> is thrown.</p>
8599    #[serde(rename = "expectedVersion")]
8600    #[serde(skip_serializing_if = "Option::is_none")]
8601    pub expected_version: Option<i64>,
8602    /// <p>A description of the security profile.</p>
8603    #[serde(rename = "securityProfileDescription")]
8604    #[serde(skip_serializing_if = "Option::is_none")]
8605    pub security_profile_description: Option<String>,
8606    /// <p>The name of the security profile you want to update.</p>
8607    #[serde(rename = "securityProfileName")]
8608    pub security_profile_name: String,
8609}
8610
8611#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
8612#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8613pub struct UpdateSecurityProfileResponse {
8614    /// <p>A list of metrics whose data is retained (stored). By default, data is retained for any metric used in the profile's behaviors, but it is also retained for any metric specified here.</p>
8615    #[serde(rename = "additionalMetricsToRetainV2")]
8616    #[serde(skip_serializing_if = "Option::is_none")]
8617    pub additional_metrics_to_retain_v2: Option<Vec<MetricToRetain>>,
8618    /// <p>Where the alerts are sent. (Alerts are always sent to the console.)</p>
8619    #[serde(rename = "alertTargets")]
8620    #[serde(skip_serializing_if = "Option::is_none")]
8621    pub alert_targets: Option<::std::collections::HashMap<String, AlertTarget>>,
8622    /// <p>Specifies the behaviors that, when violated by a device (thing), cause an alert.</p>
8623    #[serde(rename = "behaviors")]
8624    #[serde(skip_serializing_if = "Option::is_none")]
8625    pub behaviors: Option<Vec<Behavior>>,
8626    /// <p>The time the security profile was created.</p>
8627    #[serde(rename = "creationDate")]
8628    #[serde(skip_serializing_if = "Option::is_none")]
8629    pub creation_date: Option<f64>,
8630    /// <p>The time the security profile was last modified.</p>
8631    #[serde(rename = "lastModifiedDate")]
8632    #[serde(skip_serializing_if = "Option::is_none")]
8633    pub last_modified_date: Option<f64>,
8634    /// <p>The ARN of the security profile that was updated.</p>
8635    #[serde(rename = "securityProfileArn")]
8636    #[serde(skip_serializing_if = "Option::is_none")]
8637    pub security_profile_arn: Option<String>,
8638    /// <p>The description of the security profile.</p>
8639    #[serde(rename = "securityProfileDescription")]
8640    #[serde(skip_serializing_if = "Option::is_none")]
8641    pub security_profile_description: Option<String>,
8642    /// <p>The name of the security profile that was updated.</p>
8643    #[serde(rename = "securityProfileName")]
8644    #[serde(skip_serializing_if = "Option::is_none")]
8645    pub security_profile_name: Option<String>,
8646    /// <p>The updated version of the security profile.</p>
8647    #[serde(rename = "version")]
8648    #[serde(skip_serializing_if = "Option::is_none")]
8649    pub version: Option<i64>,
8650}
8651
8652#[derive(Clone, Debug, Default, PartialEq, Serialize)]
8653#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
8654pub struct UpdateStreamRequest {
8655    /// <p>The description of the stream.</p>
8656    #[serde(rename = "description")]
8657    #[serde(skip_serializing_if = "Option::is_none")]
8658    pub description: Option<String>,
8659    /// <p>The files associated with the stream.</p>
8660    #[serde(rename = "files")]
8661    #[serde(skip_serializing_if = "Option::is_none")]
8662    pub files: Option<Vec<StreamFile>>,
8663    /// <p>An IAM role that allows the IoT service principal assumes to access your S3 files.</p>
8664    #[serde(rename = "roleArn")]
8665    #[serde(skip_serializing_if = "Option::is_none")]
8666    pub role_arn: Option<String>,
8667    /// <p>The stream ID.</p>
8668    #[serde(rename = "streamId")]
8669    pub stream_id: String,
8670}
8671
8672#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
8673#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8674pub struct UpdateStreamResponse {
8675    /// <p>A description of the stream.</p>
8676    #[serde(rename = "description")]
8677    #[serde(skip_serializing_if = "Option::is_none")]
8678    pub description: Option<String>,
8679    /// <p>The stream ARN.</p>
8680    #[serde(rename = "streamArn")]
8681    #[serde(skip_serializing_if = "Option::is_none")]
8682    pub stream_arn: Option<String>,
8683    /// <p>The stream ID.</p>
8684    #[serde(rename = "streamId")]
8685    #[serde(skip_serializing_if = "Option::is_none")]
8686    pub stream_id: Option<String>,
8687    /// <p>The stream version.</p>
8688    #[serde(rename = "streamVersion")]
8689    #[serde(skip_serializing_if = "Option::is_none")]
8690    pub stream_version: Option<i64>,
8691}
8692
8693#[derive(Clone, Debug, Default, PartialEq, Serialize)]
8694#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
8695pub struct UpdateThingGroupRequest {
8696    /// <p>The expected version of the thing group. If this does not match the version of the thing group being updated, the update will fail.</p>
8697    #[serde(rename = "expectedVersion")]
8698    #[serde(skip_serializing_if = "Option::is_none")]
8699    pub expected_version: Option<i64>,
8700    /// <p>The thing group to update.</p>
8701    #[serde(rename = "thingGroupName")]
8702    pub thing_group_name: String,
8703    /// <p>The thing group properties.</p>
8704    #[serde(rename = "thingGroupProperties")]
8705    pub thing_group_properties: ThingGroupProperties,
8706}
8707
8708#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
8709#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8710pub struct UpdateThingGroupResponse {
8711    /// <p>The version of the updated thing group.</p>
8712    #[serde(rename = "version")]
8713    #[serde(skip_serializing_if = "Option::is_none")]
8714    pub version: Option<i64>,
8715}
8716
8717#[derive(Clone, Debug, Default, PartialEq, Serialize)]
8718#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
8719pub struct UpdateThingGroupsForThingRequest {
8720    /// <p>Override dynamic thing groups with static thing groups when 10-group limit is reached. If a thing belongs to 10 thing groups, and one or more of those groups are dynamic thing groups, adding a thing to a static group removes the thing from the last dynamic group.</p>
8721    #[serde(rename = "overrideDynamicGroups")]
8722    #[serde(skip_serializing_if = "Option::is_none")]
8723    pub override_dynamic_groups: Option<bool>,
8724    /// <p>The groups to which the thing will be added.</p>
8725    #[serde(rename = "thingGroupsToAdd")]
8726    #[serde(skip_serializing_if = "Option::is_none")]
8727    pub thing_groups_to_add: Option<Vec<String>>,
8728    /// <p>The groups from which the thing will be removed.</p>
8729    #[serde(rename = "thingGroupsToRemove")]
8730    #[serde(skip_serializing_if = "Option::is_none")]
8731    pub thing_groups_to_remove: Option<Vec<String>>,
8732    /// <p>The thing whose group memberships will be updated.</p>
8733    #[serde(rename = "thingName")]
8734    #[serde(skip_serializing_if = "Option::is_none")]
8735    pub thing_name: Option<String>,
8736}
8737
8738#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
8739#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8740pub struct UpdateThingGroupsForThingResponse {}
8741
8742/// <p>The input for the UpdateThing operation.</p>
8743#[derive(Clone, Debug, Default, PartialEq, Serialize)]
8744#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
8745pub struct UpdateThingRequest {
8746    /// <p>A list of thing attributes, a JSON string containing name-value pairs. For example:</p> <p> <code>{\"attributes\":{\"name1\":\"value2\"}}</code> </p> <p>This data is used to add new attributes or update existing attributes.</p>
8747    #[serde(rename = "attributePayload")]
8748    #[serde(skip_serializing_if = "Option::is_none")]
8749    pub attribute_payload: Option<AttributePayload>,
8750    /// <p>The expected version of the thing record in the registry. If the version of the record in the registry does not match the expected version specified in the request, the <code>UpdateThing</code> request is rejected with a <code>VersionConflictException</code>.</p>
8751    #[serde(rename = "expectedVersion")]
8752    #[serde(skip_serializing_if = "Option::is_none")]
8753    pub expected_version: Option<i64>,
8754    /// <p>Remove a thing type association. If <b>true</b>, the association is removed.</p>
8755    #[serde(rename = "removeThingType")]
8756    #[serde(skip_serializing_if = "Option::is_none")]
8757    pub remove_thing_type: Option<bool>,
8758    /// <p>The name of the thing to update.</p> <p>You can't change a thing's name. To change a thing's name, you must create a new thing, give it the new name, and then delete the old thing.</p>
8759    #[serde(rename = "thingName")]
8760    pub thing_name: String,
8761    /// <p>The name of the thing type.</p>
8762    #[serde(rename = "thingTypeName")]
8763    #[serde(skip_serializing_if = "Option::is_none")]
8764    pub thing_type_name: Option<String>,
8765}
8766
8767/// <p>The output from the UpdateThing operation.</p>
8768#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
8769#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8770pub struct UpdateThingResponse {}
8771
8772#[derive(Clone, Debug, Default, PartialEq, Serialize)]
8773#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
8774pub struct UpdateTopicRuleDestinationRequest {
8775    /// <p>The ARN of the topic rule destination.</p>
8776    #[serde(rename = "arn")]
8777    pub arn: String,
8778    /// <p><p>The status of the topic rule destination. Valid values are:</p> <dl> <dt>IN<em>PROGRESS</dt> <dd> <p>A topic rule destination was created but has not been confirmed. You can set <code>status</code> to <code>IN</em>PROGRESS</code> by calling <code>UpdateTopicRuleDestination</code>. Calling <code>UpdateTopicRuleDestination</code> causes a new confirmation challenge to be sent to your confirmation endpoint.</p> </dd> <dt>ENABLED</dt> <dd> <p>Confirmation was completed, and traffic to this destination is allowed. You can set <code>status</code> to <code>DISABLED</code> by calling <code>UpdateTopicRuleDestination</code>.</p> </dd> <dt>DISABLED</dt> <dd> <p>Confirmation was completed, and traffic to this destination is not allowed. You can set <code>status</code> to <code>ENABLED</code> by calling <code>UpdateTopicRuleDestination</code>.</p> </dd> <dt>ERROR</dt> <dd> <p>Confirmation could not be completed, for example if the confirmation timed out. You can call <code>GetTopicRuleDestination</code> for details about the error. You can set <code>status</code> to <code>IN_PROGRESS</code> by calling <code>UpdateTopicRuleDestination</code>. Calling <code>UpdateTopicRuleDestination</code> causes a new confirmation challenge to be sent to your confirmation endpoint.</p> </dd> </dl></p>
8779    #[serde(rename = "status")]
8780    pub status: String,
8781}
8782
8783#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
8784#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8785pub struct UpdateTopicRuleDestinationResponse {}
8786
8787#[derive(Clone, Debug, Default, PartialEq, Serialize)]
8788#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
8789pub struct ValidateSecurityProfileBehaviorsRequest {
8790    /// <p>Specifies the behaviors that, when violated by a device (thing), cause an alert.</p>
8791    #[serde(rename = "behaviors")]
8792    pub behaviors: Vec<Behavior>,
8793}
8794
8795#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
8796#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8797pub struct ValidateSecurityProfileBehaviorsResponse {
8798    /// <p>True if the behaviors were valid.</p>
8799    #[serde(rename = "valid")]
8800    #[serde(skip_serializing_if = "Option::is_none")]
8801    pub valid: Option<bool>,
8802    /// <p>The list of any errors found in the behaviors.</p>
8803    #[serde(rename = "validationErrors")]
8804    #[serde(skip_serializing_if = "Option::is_none")]
8805    pub validation_errors: Option<Vec<ValidationError>>,
8806}
8807
8808/// <p>Information about an error found in a behavior specification.</p>
8809#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
8810#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8811pub struct ValidationError {
8812    /// <p>The description of an error found in the behaviors.</p>
8813    #[serde(rename = "errorMessage")]
8814    #[serde(skip_serializing_if = "Option::is_none")]
8815    pub error_message: Option<String>,
8816}
8817
8818/// <p>Information about a Device Defender security profile behavior violation.</p>
8819#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
8820#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8821pub struct ViolationEvent {
8822    /// <p>The behavior which was violated.</p>
8823    #[serde(rename = "behavior")]
8824    #[serde(skip_serializing_if = "Option::is_none")]
8825    pub behavior: Option<Behavior>,
8826    /// <p>The value of the metric (the measurement).</p>
8827    #[serde(rename = "metricValue")]
8828    #[serde(skip_serializing_if = "Option::is_none")]
8829    pub metric_value: Option<MetricValue>,
8830    /// <p>The name of the security profile whose behavior was violated.</p>
8831    #[serde(rename = "securityProfileName")]
8832    #[serde(skip_serializing_if = "Option::is_none")]
8833    pub security_profile_name: Option<String>,
8834    /// <p>The name of the thing responsible for the violation event.</p>
8835    #[serde(rename = "thingName")]
8836    #[serde(skip_serializing_if = "Option::is_none")]
8837    pub thing_name: Option<String>,
8838    /// <p>The time the violation event occurred.</p>
8839    #[serde(rename = "violationEventTime")]
8840    #[serde(skip_serializing_if = "Option::is_none")]
8841    pub violation_event_time: Option<f64>,
8842    /// <p>The type of violation event.</p>
8843    #[serde(rename = "violationEventType")]
8844    #[serde(skip_serializing_if = "Option::is_none")]
8845    pub violation_event_type: Option<String>,
8846    /// <p>The ID of the violation event.</p>
8847    #[serde(rename = "violationId")]
8848    #[serde(skip_serializing_if = "Option::is_none")]
8849    pub violation_id: Option<String>,
8850}
8851
8852/// Errors returned by AcceptCertificateTransfer
8853#[derive(Debug, PartialEq)]
8854pub enum AcceptCertificateTransferError {
8855    /// <p>An unexpected error has occurred.</p>
8856    InternalFailure(String),
8857    /// <p>The request is not valid.</p>
8858    InvalidRequest(String),
8859    /// <p>The specified resource does not exist.</p>
8860    ResourceNotFound(String),
8861    /// <p>The service is temporarily unavailable.</p>
8862    ServiceUnavailable(String),
8863    /// <p>The rate exceeds the limit.</p>
8864    Throttling(String),
8865    /// <p>You can't revert the certificate transfer because the transfer is already complete.</p>
8866    TransferAlreadyCompleted(String),
8867    /// <p>You are not authorized to perform this operation.</p>
8868    Unauthorized(String),
8869}
8870
8871impl AcceptCertificateTransferError {
8872    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<AcceptCertificateTransferError> {
8873        if let Some(err) = proto::json::Error::parse_rest(&res) {
8874            match err.typ.as_str() {
8875                "InternalFailureException" => {
8876                    return RusotoError::Service(AcceptCertificateTransferError::InternalFailure(
8877                        err.msg,
8878                    ))
8879                }
8880                "InvalidRequestException" => {
8881                    return RusotoError::Service(AcceptCertificateTransferError::InvalidRequest(
8882                        err.msg,
8883                    ))
8884                }
8885                "ResourceNotFoundException" => {
8886                    return RusotoError::Service(AcceptCertificateTransferError::ResourceNotFound(
8887                        err.msg,
8888                    ))
8889                }
8890                "ServiceUnavailableException" => {
8891                    return RusotoError::Service(
8892                        AcceptCertificateTransferError::ServiceUnavailable(err.msg),
8893                    )
8894                }
8895                "ThrottlingException" => {
8896                    return RusotoError::Service(AcceptCertificateTransferError::Throttling(
8897                        err.msg,
8898                    ))
8899                }
8900                "TransferAlreadyCompletedException" => {
8901                    return RusotoError::Service(
8902                        AcceptCertificateTransferError::TransferAlreadyCompleted(err.msg),
8903                    )
8904                }
8905                "UnauthorizedException" => {
8906                    return RusotoError::Service(AcceptCertificateTransferError::Unauthorized(
8907                        err.msg,
8908                    ))
8909                }
8910                "ValidationException" => return RusotoError::Validation(err.msg),
8911                _ => {}
8912            }
8913        }
8914        RusotoError::Unknown(res)
8915    }
8916}
8917impl fmt::Display for AcceptCertificateTransferError {
8918    #[allow(unused_variables)]
8919    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8920        match *self {
8921            AcceptCertificateTransferError::InternalFailure(ref cause) => write!(f, "{}", cause),
8922            AcceptCertificateTransferError::InvalidRequest(ref cause) => write!(f, "{}", cause),
8923            AcceptCertificateTransferError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
8924            AcceptCertificateTransferError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
8925            AcceptCertificateTransferError::Throttling(ref cause) => write!(f, "{}", cause),
8926            AcceptCertificateTransferError::TransferAlreadyCompleted(ref cause) => {
8927                write!(f, "{}", cause)
8928            }
8929            AcceptCertificateTransferError::Unauthorized(ref cause) => write!(f, "{}", cause),
8930        }
8931    }
8932}
8933impl Error for AcceptCertificateTransferError {}
8934/// Errors returned by AddThingToBillingGroup
8935#[derive(Debug, PartialEq)]
8936pub enum AddThingToBillingGroupError {
8937    /// <p>An unexpected error has occurred.</p>
8938    InternalFailure(String),
8939    /// <p>The request is not valid.</p>
8940    InvalidRequest(String),
8941    /// <p>The specified resource does not exist.</p>
8942    ResourceNotFound(String),
8943    /// <p>The rate exceeds the limit.</p>
8944    Throttling(String),
8945}
8946
8947impl AddThingToBillingGroupError {
8948    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<AddThingToBillingGroupError> {
8949        if let Some(err) = proto::json::Error::parse_rest(&res) {
8950            match err.typ.as_str() {
8951                "InternalFailureException" => {
8952                    return RusotoError::Service(AddThingToBillingGroupError::InternalFailure(
8953                        err.msg,
8954                    ))
8955                }
8956                "InvalidRequestException" => {
8957                    return RusotoError::Service(AddThingToBillingGroupError::InvalidRequest(
8958                        err.msg,
8959                    ))
8960                }
8961                "ResourceNotFoundException" => {
8962                    return RusotoError::Service(AddThingToBillingGroupError::ResourceNotFound(
8963                        err.msg,
8964                    ))
8965                }
8966                "ThrottlingException" => {
8967                    return RusotoError::Service(AddThingToBillingGroupError::Throttling(err.msg))
8968                }
8969                "ValidationException" => return RusotoError::Validation(err.msg),
8970                _ => {}
8971            }
8972        }
8973        RusotoError::Unknown(res)
8974    }
8975}
8976impl fmt::Display for AddThingToBillingGroupError {
8977    #[allow(unused_variables)]
8978    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8979        match *self {
8980            AddThingToBillingGroupError::InternalFailure(ref cause) => write!(f, "{}", cause),
8981            AddThingToBillingGroupError::InvalidRequest(ref cause) => write!(f, "{}", cause),
8982            AddThingToBillingGroupError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
8983            AddThingToBillingGroupError::Throttling(ref cause) => write!(f, "{}", cause),
8984        }
8985    }
8986}
8987impl Error for AddThingToBillingGroupError {}
8988/// Errors returned by AddThingToThingGroup
8989#[derive(Debug, PartialEq)]
8990pub enum AddThingToThingGroupError {
8991    /// <p>An unexpected error has occurred.</p>
8992    InternalFailure(String),
8993    /// <p>The request is not valid.</p>
8994    InvalidRequest(String),
8995    /// <p>The specified resource does not exist.</p>
8996    ResourceNotFound(String),
8997    /// <p>The rate exceeds the limit.</p>
8998    Throttling(String),
8999}
9000
9001impl AddThingToThingGroupError {
9002    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<AddThingToThingGroupError> {
9003        if let Some(err) = proto::json::Error::parse_rest(&res) {
9004            match err.typ.as_str() {
9005                "InternalFailureException" => {
9006                    return RusotoError::Service(AddThingToThingGroupError::InternalFailure(
9007                        err.msg,
9008                    ))
9009                }
9010                "InvalidRequestException" => {
9011                    return RusotoError::Service(AddThingToThingGroupError::InvalidRequest(err.msg))
9012                }
9013                "ResourceNotFoundException" => {
9014                    return RusotoError::Service(AddThingToThingGroupError::ResourceNotFound(
9015                        err.msg,
9016                    ))
9017                }
9018                "ThrottlingException" => {
9019                    return RusotoError::Service(AddThingToThingGroupError::Throttling(err.msg))
9020                }
9021                "ValidationException" => return RusotoError::Validation(err.msg),
9022                _ => {}
9023            }
9024        }
9025        RusotoError::Unknown(res)
9026    }
9027}
9028impl fmt::Display for AddThingToThingGroupError {
9029    #[allow(unused_variables)]
9030    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9031        match *self {
9032            AddThingToThingGroupError::InternalFailure(ref cause) => write!(f, "{}", cause),
9033            AddThingToThingGroupError::InvalidRequest(ref cause) => write!(f, "{}", cause),
9034            AddThingToThingGroupError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
9035            AddThingToThingGroupError::Throttling(ref cause) => write!(f, "{}", cause),
9036        }
9037    }
9038}
9039impl Error for AddThingToThingGroupError {}
9040/// Errors returned by AssociateTargetsWithJob
9041#[derive(Debug, PartialEq)]
9042pub enum AssociateTargetsWithJobError {
9043    /// <p>The request is not valid.</p>
9044    InvalidRequest(String),
9045    /// <p>A limit has been exceeded.</p>
9046    LimitExceeded(String),
9047    /// <p>The specified resource does not exist.</p>
9048    ResourceNotFound(String),
9049    /// <p>The service is temporarily unavailable.</p>
9050    ServiceUnavailable(String),
9051    /// <p>The rate exceeds the limit.</p>
9052    Throttling(String),
9053}
9054
9055impl AssociateTargetsWithJobError {
9056    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<AssociateTargetsWithJobError> {
9057        if let Some(err) = proto::json::Error::parse_rest(&res) {
9058            match err.typ.as_str() {
9059                "InvalidRequestException" => {
9060                    return RusotoError::Service(AssociateTargetsWithJobError::InvalidRequest(
9061                        err.msg,
9062                    ))
9063                }
9064                "LimitExceededException" => {
9065                    return RusotoError::Service(AssociateTargetsWithJobError::LimitExceeded(
9066                        err.msg,
9067                    ))
9068                }
9069                "ResourceNotFoundException" => {
9070                    return RusotoError::Service(AssociateTargetsWithJobError::ResourceNotFound(
9071                        err.msg,
9072                    ))
9073                }
9074                "ServiceUnavailableException" => {
9075                    return RusotoError::Service(AssociateTargetsWithJobError::ServiceUnavailable(
9076                        err.msg,
9077                    ))
9078                }
9079                "ThrottlingException" => {
9080                    return RusotoError::Service(AssociateTargetsWithJobError::Throttling(err.msg))
9081                }
9082                "ValidationException" => return RusotoError::Validation(err.msg),
9083                _ => {}
9084            }
9085        }
9086        RusotoError::Unknown(res)
9087    }
9088}
9089impl fmt::Display for AssociateTargetsWithJobError {
9090    #[allow(unused_variables)]
9091    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9092        match *self {
9093            AssociateTargetsWithJobError::InvalidRequest(ref cause) => write!(f, "{}", cause),
9094            AssociateTargetsWithJobError::LimitExceeded(ref cause) => write!(f, "{}", cause),
9095            AssociateTargetsWithJobError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
9096            AssociateTargetsWithJobError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
9097            AssociateTargetsWithJobError::Throttling(ref cause) => write!(f, "{}", cause),
9098        }
9099    }
9100}
9101impl Error for AssociateTargetsWithJobError {}
9102/// Errors returned by AttachPolicy
9103#[derive(Debug, PartialEq)]
9104pub enum AttachPolicyError {
9105    /// <p>An unexpected error has occurred.</p>
9106    InternalFailure(String),
9107    /// <p>The request is not valid.</p>
9108    InvalidRequest(String),
9109    /// <p>A limit has been exceeded.</p>
9110    LimitExceeded(String),
9111    /// <p>The specified resource does not exist.</p>
9112    ResourceNotFound(String),
9113    /// <p>The service is temporarily unavailable.</p>
9114    ServiceUnavailable(String),
9115    /// <p>The rate exceeds the limit.</p>
9116    Throttling(String),
9117    /// <p>You are not authorized to perform this operation.</p>
9118    Unauthorized(String),
9119}
9120
9121impl AttachPolicyError {
9122    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<AttachPolicyError> {
9123        if let Some(err) = proto::json::Error::parse_rest(&res) {
9124            match err.typ.as_str() {
9125                "InternalFailureException" => {
9126                    return RusotoError::Service(AttachPolicyError::InternalFailure(err.msg))
9127                }
9128                "InvalidRequestException" => {
9129                    return RusotoError::Service(AttachPolicyError::InvalidRequest(err.msg))
9130                }
9131                "LimitExceededException" => {
9132                    return RusotoError::Service(AttachPolicyError::LimitExceeded(err.msg))
9133                }
9134                "ResourceNotFoundException" => {
9135                    return RusotoError::Service(AttachPolicyError::ResourceNotFound(err.msg))
9136                }
9137                "ServiceUnavailableException" => {
9138                    return RusotoError::Service(AttachPolicyError::ServiceUnavailable(err.msg))
9139                }
9140                "ThrottlingException" => {
9141                    return RusotoError::Service(AttachPolicyError::Throttling(err.msg))
9142                }
9143                "UnauthorizedException" => {
9144                    return RusotoError::Service(AttachPolicyError::Unauthorized(err.msg))
9145                }
9146                "ValidationException" => return RusotoError::Validation(err.msg),
9147                _ => {}
9148            }
9149        }
9150        RusotoError::Unknown(res)
9151    }
9152}
9153impl fmt::Display for AttachPolicyError {
9154    #[allow(unused_variables)]
9155    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9156        match *self {
9157            AttachPolicyError::InternalFailure(ref cause) => write!(f, "{}", cause),
9158            AttachPolicyError::InvalidRequest(ref cause) => write!(f, "{}", cause),
9159            AttachPolicyError::LimitExceeded(ref cause) => write!(f, "{}", cause),
9160            AttachPolicyError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
9161            AttachPolicyError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
9162            AttachPolicyError::Throttling(ref cause) => write!(f, "{}", cause),
9163            AttachPolicyError::Unauthorized(ref cause) => write!(f, "{}", cause),
9164        }
9165    }
9166}
9167impl Error for AttachPolicyError {}
9168/// Errors returned by AttachPrincipalPolicy
9169#[derive(Debug, PartialEq)]
9170pub enum AttachPrincipalPolicyError {
9171    /// <p>An unexpected error has occurred.</p>
9172    InternalFailure(String),
9173    /// <p>The request is not valid.</p>
9174    InvalidRequest(String),
9175    /// <p>A limit has been exceeded.</p>
9176    LimitExceeded(String),
9177    /// <p>The specified resource does not exist.</p>
9178    ResourceNotFound(String),
9179    /// <p>The service is temporarily unavailable.</p>
9180    ServiceUnavailable(String),
9181    /// <p>The rate exceeds the limit.</p>
9182    Throttling(String),
9183    /// <p>You are not authorized to perform this operation.</p>
9184    Unauthorized(String),
9185}
9186
9187impl AttachPrincipalPolicyError {
9188    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<AttachPrincipalPolicyError> {
9189        if let Some(err) = proto::json::Error::parse_rest(&res) {
9190            match err.typ.as_str() {
9191                "InternalFailureException" => {
9192                    return RusotoError::Service(AttachPrincipalPolicyError::InternalFailure(
9193                        err.msg,
9194                    ))
9195                }
9196                "InvalidRequestException" => {
9197                    return RusotoError::Service(AttachPrincipalPolicyError::InvalidRequest(
9198                        err.msg,
9199                    ))
9200                }
9201                "LimitExceededException" => {
9202                    return RusotoError::Service(AttachPrincipalPolicyError::LimitExceeded(err.msg))
9203                }
9204                "ResourceNotFoundException" => {
9205                    return RusotoError::Service(AttachPrincipalPolicyError::ResourceNotFound(
9206                        err.msg,
9207                    ))
9208                }
9209                "ServiceUnavailableException" => {
9210                    return RusotoError::Service(AttachPrincipalPolicyError::ServiceUnavailable(
9211                        err.msg,
9212                    ))
9213                }
9214                "ThrottlingException" => {
9215                    return RusotoError::Service(AttachPrincipalPolicyError::Throttling(err.msg))
9216                }
9217                "UnauthorizedException" => {
9218                    return RusotoError::Service(AttachPrincipalPolicyError::Unauthorized(err.msg))
9219                }
9220                "ValidationException" => return RusotoError::Validation(err.msg),
9221                _ => {}
9222            }
9223        }
9224        RusotoError::Unknown(res)
9225    }
9226}
9227impl fmt::Display for AttachPrincipalPolicyError {
9228    #[allow(unused_variables)]
9229    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9230        match *self {
9231            AttachPrincipalPolicyError::InternalFailure(ref cause) => write!(f, "{}", cause),
9232            AttachPrincipalPolicyError::InvalidRequest(ref cause) => write!(f, "{}", cause),
9233            AttachPrincipalPolicyError::LimitExceeded(ref cause) => write!(f, "{}", cause),
9234            AttachPrincipalPolicyError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
9235            AttachPrincipalPolicyError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
9236            AttachPrincipalPolicyError::Throttling(ref cause) => write!(f, "{}", cause),
9237            AttachPrincipalPolicyError::Unauthorized(ref cause) => write!(f, "{}", cause),
9238        }
9239    }
9240}
9241impl Error for AttachPrincipalPolicyError {}
9242/// Errors returned by AttachSecurityProfile
9243#[derive(Debug, PartialEq)]
9244pub enum AttachSecurityProfileError {
9245    /// <p>An unexpected error has occurred.</p>
9246    InternalFailure(String),
9247    /// <p>The request is not valid.</p>
9248    InvalidRequest(String),
9249    /// <p>A limit has been exceeded.</p>
9250    LimitExceeded(String),
9251    /// <p>The specified resource does not exist.</p>
9252    ResourceNotFound(String),
9253    /// <p>The rate exceeds the limit.</p>
9254    Throttling(String),
9255    /// <p>An exception thrown when the version of an entity specified with the <code>expectedVersion</code> parameter does not match the latest version in the system.</p>
9256    VersionConflict(String),
9257}
9258
9259impl AttachSecurityProfileError {
9260    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<AttachSecurityProfileError> {
9261        if let Some(err) = proto::json::Error::parse_rest(&res) {
9262            match err.typ.as_str() {
9263                "InternalFailureException" => {
9264                    return RusotoError::Service(AttachSecurityProfileError::InternalFailure(
9265                        err.msg,
9266                    ))
9267                }
9268                "InvalidRequestException" => {
9269                    return RusotoError::Service(AttachSecurityProfileError::InvalidRequest(
9270                        err.msg,
9271                    ))
9272                }
9273                "LimitExceededException" => {
9274                    return RusotoError::Service(AttachSecurityProfileError::LimitExceeded(err.msg))
9275                }
9276                "ResourceNotFoundException" => {
9277                    return RusotoError::Service(AttachSecurityProfileError::ResourceNotFound(
9278                        err.msg,
9279                    ))
9280                }
9281                "ThrottlingException" => {
9282                    return RusotoError::Service(AttachSecurityProfileError::Throttling(err.msg))
9283                }
9284                "VersionConflictException" => {
9285                    return RusotoError::Service(AttachSecurityProfileError::VersionConflict(
9286                        err.msg,
9287                    ))
9288                }
9289                "ValidationException" => return RusotoError::Validation(err.msg),
9290                _ => {}
9291            }
9292        }
9293        RusotoError::Unknown(res)
9294    }
9295}
9296impl fmt::Display for AttachSecurityProfileError {
9297    #[allow(unused_variables)]
9298    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9299        match *self {
9300            AttachSecurityProfileError::InternalFailure(ref cause) => write!(f, "{}", cause),
9301            AttachSecurityProfileError::InvalidRequest(ref cause) => write!(f, "{}", cause),
9302            AttachSecurityProfileError::LimitExceeded(ref cause) => write!(f, "{}", cause),
9303            AttachSecurityProfileError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
9304            AttachSecurityProfileError::Throttling(ref cause) => write!(f, "{}", cause),
9305            AttachSecurityProfileError::VersionConflict(ref cause) => write!(f, "{}", cause),
9306        }
9307    }
9308}
9309impl Error for AttachSecurityProfileError {}
9310/// Errors returned by AttachThingPrincipal
9311#[derive(Debug, PartialEq)]
9312pub enum AttachThingPrincipalError {
9313    /// <p>An unexpected error has occurred.</p>
9314    InternalFailure(String),
9315    /// <p>The request is not valid.</p>
9316    InvalidRequest(String),
9317    /// <p>The specified resource does not exist.</p>
9318    ResourceNotFound(String),
9319    /// <p>The service is temporarily unavailable.</p>
9320    ServiceUnavailable(String),
9321    /// <p>The rate exceeds the limit.</p>
9322    Throttling(String),
9323    /// <p>You are not authorized to perform this operation.</p>
9324    Unauthorized(String),
9325}
9326
9327impl AttachThingPrincipalError {
9328    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<AttachThingPrincipalError> {
9329        if let Some(err) = proto::json::Error::parse_rest(&res) {
9330            match err.typ.as_str() {
9331                "InternalFailureException" => {
9332                    return RusotoError::Service(AttachThingPrincipalError::InternalFailure(
9333                        err.msg,
9334                    ))
9335                }
9336                "InvalidRequestException" => {
9337                    return RusotoError::Service(AttachThingPrincipalError::InvalidRequest(err.msg))
9338                }
9339                "ResourceNotFoundException" => {
9340                    return RusotoError::Service(AttachThingPrincipalError::ResourceNotFound(
9341                        err.msg,
9342                    ))
9343                }
9344                "ServiceUnavailableException" => {
9345                    return RusotoError::Service(AttachThingPrincipalError::ServiceUnavailable(
9346                        err.msg,
9347                    ))
9348                }
9349                "ThrottlingException" => {
9350                    return RusotoError::Service(AttachThingPrincipalError::Throttling(err.msg))
9351                }
9352                "UnauthorizedException" => {
9353                    return RusotoError::Service(AttachThingPrincipalError::Unauthorized(err.msg))
9354                }
9355                "ValidationException" => return RusotoError::Validation(err.msg),
9356                _ => {}
9357            }
9358        }
9359        RusotoError::Unknown(res)
9360    }
9361}
9362impl fmt::Display for AttachThingPrincipalError {
9363    #[allow(unused_variables)]
9364    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9365        match *self {
9366            AttachThingPrincipalError::InternalFailure(ref cause) => write!(f, "{}", cause),
9367            AttachThingPrincipalError::InvalidRequest(ref cause) => write!(f, "{}", cause),
9368            AttachThingPrincipalError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
9369            AttachThingPrincipalError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
9370            AttachThingPrincipalError::Throttling(ref cause) => write!(f, "{}", cause),
9371            AttachThingPrincipalError::Unauthorized(ref cause) => write!(f, "{}", cause),
9372        }
9373    }
9374}
9375impl Error for AttachThingPrincipalError {}
9376/// Errors returned by CancelAuditMitigationActionsTask
9377#[derive(Debug, PartialEq)]
9378pub enum CancelAuditMitigationActionsTaskError {
9379    /// <p>An unexpected error has occurred.</p>
9380    InternalFailure(String),
9381    /// <p>The request is not valid.</p>
9382    InvalidRequest(String),
9383    /// <p>The specified resource does not exist.</p>
9384    ResourceNotFound(String),
9385    /// <p>The rate exceeds the limit.</p>
9386    Throttling(String),
9387}
9388
9389impl CancelAuditMitigationActionsTaskError {
9390    pub fn from_response(
9391        res: BufferedHttpResponse,
9392    ) -> RusotoError<CancelAuditMitigationActionsTaskError> {
9393        if let Some(err) = proto::json::Error::parse_rest(&res) {
9394            match err.typ.as_str() {
9395                "InternalFailureException" => {
9396                    return RusotoError::Service(
9397                        CancelAuditMitigationActionsTaskError::InternalFailure(err.msg),
9398                    )
9399                }
9400                "InvalidRequestException" => {
9401                    return RusotoError::Service(
9402                        CancelAuditMitigationActionsTaskError::InvalidRequest(err.msg),
9403                    )
9404                }
9405                "ResourceNotFoundException" => {
9406                    return RusotoError::Service(
9407                        CancelAuditMitigationActionsTaskError::ResourceNotFound(err.msg),
9408                    )
9409                }
9410                "ThrottlingException" => {
9411                    return RusotoError::Service(CancelAuditMitigationActionsTaskError::Throttling(
9412                        err.msg,
9413                    ))
9414                }
9415                "ValidationException" => return RusotoError::Validation(err.msg),
9416                _ => {}
9417            }
9418        }
9419        RusotoError::Unknown(res)
9420    }
9421}
9422impl fmt::Display for CancelAuditMitigationActionsTaskError {
9423    #[allow(unused_variables)]
9424    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9425        match *self {
9426            CancelAuditMitigationActionsTaskError::InternalFailure(ref cause) => {
9427                write!(f, "{}", cause)
9428            }
9429            CancelAuditMitigationActionsTaskError::InvalidRequest(ref cause) => {
9430                write!(f, "{}", cause)
9431            }
9432            CancelAuditMitigationActionsTaskError::ResourceNotFound(ref cause) => {
9433                write!(f, "{}", cause)
9434            }
9435            CancelAuditMitigationActionsTaskError::Throttling(ref cause) => write!(f, "{}", cause),
9436        }
9437    }
9438}
9439impl Error for CancelAuditMitigationActionsTaskError {}
9440/// Errors returned by CancelAuditTask
9441#[derive(Debug, PartialEq)]
9442pub enum CancelAuditTaskError {
9443    /// <p>An unexpected error has occurred.</p>
9444    InternalFailure(String),
9445    /// <p>The request is not valid.</p>
9446    InvalidRequest(String),
9447    /// <p>The specified resource does not exist.</p>
9448    ResourceNotFound(String),
9449    /// <p>The rate exceeds the limit.</p>
9450    Throttling(String),
9451}
9452
9453impl CancelAuditTaskError {
9454    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CancelAuditTaskError> {
9455        if let Some(err) = proto::json::Error::parse_rest(&res) {
9456            match err.typ.as_str() {
9457                "InternalFailureException" => {
9458                    return RusotoError::Service(CancelAuditTaskError::InternalFailure(err.msg))
9459                }
9460                "InvalidRequestException" => {
9461                    return RusotoError::Service(CancelAuditTaskError::InvalidRequest(err.msg))
9462                }
9463                "ResourceNotFoundException" => {
9464                    return RusotoError::Service(CancelAuditTaskError::ResourceNotFound(err.msg))
9465                }
9466                "ThrottlingException" => {
9467                    return RusotoError::Service(CancelAuditTaskError::Throttling(err.msg))
9468                }
9469                "ValidationException" => return RusotoError::Validation(err.msg),
9470                _ => {}
9471            }
9472        }
9473        RusotoError::Unknown(res)
9474    }
9475}
9476impl fmt::Display for CancelAuditTaskError {
9477    #[allow(unused_variables)]
9478    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9479        match *self {
9480            CancelAuditTaskError::InternalFailure(ref cause) => write!(f, "{}", cause),
9481            CancelAuditTaskError::InvalidRequest(ref cause) => write!(f, "{}", cause),
9482            CancelAuditTaskError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
9483            CancelAuditTaskError::Throttling(ref cause) => write!(f, "{}", cause),
9484        }
9485    }
9486}
9487impl Error for CancelAuditTaskError {}
9488/// Errors returned by CancelCertificateTransfer
9489#[derive(Debug, PartialEq)]
9490pub enum CancelCertificateTransferError {
9491    /// <p>An unexpected error has occurred.</p>
9492    InternalFailure(String),
9493    /// <p>The request is not valid.</p>
9494    InvalidRequest(String),
9495    /// <p>The specified resource does not exist.</p>
9496    ResourceNotFound(String),
9497    /// <p>The service is temporarily unavailable.</p>
9498    ServiceUnavailable(String),
9499    /// <p>The rate exceeds the limit.</p>
9500    Throttling(String),
9501    /// <p>You can't revert the certificate transfer because the transfer is already complete.</p>
9502    TransferAlreadyCompleted(String),
9503    /// <p>You are not authorized to perform this operation.</p>
9504    Unauthorized(String),
9505}
9506
9507impl CancelCertificateTransferError {
9508    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CancelCertificateTransferError> {
9509        if let Some(err) = proto::json::Error::parse_rest(&res) {
9510            match err.typ.as_str() {
9511                "InternalFailureException" => {
9512                    return RusotoError::Service(CancelCertificateTransferError::InternalFailure(
9513                        err.msg,
9514                    ))
9515                }
9516                "InvalidRequestException" => {
9517                    return RusotoError::Service(CancelCertificateTransferError::InvalidRequest(
9518                        err.msg,
9519                    ))
9520                }
9521                "ResourceNotFoundException" => {
9522                    return RusotoError::Service(CancelCertificateTransferError::ResourceNotFound(
9523                        err.msg,
9524                    ))
9525                }
9526                "ServiceUnavailableException" => {
9527                    return RusotoError::Service(
9528                        CancelCertificateTransferError::ServiceUnavailable(err.msg),
9529                    )
9530                }
9531                "ThrottlingException" => {
9532                    return RusotoError::Service(CancelCertificateTransferError::Throttling(
9533                        err.msg,
9534                    ))
9535                }
9536                "TransferAlreadyCompletedException" => {
9537                    return RusotoError::Service(
9538                        CancelCertificateTransferError::TransferAlreadyCompleted(err.msg),
9539                    )
9540                }
9541                "UnauthorizedException" => {
9542                    return RusotoError::Service(CancelCertificateTransferError::Unauthorized(
9543                        err.msg,
9544                    ))
9545                }
9546                "ValidationException" => return RusotoError::Validation(err.msg),
9547                _ => {}
9548            }
9549        }
9550        RusotoError::Unknown(res)
9551    }
9552}
9553impl fmt::Display for CancelCertificateTransferError {
9554    #[allow(unused_variables)]
9555    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9556        match *self {
9557            CancelCertificateTransferError::InternalFailure(ref cause) => write!(f, "{}", cause),
9558            CancelCertificateTransferError::InvalidRequest(ref cause) => write!(f, "{}", cause),
9559            CancelCertificateTransferError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
9560            CancelCertificateTransferError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
9561            CancelCertificateTransferError::Throttling(ref cause) => write!(f, "{}", cause),
9562            CancelCertificateTransferError::TransferAlreadyCompleted(ref cause) => {
9563                write!(f, "{}", cause)
9564            }
9565            CancelCertificateTransferError::Unauthorized(ref cause) => write!(f, "{}", cause),
9566        }
9567    }
9568}
9569impl Error for CancelCertificateTransferError {}
9570/// Errors returned by CancelJob
9571#[derive(Debug, PartialEq)]
9572pub enum CancelJobError {
9573    /// <p>The request is not valid.</p>
9574    InvalidRequest(String),
9575    /// <p>The specified resource does not exist.</p>
9576    ResourceNotFound(String),
9577    /// <p>The service is temporarily unavailable.</p>
9578    ServiceUnavailable(String),
9579    /// <p>The rate exceeds the limit.</p>
9580    Throttling(String),
9581}
9582
9583impl CancelJobError {
9584    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CancelJobError> {
9585        if let Some(err) = proto::json::Error::parse_rest(&res) {
9586            match err.typ.as_str() {
9587                "InvalidRequestException" => {
9588                    return RusotoError::Service(CancelJobError::InvalidRequest(err.msg))
9589                }
9590                "ResourceNotFoundException" => {
9591                    return RusotoError::Service(CancelJobError::ResourceNotFound(err.msg))
9592                }
9593                "ServiceUnavailableException" => {
9594                    return RusotoError::Service(CancelJobError::ServiceUnavailable(err.msg))
9595                }
9596                "ThrottlingException" => {
9597                    return RusotoError::Service(CancelJobError::Throttling(err.msg))
9598                }
9599                "ValidationException" => return RusotoError::Validation(err.msg),
9600                _ => {}
9601            }
9602        }
9603        RusotoError::Unknown(res)
9604    }
9605}
9606impl fmt::Display for CancelJobError {
9607    #[allow(unused_variables)]
9608    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9609        match *self {
9610            CancelJobError::InvalidRequest(ref cause) => write!(f, "{}", cause),
9611            CancelJobError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
9612            CancelJobError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
9613            CancelJobError::Throttling(ref cause) => write!(f, "{}", cause),
9614        }
9615    }
9616}
9617impl Error for CancelJobError {}
9618/// Errors returned by CancelJobExecution
9619#[derive(Debug, PartialEq)]
9620pub enum CancelJobExecutionError {
9621    /// <p>The request is not valid.</p>
9622    InvalidRequest(String),
9623    /// <p>An attempt was made to change to an invalid state, for example by deleting a job or a job execution which is "IN_PROGRESS" without setting the <code>force</code> parameter.</p>
9624    InvalidStateTransition(String),
9625    /// <p>The specified resource does not exist.</p>
9626    ResourceNotFound(String),
9627    /// <p>The service is temporarily unavailable.</p>
9628    ServiceUnavailable(String),
9629    /// <p>The rate exceeds the limit.</p>
9630    Throttling(String),
9631    /// <p>An exception thrown when the version of an entity specified with the <code>expectedVersion</code> parameter does not match the latest version in the system.</p>
9632    VersionConflict(String),
9633}
9634
9635impl CancelJobExecutionError {
9636    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CancelJobExecutionError> {
9637        if let Some(err) = proto::json::Error::parse_rest(&res) {
9638            match err.typ.as_str() {
9639                "InvalidRequestException" => {
9640                    return RusotoError::Service(CancelJobExecutionError::InvalidRequest(err.msg))
9641                }
9642                "InvalidStateTransitionException" => {
9643                    return RusotoError::Service(CancelJobExecutionError::InvalidStateTransition(
9644                        err.msg,
9645                    ))
9646                }
9647                "ResourceNotFoundException" => {
9648                    return RusotoError::Service(CancelJobExecutionError::ResourceNotFound(err.msg))
9649                }
9650                "ServiceUnavailableException" => {
9651                    return RusotoError::Service(CancelJobExecutionError::ServiceUnavailable(
9652                        err.msg,
9653                    ))
9654                }
9655                "ThrottlingException" => {
9656                    return RusotoError::Service(CancelJobExecutionError::Throttling(err.msg))
9657                }
9658                "VersionConflictException" => {
9659                    return RusotoError::Service(CancelJobExecutionError::VersionConflict(err.msg))
9660                }
9661                "ValidationException" => return RusotoError::Validation(err.msg),
9662                _ => {}
9663            }
9664        }
9665        RusotoError::Unknown(res)
9666    }
9667}
9668impl fmt::Display for CancelJobExecutionError {
9669    #[allow(unused_variables)]
9670    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9671        match *self {
9672            CancelJobExecutionError::InvalidRequest(ref cause) => write!(f, "{}", cause),
9673            CancelJobExecutionError::InvalidStateTransition(ref cause) => write!(f, "{}", cause),
9674            CancelJobExecutionError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
9675            CancelJobExecutionError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
9676            CancelJobExecutionError::Throttling(ref cause) => write!(f, "{}", cause),
9677            CancelJobExecutionError::VersionConflict(ref cause) => write!(f, "{}", cause),
9678        }
9679    }
9680}
9681impl Error for CancelJobExecutionError {}
9682/// Errors returned by ClearDefaultAuthorizer
9683#[derive(Debug, PartialEq)]
9684pub enum ClearDefaultAuthorizerError {
9685    /// <p>An unexpected error has occurred.</p>
9686    InternalFailure(String),
9687    /// <p>The request is not valid.</p>
9688    InvalidRequest(String),
9689    /// <p>The specified resource does not exist.</p>
9690    ResourceNotFound(String),
9691    /// <p>The service is temporarily unavailable.</p>
9692    ServiceUnavailable(String),
9693    /// <p>The rate exceeds the limit.</p>
9694    Throttling(String),
9695    /// <p>You are not authorized to perform this operation.</p>
9696    Unauthorized(String),
9697}
9698
9699impl ClearDefaultAuthorizerError {
9700    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ClearDefaultAuthorizerError> {
9701        if let Some(err) = proto::json::Error::parse_rest(&res) {
9702            match err.typ.as_str() {
9703                "InternalFailureException" => {
9704                    return RusotoError::Service(ClearDefaultAuthorizerError::InternalFailure(
9705                        err.msg,
9706                    ))
9707                }
9708                "InvalidRequestException" => {
9709                    return RusotoError::Service(ClearDefaultAuthorizerError::InvalidRequest(
9710                        err.msg,
9711                    ))
9712                }
9713                "ResourceNotFoundException" => {
9714                    return RusotoError::Service(ClearDefaultAuthorizerError::ResourceNotFound(
9715                        err.msg,
9716                    ))
9717                }
9718                "ServiceUnavailableException" => {
9719                    return RusotoError::Service(ClearDefaultAuthorizerError::ServiceUnavailable(
9720                        err.msg,
9721                    ))
9722                }
9723                "ThrottlingException" => {
9724                    return RusotoError::Service(ClearDefaultAuthorizerError::Throttling(err.msg))
9725                }
9726                "UnauthorizedException" => {
9727                    return RusotoError::Service(ClearDefaultAuthorizerError::Unauthorized(err.msg))
9728                }
9729                "ValidationException" => return RusotoError::Validation(err.msg),
9730                _ => {}
9731            }
9732        }
9733        RusotoError::Unknown(res)
9734    }
9735}
9736impl fmt::Display for ClearDefaultAuthorizerError {
9737    #[allow(unused_variables)]
9738    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9739        match *self {
9740            ClearDefaultAuthorizerError::InternalFailure(ref cause) => write!(f, "{}", cause),
9741            ClearDefaultAuthorizerError::InvalidRequest(ref cause) => write!(f, "{}", cause),
9742            ClearDefaultAuthorizerError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
9743            ClearDefaultAuthorizerError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
9744            ClearDefaultAuthorizerError::Throttling(ref cause) => write!(f, "{}", cause),
9745            ClearDefaultAuthorizerError::Unauthorized(ref cause) => write!(f, "{}", cause),
9746        }
9747    }
9748}
9749impl Error for ClearDefaultAuthorizerError {}
9750/// Errors returned by ConfirmTopicRuleDestination
9751#[derive(Debug, PartialEq)]
9752pub enum ConfirmTopicRuleDestinationError {
9753    /// <p>A conflicting resource update exception. This exception is thrown when two pending updates cause a conflict.</p>
9754    ConflictingResourceUpdate(String),
9755    /// <p>An unexpected error has occurred.</p>
9756    Internal(String),
9757    /// <p>The request is not valid.</p>
9758    InvalidRequest(String),
9759    /// <p>The service is temporarily unavailable.</p>
9760    ServiceUnavailable(String),
9761    /// <p>You are not authorized to perform this operation.</p>
9762    Unauthorized(String),
9763}
9764
9765impl ConfirmTopicRuleDestinationError {
9766    pub fn from_response(
9767        res: BufferedHttpResponse,
9768    ) -> RusotoError<ConfirmTopicRuleDestinationError> {
9769        if let Some(err) = proto::json::Error::parse_rest(&res) {
9770            match err.typ.as_str() {
9771                "ConflictingResourceUpdateException" => {
9772                    return RusotoError::Service(
9773                        ConfirmTopicRuleDestinationError::ConflictingResourceUpdate(err.msg),
9774                    )
9775                }
9776                "InternalException" => {
9777                    return RusotoError::Service(ConfirmTopicRuleDestinationError::Internal(
9778                        err.msg,
9779                    ))
9780                }
9781                "InvalidRequestException" => {
9782                    return RusotoError::Service(ConfirmTopicRuleDestinationError::InvalidRequest(
9783                        err.msg,
9784                    ))
9785                }
9786                "ServiceUnavailableException" => {
9787                    return RusotoError::Service(
9788                        ConfirmTopicRuleDestinationError::ServiceUnavailable(err.msg),
9789                    )
9790                }
9791                "UnauthorizedException" => {
9792                    return RusotoError::Service(ConfirmTopicRuleDestinationError::Unauthorized(
9793                        err.msg,
9794                    ))
9795                }
9796                "ValidationException" => return RusotoError::Validation(err.msg),
9797                _ => {}
9798            }
9799        }
9800        RusotoError::Unknown(res)
9801    }
9802}
9803impl fmt::Display for ConfirmTopicRuleDestinationError {
9804    #[allow(unused_variables)]
9805    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9806        match *self {
9807            ConfirmTopicRuleDestinationError::ConflictingResourceUpdate(ref cause) => {
9808                write!(f, "{}", cause)
9809            }
9810            ConfirmTopicRuleDestinationError::Internal(ref cause) => write!(f, "{}", cause),
9811            ConfirmTopicRuleDestinationError::InvalidRequest(ref cause) => write!(f, "{}", cause),
9812            ConfirmTopicRuleDestinationError::ServiceUnavailable(ref cause) => {
9813                write!(f, "{}", cause)
9814            }
9815            ConfirmTopicRuleDestinationError::Unauthorized(ref cause) => write!(f, "{}", cause),
9816        }
9817    }
9818}
9819impl Error for ConfirmTopicRuleDestinationError {}
9820/// Errors returned by CreateAuthorizer
9821#[derive(Debug, PartialEq)]
9822pub enum CreateAuthorizerError {
9823    /// <p>An unexpected error has occurred.</p>
9824    InternalFailure(String),
9825    /// <p>The request is not valid.</p>
9826    InvalidRequest(String),
9827    /// <p>A limit has been exceeded.</p>
9828    LimitExceeded(String),
9829    /// <p>The resource already exists.</p>
9830    ResourceAlreadyExists(String),
9831    /// <p>The service is temporarily unavailable.</p>
9832    ServiceUnavailable(String),
9833    /// <p>The rate exceeds the limit.</p>
9834    Throttling(String),
9835    /// <p>You are not authorized to perform this operation.</p>
9836    Unauthorized(String),
9837}
9838
9839impl CreateAuthorizerError {
9840    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateAuthorizerError> {
9841        if let Some(err) = proto::json::Error::parse_rest(&res) {
9842            match err.typ.as_str() {
9843                "InternalFailureException" => {
9844                    return RusotoError::Service(CreateAuthorizerError::InternalFailure(err.msg))
9845                }
9846                "InvalidRequestException" => {
9847                    return RusotoError::Service(CreateAuthorizerError::InvalidRequest(err.msg))
9848                }
9849                "LimitExceededException" => {
9850                    return RusotoError::Service(CreateAuthorizerError::LimitExceeded(err.msg))
9851                }
9852                "ResourceAlreadyExistsException" => {
9853                    return RusotoError::Service(CreateAuthorizerError::ResourceAlreadyExists(
9854                        err.msg,
9855                    ))
9856                }
9857                "ServiceUnavailableException" => {
9858                    return RusotoError::Service(CreateAuthorizerError::ServiceUnavailable(err.msg))
9859                }
9860                "ThrottlingException" => {
9861                    return RusotoError::Service(CreateAuthorizerError::Throttling(err.msg))
9862                }
9863                "UnauthorizedException" => {
9864                    return RusotoError::Service(CreateAuthorizerError::Unauthorized(err.msg))
9865                }
9866                "ValidationException" => return RusotoError::Validation(err.msg),
9867                _ => {}
9868            }
9869        }
9870        RusotoError::Unknown(res)
9871    }
9872}
9873impl fmt::Display for CreateAuthorizerError {
9874    #[allow(unused_variables)]
9875    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9876        match *self {
9877            CreateAuthorizerError::InternalFailure(ref cause) => write!(f, "{}", cause),
9878            CreateAuthorizerError::InvalidRequest(ref cause) => write!(f, "{}", cause),
9879            CreateAuthorizerError::LimitExceeded(ref cause) => write!(f, "{}", cause),
9880            CreateAuthorizerError::ResourceAlreadyExists(ref cause) => write!(f, "{}", cause),
9881            CreateAuthorizerError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
9882            CreateAuthorizerError::Throttling(ref cause) => write!(f, "{}", cause),
9883            CreateAuthorizerError::Unauthorized(ref cause) => write!(f, "{}", cause),
9884        }
9885    }
9886}
9887impl Error for CreateAuthorizerError {}
9888/// Errors returned by CreateBillingGroup
9889#[derive(Debug, PartialEq)]
9890pub enum CreateBillingGroupError {
9891    /// <p>An unexpected error has occurred.</p>
9892    InternalFailure(String),
9893    /// <p>The request is not valid.</p>
9894    InvalidRequest(String),
9895    /// <p>The resource already exists.</p>
9896    ResourceAlreadyExists(String),
9897    /// <p>The rate exceeds the limit.</p>
9898    Throttling(String),
9899}
9900
9901impl CreateBillingGroupError {
9902    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateBillingGroupError> {
9903        if let Some(err) = proto::json::Error::parse_rest(&res) {
9904            match err.typ.as_str() {
9905                "InternalFailureException" => {
9906                    return RusotoError::Service(CreateBillingGroupError::InternalFailure(err.msg))
9907                }
9908                "InvalidRequestException" => {
9909                    return RusotoError::Service(CreateBillingGroupError::InvalidRequest(err.msg))
9910                }
9911                "ResourceAlreadyExistsException" => {
9912                    return RusotoError::Service(CreateBillingGroupError::ResourceAlreadyExists(
9913                        err.msg,
9914                    ))
9915                }
9916                "ThrottlingException" => {
9917                    return RusotoError::Service(CreateBillingGroupError::Throttling(err.msg))
9918                }
9919                "ValidationException" => return RusotoError::Validation(err.msg),
9920                _ => {}
9921            }
9922        }
9923        RusotoError::Unknown(res)
9924    }
9925}
9926impl fmt::Display for CreateBillingGroupError {
9927    #[allow(unused_variables)]
9928    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9929        match *self {
9930            CreateBillingGroupError::InternalFailure(ref cause) => write!(f, "{}", cause),
9931            CreateBillingGroupError::InvalidRequest(ref cause) => write!(f, "{}", cause),
9932            CreateBillingGroupError::ResourceAlreadyExists(ref cause) => write!(f, "{}", cause),
9933            CreateBillingGroupError::Throttling(ref cause) => write!(f, "{}", cause),
9934        }
9935    }
9936}
9937impl Error for CreateBillingGroupError {}
9938/// Errors returned by CreateCertificateFromCsr
9939#[derive(Debug, PartialEq)]
9940pub enum CreateCertificateFromCsrError {
9941    /// <p>An unexpected error has occurred.</p>
9942    InternalFailure(String),
9943    /// <p>The request is not valid.</p>
9944    InvalidRequest(String),
9945    /// <p>The service is temporarily unavailable.</p>
9946    ServiceUnavailable(String),
9947    /// <p>The rate exceeds the limit.</p>
9948    Throttling(String),
9949    /// <p>You are not authorized to perform this operation.</p>
9950    Unauthorized(String),
9951}
9952
9953impl CreateCertificateFromCsrError {
9954    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateCertificateFromCsrError> {
9955        if let Some(err) = proto::json::Error::parse_rest(&res) {
9956            match err.typ.as_str() {
9957                "InternalFailureException" => {
9958                    return RusotoError::Service(CreateCertificateFromCsrError::InternalFailure(
9959                        err.msg,
9960                    ))
9961                }
9962                "InvalidRequestException" => {
9963                    return RusotoError::Service(CreateCertificateFromCsrError::InvalidRequest(
9964                        err.msg,
9965                    ))
9966                }
9967                "ServiceUnavailableException" => {
9968                    return RusotoError::Service(CreateCertificateFromCsrError::ServiceUnavailable(
9969                        err.msg,
9970                    ))
9971                }
9972                "ThrottlingException" => {
9973                    return RusotoError::Service(CreateCertificateFromCsrError::Throttling(err.msg))
9974                }
9975                "UnauthorizedException" => {
9976                    return RusotoError::Service(CreateCertificateFromCsrError::Unauthorized(
9977                        err.msg,
9978                    ))
9979                }
9980                "ValidationException" => return RusotoError::Validation(err.msg),
9981                _ => {}
9982            }
9983        }
9984        RusotoError::Unknown(res)
9985    }
9986}
9987impl fmt::Display for CreateCertificateFromCsrError {
9988    #[allow(unused_variables)]
9989    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9990        match *self {
9991            CreateCertificateFromCsrError::InternalFailure(ref cause) => write!(f, "{}", cause),
9992            CreateCertificateFromCsrError::InvalidRequest(ref cause) => write!(f, "{}", cause),
9993            CreateCertificateFromCsrError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
9994            CreateCertificateFromCsrError::Throttling(ref cause) => write!(f, "{}", cause),
9995            CreateCertificateFromCsrError::Unauthorized(ref cause) => write!(f, "{}", cause),
9996        }
9997    }
9998}
9999impl Error for CreateCertificateFromCsrError {}
10000/// Errors returned by CreateDimension
10001#[derive(Debug, PartialEq)]
10002pub enum CreateDimensionError {
10003    /// <p>An unexpected error has occurred.</p>
10004    InternalFailure(String),
10005    /// <p>The request is not valid.</p>
10006    InvalidRequest(String),
10007    /// <p>A limit has been exceeded.</p>
10008    LimitExceeded(String),
10009    /// <p>The resource already exists.</p>
10010    ResourceAlreadyExists(String),
10011    /// <p>The rate exceeds the limit.</p>
10012    Throttling(String),
10013}
10014
10015impl CreateDimensionError {
10016    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateDimensionError> {
10017        if let Some(err) = proto::json::Error::parse_rest(&res) {
10018            match err.typ.as_str() {
10019                "InternalFailureException" => {
10020                    return RusotoError::Service(CreateDimensionError::InternalFailure(err.msg))
10021                }
10022                "InvalidRequestException" => {
10023                    return RusotoError::Service(CreateDimensionError::InvalidRequest(err.msg))
10024                }
10025                "LimitExceededException" => {
10026                    return RusotoError::Service(CreateDimensionError::LimitExceeded(err.msg))
10027                }
10028                "ResourceAlreadyExistsException" => {
10029                    return RusotoError::Service(CreateDimensionError::ResourceAlreadyExists(
10030                        err.msg,
10031                    ))
10032                }
10033                "ThrottlingException" => {
10034                    return RusotoError::Service(CreateDimensionError::Throttling(err.msg))
10035                }
10036                "ValidationException" => return RusotoError::Validation(err.msg),
10037                _ => {}
10038            }
10039        }
10040        RusotoError::Unknown(res)
10041    }
10042}
10043impl fmt::Display for CreateDimensionError {
10044    #[allow(unused_variables)]
10045    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10046        match *self {
10047            CreateDimensionError::InternalFailure(ref cause) => write!(f, "{}", cause),
10048            CreateDimensionError::InvalidRequest(ref cause) => write!(f, "{}", cause),
10049            CreateDimensionError::LimitExceeded(ref cause) => write!(f, "{}", cause),
10050            CreateDimensionError::ResourceAlreadyExists(ref cause) => write!(f, "{}", cause),
10051            CreateDimensionError::Throttling(ref cause) => write!(f, "{}", cause),
10052        }
10053    }
10054}
10055impl Error for CreateDimensionError {}
10056/// Errors returned by CreateDomainConfiguration
10057#[derive(Debug, PartialEq)]
10058pub enum CreateDomainConfigurationError {
10059    /// <p>The certificate is invalid.</p>
10060    CertificateValidation(String),
10061    /// <p>An unexpected error has occurred.</p>
10062    InternalFailure(String),
10063    /// <p>The request is not valid.</p>
10064    InvalidRequest(String),
10065    /// <p>A limit has been exceeded.</p>
10066    LimitExceeded(String),
10067    /// <p>The resource already exists.</p>
10068    ResourceAlreadyExists(String),
10069    /// <p>The service is temporarily unavailable.</p>
10070    ServiceUnavailable(String),
10071    /// <p>The rate exceeds the limit.</p>
10072    Throttling(String),
10073    /// <p>You are not authorized to perform this operation.</p>
10074    Unauthorized(String),
10075}
10076
10077impl CreateDomainConfigurationError {
10078    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateDomainConfigurationError> {
10079        if let Some(err) = proto::json::Error::parse_rest(&res) {
10080            match err.typ.as_str() {
10081                "CertificateValidationException" => {
10082                    return RusotoError::Service(
10083                        CreateDomainConfigurationError::CertificateValidation(err.msg),
10084                    )
10085                }
10086                "InternalFailureException" => {
10087                    return RusotoError::Service(CreateDomainConfigurationError::InternalFailure(
10088                        err.msg,
10089                    ))
10090                }
10091                "InvalidRequestException" => {
10092                    return RusotoError::Service(CreateDomainConfigurationError::InvalidRequest(
10093                        err.msg,
10094                    ))
10095                }
10096                "LimitExceededException" => {
10097                    return RusotoError::Service(CreateDomainConfigurationError::LimitExceeded(
10098                        err.msg,
10099                    ))
10100                }
10101                "ResourceAlreadyExistsException" => {
10102                    return RusotoError::Service(
10103                        CreateDomainConfigurationError::ResourceAlreadyExists(err.msg),
10104                    )
10105                }
10106                "ServiceUnavailableException" => {
10107                    return RusotoError::Service(
10108                        CreateDomainConfigurationError::ServiceUnavailable(err.msg),
10109                    )
10110                }
10111                "ThrottlingException" => {
10112                    return RusotoError::Service(CreateDomainConfigurationError::Throttling(
10113                        err.msg,
10114                    ))
10115                }
10116                "UnauthorizedException" => {
10117                    return RusotoError::Service(CreateDomainConfigurationError::Unauthorized(
10118                        err.msg,
10119                    ))
10120                }
10121                "ValidationException" => return RusotoError::Validation(err.msg),
10122                _ => {}
10123            }
10124        }
10125        RusotoError::Unknown(res)
10126    }
10127}
10128impl fmt::Display for CreateDomainConfigurationError {
10129    #[allow(unused_variables)]
10130    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10131        match *self {
10132            CreateDomainConfigurationError::CertificateValidation(ref cause) => {
10133                write!(f, "{}", cause)
10134            }
10135            CreateDomainConfigurationError::InternalFailure(ref cause) => write!(f, "{}", cause),
10136            CreateDomainConfigurationError::InvalidRequest(ref cause) => write!(f, "{}", cause),
10137            CreateDomainConfigurationError::LimitExceeded(ref cause) => write!(f, "{}", cause),
10138            CreateDomainConfigurationError::ResourceAlreadyExists(ref cause) => {
10139                write!(f, "{}", cause)
10140            }
10141            CreateDomainConfigurationError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
10142            CreateDomainConfigurationError::Throttling(ref cause) => write!(f, "{}", cause),
10143            CreateDomainConfigurationError::Unauthorized(ref cause) => write!(f, "{}", cause),
10144        }
10145    }
10146}
10147impl Error for CreateDomainConfigurationError {}
10148/// Errors returned by CreateDynamicThingGroup
10149#[derive(Debug, PartialEq)]
10150pub enum CreateDynamicThingGroupError {
10151    /// <p>An unexpected error has occurred.</p>
10152    InternalFailure(String),
10153    /// <p>The query is invalid.</p>
10154    InvalidQuery(String),
10155    /// <p>The request is not valid.</p>
10156    InvalidRequest(String),
10157    /// <p>A limit has been exceeded.</p>
10158    LimitExceeded(String),
10159    /// <p>The resource already exists.</p>
10160    ResourceAlreadyExists(String),
10161    /// <p>The specified resource does not exist.</p>
10162    ResourceNotFound(String),
10163    /// <p>The rate exceeds the limit.</p>
10164    Throttling(String),
10165}
10166
10167impl CreateDynamicThingGroupError {
10168    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateDynamicThingGroupError> {
10169        if let Some(err) = proto::json::Error::parse_rest(&res) {
10170            match err.typ.as_str() {
10171                "InternalFailureException" => {
10172                    return RusotoError::Service(CreateDynamicThingGroupError::InternalFailure(
10173                        err.msg,
10174                    ))
10175                }
10176                "InvalidQueryException" => {
10177                    return RusotoError::Service(CreateDynamicThingGroupError::InvalidQuery(
10178                        err.msg,
10179                    ))
10180                }
10181                "InvalidRequestException" => {
10182                    return RusotoError::Service(CreateDynamicThingGroupError::InvalidRequest(
10183                        err.msg,
10184                    ))
10185                }
10186                "LimitExceededException" => {
10187                    return RusotoError::Service(CreateDynamicThingGroupError::LimitExceeded(
10188                        err.msg,
10189                    ))
10190                }
10191                "ResourceAlreadyExistsException" => {
10192                    return RusotoError::Service(
10193                        CreateDynamicThingGroupError::ResourceAlreadyExists(err.msg),
10194                    )
10195                }
10196                "ResourceNotFoundException" => {
10197                    return RusotoError::Service(CreateDynamicThingGroupError::ResourceNotFound(
10198                        err.msg,
10199                    ))
10200                }
10201                "ThrottlingException" => {
10202                    return RusotoError::Service(CreateDynamicThingGroupError::Throttling(err.msg))
10203                }
10204                "ValidationException" => return RusotoError::Validation(err.msg),
10205                _ => {}
10206            }
10207        }
10208        RusotoError::Unknown(res)
10209    }
10210}
10211impl fmt::Display for CreateDynamicThingGroupError {
10212    #[allow(unused_variables)]
10213    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10214        match *self {
10215            CreateDynamicThingGroupError::InternalFailure(ref cause) => write!(f, "{}", cause),
10216            CreateDynamicThingGroupError::InvalidQuery(ref cause) => write!(f, "{}", cause),
10217            CreateDynamicThingGroupError::InvalidRequest(ref cause) => write!(f, "{}", cause),
10218            CreateDynamicThingGroupError::LimitExceeded(ref cause) => write!(f, "{}", cause),
10219            CreateDynamicThingGroupError::ResourceAlreadyExists(ref cause) => {
10220                write!(f, "{}", cause)
10221            }
10222            CreateDynamicThingGroupError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
10223            CreateDynamicThingGroupError::Throttling(ref cause) => write!(f, "{}", cause),
10224        }
10225    }
10226}
10227impl Error for CreateDynamicThingGroupError {}
10228/// Errors returned by CreateJob
10229#[derive(Debug, PartialEq)]
10230pub enum CreateJobError {
10231    /// <p>The request is not valid.</p>
10232    InvalidRequest(String),
10233    /// <p>A limit has been exceeded.</p>
10234    LimitExceeded(String),
10235    /// <p>The resource already exists.</p>
10236    ResourceAlreadyExists(String),
10237    /// <p>The specified resource does not exist.</p>
10238    ResourceNotFound(String),
10239    /// <p>The service is temporarily unavailable.</p>
10240    ServiceUnavailable(String),
10241    /// <p>The rate exceeds the limit.</p>
10242    Throttling(String),
10243}
10244
10245impl CreateJobError {
10246    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateJobError> {
10247        if let Some(err) = proto::json::Error::parse_rest(&res) {
10248            match err.typ.as_str() {
10249                "InvalidRequestException" => {
10250                    return RusotoError::Service(CreateJobError::InvalidRequest(err.msg))
10251                }
10252                "LimitExceededException" => {
10253                    return RusotoError::Service(CreateJobError::LimitExceeded(err.msg))
10254                }
10255                "ResourceAlreadyExistsException" => {
10256                    return RusotoError::Service(CreateJobError::ResourceAlreadyExists(err.msg))
10257                }
10258                "ResourceNotFoundException" => {
10259                    return RusotoError::Service(CreateJobError::ResourceNotFound(err.msg))
10260                }
10261                "ServiceUnavailableException" => {
10262                    return RusotoError::Service(CreateJobError::ServiceUnavailable(err.msg))
10263                }
10264                "ThrottlingException" => {
10265                    return RusotoError::Service(CreateJobError::Throttling(err.msg))
10266                }
10267                "ValidationException" => return RusotoError::Validation(err.msg),
10268                _ => {}
10269            }
10270        }
10271        RusotoError::Unknown(res)
10272    }
10273}
10274impl fmt::Display for CreateJobError {
10275    #[allow(unused_variables)]
10276    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10277        match *self {
10278            CreateJobError::InvalidRequest(ref cause) => write!(f, "{}", cause),
10279            CreateJobError::LimitExceeded(ref cause) => write!(f, "{}", cause),
10280            CreateJobError::ResourceAlreadyExists(ref cause) => write!(f, "{}", cause),
10281            CreateJobError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
10282            CreateJobError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
10283            CreateJobError::Throttling(ref cause) => write!(f, "{}", cause),
10284        }
10285    }
10286}
10287impl Error for CreateJobError {}
10288/// Errors returned by CreateKeysAndCertificate
10289#[derive(Debug, PartialEq)]
10290pub enum CreateKeysAndCertificateError {
10291    /// <p>An unexpected error has occurred.</p>
10292    InternalFailure(String),
10293    /// <p>The request is not valid.</p>
10294    InvalidRequest(String),
10295    /// <p>The service is temporarily unavailable.</p>
10296    ServiceUnavailable(String),
10297    /// <p>The rate exceeds the limit.</p>
10298    Throttling(String),
10299    /// <p>You are not authorized to perform this operation.</p>
10300    Unauthorized(String),
10301}
10302
10303impl CreateKeysAndCertificateError {
10304    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateKeysAndCertificateError> {
10305        if let Some(err) = proto::json::Error::parse_rest(&res) {
10306            match err.typ.as_str() {
10307                "InternalFailureException" => {
10308                    return RusotoError::Service(CreateKeysAndCertificateError::InternalFailure(
10309                        err.msg,
10310                    ))
10311                }
10312                "InvalidRequestException" => {
10313                    return RusotoError::Service(CreateKeysAndCertificateError::InvalidRequest(
10314                        err.msg,
10315                    ))
10316                }
10317                "ServiceUnavailableException" => {
10318                    return RusotoError::Service(CreateKeysAndCertificateError::ServiceUnavailable(
10319                        err.msg,
10320                    ))
10321                }
10322                "ThrottlingException" => {
10323                    return RusotoError::Service(CreateKeysAndCertificateError::Throttling(err.msg))
10324                }
10325                "UnauthorizedException" => {
10326                    return RusotoError::Service(CreateKeysAndCertificateError::Unauthorized(
10327                        err.msg,
10328                    ))
10329                }
10330                "ValidationException" => return RusotoError::Validation(err.msg),
10331                _ => {}
10332            }
10333        }
10334        RusotoError::Unknown(res)
10335    }
10336}
10337impl fmt::Display for CreateKeysAndCertificateError {
10338    #[allow(unused_variables)]
10339    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10340        match *self {
10341            CreateKeysAndCertificateError::InternalFailure(ref cause) => write!(f, "{}", cause),
10342            CreateKeysAndCertificateError::InvalidRequest(ref cause) => write!(f, "{}", cause),
10343            CreateKeysAndCertificateError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
10344            CreateKeysAndCertificateError::Throttling(ref cause) => write!(f, "{}", cause),
10345            CreateKeysAndCertificateError::Unauthorized(ref cause) => write!(f, "{}", cause),
10346        }
10347    }
10348}
10349impl Error for CreateKeysAndCertificateError {}
10350/// Errors returned by CreateMitigationAction
10351#[derive(Debug, PartialEq)]
10352pub enum CreateMitigationActionError {
10353    /// <p>An unexpected error has occurred.</p>
10354    InternalFailure(String),
10355    /// <p>The request is not valid.</p>
10356    InvalidRequest(String),
10357    /// <p>A limit has been exceeded.</p>
10358    LimitExceeded(String),
10359    /// <p>The resource already exists.</p>
10360    ResourceAlreadyExists(String),
10361    /// <p>The rate exceeds the limit.</p>
10362    Throttling(String),
10363}
10364
10365impl CreateMitigationActionError {
10366    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateMitigationActionError> {
10367        if let Some(err) = proto::json::Error::parse_rest(&res) {
10368            match err.typ.as_str() {
10369                "InternalFailureException" => {
10370                    return RusotoError::Service(CreateMitigationActionError::InternalFailure(
10371                        err.msg,
10372                    ))
10373                }
10374                "InvalidRequestException" => {
10375                    return RusotoError::Service(CreateMitigationActionError::InvalidRequest(
10376                        err.msg,
10377                    ))
10378                }
10379                "LimitExceededException" => {
10380                    return RusotoError::Service(CreateMitigationActionError::LimitExceeded(
10381                        err.msg,
10382                    ))
10383                }
10384                "ResourceAlreadyExistsException" => {
10385                    return RusotoError::Service(
10386                        CreateMitigationActionError::ResourceAlreadyExists(err.msg),
10387                    )
10388                }
10389                "ThrottlingException" => {
10390                    return RusotoError::Service(CreateMitigationActionError::Throttling(err.msg))
10391                }
10392                "ValidationException" => return RusotoError::Validation(err.msg),
10393                _ => {}
10394            }
10395        }
10396        RusotoError::Unknown(res)
10397    }
10398}
10399impl fmt::Display for CreateMitigationActionError {
10400    #[allow(unused_variables)]
10401    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10402        match *self {
10403            CreateMitigationActionError::InternalFailure(ref cause) => write!(f, "{}", cause),
10404            CreateMitigationActionError::InvalidRequest(ref cause) => write!(f, "{}", cause),
10405            CreateMitigationActionError::LimitExceeded(ref cause) => write!(f, "{}", cause),
10406            CreateMitigationActionError::ResourceAlreadyExists(ref cause) => write!(f, "{}", cause),
10407            CreateMitigationActionError::Throttling(ref cause) => write!(f, "{}", cause),
10408        }
10409    }
10410}
10411impl Error for CreateMitigationActionError {}
10412/// Errors returned by CreateOTAUpdate
10413#[derive(Debug, PartialEq)]
10414pub enum CreateOTAUpdateError {
10415    /// <p>An unexpected error has occurred.</p>
10416    InternalFailure(String),
10417    /// <p>The request is not valid.</p>
10418    InvalidRequest(String),
10419    /// <p>A limit has been exceeded.</p>
10420    LimitExceeded(String),
10421    /// <p>The resource already exists.</p>
10422    ResourceAlreadyExists(String),
10423    /// <p>The specified resource does not exist.</p>
10424    ResourceNotFound(String),
10425    /// <p>The service is temporarily unavailable.</p>
10426    ServiceUnavailable(String),
10427    /// <p>The rate exceeds the limit.</p>
10428    Throttling(String),
10429    /// <p>You are not authorized to perform this operation.</p>
10430    Unauthorized(String),
10431}
10432
10433impl CreateOTAUpdateError {
10434    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateOTAUpdateError> {
10435        if let Some(err) = proto::json::Error::parse_rest(&res) {
10436            match err.typ.as_str() {
10437                "InternalFailureException" => {
10438                    return RusotoError::Service(CreateOTAUpdateError::InternalFailure(err.msg))
10439                }
10440                "InvalidRequestException" => {
10441                    return RusotoError::Service(CreateOTAUpdateError::InvalidRequest(err.msg))
10442                }
10443                "LimitExceededException" => {
10444                    return RusotoError::Service(CreateOTAUpdateError::LimitExceeded(err.msg))
10445                }
10446                "ResourceAlreadyExistsException" => {
10447                    return RusotoError::Service(CreateOTAUpdateError::ResourceAlreadyExists(
10448                        err.msg,
10449                    ))
10450                }
10451                "ResourceNotFoundException" => {
10452                    return RusotoError::Service(CreateOTAUpdateError::ResourceNotFound(err.msg))
10453                }
10454                "ServiceUnavailableException" => {
10455                    return RusotoError::Service(CreateOTAUpdateError::ServiceUnavailable(err.msg))
10456                }
10457                "ThrottlingException" => {
10458                    return RusotoError::Service(CreateOTAUpdateError::Throttling(err.msg))
10459                }
10460                "UnauthorizedException" => {
10461                    return RusotoError::Service(CreateOTAUpdateError::Unauthorized(err.msg))
10462                }
10463                "ValidationException" => return RusotoError::Validation(err.msg),
10464                _ => {}
10465            }
10466        }
10467        RusotoError::Unknown(res)
10468    }
10469}
10470impl fmt::Display for CreateOTAUpdateError {
10471    #[allow(unused_variables)]
10472    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10473        match *self {
10474            CreateOTAUpdateError::InternalFailure(ref cause) => write!(f, "{}", cause),
10475            CreateOTAUpdateError::InvalidRequest(ref cause) => write!(f, "{}", cause),
10476            CreateOTAUpdateError::LimitExceeded(ref cause) => write!(f, "{}", cause),
10477            CreateOTAUpdateError::ResourceAlreadyExists(ref cause) => write!(f, "{}", cause),
10478            CreateOTAUpdateError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
10479            CreateOTAUpdateError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
10480            CreateOTAUpdateError::Throttling(ref cause) => write!(f, "{}", cause),
10481            CreateOTAUpdateError::Unauthorized(ref cause) => write!(f, "{}", cause),
10482        }
10483    }
10484}
10485impl Error for CreateOTAUpdateError {}
10486/// Errors returned by CreatePolicy
10487#[derive(Debug, PartialEq)]
10488pub enum CreatePolicyError {
10489    /// <p>An unexpected error has occurred.</p>
10490    InternalFailure(String),
10491    /// <p>The request is not valid.</p>
10492    InvalidRequest(String),
10493    /// <p>The policy documentation is not valid.</p>
10494    MalformedPolicy(String),
10495    /// <p>The resource already exists.</p>
10496    ResourceAlreadyExists(String),
10497    /// <p>The service is temporarily unavailable.</p>
10498    ServiceUnavailable(String),
10499    /// <p>The rate exceeds the limit.</p>
10500    Throttling(String),
10501    /// <p>You are not authorized to perform this operation.</p>
10502    Unauthorized(String),
10503}
10504
10505impl CreatePolicyError {
10506    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreatePolicyError> {
10507        if let Some(err) = proto::json::Error::parse_rest(&res) {
10508            match err.typ.as_str() {
10509                "InternalFailureException" => {
10510                    return RusotoError::Service(CreatePolicyError::InternalFailure(err.msg))
10511                }
10512                "InvalidRequestException" => {
10513                    return RusotoError::Service(CreatePolicyError::InvalidRequest(err.msg))
10514                }
10515                "MalformedPolicyException" => {
10516                    return RusotoError::Service(CreatePolicyError::MalformedPolicy(err.msg))
10517                }
10518                "ResourceAlreadyExistsException" => {
10519                    return RusotoError::Service(CreatePolicyError::ResourceAlreadyExists(err.msg))
10520                }
10521                "ServiceUnavailableException" => {
10522                    return RusotoError::Service(CreatePolicyError::ServiceUnavailable(err.msg))
10523                }
10524                "ThrottlingException" => {
10525                    return RusotoError::Service(CreatePolicyError::Throttling(err.msg))
10526                }
10527                "UnauthorizedException" => {
10528                    return RusotoError::Service(CreatePolicyError::Unauthorized(err.msg))
10529                }
10530                "ValidationException" => return RusotoError::Validation(err.msg),
10531                _ => {}
10532            }
10533        }
10534        RusotoError::Unknown(res)
10535    }
10536}
10537impl fmt::Display for CreatePolicyError {
10538    #[allow(unused_variables)]
10539    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10540        match *self {
10541            CreatePolicyError::InternalFailure(ref cause) => write!(f, "{}", cause),
10542            CreatePolicyError::InvalidRequest(ref cause) => write!(f, "{}", cause),
10543            CreatePolicyError::MalformedPolicy(ref cause) => write!(f, "{}", cause),
10544            CreatePolicyError::ResourceAlreadyExists(ref cause) => write!(f, "{}", cause),
10545            CreatePolicyError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
10546            CreatePolicyError::Throttling(ref cause) => write!(f, "{}", cause),
10547            CreatePolicyError::Unauthorized(ref cause) => write!(f, "{}", cause),
10548        }
10549    }
10550}
10551impl Error for CreatePolicyError {}
10552/// Errors returned by CreatePolicyVersion
10553#[derive(Debug, PartialEq)]
10554pub enum CreatePolicyVersionError {
10555    /// <p>An unexpected error has occurred.</p>
10556    InternalFailure(String),
10557    /// <p>The request is not valid.</p>
10558    InvalidRequest(String),
10559    /// <p>The policy documentation is not valid.</p>
10560    MalformedPolicy(String),
10561    /// <p>The specified resource does not exist.</p>
10562    ResourceNotFound(String),
10563    /// <p>The service is temporarily unavailable.</p>
10564    ServiceUnavailable(String),
10565    /// <p>The rate exceeds the limit.</p>
10566    Throttling(String),
10567    /// <p>You are not authorized to perform this operation.</p>
10568    Unauthorized(String),
10569    /// <p>The number of policy versions exceeds the limit.</p>
10570    VersionsLimitExceeded(String),
10571}
10572
10573impl CreatePolicyVersionError {
10574    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreatePolicyVersionError> {
10575        if let Some(err) = proto::json::Error::parse_rest(&res) {
10576            match err.typ.as_str() {
10577                "InternalFailureException" => {
10578                    return RusotoError::Service(CreatePolicyVersionError::InternalFailure(err.msg))
10579                }
10580                "InvalidRequestException" => {
10581                    return RusotoError::Service(CreatePolicyVersionError::InvalidRequest(err.msg))
10582                }
10583                "MalformedPolicyException" => {
10584                    return RusotoError::Service(CreatePolicyVersionError::MalformedPolicy(err.msg))
10585                }
10586                "ResourceNotFoundException" => {
10587                    return RusotoError::Service(CreatePolicyVersionError::ResourceNotFound(
10588                        err.msg,
10589                    ))
10590                }
10591                "ServiceUnavailableException" => {
10592                    return RusotoError::Service(CreatePolicyVersionError::ServiceUnavailable(
10593                        err.msg,
10594                    ))
10595                }
10596                "ThrottlingException" => {
10597                    return RusotoError::Service(CreatePolicyVersionError::Throttling(err.msg))
10598                }
10599                "UnauthorizedException" => {
10600                    return RusotoError::Service(CreatePolicyVersionError::Unauthorized(err.msg))
10601                }
10602                "VersionsLimitExceededException" => {
10603                    return RusotoError::Service(CreatePolicyVersionError::VersionsLimitExceeded(
10604                        err.msg,
10605                    ))
10606                }
10607                "ValidationException" => return RusotoError::Validation(err.msg),
10608                _ => {}
10609            }
10610        }
10611        RusotoError::Unknown(res)
10612    }
10613}
10614impl fmt::Display for CreatePolicyVersionError {
10615    #[allow(unused_variables)]
10616    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10617        match *self {
10618            CreatePolicyVersionError::InternalFailure(ref cause) => write!(f, "{}", cause),
10619            CreatePolicyVersionError::InvalidRequest(ref cause) => write!(f, "{}", cause),
10620            CreatePolicyVersionError::MalformedPolicy(ref cause) => write!(f, "{}", cause),
10621            CreatePolicyVersionError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
10622            CreatePolicyVersionError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
10623            CreatePolicyVersionError::Throttling(ref cause) => write!(f, "{}", cause),
10624            CreatePolicyVersionError::Unauthorized(ref cause) => write!(f, "{}", cause),
10625            CreatePolicyVersionError::VersionsLimitExceeded(ref cause) => write!(f, "{}", cause),
10626        }
10627    }
10628}
10629impl Error for CreatePolicyVersionError {}
10630/// Errors returned by CreateProvisioningClaim
10631#[derive(Debug, PartialEq)]
10632pub enum CreateProvisioningClaimError {
10633    /// <p>An unexpected error has occurred.</p>
10634    InternalFailure(String),
10635    /// <p>The request is not valid.</p>
10636    InvalidRequest(String),
10637    /// <p>The specified resource does not exist.</p>
10638    ResourceNotFound(String),
10639    /// <p>The service is temporarily unavailable.</p>
10640    ServiceUnavailable(String),
10641    /// <p>The rate exceeds the limit.</p>
10642    Throttling(String),
10643    /// <p>You are not authorized to perform this operation.</p>
10644    Unauthorized(String),
10645}
10646
10647impl CreateProvisioningClaimError {
10648    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateProvisioningClaimError> {
10649        if let Some(err) = proto::json::Error::parse_rest(&res) {
10650            match err.typ.as_str() {
10651                "InternalFailureException" => {
10652                    return RusotoError::Service(CreateProvisioningClaimError::InternalFailure(
10653                        err.msg,
10654                    ))
10655                }
10656                "InvalidRequestException" => {
10657                    return RusotoError::Service(CreateProvisioningClaimError::InvalidRequest(
10658                        err.msg,
10659                    ))
10660                }
10661                "ResourceNotFoundException" => {
10662                    return RusotoError::Service(CreateProvisioningClaimError::ResourceNotFound(
10663                        err.msg,
10664                    ))
10665                }
10666                "ServiceUnavailableException" => {
10667                    return RusotoError::Service(CreateProvisioningClaimError::ServiceUnavailable(
10668                        err.msg,
10669                    ))
10670                }
10671                "ThrottlingException" => {
10672                    return RusotoError::Service(CreateProvisioningClaimError::Throttling(err.msg))
10673                }
10674                "UnauthorizedException" => {
10675                    return RusotoError::Service(CreateProvisioningClaimError::Unauthorized(
10676                        err.msg,
10677                    ))
10678                }
10679                "ValidationException" => return RusotoError::Validation(err.msg),
10680                _ => {}
10681            }
10682        }
10683        RusotoError::Unknown(res)
10684    }
10685}
10686impl fmt::Display for CreateProvisioningClaimError {
10687    #[allow(unused_variables)]
10688    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10689        match *self {
10690            CreateProvisioningClaimError::InternalFailure(ref cause) => write!(f, "{}", cause),
10691            CreateProvisioningClaimError::InvalidRequest(ref cause) => write!(f, "{}", cause),
10692            CreateProvisioningClaimError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
10693            CreateProvisioningClaimError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
10694            CreateProvisioningClaimError::Throttling(ref cause) => write!(f, "{}", cause),
10695            CreateProvisioningClaimError::Unauthorized(ref cause) => write!(f, "{}", cause),
10696        }
10697    }
10698}
10699impl Error for CreateProvisioningClaimError {}
10700/// Errors returned by CreateProvisioningTemplate
10701#[derive(Debug, PartialEq)]
10702pub enum CreateProvisioningTemplateError {
10703    /// <p>An unexpected error has occurred.</p>
10704    InternalFailure(String),
10705    /// <p>The request is not valid.</p>
10706    InvalidRequest(String),
10707    /// <p>A limit has been exceeded.</p>
10708    LimitExceeded(String),
10709    /// <p>The resource already exists.</p>
10710    ResourceAlreadyExists(String),
10711    /// <p>The rate exceeds the limit.</p>
10712    Throttling(String),
10713    /// <p>You are not authorized to perform this operation.</p>
10714    Unauthorized(String),
10715}
10716
10717impl CreateProvisioningTemplateError {
10718    pub fn from_response(
10719        res: BufferedHttpResponse,
10720    ) -> RusotoError<CreateProvisioningTemplateError> {
10721        if let Some(err) = proto::json::Error::parse_rest(&res) {
10722            match err.typ.as_str() {
10723                "InternalFailureException" => {
10724                    return RusotoError::Service(CreateProvisioningTemplateError::InternalFailure(
10725                        err.msg,
10726                    ))
10727                }
10728                "InvalidRequestException" => {
10729                    return RusotoError::Service(CreateProvisioningTemplateError::InvalidRequest(
10730                        err.msg,
10731                    ))
10732                }
10733                "LimitExceededException" => {
10734                    return RusotoError::Service(CreateProvisioningTemplateError::LimitExceeded(
10735                        err.msg,
10736                    ))
10737                }
10738                "ResourceAlreadyExistsException" => {
10739                    return RusotoError::Service(
10740                        CreateProvisioningTemplateError::ResourceAlreadyExists(err.msg),
10741                    )
10742                }
10743                "ThrottlingException" => {
10744                    return RusotoError::Service(CreateProvisioningTemplateError::Throttling(
10745                        err.msg,
10746                    ))
10747                }
10748                "UnauthorizedException" => {
10749                    return RusotoError::Service(CreateProvisioningTemplateError::Unauthorized(
10750                        err.msg,
10751                    ))
10752                }
10753                "ValidationException" => return RusotoError::Validation(err.msg),
10754                _ => {}
10755            }
10756        }
10757        RusotoError::Unknown(res)
10758    }
10759}
10760impl fmt::Display for CreateProvisioningTemplateError {
10761    #[allow(unused_variables)]
10762    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10763        match *self {
10764            CreateProvisioningTemplateError::InternalFailure(ref cause) => write!(f, "{}", cause),
10765            CreateProvisioningTemplateError::InvalidRequest(ref cause) => write!(f, "{}", cause),
10766            CreateProvisioningTemplateError::LimitExceeded(ref cause) => write!(f, "{}", cause),
10767            CreateProvisioningTemplateError::ResourceAlreadyExists(ref cause) => {
10768                write!(f, "{}", cause)
10769            }
10770            CreateProvisioningTemplateError::Throttling(ref cause) => write!(f, "{}", cause),
10771            CreateProvisioningTemplateError::Unauthorized(ref cause) => write!(f, "{}", cause),
10772        }
10773    }
10774}
10775impl Error for CreateProvisioningTemplateError {}
10776/// Errors returned by CreateProvisioningTemplateVersion
10777#[derive(Debug, PartialEq)]
10778pub enum CreateProvisioningTemplateVersionError {
10779    /// <p>A conflicting resource update exception. This exception is thrown when two pending updates cause a conflict.</p>
10780    ConflictingResourceUpdate(String),
10781    /// <p>An unexpected error has occurred.</p>
10782    InternalFailure(String),
10783    /// <p>The request is not valid.</p>
10784    InvalidRequest(String),
10785    /// <p>The specified resource does not exist.</p>
10786    ResourceNotFound(String),
10787    /// <p>The rate exceeds the limit.</p>
10788    Throttling(String),
10789    /// <p>You are not authorized to perform this operation.</p>
10790    Unauthorized(String),
10791    /// <p>The number of policy versions exceeds the limit.</p>
10792    VersionsLimitExceeded(String),
10793}
10794
10795impl CreateProvisioningTemplateVersionError {
10796    pub fn from_response(
10797        res: BufferedHttpResponse,
10798    ) -> RusotoError<CreateProvisioningTemplateVersionError> {
10799        if let Some(err) = proto::json::Error::parse_rest(&res) {
10800            match err.typ.as_str() {
10801                "ConflictingResourceUpdateException" => {
10802                    return RusotoError::Service(
10803                        CreateProvisioningTemplateVersionError::ConflictingResourceUpdate(err.msg),
10804                    )
10805                }
10806                "InternalFailureException" => {
10807                    return RusotoError::Service(
10808                        CreateProvisioningTemplateVersionError::InternalFailure(err.msg),
10809                    )
10810                }
10811                "InvalidRequestException" => {
10812                    return RusotoError::Service(
10813                        CreateProvisioningTemplateVersionError::InvalidRequest(err.msg),
10814                    )
10815                }
10816                "ResourceNotFoundException" => {
10817                    return RusotoError::Service(
10818                        CreateProvisioningTemplateVersionError::ResourceNotFound(err.msg),
10819                    )
10820                }
10821                "ThrottlingException" => {
10822                    return RusotoError::Service(
10823                        CreateProvisioningTemplateVersionError::Throttling(err.msg),
10824                    )
10825                }
10826                "UnauthorizedException" => {
10827                    return RusotoError::Service(
10828                        CreateProvisioningTemplateVersionError::Unauthorized(err.msg),
10829                    )
10830                }
10831                "VersionsLimitExceededException" => {
10832                    return RusotoError::Service(
10833                        CreateProvisioningTemplateVersionError::VersionsLimitExceeded(err.msg),
10834                    )
10835                }
10836                "ValidationException" => return RusotoError::Validation(err.msg),
10837                _ => {}
10838            }
10839        }
10840        RusotoError::Unknown(res)
10841    }
10842}
10843impl fmt::Display for CreateProvisioningTemplateVersionError {
10844    #[allow(unused_variables)]
10845    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10846        match *self {
10847            CreateProvisioningTemplateVersionError::ConflictingResourceUpdate(ref cause) => {
10848                write!(f, "{}", cause)
10849            }
10850            CreateProvisioningTemplateVersionError::InternalFailure(ref cause) => {
10851                write!(f, "{}", cause)
10852            }
10853            CreateProvisioningTemplateVersionError::InvalidRequest(ref cause) => {
10854                write!(f, "{}", cause)
10855            }
10856            CreateProvisioningTemplateVersionError::ResourceNotFound(ref cause) => {
10857                write!(f, "{}", cause)
10858            }
10859            CreateProvisioningTemplateVersionError::Throttling(ref cause) => write!(f, "{}", cause),
10860            CreateProvisioningTemplateVersionError::Unauthorized(ref cause) => {
10861                write!(f, "{}", cause)
10862            }
10863            CreateProvisioningTemplateVersionError::VersionsLimitExceeded(ref cause) => {
10864                write!(f, "{}", cause)
10865            }
10866        }
10867    }
10868}
10869impl Error for CreateProvisioningTemplateVersionError {}
10870/// Errors returned by CreateRoleAlias
10871#[derive(Debug, PartialEq)]
10872pub enum CreateRoleAliasError {
10873    /// <p>An unexpected error has occurred.</p>
10874    InternalFailure(String),
10875    /// <p>The request is not valid.</p>
10876    InvalidRequest(String),
10877    /// <p>A limit has been exceeded.</p>
10878    LimitExceeded(String),
10879    /// <p>The resource already exists.</p>
10880    ResourceAlreadyExists(String),
10881    /// <p>The service is temporarily unavailable.</p>
10882    ServiceUnavailable(String),
10883    /// <p>The rate exceeds the limit.</p>
10884    Throttling(String),
10885    /// <p>You are not authorized to perform this operation.</p>
10886    Unauthorized(String),
10887}
10888
10889impl CreateRoleAliasError {
10890    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateRoleAliasError> {
10891        if let Some(err) = proto::json::Error::parse_rest(&res) {
10892            match err.typ.as_str() {
10893                "InternalFailureException" => {
10894                    return RusotoError::Service(CreateRoleAliasError::InternalFailure(err.msg))
10895                }
10896                "InvalidRequestException" => {
10897                    return RusotoError::Service(CreateRoleAliasError::InvalidRequest(err.msg))
10898                }
10899                "LimitExceededException" => {
10900                    return RusotoError::Service(CreateRoleAliasError::LimitExceeded(err.msg))
10901                }
10902                "ResourceAlreadyExistsException" => {
10903                    return RusotoError::Service(CreateRoleAliasError::ResourceAlreadyExists(
10904                        err.msg,
10905                    ))
10906                }
10907                "ServiceUnavailableException" => {
10908                    return RusotoError::Service(CreateRoleAliasError::ServiceUnavailable(err.msg))
10909                }
10910                "ThrottlingException" => {
10911                    return RusotoError::Service(CreateRoleAliasError::Throttling(err.msg))
10912                }
10913                "UnauthorizedException" => {
10914                    return RusotoError::Service(CreateRoleAliasError::Unauthorized(err.msg))
10915                }
10916                "ValidationException" => return RusotoError::Validation(err.msg),
10917                _ => {}
10918            }
10919        }
10920        RusotoError::Unknown(res)
10921    }
10922}
10923impl fmt::Display for CreateRoleAliasError {
10924    #[allow(unused_variables)]
10925    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10926        match *self {
10927            CreateRoleAliasError::InternalFailure(ref cause) => write!(f, "{}", cause),
10928            CreateRoleAliasError::InvalidRequest(ref cause) => write!(f, "{}", cause),
10929            CreateRoleAliasError::LimitExceeded(ref cause) => write!(f, "{}", cause),
10930            CreateRoleAliasError::ResourceAlreadyExists(ref cause) => write!(f, "{}", cause),
10931            CreateRoleAliasError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
10932            CreateRoleAliasError::Throttling(ref cause) => write!(f, "{}", cause),
10933            CreateRoleAliasError::Unauthorized(ref cause) => write!(f, "{}", cause),
10934        }
10935    }
10936}
10937impl Error for CreateRoleAliasError {}
10938/// Errors returned by CreateScheduledAudit
10939#[derive(Debug, PartialEq)]
10940pub enum CreateScheduledAuditError {
10941    /// <p>An unexpected error has occurred.</p>
10942    InternalFailure(String),
10943    /// <p>The request is not valid.</p>
10944    InvalidRequest(String),
10945    /// <p>A limit has been exceeded.</p>
10946    LimitExceeded(String),
10947    /// <p>The resource already exists.</p>
10948    ResourceAlreadyExists(String),
10949    /// <p>The rate exceeds the limit.</p>
10950    Throttling(String),
10951}
10952
10953impl CreateScheduledAuditError {
10954    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateScheduledAuditError> {
10955        if let Some(err) = proto::json::Error::parse_rest(&res) {
10956            match err.typ.as_str() {
10957                "InternalFailureException" => {
10958                    return RusotoError::Service(CreateScheduledAuditError::InternalFailure(
10959                        err.msg,
10960                    ))
10961                }
10962                "InvalidRequestException" => {
10963                    return RusotoError::Service(CreateScheduledAuditError::InvalidRequest(err.msg))
10964                }
10965                "LimitExceededException" => {
10966                    return RusotoError::Service(CreateScheduledAuditError::LimitExceeded(err.msg))
10967                }
10968                "ResourceAlreadyExistsException" => {
10969                    return RusotoError::Service(CreateScheduledAuditError::ResourceAlreadyExists(
10970                        err.msg,
10971                    ))
10972                }
10973                "ThrottlingException" => {
10974                    return RusotoError::Service(CreateScheduledAuditError::Throttling(err.msg))
10975                }
10976                "ValidationException" => return RusotoError::Validation(err.msg),
10977                _ => {}
10978            }
10979        }
10980        RusotoError::Unknown(res)
10981    }
10982}
10983impl fmt::Display for CreateScheduledAuditError {
10984    #[allow(unused_variables)]
10985    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10986        match *self {
10987            CreateScheduledAuditError::InternalFailure(ref cause) => write!(f, "{}", cause),
10988            CreateScheduledAuditError::InvalidRequest(ref cause) => write!(f, "{}", cause),
10989            CreateScheduledAuditError::LimitExceeded(ref cause) => write!(f, "{}", cause),
10990            CreateScheduledAuditError::ResourceAlreadyExists(ref cause) => write!(f, "{}", cause),
10991            CreateScheduledAuditError::Throttling(ref cause) => write!(f, "{}", cause),
10992        }
10993    }
10994}
10995impl Error for CreateScheduledAuditError {}
10996/// Errors returned by CreateSecurityProfile
10997#[derive(Debug, PartialEq)]
10998pub enum CreateSecurityProfileError {
10999    /// <p>An unexpected error has occurred.</p>
11000    InternalFailure(String),
11001    /// <p>The request is not valid.</p>
11002    InvalidRequest(String),
11003    /// <p>The resource already exists.</p>
11004    ResourceAlreadyExists(String),
11005    /// <p>The rate exceeds the limit.</p>
11006    Throttling(String),
11007}
11008
11009impl CreateSecurityProfileError {
11010    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateSecurityProfileError> {
11011        if let Some(err) = proto::json::Error::parse_rest(&res) {
11012            match err.typ.as_str() {
11013                "InternalFailureException" => {
11014                    return RusotoError::Service(CreateSecurityProfileError::InternalFailure(
11015                        err.msg,
11016                    ))
11017                }
11018                "InvalidRequestException" => {
11019                    return RusotoError::Service(CreateSecurityProfileError::InvalidRequest(
11020                        err.msg,
11021                    ))
11022                }
11023                "ResourceAlreadyExistsException" => {
11024                    return RusotoError::Service(CreateSecurityProfileError::ResourceAlreadyExists(
11025                        err.msg,
11026                    ))
11027                }
11028                "ThrottlingException" => {
11029                    return RusotoError::Service(CreateSecurityProfileError::Throttling(err.msg))
11030                }
11031                "ValidationException" => return RusotoError::Validation(err.msg),
11032                _ => {}
11033            }
11034        }
11035        RusotoError::Unknown(res)
11036    }
11037}
11038impl fmt::Display for CreateSecurityProfileError {
11039    #[allow(unused_variables)]
11040    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11041        match *self {
11042            CreateSecurityProfileError::InternalFailure(ref cause) => write!(f, "{}", cause),
11043            CreateSecurityProfileError::InvalidRequest(ref cause) => write!(f, "{}", cause),
11044            CreateSecurityProfileError::ResourceAlreadyExists(ref cause) => write!(f, "{}", cause),
11045            CreateSecurityProfileError::Throttling(ref cause) => write!(f, "{}", cause),
11046        }
11047    }
11048}
11049impl Error for CreateSecurityProfileError {}
11050/// Errors returned by CreateStream
11051#[derive(Debug, PartialEq)]
11052pub enum CreateStreamError {
11053    /// <p>An unexpected error has occurred.</p>
11054    InternalFailure(String),
11055    /// <p>The request is not valid.</p>
11056    InvalidRequest(String),
11057    /// <p>A limit has been exceeded.</p>
11058    LimitExceeded(String),
11059    /// <p>The resource already exists.</p>
11060    ResourceAlreadyExists(String),
11061    /// <p>The specified resource does not exist.</p>
11062    ResourceNotFound(String),
11063    /// <p>The service is temporarily unavailable.</p>
11064    ServiceUnavailable(String),
11065    /// <p>The rate exceeds the limit.</p>
11066    Throttling(String),
11067    /// <p>You are not authorized to perform this operation.</p>
11068    Unauthorized(String),
11069}
11070
11071impl CreateStreamError {
11072    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateStreamError> {
11073        if let Some(err) = proto::json::Error::parse_rest(&res) {
11074            match err.typ.as_str() {
11075                "InternalFailureException" => {
11076                    return RusotoError::Service(CreateStreamError::InternalFailure(err.msg))
11077                }
11078                "InvalidRequestException" => {
11079                    return RusotoError::Service(CreateStreamError::InvalidRequest(err.msg))
11080                }
11081                "LimitExceededException" => {
11082                    return RusotoError::Service(CreateStreamError::LimitExceeded(err.msg))
11083                }
11084                "ResourceAlreadyExistsException" => {
11085                    return RusotoError::Service(CreateStreamError::ResourceAlreadyExists(err.msg))
11086                }
11087                "ResourceNotFoundException" => {
11088                    return RusotoError::Service(CreateStreamError::ResourceNotFound(err.msg))
11089                }
11090                "ServiceUnavailableException" => {
11091                    return RusotoError::Service(CreateStreamError::ServiceUnavailable(err.msg))
11092                }
11093                "ThrottlingException" => {
11094                    return RusotoError::Service(CreateStreamError::Throttling(err.msg))
11095                }
11096                "UnauthorizedException" => {
11097                    return RusotoError::Service(CreateStreamError::Unauthorized(err.msg))
11098                }
11099                "ValidationException" => return RusotoError::Validation(err.msg),
11100                _ => {}
11101            }
11102        }
11103        RusotoError::Unknown(res)
11104    }
11105}
11106impl fmt::Display for CreateStreamError {
11107    #[allow(unused_variables)]
11108    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11109        match *self {
11110            CreateStreamError::InternalFailure(ref cause) => write!(f, "{}", cause),
11111            CreateStreamError::InvalidRequest(ref cause) => write!(f, "{}", cause),
11112            CreateStreamError::LimitExceeded(ref cause) => write!(f, "{}", cause),
11113            CreateStreamError::ResourceAlreadyExists(ref cause) => write!(f, "{}", cause),
11114            CreateStreamError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
11115            CreateStreamError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
11116            CreateStreamError::Throttling(ref cause) => write!(f, "{}", cause),
11117            CreateStreamError::Unauthorized(ref cause) => write!(f, "{}", cause),
11118        }
11119    }
11120}
11121impl Error for CreateStreamError {}
11122/// Errors returned by CreateThing
11123#[derive(Debug, PartialEq)]
11124pub enum CreateThingError {
11125    /// <p>An unexpected error has occurred.</p>
11126    InternalFailure(String),
11127    /// <p>The request is not valid.</p>
11128    InvalidRequest(String),
11129    /// <p>The resource already exists.</p>
11130    ResourceAlreadyExists(String),
11131    /// <p>The specified resource does not exist.</p>
11132    ResourceNotFound(String),
11133    /// <p>The service is temporarily unavailable.</p>
11134    ServiceUnavailable(String),
11135    /// <p>The rate exceeds the limit.</p>
11136    Throttling(String),
11137    /// <p>You are not authorized to perform this operation.</p>
11138    Unauthorized(String),
11139}
11140
11141impl CreateThingError {
11142    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateThingError> {
11143        if let Some(err) = proto::json::Error::parse_rest(&res) {
11144            match err.typ.as_str() {
11145                "InternalFailureException" => {
11146                    return RusotoError::Service(CreateThingError::InternalFailure(err.msg))
11147                }
11148                "InvalidRequestException" => {
11149                    return RusotoError::Service(CreateThingError::InvalidRequest(err.msg))
11150                }
11151                "ResourceAlreadyExistsException" => {
11152                    return RusotoError::Service(CreateThingError::ResourceAlreadyExists(err.msg))
11153                }
11154                "ResourceNotFoundException" => {
11155                    return RusotoError::Service(CreateThingError::ResourceNotFound(err.msg))
11156                }
11157                "ServiceUnavailableException" => {
11158                    return RusotoError::Service(CreateThingError::ServiceUnavailable(err.msg))
11159                }
11160                "ThrottlingException" => {
11161                    return RusotoError::Service(CreateThingError::Throttling(err.msg))
11162                }
11163                "UnauthorizedException" => {
11164                    return RusotoError::Service(CreateThingError::Unauthorized(err.msg))
11165                }
11166                "ValidationException" => return RusotoError::Validation(err.msg),
11167                _ => {}
11168            }
11169        }
11170        RusotoError::Unknown(res)
11171    }
11172}
11173impl fmt::Display for CreateThingError {
11174    #[allow(unused_variables)]
11175    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11176        match *self {
11177            CreateThingError::InternalFailure(ref cause) => write!(f, "{}", cause),
11178            CreateThingError::InvalidRequest(ref cause) => write!(f, "{}", cause),
11179            CreateThingError::ResourceAlreadyExists(ref cause) => write!(f, "{}", cause),
11180            CreateThingError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
11181            CreateThingError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
11182            CreateThingError::Throttling(ref cause) => write!(f, "{}", cause),
11183            CreateThingError::Unauthorized(ref cause) => write!(f, "{}", cause),
11184        }
11185    }
11186}
11187impl Error for CreateThingError {}
11188/// Errors returned by CreateThingGroup
11189#[derive(Debug, PartialEq)]
11190pub enum CreateThingGroupError {
11191    /// <p>An unexpected error has occurred.</p>
11192    InternalFailure(String),
11193    /// <p>The request is not valid.</p>
11194    InvalidRequest(String),
11195    /// <p>The resource already exists.</p>
11196    ResourceAlreadyExists(String),
11197    /// <p>The rate exceeds the limit.</p>
11198    Throttling(String),
11199}
11200
11201impl CreateThingGroupError {
11202    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateThingGroupError> {
11203        if let Some(err) = proto::json::Error::parse_rest(&res) {
11204            match err.typ.as_str() {
11205                "InternalFailureException" => {
11206                    return RusotoError::Service(CreateThingGroupError::InternalFailure(err.msg))
11207                }
11208                "InvalidRequestException" => {
11209                    return RusotoError::Service(CreateThingGroupError::InvalidRequest(err.msg))
11210                }
11211                "ResourceAlreadyExistsException" => {
11212                    return RusotoError::Service(CreateThingGroupError::ResourceAlreadyExists(
11213                        err.msg,
11214                    ))
11215                }
11216                "ThrottlingException" => {
11217                    return RusotoError::Service(CreateThingGroupError::Throttling(err.msg))
11218                }
11219                "ValidationException" => return RusotoError::Validation(err.msg),
11220                _ => {}
11221            }
11222        }
11223        RusotoError::Unknown(res)
11224    }
11225}
11226impl fmt::Display for CreateThingGroupError {
11227    #[allow(unused_variables)]
11228    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11229        match *self {
11230            CreateThingGroupError::InternalFailure(ref cause) => write!(f, "{}", cause),
11231            CreateThingGroupError::InvalidRequest(ref cause) => write!(f, "{}", cause),
11232            CreateThingGroupError::ResourceAlreadyExists(ref cause) => write!(f, "{}", cause),
11233            CreateThingGroupError::Throttling(ref cause) => write!(f, "{}", cause),
11234        }
11235    }
11236}
11237impl Error for CreateThingGroupError {}
11238/// Errors returned by CreateThingType
11239#[derive(Debug, PartialEq)]
11240pub enum CreateThingTypeError {
11241    /// <p>An unexpected error has occurred.</p>
11242    InternalFailure(String),
11243    /// <p>The request is not valid.</p>
11244    InvalidRequest(String),
11245    /// <p>The resource already exists.</p>
11246    ResourceAlreadyExists(String),
11247    /// <p>The service is temporarily unavailable.</p>
11248    ServiceUnavailable(String),
11249    /// <p>The rate exceeds the limit.</p>
11250    Throttling(String),
11251    /// <p>You are not authorized to perform this operation.</p>
11252    Unauthorized(String),
11253}
11254
11255impl CreateThingTypeError {
11256    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateThingTypeError> {
11257        if let Some(err) = proto::json::Error::parse_rest(&res) {
11258            match err.typ.as_str() {
11259                "InternalFailureException" => {
11260                    return RusotoError::Service(CreateThingTypeError::InternalFailure(err.msg))
11261                }
11262                "InvalidRequestException" => {
11263                    return RusotoError::Service(CreateThingTypeError::InvalidRequest(err.msg))
11264                }
11265                "ResourceAlreadyExistsException" => {
11266                    return RusotoError::Service(CreateThingTypeError::ResourceAlreadyExists(
11267                        err.msg,
11268                    ))
11269                }
11270                "ServiceUnavailableException" => {
11271                    return RusotoError::Service(CreateThingTypeError::ServiceUnavailable(err.msg))
11272                }
11273                "ThrottlingException" => {
11274                    return RusotoError::Service(CreateThingTypeError::Throttling(err.msg))
11275                }
11276                "UnauthorizedException" => {
11277                    return RusotoError::Service(CreateThingTypeError::Unauthorized(err.msg))
11278                }
11279                "ValidationException" => return RusotoError::Validation(err.msg),
11280                _ => {}
11281            }
11282        }
11283        RusotoError::Unknown(res)
11284    }
11285}
11286impl fmt::Display for CreateThingTypeError {
11287    #[allow(unused_variables)]
11288    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11289        match *self {
11290            CreateThingTypeError::InternalFailure(ref cause) => write!(f, "{}", cause),
11291            CreateThingTypeError::InvalidRequest(ref cause) => write!(f, "{}", cause),
11292            CreateThingTypeError::ResourceAlreadyExists(ref cause) => write!(f, "{}", cause),
11293            CreateThingTypeError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
11294            CreateThingTypeError::Throttling(ref cause) => write!(f, "{}", cause),
11295            CreateThingTypeError::Unauthorized(ref cause) => write!(f, "{}", cause),
11296        }
11297    }
11298}
11299impl Error for CreateThingTypeError {}
11300/// Errors returned by CreateTopicRule
11301#[derive(Debug, PartialEq)]
11302pub enum CreateTopicRuleError {
11303    /// <p>A conflicting resource update exception. This exception is thrown when two pending updates cause a conflict.</p>
11304    ConflictingResourceUpdate(String),
11305    /// <p>An unexpected error has occurred.</p>
11306    Internal(String),
11307    /// <p>The request is not valid.</p>
11308    InvalidRequest(String),
11309    /// <p>The resource already exists.</p>
11310    ResourceAlreadyExists(String),
11311    /// <p>The service is temporarily unavailable.</p>
11312    ServiceUnavailable(String),
11313    /// <p>The Rule-SQL expression can't be parsed correctly.</p>
11314    SqlParse(String),
11315}
11316
11317impl CreateTopicRuleError {
11318    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateTopicRuleError> {
11319        if let Some(err) = proto::json::Error::parse_rest(&res) {
11320            match err.typ.as_str() {
11321                "ConflictingResourceUpdateException" => {
11322                    return RusotoError::Service(CreateTopicRuleError::ConflictingResourceUpdate(
11323                        err.msg,
11324                    ))
11325                }
11326                "InternalException" => {
11327                    return RusotoError::Service(CreateTopicRuleError::Internal(err.msg))
11328                }
11329                "InvalidRequestException" => {
11330                    return RusotoError::Service(CreateTopicRuleError::InvalidRequest(err.msg))
11331                }
11332                "ResourceAlreadyExistsException" => {
11333                    return RusotoError::Service(CreateTopicRuleError::ResourceAlreadyExists(
11334                        err.msg,
11335                    ))
11336                }
11337                "ServiceUnavailableException" => {
11338                    return RusotoError::Service(CreateTopicRuleError::ServiceUnavailable(err.msg))
11339                }
11340                "SqlParseException" => {
11341                    return RusotoError::Service(CreateTopicRuleError::SqlParse(err.msg))
11342                }
11343                "ValidationException" => return RusotoError::Validation(err.msg),
11344                _ => {}
11345            }
11346        }
11347        RusotoError::Unknown(res)
11348    }
11349}
11350impl fmt::Display for CreateTopicRuleError {
11351    #[allow(unused_variables)]
11352    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11353        match *self {
11354            CreateTopicRuleError::ConflictingResourceUpdate(ref cause) => write!(f, "{}", cause),
11355            CreateTopicRuleError::Internal(ref cause) => write!(f, "{}", cause),
11356            CreateTopicRuleError::InvalidRequest(ref cause) => write!(f, "{}", cause),
11357            CreateTopicRuleError::ResourceAlreadyExists(ref cause) => write!(f, "{}", cause),
11358            CreateTopicRuleError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
11359            CreateTopicRuleError::SqlParse(ref cause) => write!(f, "{}", cause),
11360        }
11361    }
11362}
11363impl Error for CreateTopicRuleError {}
11364/// Errors returned by CreateTopicRuleDestination
11365#[derive(Debug, PartialEq)]
11366pub enum CreateTopicRuleDestinationError {
11367    /// <p>A conflicting resource update exception. This exception is thrown when two pending updates cause a conflict.</p>
11368    ConflictingResourceUpdate(String),
11369    /// <p>An unexpected error has occurred.</p>
11370    Internal(String),
11371    /// <p>The request is not valid.</p>
11372    InvalidRequest(String),
11373    /// <p>The resource already exists.</p>
11374    ResourceAlreadyExists(String),
11375    /// <p>The service is temporarily unavailable.</p>
11376    ServiceUnavailable(String),
11377}
11378
11379impl CreateTopicRuleDestinationError {
11380    pub fn from_response(
11381        res: BufferedHttpResponse,
11382    ) -> RusotoError<CreateTopicRuleDestinationError> {
11383        if let Some(err) = proto::json::Error::parse_rest(&res) {
11384            match err.typ.as_str() {
11385                "ConflictingResourceUpdateException" => {
11386                    return RusotoError::Service(
11387                        CreateTopicRuleDestinationError::ConflictingResourceUpdate(err.msg),
11388                    )
11389                }
11390                "InternalException" => {
11391                    return RusotoError::Service(CreateTopicRuleDestinationError::Internal(err.msg))
11392                }
11393                "InvalidRequestException" => {
11394                    return RusotoError::Service(CreateTopicRuleDestinationError::InvalidRequest(
11395                        err.msg,
11396                    ))
11397                }
11398                "ResourceAlreadyExistsException" => {
11399                    return RusotoError::Service(
11400                        CreateTopicRuleDestinationError::ResourceAlreadyExists(err.msg),
11401                    )
11402                }
11403                "ServiceUnavailableException" => {
11404                    return RusotoError::Service(
11405                        CreateTopicRuleDestinationError::ServiceUnavailable(err.msg),
11406                    )
11407                }
11408                "ValidationException" => return RusotoError::Validation(err.msg),
11409                _ => {}
11410            }
11411        }
11412        RusotoError::Unknown(res)
11413    }
11414}
11415impl fmt::Display for CreateTopicRuleDestinationError {
11416    #[allow(unused_variables)]
11417    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11418        match *self {
11419            CreateTopicRuleDestinationError::ConflictingResourceUpdate(ref cause) => {
11420                write!(f, "{}", cause)
11421            }
11422            CreateTopicRuleDestinationError::Internal(ref cause) => write!(f, "{}", cause),
11423            CreateTopicRuleDestinationError::InvalidRequest(ref cause) => write!(f, "{}", cause),
11424            CreateTopicRuleDestinationError::ResourceAlreadyExists(ref cause) => {
11425                write!(f, "{}", cause)
11426            }
11427            CreateTopicRuleDestinationError::ServiceUnavailable(ref cause) => {
11428                write!(f, "{}", cause)
11429            }
11430        }
11431    }
11432}
11433impl Error for CreateTopicRuleDestinationError {}
11434/// Errors returned by DeleteAccountAuditConfiguration
11435#[derive(Debug, PartialEq)]
11436pub enum DeleteAccountAuditConfigurationError {
11437    /// <p>An unexpected error has occurred.</p>
11438    InternalFailure(String),
11439    /// <p>The request is not valid.</p>
11440    InvalidRequest(String),
11441    /// <p>The specified resource does not exist.</p>
11442    ResourceNotFound(String),
11443    /// <p>The rate exceeds the limit.</p>
11444    Throttling(String),
11445}
11446
11447impl DeleteAccountAuditConfigurationError {
11448    pub fn from_response(
11449        res: BufferedHttpResponse,
11450    ) -> RusotoError<DeleteAccountAuditConfigurationError> {
11451        if let Some(err) = proto::json::Error::parse_rest(&res) {
11452            match err.typ.as_str() {
11453                "InternalFailureException" => {
11454                    return RusotoError::Service(
11455                        DeleteAccountAuditConfigurationError::InternalFailure(err.msg),
11456                    )
11457                }
11458                "InvalidRequestException" => {
11459                    return RusotoError::Service(
11460                        DeleteAccountAuditConfigurationError::InvalidRequest(err.msg),
11461                    )
11462                }
11463                "ResourceNotFoundException" => {
11464                    return RusotoError::Service(
11465                        DeleteAccountAuditConfigurationError::ResourceNotFound(err.msg),
11466                    )
11467                }
11468                "ThrottlingException" => {
11469                    return RusotoError::Service(DeleteAccountAuditConfigurationError::Throttling(
11470                        err.msg,
11471                    ))
11472                }
11473                "ValidationException" => return RusotoError::Validation(err.msg),
11474                _ => {}
11475            }
11476        }
11477        RusotoError::Unknown(res)
11478    }
11479}
11480impl fmt::Display for DeleteAccountAuditConfigurationError {
11481    #[allow(unused_variables)]
11482    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11483        match *self {
11484            DeleteAccountAuditConfigurationError::InternalFailure(ref cause) => {
11485                write!(f, "{}", cause)
11486            }
11487            DeleteAccountAuditConfigurationError::InvalidRequest(ref cause) => {
11488                write!(f, "{}", cause)
11489            }
11490            DeleteAccountAuditConfigurationError::ResourceNotFound(ref cause) => {
11491                write!(f, "{}", cause)
11492            }
11493            DeleteAccountAuditConfigurationError::Throttling(ref cause) => write!(f, "{}", cause),
11494        }
11495    }
11496}
11497impl Error for DeleteAccountAuditConfigurationError {}
11498/// Errors returned by DeleteAuthorizer
11499#[derive(Debug, PartialEq)]
11500pub enum DeleteAuthorizerError {
11501    /// <p>You can't delete the resource because it is attached to one or more resources.</p>
11502    DeleteConflict(String),
11503    /// <p>An unexpected error has occurred.</p>
11504    InternalFailure(String),
11505    /// <p>The request is not valid.</p>
11506    InvalidRequest(String),
11507    /// <p>The specified resource does not exist.</p>
11508    ResourceNotFound(String),
11509    /// <p>The service is temporarily unavailable.</p>
11510    ServiceUnavailable(String),
11511    /// <p>The rate exceeds the limit.</p>
11512    Throttling(String),
11513    /// <p>You are not authorized to perform this operation.</p>
11514    Unauthorized(String),
11515}
11516
11517impl DeleteAuthorizerError {
11518    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteAuthorizerError> {
11519        if let Some(err) = proto::json::Error::parse_rest(&res) {
11520            match err.typ.as_str() {
11521                "DeleteConflictException" => {
11522                    return RusotoError::Service(DeleteAuthorizerError::DeleteConflict(err.msg))
11523                }
11524                "InternalFailureException" => {
11525                    return RusotoError::Service(DeleteAuthorizerError::InternalFailure(err.msg))
11526                }
11527                "InvalidRequestException" => {
11528                    return RusotoError::Service(DeleteAuthorizerError::InvalidRequest(err.msg))
11529                }
11530                "ResourceNotFoundException" => {
11531                    return RusotoError::Service(DeleteAuthorizerError::ResourceNotFound(err.msg))
11532                }
11533                "ServiceUnavailableException" => {
11534                    return RusotoError::Service(DeleteAuthorizerError::ServiceUnavailable(err.msg))
11535                }
11536                "ThrottlingException" => {
11537                    return RusotoError::Service(DeleteAuthorizerError::Throttling(err.msg))
11538                }
11539                "UnauthorizedException" => {
11540                    return RusotoError::Service(DeleteAuthorizerError::Unauthorized(err.msg))
11541                }
11542                "ValidationException" => return RusotoError::Validation(err.msg),
11543                _ => {}
11544            }
11545        }
11546        RusotoError::Unknown(res)
11547    }
11548}
11549impl fmt::Display for DeleteAuthorizerError {
11550    #[allow(unused_variables)]
11551    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11552        match *self {
11553            DeleteAuthorizerError::DeleteConflict(ref cause) => write!(f, "{}", cause),
11554            DeleteAuthorizerError::InternalFailure(ref cause) => write!(f, "{}", cause),
11555            DeleteAuthorizerError::InvalidRequest(ref cause) => write!(f, "{}", cause),
11556            DeleteAuthorizerError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
11557            DeleteAuthorizerError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
11558            DeleteAuthorizerError::Throttling(ref cause) => write!(f, "{}", cause),
11559            DeleteAuthorizerError::Unauthorized(ref cause) => write!(f, "{}", cause),
11560        }
11561    }
11562}
11563impl Error for DeleteAuthorizerError {}
11564/// Errors returned by DeleteBillingGroup
11565#[derive(Debug, PartialEq)]
11566pub enum DeleteBillingGroupError {
11567    /// <p>An unexpected error has occurred.</p>
11568    InternalFailure(String),
11569    /// <p>The request is not valid.</p>
11570    InvalidRequest(String),
11571    /// <p>The rate exceeds the limit.</p>
11572    Throttling(String),
11573    /// <p>An exception thrown when the version of an entity specified with the <code>expectedVersion</code> parameter does not match the latest version in the system.</p>
11574    VersionConflict(String),
11575}
11576
11577impl DeleteBillingGroupError {
11578    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteBillingGroupError> {
11579        if let Some(err) = proto::json::Error::parse_rest(&res) {
11580            match err.typ.as_str() {
11581                "InternalFailureException" => {
11582                    return RusotoError::Service(DeleteBillingGroupError::InternalFailure(err.msg))
11583                }
11584                "InvalidRequestException" => {
11585                    return RusotoError::Service(DeleteBillingGroupError::InvalidRequest(err.msg))
11586                }
11587                "ThrottlingException" => {
11588                    return RusotoError::Service(DeleteBillingGroupError::Throttling(err.msg))
11589                }
11590                "VersionConflictException" => {
11591                    return RusotoError::Service(DeleteBillingGroupError::VersionConflict(err.msg))
11592                }
11593                "ValidationException" => return RusotoError::Validation(err.msg),
11594                _ => {}
11595            }
11596        }
11597        RusotoError::Unknown(res)
11598    }
11599}
11600impl fmt::Display for DeleteBillingGroupError {
11601    #[allow(unused_variables)]
11602    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11603        match *self {
11604            DeleteBillingGroupError::InternalFailure(ref cause) => write!(f, "{}", cause),
11605            DeleteBillingGroupError::InvalidRequest(ref cause) => write!(f, "{}", cause),
11606            DeleteBillingGroupError::Throttling(ref cause) => write!(f, "{}", cause),
11607            DeleteBillingGroupError::VersionConflict(ref cause) => write!(f, "{}", cause),
11608        }
11609    }
11610}
11611impl Error for DeleteBillingGroupError {}
11612/// Errors returned by DeleteCACertificate
11613#[derive(Debug, PartialEq)]
11614pub enum DeleteCACertificateError {
11615    /// <p>The certificate operation is not allowed.</p>
11616    CertificateState(String),
11617    /// <p>An unexpected error has occurred.</p>
11618    InternalFailure(String),
11619    /// <p>The request is not valid.</p>
11620    InvalidRequest(String),
11621    /// <p>The specified resource does not exist.</p>
11622    ResourceNotFound(String),
11623    /// <p>The service is temporarily unavailable.</p>
11624    ServiceUnavailable(String),
11625    /// <p>The rate exceeds the limit.</p>
11626    Throttling(String),
11627    /// <p>You are not authorized to perform this operation.</p>
11628    Unauthorized(String),
11629}
11630
11631impl DeleteCACertificateError {
11632    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteCACertificateError> {
11633        if let Some(err) = proto::json::Error::parse_rest(&res) {
11634            match err.typ.as_str() {
11635                "CertificateStateException" => {
11636                    return RusotoError::Service(DeleteCACertificateError::CertificateState(
11637                        err.msg,
11638                    ))
11639                }
11640                "InternalFailureException" => {
11641                    return RusotoError::Service(DeleteCACertificateError::InternalFailure(err.msg))
11642                }
11643                "InvalidRequestException" => {
11644                    return RusotoError::Service(DeleteCACertificateError::InvalidRequest(err.msg))
11645                }
11646                "ResourceNotFoundException" => {
11647                    return RusotoError::Service(DeleteCACertificateError::ResourceNotFound(
11648                        err.msg,
11649                    ))
11650                }
11651                "ServiceUnavailableException" => {
11652                    return RusotoError::Service(DeleteCACertificateError::ServiceUnavailable(
11653                        err.msg,
11654                    ))
11655                }
11656                "ThrottlingException" => {
11657                    return RusotoError::Service(DeleteCACertificateError::Throttling(err.msg))
11658                }
11659                "UnauthorizedException" => {
11660                    return RusotoError::Service(DeleteCACertificateError::Unauthorized(err.msg))
11661                }
11662                "ValidationException" => return RusotoError::Validation(err.msg),
11663                _ => {}
11664            }
11665        }
11666        RusotoError::Unknown(res)
11667    }
11668}
11669impl fmt::Display for DeleteCACertificateError {
11670    #[allow(unused_variables)]
11671    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11672        match *self {
11673            DeleteCACertificateError::CertificateState(ref cause) => write!(f, "{}", cause),
11674            DeleteCACertificateError::InternalFailure(ref cause) => write!(f, "{}", cause),
11675            DeleteCACertificateError::InvalidRequest(ref cause) => write!(f, "{}", cause),
11676            DeleteCACertificateError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
11677            DeleteCACertificateError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
11678            DeleteCACertificateError::Throttling(ref cause) => write!(f, "{}", cause),
11679            DeleteCACertificateError::Unauthorized(ref cause) => write!(f, "{}", cause),
11680        }
11681    }
11682}
11683impl Error for DeleteCACertificateError {}
11684/// Errors returned by DeleteCertificate
11685#[derive(Debug, PartialEq)]
11686pub enum DeleteCertificateError {
11687    /// <p>The certificate operation is not allowed.</p>
11688    CertificateState(String),
11689    /// <p>You can't delete the resource because it is attached to one or more resources.</p>
11690    DeleteConflict(String),
11691    /// <p>An unexpected error has occurred.</p>
11692    InternalFailure(String),
11693    /// <p>The request is not valid.</p>
11694    InvalidRequest(String),
11695    /// <p>The specified resource does not exist.</p>
11696    ResourceNotFound(String),
11697    /// <p>The service is temporarily unavailable.</p>
11698    ServiceUnavailable(String),
11699    /// <p>The rate exceeds the limit.</p>
11700    Throttling(String),
11701    /// <p>You are not authorized to perform this operation.</p>
11702    Unauthorized(String),
11703}
11704
11705impl DeleteCertificateError {
11706    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteCertificateError> {
11707        if let Some(err) = proto::json::Error::parse_rest(&res) {
11708            match err.typ.as_str() {
11709                "CertificateStateException" => {
11710                    return RusotoError::Service(DeleteCertificateError::CertificateState(err.msg))
11711                }
11712                "DeleteConflictException" => {
11713                    return RusotoError::Service(DeleteCertificateError::DeleteConflict(err.msg))
11714                }
11715                "InternalFailureException" => {
11716                    return RusotoError::Service(DeleteCertificateError::InternalFailure(err.msg))
11717                }
11718                "InvalidRequestException" => {
11719                    return RusotoError::Service(DeleteCertificateError::InvalidRequest(err.msg))
11720                }
11721                "ResourceNotFoundException" => {
11722                    return RusotoError::Service(DeleteCertificateError::ResourceNotFound(err.msg))
11723                }
11724                "ServiceUnavailableException" => {
11725                    return RusotoError::Service(DeleteCertificateError::ServiceUnavailable(
11726                        err.msg,
11727                    ))
11728                }
11729                "ThrottlingException" => {
11730                    return RusotoError::Service(DeleteCertificateError::Throttling(err.msg))
11731                }
11732                "UnauthorizedException" => {
11733                    return RusotoError::Service(DeleteCertificateError::Unauthorized(err.msg))
11734                }
11735                "ValidationException" => return RusotoError::Validation(err.msg),
11736                _ => {}
11737            }
11738        }
11739        RusotoError::Unknown(res)
11740    }
11741}
11742impl fmt::Display for DeleteCertificateError {
11743    #[allow(unused_variables)]
11744    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11745        match *self {
11746            DeleteCertificateError::CertificateState(ref cause) => write!(f, "{}", cause),
11747            DeleteCertificateError::DeleteConflict(ref cause) => write!(f, "{}", cause),
11748            DeleteCertificateError::InternalFailure(ref cause) => write!(f, "{}", cause),
11749            DeleteCertificateError::InvalidRequest(ref cause) => write!(f, "{}", cause),
11750            DeleteCertificateError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
11751            DeleteCertificateError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
11752            DeleteCertificateError::Throttling(ref cause) => write!(f, "{}", cause),
11753            DeleteCertificateError::Unauthorized(ref cause) => write!(f, "{}", cause),
11754        }
11755    }
11756}
11757impl Error for DeleteCertificateError {}
11758/// Errors returned by DeleteDimension
11759#[derive(Debug, PartialEq)]
11760pub enum DeleteDimensionError {
11761    /// <p>An unexpected error has occurred.</p>
11762    InternalFailure(String),
11763    /// <p>The request is not valid.</p>
11764    InvalidRequest(String),
11765    /// <p>The rate exceeds the limit.</p>
11766    Throttling(String),
11767}
11768
11769impl DeleteDimensionError {
11770    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteDimensionError> {
11771        if let Some(err) = proto::json::Error::parse_rest(&res) {
11772            match err.typ.as_str() {
11773                "InternalFailureException" => {
11774                    return RusotoError::Service(DeleteDimensionError::InternalFailure(err.msg))
11775                }
11776                "InvalidRequestException" => {
11777                    return RusotoError::Service(DeleteDimensionError::InvalidRequest(err.msg))
11778                }
11779                "ThrottlingException" => {
11780                    return RusotoError::Service(DeleteDimensionError::Throttling(err.msg))
11781                }
11782                "ValidationException" => return RusotoError::Validation(err.msg),
11783                _ => {}
11784            }
11785        }
11786        RusotoError::Unknown(res)
11787    }
11788}
11789impl fmt::Display for DeleteDimensionError {
11790    #[allow(unused_variables)]
11791    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11792        match *self {
11793            DeleteDimensionError::InternalFailure(ref cause) => write!(f, "{}", cause),
11794            DeleteDimensionError::InvalidRequest(ref cause) => write!(f, "{}", cause),
11795            DeleteDimensionError::Throttling(ref cause) => write!(f, "{}", cause),
11796        }
11797    }
11798}
11799impl Error for DeleteDimensionError {}
11800/// Errors returned by DeleteDomainConfiguration
11801#[derive(Debug, PartialEq)]
11802pub enum DeleteDomainConfigurationError {
11803    /// <p>An unexpected error has occurred.</p>
11804    InternalFailure(String),
11805    /// <p>The request is not valid.</p>
11806    InvalidRequest(String),
11807    /// <p>The specified resource does not exist.</p>
11808    ResourceNotFound(String),
11809    /// <p>The service is temporarily unavailable.</p>
11810    ServiceUnavailable(String),
11811    /// <p>The rate exceeds the limit.</p>
11812    Throttling(String),
11813    /// <p>You are not authorized to perform this operation.</p>
11814    Unauthorized(String),
11815}
11816
11817impl DeleteDomainConfigurationError {
11818    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteDomainConfigurationError> {
11819        if let Some(err) = proto::json::Error::parse_rest(&res) {
11820            match err.typ.as_str() {
11821                "InternalFailureException" => {
11822                    return RusotoError::Service(DeleteDomainConfigurationError::InternalFailure(
11823                        err.msg,
11824                    ))
11825                }
11826                "InvalidRequestException" => {
11827                    return RusotoError::Service(DeleteDomainConfigurationError::InvalidRequest(
11828                        err.msg,
11829                    ))
11830                }
11831                "ResourceNotFoundException" => {
11832                    return RusotoError::Service(DeleteDomainConfigurationError::ResourceNotFound(
11833                        err.msg,
11834                    ))
11835                }
11836                "ServiceUnavailableException" => {
11837                    return RusotoError::Service(
11838                        DeleteDomainConfigurationError::ServiceUnavailable(err.msg),
11839                    )
11840                }
11841                "ThrottlingException" => {
11842                    return RusotoError::Service(DeleteDomainConfigurationError::Throttling(
11843                        err.msg,
11844                    ))
11845                }
11846                "UnauthorizedException" => {
11847                    return RusotoError::Service(DeleteDomainConfigurationError::Unauthorized(
11848                        err.msg,
11849                    ))
11850                }
11851                "ValidationException" => return RusotoError::Validation(err.msg),
11852                _ => {}
11853            }
11854        }
11855        RusotoError::Unknown(res)
11856    }
11857}
11858impl fmt::Display for DeleteDomainConfigurationError {
11859    #[allow(unused_variables)]
11860    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11861        match *self {
11862            DeleteDomainConfigurationError::InternalFailure(ref cause) => write!(f, "{}", cause),
11863            DeleteDomainConfigurationError::InvalidRequest(ref cause) => write!(f, "{}", cause),
11864            DeleteDomainConfigurationError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
11865            DeleteDomainConfigurationError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
11866            DeleteDomainConfigurationError::Throttling(ref cause) => write!(f, "{}", cause),
11867            DeleteDomainConfigurationError::Unauthorized(ref cause) => write!(f, "{}", cause),
11868        }
11869    }
11870}
11871impl Error for DeleteDomainConfigurationError {}
11872/// Errors returned by DeleteDynamicThingGroup
11873#[derive(Debug, PartialEq)]
11874pub enum DeleteDynamicThingGroupError {
11875    /// <p>An unexpected error has occurred.</p>
11876    InternalFailure(String),
11877    /// <p>The request is not valid.</p>
11878    InvalidRequest(String),
11879    /// <p>The rate exceeds the limit.</p>
11880    Throttling(String),
11881    /// <p>An exception thrown when the version of an entity specified with the <code>expectedVersion</code> parameter does not match the latest version in the system.</p>
11882    VersionConflict(String),
11883}
11884
11885impl DeleteDynamicThingGroupError {
11886    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteDynamicThingGroupError> {
11887        if let Some(err) = proto::json::Error::parse_rest(&res) {
11888            match err.typ.as_str() {
11889                "InternalFailureException" => {
11890                    return RusotoError::Service(DeleteDynamicThingGroupError::InternalFailure(
11891                        err.msg,
11892                    ))
11893                }
11894                "InvalidRequestException" => {
11895                    return RusotoError::Service(DeleteDynamicThingGroupError::InvalidRequest(
11896                        err.msg,
11897                    ))
11898                }
11899                "ThrottlingException" => {
11900                    return RusotoError::Service(DeleteDynamicThingGroupError::Throttling(err.msg))
11901                }
11902                "VersionConflictException" => {
11903                    return RusotoError::Service(DeleteDynamicThingGroupError::VersionConflict(
11904                        err.msg,
11905                    ))
11906                }
11907                "ValidationException" => return RusotoError::Validation(err.msg),
11908                _ => {}
11909            }
11910        }
11911        RusotoError::Unknown(res)
11912    }
11913}
11914impl fmt::Display for DeleteDynamicThingGroupError {
11915    #[allow(unused_variables)]
11916    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11917        match *self {
11918            DeleteDynamicThingGroupError::InternalFailure(ref cause) => write!(f, "{}", cause),
11919            DeleteDynamicThingGroupError::InvalidRequest(ref cause) => write!(f, "{}", cause),
11920            DeleteDynamicThingGroupError::Throttling(ref cause) => write!(f, "{}", cause),
11921            DeleteDynamicThingGroupError::VersionConflict(ref cause) => write!(f, "{}", cause),
11922        }
11923    }
11924}
11925impl Error for DeleteDynamicThingGroupError {}
11926/// Errors returned by DeleteJob
11927#[derive(Debug, PartialEq)]
11928pub enum DeleteJobError {
11929    /// <p>The request is not valid.</p>
11930    InvalidRequest(String),
11931    /// <p>An attempt was made to change to an invalid state, for example by deleting a job or a job execution which is "IN_PROGRESS" without setting the <code>force</code> parameter.</p>
11932    InvalidStateTransition(String),
11933    /// <p>A limit has been exceeded.</p>
11934    LimitExceeded(String),
11935    /// <p>The specified resource does not exist.</p>
11936    ResourceNotFound(String),
11937    /// <p>The service is temporarily unavailable.</p>
11938    ServiceUnavailable(String),
11939    /// <p>The rate exceeds the limit.</p>
11940    Throttling(String),
11941}
11942
11943impl DeleteJobError {
11944    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteJobError> {
11945        if let Some(err) = proto::json::Error::parse_rest(&res) {
11946            match err.typ.as_str() {
11947                "InvalidRequestException" => {
11948                    return RusotoError::Service(DeleteJobError::InvalidRequest(err.msg))
11949                }
11950                "InvalidStateTransitionException" => {
11951                    return RusotoError::Service(DeleteJobError::InvalidStateTransition(err.msg))
11952                }
11953                "LimitExceededException" => {
11954                    return RusotoError::Service(DeleteJobError::LimitExceeded(err.msg))
11955                }
11956                "ResourceNotFoundException" => {
11957                    return RusotoError::Service(DeleteJobError::ResourceNotFound(err.msg))
11958                }
11959                "ServiceUnavailableException" => {
11960                    return RusotoError::Service(DeleteJobError::ServiceUnavailable(err.msg))
11961                }
11962                "ThrottlingException" => {
11963                    return RusotoError::Service(DeleteJobError::Throttling(err.msg))
11964                }
11965                "ValidationException" => return RusotoError::Validation(err.msg),
11966                _ => {}
11967            }
11968        }
11969        RusotoError::Unknown(res)
11970    }
11971}
11972impl fmt::Display for DeleteJobError {
11973    #[allow(unused_variables)]
11974    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11975        match *self {
11976            DeleteJobError::InvalidRequest(ref cause) => write!(f, "{}", cause),
11977            DeleteJobError::InvalidStateTransition(ref cause) => write!(f, "{}", cause),
11978            DeleteJobError::LimitExceeded(ref cause) => write!(f, "{}", cause),
11979            DeleteJobError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
11980            DeleteJobError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
11981            DeleteJobError::Throttling(ref cause) => write!(f, "{}", cause),
11982        }
11983    }
11984}
11985impl Error for DeleteJobError {}
11986/// Errors returned by DeleteJobExecution
11987#[derive(Debug, PartialEq)]
11988pub enum DeleteJobExecutionError {
11989    /// <p>The request is not valid.</p>
11990    InvalidRequest(String),
11991    /// <p>An attempt was made to change to an invalid state, for example by deleting a job or a job execution which is "IN_PROGRESS" without setting the <code>force</code> parameter.</p>
11992    InvalidStateTransition(String),
11993    /// <p>The specified resource does not exist.</p>
11994    ResourceNotFound(String),
11995    /// <p>The service is temporarily unavailable.</p>
11996    ServiceUnavailable(String),
11997    /// <p>The rate exceeds the limit.</p>
11998    Throttling(String),
11999}
12000
12001impl DeleteJobExecutionError {
12002    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteJobExecutionError> {
12003        if let Some(err) = proto::json::Error::parse_rest(&res) {
12004            match err.typ.as_str() {
12005                "InvalidRequestException" => {
12006                    return RusotoError::Service(DeleteJobExecutionError::InvalidRequest(err.msg))
12007                }
12008                "InvalidStateTransitionException" => {
12009                    return RusotoError::Service(DeleteJobExecutionError::InvalidStateTransition(
12010                        err.msg,
12011                    ))
12012                }
12013                "ResourceNotFoundException" => {
12014                    return RusotoError::Service(DeleteJobExecutionError::ResourceNotFound(err.msg))
12015                }
12016                "ServiceUnavailableException" => {
12017                    return RusotoError::Service(DeleteJobExecutionError::ServiceUnavailable(
12018                        err.msg,
12019                    ))
12020                }
12021                "ThrottlingException" => {
12022                    return RusotoError::Service(DeleteJobExecutionError::Throttling(err.msg))
12023                }
12024                "ValidationException" => return RusotoError::Validation(err.msg),
12025                _ => {}
12026            }
12027        }
12028        RusotoError::Unknown(res)
12029    }
12030}
12031impl fmt::Display for DeleteJobExecutionError {
12032    #[allow(unused_variables)]
12033    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12034        match *self {
12035            DeleteJobExecutionError::InvalidRequest(ref cause) => write!(f, "{}", cause),
12036            DeleteJobExecutionError::InvalidStateTransition(ref cause) => write!(f, "{}", cause),
12037            DeleteJobExecutionError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
12038            DeleteJobExecutionError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
12039            DeleteJobExecutionError::Throttling(ref cause) => write!(f, "{}", cause),
12040        }
12041    }
12042}
12043impl Error for DeleteJobExecutionError {}
12044/// Errors returned by DeleteMitigationAction
12045#[derive(Debug, PartialEq)]
12046pub enum DeleteMitigationActionError {
12047    /// <p>An unexpected error has occurred.</p>
12048    InternalFailure(String),
12049    /// <p>The request is not valid.</p>
12050    InvalidRequest(String),
12051    /// <p>The rate exceeds the limit.</p>
12052    Throttling(String),
12053}
12054
12055impl DeleteMitigationActionError {
12056    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteMitigationActionError> {
12057        if let Some(err) = proto::json::Error::parse_rest(&res) {
12058            match err.typ.as_str() {
12059                "InternalFailureException" => {
12060                    return RusotoError::Service(DeleteMitigationActionError::InternalFailure(
12061                        err.msg,
12062                    ))
12063                }
12064                "InvalidRequestException" => {
12065                    return RusotoError::Service(DeleteMitigationActionError::InvalidRequest(
12066                        err.msg,
12067                    ))
12068                }
12069                "ThrottlingException" => {
12070                    return RusotoError::Service(DeleteMitigationActionError::Throttling(err.msg))
12071                }
12072                "ValidationException" => return RusotoError::Validation(err.msg),
12073                _ => {}
12074            }
12075        }
12076        RusotoError::Unknown(res)
12077    }
12078}
12079impl fmt::Display for DeleteMitigationActionError {
12080    #[allow(unused_variables)]
12081    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12082        match *self {
12083            DeleteMitigationActionError::InternalFailure(ref cause) => write!(f, "{}", cause),
12084            DeleteMitigationActionError::InvalidRequest(ref cause) => write!(f, "{}", cause),
12085            DeleteMitigationActionError::Throttling(ref cause) => write!(f, "{}", cause),
12086        }
12087    }
12088}
12089impl Error for DeleteMitigationActionError {}
12090/// Errors returned by DeleteOTAUpdate
12091#[derive(Debug, PartialEq)]
12092pub enum DeleteOTAUpdateError {
12093    /// <p>An unexpected error has occurred.</p>
12094    InternalFailure(String),
12095    /// <p>The request is not valid.</p>
12096    InvalidRequest(String),
12097    /// <p>The specified resource does not exist.</p>
12098    ResourceNotFound(String),
12099    /// <p>The service is temporarily unavailable.</p>
12100    ServiceUnavailable(String),
12101    /// <p>The rate exceeds the limit.</p>
12102    Throttling(String),
12103    /// <p>You are not authorized to perform this operation.</p>
12104    Unauthorized(String),
12105    /// <p>An exception thrown when the version of an entity specified with the <code>expectedVersion</code> parameter does not match the latest version in the system.</p>
12106    VersionConflict(String),
12107}
12108
12109impl DeleteOTAUpdateError {
12110    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteOTAUpdateError> {
12111        if let Some(err) = proto::json::Error::parse_rest(&res) {
12112            match err.typ.as_str() {
12113                "InternalFailureException" => {
12114                    return RusotoError::Service(DeleteOTAUpdateError::InternalFailure(err.msg))
12115                }
12116                "InvalidRequestException" => {
12117                    return RusotoError::Service(DeleteOTAUpdateError::InvalidRequest(err.msg))
12118                }
12119                "ResourceNotFoundException" => {
12120                    return RusotoError::Service(DeleteOTAUpdateError::ResourceNotFound(err.msg))
12121                }
12122                "ServiceUnavailableException" => {
12123                    return RusotoError::Service(DeleteOTAUpdateError::ServiceUnavailable(err.msg))
12124                }
12125                "ThrottlingException" => {
12126                    return RusotoError::Service(DeleteOTAUpdateError::Throttling(err.msg))
12127                }
12128                "UnauthorizedException" => {
12129                    return RusotoError::Service(DeleteOTAUpdateError::Unauthorized(err.msg))
12130                }
12131                "VersionConflictException" => {
12132                    return RusotoError::Service(DeleteOTAUpdateError::VersionConflict(err.msg))
12133                }
12134                "ValidationException" => return RusotoError::Validation(err.msg),
12135                _ => {}
12136            }
12137        }
12138        RusotoError::Unknown(res)
12139    }
12140}
12141impl fmt::Display for DeleteOTAUpdateError {
12142    #[allow(unused_variables)]
12143    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12144        match *self {
12145            DeleteOTAUpdateError::InternalFailure(ref cause) => write!(f, "{}", cause),
12146            DeleteOTAUpdateError::InvalidRequest(ref cause) => write!(f, "{}", cause),
12147            DeleteOTAUpdateError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
12148            DeleteOTAUpdateError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
12149            DeleteOTAUpdateError::Throttling(ref cause) => write!(f, "{}", cause),
12150            DeleteOTAUpdateError::Unauthorized(ref cause) => write!(f, "{}", cause),
12151            DeleteOTAUpdateError::VersionConflict(ref cause) => write!(f, "{}", cause),
12152        }
12153    }
12154}
12155impl Error for DeleteOTAUpdateError {}
12156/// Errors returned by DeletePolicy
12157#[derive(Debug, PartialEq)]
12158pub enum DeletePolicyError {
12159    /// <p>You can't delete the resource because it is attached to one or more resources.</p>
12160    DeleteConflict(String),
12161    /// <p>An unexpected error has occurred.</p>
12162    InternalFailure(String),
12163    /// <p>The request is not valid.</p>
12164    InvalidRequest(String),
12165    /// <p>The specified resource does not exist.</p>
12166    ResourceNotFound(String),
12167    /// <p>The service is temporarily unavailable.</p>
12168    ServiceUnavailable(String),
12169    /// <p>The rate exceeds the limit.</p>
12170    Throttling(String),
12171    /// <p>You are not authorized to perform this operation.</p>
12172    Unauthorized(String),
12173}
12174
12175impl DeletePolicyError {
12176    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeletePolicyError> {
12177        if let Some(err) = proto::json::Error::parse_rest(&res) {
12178            match err.typ.as_str() {
12179                "DeleteConflictException" => {
12180                    return RusotoError::Service(DeletePolicyError::DeleteConflict(err.msg))
12181                }
12182                "InternalFailureException" => {
12183                    return RusotoError::Service(DeletePolicyError::InternalFailure(err.msg))
12184                }
12185                "InvalidRequestException" => {
12186                    return RusotoError::Service(DeletePolicyError::InvalidRequest(err.msg))
12187                }
12188                "ResourceNotFoundException" => {
12189                    return RusotoError::Service(DeletePolicyError::ResourceNotFound(err.msg))
12190                }
12191                "ServiceUnavailableException" => {
12192                    return RusotoError::Service(DeletePolicyError::ServiceUnavailable(err.msg))
12193                }
12194                "ThrottlingException" => {
12195                    return RusotoError::Service(DeletePolicyError::Throttling(err.msg))
12196                }
12197                "UnauthorizedException" => {
12198                    return RusotoError::Service(DeletePolicyError::Unauthorized(err.msg))
12199                }
12200                "ValidationException" => return RusotoError::Validation(err.msg),
12201                _ => {}
12202            }
12203        }
12204        RusotoError::Unknown(res)
12205    }
12206}
12207impl fmt::Display for DeletePolicyError {
12208    #[allow(unused_variables)]
12209    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12210        match *self {
12211            DeletePolicyError::DeleteConflict(ref cause) => write!(f, "{}", cause),
12212            DeletePolicyError::InternalFailure(ref cause) => write!(f, "{}", cause),
12213            DeletePolicyError::InvalidRequest(ref cause) => write!(f, "{}", cause),
12214            DeletePolicyError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
12215            DeletePolicyError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
12216            DeletePolicyError::Throttling(ref cause) => write!(f, "{}", cause),
12217            DeletePolicyError::Unauthorized(ref cause) => write!(f, "{}", cause),
12218        }
12219    }
12220}
12221impl Error for DeletePolicyError {}
12222/// Errors returned by DeletePolicyVersion
12223#[derive(Debug, PartialEq)]
12224pub enum DeletePolicyVersionError {
12225    /// <p>You can't delete the resource because it is attached to one or more resources.</p>
12226    DeleteConflict(String),
12227    /// <p>An unexpected error has occurred.</p>
12228    InternalFailure(String),
12229    /// <p>The request is not valid.</p>
12230    InvalidRequest(String),
12231    /// <p>The specified resource does not exist.</p>
12232    ResourceNotFound(String),
12233    /// <p>The service is temporarily unavailable.</p>
12234    ServiceUnavailable(String),
12235    /// <p>The rate exceeds the limit.</p>
12236    Throttling(String),
12237    /// <p>You are not authorized to perform this operation.</p>
12238    Unauthorized(String),
12239}
12240
12241impl DeletePolicyVersionError {
12242    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeletePolicyVersionError> {
12243        if let Some(err) = proto::json::Error::parse_rest(&res) {
12244            match err.typ.as_str() {
12245                "DeleteConflictException" => {
12246                    return RusotoError::Service(DeletePolicyVersionError::DeleteConflict(err.msg))
12247                }
12248                "InternalFailureException" => {
12249                    return RusotoError::Service(DeletePolicyVersionError::InternalFailure(err.msg))
12250                }
12251                "InvalidRequestException" => {
12252                    return RusotoError::Service(DeletePolicyVersionError::InvalidRequest(err.msg))
12253                }
12254                "ResourceNotFoundException" => {
12255                    return RusotoError::Service(DeletePolicyVersionError::ResourceNotFound(
12256                        err.msg,
12257                    ))
12258                }
12259                "ServiceUnavailableException" => {
12260                    return RusotoError::Service(DeletePolicyVersionError::ServiceUnavailable(
12261                        err.msg,
12262                    ))
12263                }
12264                "ThrottlingException" => {
12265                    return RusotoError::Service(DeletePolicyVersionError::Throttling(err.msg))
12266                }
12267                "UnauthorizedException" => {
12268                    return RusotoError::Service(DeletePolicyVersionError::Unauthorized(err.msg))
12269                }
12270                "ValidationException" => return RusotoError::Validation(err.msg),
12271                _ => {}
12272            }
12273        }
12274        RusotoError::Unknown(res)
12275    }
12276}
12277impl fmt::Display for DeletePolicyVersionError {
12278    #[allow(unused_variables)]
12279    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12280        match *self {
12281            DeletePolicyVersionError::DeleteConflict(ref cause) => write!(f, "{}", cause),
12282            DeletePolicyVersionError::InternalFailure(ref cause) => write!(f, "{}", cause),
12283            DeletePolicyVersionError::InvalidRequest(ref cause) => write!(f, "{}", cause),
12284            DeletePolicyVersionError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
12285            DeletePolicyVersionError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
12286            DeletePolicyVersionError::Throttling(ref cause) => write!(f, "{}", cause),
12287            DeletePolicyVersionError::Unauthorized(ref cause) => write!(f, "{}", cause),
12288        }
12289    }
12290}
12291impl Error for DeletePolicyVersionError {}
12292/// Errors returned by DeleteProvisioningTemplate
12293#[derive(Debug, PartialEq)]
12294pub enum DeleteProvisioningTemplateError {
12295    /// <p>You can't delete the resource because it is attached to one or more resources.</p>
12296    DeleteConflict(String),
12297    /// <p>An unexpected error has occurred.</p>
12298    InternalFailure(String),
12299    /// <p>The request is not valid.</p>
12300    InvalidRequest(String),
12301    /// <p>The specified resource does not exist.</p>
12302    ResourceNotFound(String),
12303    /// <p>The rate exceeds the limit.</p>
12304    Throttling(String),
12305    /// <p>You are not authorized to perform this operation.</p>
12306    Unauthorized(String),
12307}
12308
12309impl DeleteProvisioningTemplateError {
12310    pub fn from_response(
12311        res: BufferedHttpResponse,
12312    ) -> RusotoError<DeleteProvisioningTemplateError> {
12313        if let Some(err) = proto::json::Error::parse_rest(&res) {
12314            match err.typ.as_str() {
12315                "DeleteConflictException" => {
12316                    return RusotoError::Service(DeleteProvisioningTemplateError::DeleteConflict(
12317                        err.msg,
12318                    ))
12319                }
12320                "InternalFailureException" => {
12321                    return RusotoError::Service(DeleteProvisioningTemplateError::InternalFailure(
12322                        err.msg,
12323                    ))
12324                }
12325                "InvalidRequestException" => {
12326                    return RusotoError::Service(DeleteProvisioningTemplateError::InvalidRequest(
12327                        err.msg,
12328                    ))
12329                }
12330                "ResourceNotFoundException" => {
12331                    return RusotoError::Service(DeleteProvisioningTemplateError::ResourceNotFound(
12332                        err.msg,
12333                    ))
12334                }
12335                "ThrottlingException" => {
12336                    return RusotoError::Service(DeleteProvisioningTemplateError::Throttling(
12337                        err.msg,
12338                    ))
12339                }
12340                "UnauthorizedException" => {
12341                    return RusotoError::Service(DeleteProvisioningTemplateError::Unauthorized(
12342                        err.msg,
12343                    ))
12344                }
12345                "ValidationException" => return RusotoError::Validation(err.msg),
12346                _ => {}
12347            }
12348        }
12349        RusotoError::Unknown(res)
12350    }
12351}
12352impl fmt::Display for DeleteProvisioningTemplateError {
12353    #[allow(unused_variables)]
12354    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12355        match *self {
12356            DeleteProvisioningTemplateError::DeleteConflict(ref cause) => write!(f, "{}", cause),
12357            DeleteProvisioningTemplateError::InternalFailure(ref cause) => write!(f, "{}", cause),
12358            DeleteProvisioningTemplateError::InvalidRequest(ref cause) => write!(f, "{}", cause),
12359            DeleteProvisioningTemplateError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
12360            DeleteProvisioningTemplateError::Throttling(ref cause) => write!(f, "{}", cause),
12361            DeleteProvisioningTemplateError::Unauthorized(ref cause) => write!(f, "{}", cause),
12362        }
12363    }
12364}
12365impl Error for DeleteProvisioningTemplateError {}
12366/// Errors returned by DeleteProvisioningTemplateVersion
12367#[derive(Debug, PartialEq)]
12368pub enum DeleteProvisioningTemplateVersionError {
12369    /// <p>You can't delete the resource because it is attached to one or more resources.</p>
12370    DeleteConflict(String),
12371    /// <p>An unexpected error has occurred.</p>
12372    InternalFailure(String),
12373    /// <p>The request is not valid.</p>
12374    InvalidRequest(String),
12375    /// <p>The specified resource does not exist.</p>
12376    ResourceNotFound(String),
12377    /// <p>The rate exceeds the limit.</p>
12378    Throttling(String),
12379    /// <p>You are not authorized to perform this operation.</p>
12380    Unauthorized(String),
12381}
12382
12383impl DeleteProvisioningTemplateVersionError {
12384    pub fn from_response(
12385        res: BufferedHttpResponse,
12386    ) -> RusotoError<DeleteProvisioningTemplateVersionError> {
12387        if let Some(err) = proto::json::Error::parse_rest(&res) {
12388            match err.typ.as_str() {
12389                "DeleteConflictException" => {
12390                    return RusotoError::Service(
12391                        DeleteProvisioningTemplateVersionError::DeleteConflict(err.msg),
12392                    )
12393                }
12394                "InternalFailureException" => {
12395                    return RusotoError::Service(
12396                        DeleteProvisioningTemplateVersionError::InternalFailure(err.msg),
12397                    )
12398                }
12399                "InvalidRequestException" => {
12400                    return RusotoError::Service(
12401                        DeleteProvisioningTemplateVersionError::InvalidRequest(err.msg),
12402                    )
12403                }
12404                "ResourceNotFoundException" => {
12405                    return RusotoError::Service(
12406                        DeleteProvisioningTemplateVersionError::ResourceNotFound(err.msg),
12407                    )
12408                }
12409                "ThrottlingException" => {
12410                    return RusotoError::Service(
12411                        DeleteProvisioningTemplateVersionError::Throttling(err.msg),
12412                    )
12413                }
12414                "UnauthorizedException" => {
12415                    return RusotoError::Service(
12416                        DeleteProvisioningTemplateVersionError::Unauthorized(err.msg),
12417                    )
12418                }
12419                "ValidationException" => return RusotoError::Validation(err.msg),
12420                _ => {}
12421            }
12422        }
12423        RusotoError::Unknown(res)
12424    }
12425}
12426impl fmt::Display for DeleteProvisioningTemplateVersionError {
12427    #[allow(unused_variables)]
12428    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12429        match *self {
12430            DeleteProvisioningTemplateVersionError::DeleteConflict(ref cause) => {
12431                write!(f, "{}", cause)
12432            }
12433            DeleteProvisioningTemplateVersionError::InternalFailure(ref cause) => {
12434                write!(f, "{}", cause)
12435            }
12436            DeleteProvisioningTemplateVersionError::InvalidRequest(ref cause) => {
12437                write!(f, "{}", cause)
12438            }
12439            DeleteProvisioningTemplateVersionError::ResourceNotFound(ref cause) => {
12440                write!(f, "{}", cause)
12441            }
12442            DeleteProvisioningTemplateVersionError::Throttling(ref cause) => write!(f, "{}", cause),
12443            DeleteProvisioningTemplateVersionError::Unauthorized(ref cause) => {
12444                write!(f, "{}", cause)
12445            }
12446        }
12447    }
12448}
12449impl Error for DeleteProvisioningTemplateVersionError {}
12450/// Errors returned by DeleteRegistrationCode
12451#[derive(Debug, PartialEq)]
12452pub enum DeleteRegistrationCodeError {
12453    /// <p>An unexpected error has occurred.</p>
12454    InternalFailure(String),
12455    /// <p>The specified resource does not exist.</p>
12456    ResourceNotFound(String),
12457    /// <p>The service is temporarily unavailable.</p>
12458    ServiceUnavailable(String),
12459    /// <p>The rate exceeds the limit.</p>
12460    Throttling(String),
12461    /// <p>You are not authorized to perform this operation.</p>
12462    Unauthorized(String),
12463}
12464
12465impl DeleteRegistrationCodeError {
12466    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteRegistrationCodeError> {
12467        if let Some(err) = proto::json::Error::parse_rest(&res) {
12468            match err.typ.as_str() {
12469                "InternalFailureException" => {
12470                    return RusotoError::Service(DeleteRegistrationCodeError::InternalFailure(
12471                        err.msg,
12472                    ))
12473                }
12474                "ResourceNotFoundException" => {
12475                    return RusotoError::Service(DeleteRegistrationCodeError::ResourceNotFound(
12476                        err.msg,
12477                    ))
12478                }
12479                "ServiceUnavailableException" => {
12480                    return RusotoError::Service(DeleteRegistrationCodeError::ServiceUnavailable(
12481                        err.msg,
12482                    ))
12483                }
12484                "ThrottlingException" => {
12485                    return RusotoError::Service(DeleteRegistrationCodeError::Throttling(err.msg))
12486                }
12487                "UnauthorizedException" => {
12488                    return RusotoError::Service(DeleteRegistrationCodeError::Unauthorized(err.msg))
12489                }
12490                "ValidationException" => return RusotoError::Validation(err.msg),
12491                _ => {}
12492            }
12493        }
12494        RusotoError::Unknown(res)
12495    }
12496}
12497impl fmt::Display for DeleteRegistrationCodeError {
12498    #[allow(unused_variables)]
12499    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12500        match *self {
12501            DeleteRegistrationCodeError::InternalFailure(ref cause) => write!(f, "{}", cause),
12502            DeleteRegistrationCodeError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
12503            DeleteRegistrationCodeError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
12504            DeleteRegistrationCodeError::Throttling(ref cause) => write!(f, "{}", cause),
12505            DeleteRegistrationCodeError::Unauthorized(ref cause) => write!(f, "{}", cause),
12506        }
12507    }
12508}
12509impl Error for DeleteRegistrationCodeError {}
12510/// Errors returned by DeleteRoleAlias
12511#[derive(Debug, PartialEq)]
12512pub enum DeleteRoleAliasError {
12513    /// <p>You can't delete the resource because it is attached to one or more resources.</p>
12514    DeleteConflict(String),
12515    /// <p>An unexpected error has occurred.</p>
12516    InternalFailure(String),
12517    /// <p>The request is not valid.</p>
12518    InvalidRequest(String),
12519    /// <p>The specified resource does not exist.</p>
12520    ResourceNotFound(String),
12521    /// <p>The service is temporarily unavailable.</p>
12522    ServiceUnavailable(String),
12523    /// <p>The rate exceeds the limit.</p>
12524    Throttling(String),
12525    /// <p>You are not authorized to perform this operation.</p>
12526    Unauthorized(String),
12527}
12528
12529impl DeleteRoleAliasError {
12530    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteRoleAliasError> {
12531        if let Some(err) = proto::json::Error::parse_rest(&res) {
12532            match err.typ.as_str() {
12533                "DeleteConflictException" => {
12534                    return RusotoError::Service(DeleteRoleAliasError::DeleteConflict(err.msg))
12535                }
12536                "InternalFailureException" => {
12537                    return RusotoError::Service(DeleteRoleAliasError::InternalFailure(err.msg))
12538                }
12539                "InvalidRequestException" => {
12540                    return RusotoError::Service(DeleteRoleAliasError::InvalidRequest(err.msg))
12541                }
12542                "ResourceNotFoundException" => {
12543                    return RusotoError::Service(DeleteRoleAliasError::ResourceNotFound(err.msg))
12544                }
12545                "ServiceUnavailableException" => {
12546                    return RusotoError::Service(DeleteRoleAliasError::ServiceUnavailable(err.msg))
12547                }
12548                "ThrottlingException" => {
12549                    return RusotoError::Service(DeleteRoleAliasError::Throttling(err.msg))
12550                }
12551                "UnauthorizedException" => {
12552                    return RusotoError::Service(DeleteRoleAliasError::Unauthorized(err.msg))
12553                }
12554                "ValidationException" => return RusotoError::Validation(err.msg),
12555                _ => {}
12556            }
12557        }
12558        RusotoError::Unknown(res)
12559    }
12560}
12561impl fmt::Display for DeleteRoleAliasError {
12562    #[allow(unused_variables)]
12563    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12564        match *self {
12565            DeleteRoleAliasError::DeleteConflict(ref cause) => write!(f, "{}", cause),
12566            DeleteRoleAliasError::InternalFailure(ref cause) => write!(f, "{}", cause),
12567            DeleteRoleAliasError::InvalidRequest(ref cause) => write!(f, "{}", cause),
12568            DeleteRoleAliasError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
12569            DeleteRoleAliasError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
12570            DeleteRoleAliasError::Throttling(ref cause) => write!(f, "{}", cause),
12571            DeleteRoleAliasError::Unauthorized(ref cause) => write!(f, "{}", cause),
12572        }
12573    }
12574}
12575impl Error for DeleteRoleAliasError {}
12576/// Errors returned by DeleteScheduledAudit
12577#[derive(Debug, PartialEq)]
12578pub enum DeleteScheduledAuditError {
12579    /// <p>An unexpected error has occurred.</p>
12580    InternalFailure(String),
12581    /// <p>The request is not valid.</p>
12582    InvalidRequest(String),
12583    /// <p>The specified resource does not exist.</p>
12584    ResourceNotFound(String),
12585    /// <p>The rate exceeds the limit.</p>
12586    Throttling(String),
12587}
12588
12589impl DeleteScheduledAuditError {
12590    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteScheduledAuditError> {
12591        if let Some(err) = proto::json::Error::parse_rest(&res) {
12592            match err.typ.as_str() {
12593                "InternalFailureException" => {
12594                    return RusotoError::Service(DeleteScheduledAuditError::InternalFailure(
12595                        err.msg,
12596                    ))
12597                }
12598                "InvalidRequestException" => {
12599                    return RusotoError::Service(DeleteScheduledAuditError::InvalidRequest(err.msg))
12600                }
12601                "ResourceNotFoundException" => {
12602                    return RusotoError::Service(DeleteScheduledAuditError::ResourceNotFound(
12603                        err.msg,
12604                    ))
12605                }
12606                "ThrottlingException" => {
12607                    return RusotoError::Service(DeleteScheduledAuditError::Throttling(err.msg))
12608                }
12609                "ValidationException" => return RusotoError::Validation(err.msg),
12610                _ => {}
12611            }
12612        }
12613        RusotoError::Unknown(res)
12614    }
12615}
12616impl fmt::Display for DeleteScheduledAuditError {
12617    #[allow(unused_variables)]
12618    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12619        match *self {
12620            DeleteScheduledAuditError::InternalFailure(ref cause) => write!(f, "{}", cause),
12621            DeleteScheduledAuditError::InvalidRequest(ref cause) => write!(f, "{}", cause),
12622            DeleteScheduledAuditError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
12623            DeleteScheduledAuditError::Throttling(ref cause) => write!(f, "{}", cause),
12624        }
12625    }
12626}
12627impl Error for DeleteScheduledAuditError {}
12628/// Errors returned by DeleteSecurityProfile
12629#[derive(Debug, PartialEq)]
12630pub enum DeleteSecurityProfileError {
12631    /// <p>An unexpected error has occurred.</p>
12632    InternalFailure(String),
12633    /// <p>The request is not valid.</p>
12634    InvalidRequest(String),
12635    /// <p>The rate exceeds the limit.</p>
12636    Throttling(String),
12637    /// <p>An exception thrown when the version of an entity specified with the <code>expectedVersion</code> parameter does not match the latest version in the system.</p>
12638    VersionConflict(String),
12639}
12640
12641impl DeleteSecurityProfileError {
12642    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteSecurityProfileError> {
12643        if let Some(err) = proto::json::Error::parse_rest(&res) {
12644            match err.typ.as_str() {
12645                "InternalFailureException" => {
12646                    return RusotoError::Service(DeleteSecurityProfileError::InternalFailure(
12647                        err.msg,
12648                    ))
12649                }
12650                "InvalidRequestException" => {
12651                    return RusotoError::Service(DeleteSecurityProfileError::InvalidRequest(
12652                        err.msg,
12653                    ))
12654                }
12655                "ThrottlingException" => {
12656                    return RusotoError::Service(DeleteSecurityProfileError::Throttling(err.msg))
12657                }
12658                "VersionConflictException" => {
12659                    return RusotoError::Service(DeleteSecurityProfileError::VersionConflict(
12660                        err.msg,
12661                    ))
12662                }
12663                "ValidationException" => return RusotoError::Validation(err.msg),
12664                _ => {}
12665            }
12666        }
12667        RusotoError::Unknown(res)
12668    }
12669}
12670impl fmt::Display for DeleteSecurityProfileError {
12671    #[allow(unused_variables)]
12672    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12673        match *self {
12674            DeleteSecurityProfileError::InternalFailure(ref cause) => write!(f, "{}", cause),
12675            DeleteSecurityProfileError::InvalidRequest(ref cause) => write!(f, "{}", cause),
12676            DeleteSecurityProfileError::Throttling(ref cause) => write!(f, "{}", cause),
12677            DeleteSecurityProfileError::VersionConflict(ref cause) => write!(f, "{}", cause),
12678        }
12679    }
12680}
12681impl Error for DeleteSecurityProfileError {}
12682/// Errors returned by DeleteStream
12683#[derive(Debug, PartialEq)]
12684pub enum DeleteStreamError {
12685    /// <p>You can't delete the resource because it is attached to one or more resources.</p>
12686    DeleteConflict(String),
12687    /// <p>An unexpected error has occurred.</p>
12688    InternalFailure(String),
12689    /// <p>The request is not valid.</p>
12690    InvalidRequest(String),
12691    /// <p>The specified resource does not exist.</p>
12692    ResourceNotFound(String),
12693    /// <p>The service is temporarily unavailable.</p>
12694    ServiceUnavailable(String),
12695    /// <p>The rate exceeds the limit.</p>
12696    Throttling(String),
12697    /// <p>You are not authorized to perform this operation.</p>
12698    Unauthorized(String),
12699}
12700
12701impl DeleteStreamError {
12702    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteStreamError> {
12703        if let Some(err) = proto::json::Error::parse_rest(&res) {
12704            match err.typ.as_str() {
12705                "DeleteConflictException" => {
12706                    return RusotoError::Service(DeleteStreamError::DeleteConflict(err.msg))
12707                }
12708                "InternalFailureException" => {
12709                    return RusotoError::Service(DeleteStreamError::InternalFailure(err.msg))
12710                }
12711                "InvalidRequestException" => {
12712                    return RusotoError::Service(DeleteStreamError::InvalidRequest(err.msg))
12713                }
12714                "ResourceNotFoundException" => {
12715                    return RusotoError::Service(DeleteStreamError::ResourceNotFound(err.msg))
12716                }
12717                "ServiceUnavailableException" => {
12718                    return RusotoError::Service(DeleteStreamError::ServiceUnavailable(err.msg))
12719                }
12720                "ThrottlingException" => {
12721                    return RusotoError::Service(DeleteStreamError::Throttling(err.msg))
12722                }
12723                "UnauthorizedException" => {
12724                    return RusotoError::Service(DeleteStreamError::Unauthorized(err.msg))
12725                }
12726                "ValidationException" => return RusotoError::Validation(err.msg),
12727                _ => {}
12728            }
12729        }
12730        RusotoError::Unknown(res)
12731    }
12732}
12733impl fmt::Display for DeleteStreamError {
12734    #[allow(unused_variables)]
12735    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12736        match *self {
12737            DeleteStreamError::DeleteConflict(ref cause) => write!(f, "{}", cause),
12738            DeleteStreamError::InternalFailure(ref cause) => write!(f, "{}", cause),
12739            DeleteStreamError::InvalidRequest(ref cause) => write!(f, "{}", cause),
12740            DeleteStreamError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
12741            DeleteStreamError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
12742            DeleteStreamError::Throttling(ref cause) => write!(f, "{}", cause),
12743            DeleteStreamError::Unauthorized(ref cause) => write!(f, "{}", cause),
12744        }
12745    }
12746}
12747impl Error for DeleteStreamError {}
12748/// Errors returned by DeleteThing
12749#[derive(Debug, PartialEq)]
12750pub enum DeleteThingError {
12751    /// <p>An unexpected error has occurred.</p>
12752    InternalFailure(String),
12753    /// <p>The request is not valid.</p>
12754    InvalidRequest(String),
12755    /// <p>The specified resource does not exist.</p>
12756    ResourceNotFound(String),
12757    /// <p>The service is temporarily unavailable.</p>
12758    ServiceUnavailable(String),
12759    /// <p>The rate exceeds the limit.</p>
12760    Throttling(String),
12761    /// <p>You are not authorized to perform this operation.</p>
12762    Unauthorized(String),
12763    /// <p>An exception thrown when the version of an entity specified with the <code>expectedVersion</code> parameter does not match the latest version in the system.</p>
12764    VersionConflict(String),
12765}
12766
12767impl DeleteThingError {
12768    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteThingError> {
12769        if let Some(err) = proto::json::Error::parse_rest(&res) {
12770            match err.typ.as_str() {
12771                "InternalFailureException" => {
12772                    return RusotoError::Service(DeleteThingError::InternalFailure(err.msg))
12773                }
12774                "InvalidRequestException" => {
12775                    return RusotoError::Service(DeleteThingError::InvalidRequest(err.msg))
12776                }
12777                "ResourceNotFoundException" => {
12778                    return RusotoError::Service(DeleteThingError::ResourceNotFound(err.msg))
12779                }
12780                "ServiceUnavailableException" => {
12781                    return RusotoError::Service(DeleteThingError::ServiceUnavailable(err.msg))
12782                }
12783                "ThrottlingException" => {
12784                    return RusotoError::Service(DeleteThingError::Throttling(err.msg))
12785                }
12786                "UnauthorizedException" => {
12787                    return RusotoError::Service(DeleteThingError::Unauthorized(err.msg))
12788                }
12789                "VersionConflictException" => {
12790                    return RusotoError::Service(DeleteThingError::VersionConflict(err.msg))
12791                }
12792                "ValidationException" => return RusotoError::Validation(err.msg),
12793                _ => {}
12794            }
12795        }
12796        RusotoError::Unknown(res)
12797    }
12798}
12799impl fmt::Display for DeleteThingError {
12800    #[allow(unused_variables)]
12801    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12802        match *self {
12803            DeleteThingError::InternalFailure(ref cause) => write!(f, "{}", cause),
12804            DeleteThingError::InvalidRequest(ref cause) => write!(f, "{}", cause),
12805            DeleteThingError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
12806            DeleteThingError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
12807            DeleteThingError::Throttling(ref cause) => write!(f, "{}", cause),
12808            DeleteThingError::Unauthorized(ref cause) => write!(f, "{}", cause),
12809            DeleteThingError::VersionConflict(ref cause) => write!(f, "{}", cause),
12810        }
12811    }
12812}
12813impl Error for DeleteThingError {}
12814/// Errors returned by DeleteThingGroup
12815#[derive(Debug, PartialEq)]
12816pub enum DeleteThingGroupError {
12817    /// <p>An unexpected error has occurred.</p>
12818    InternalFailure(String),
12819    /// <p>The request is not valid.</p>
12820    InvalidRequest(String),
12821    /// <p>The rate exceeds the limit.</p>
12822    Throttling(String),
12823    /// <p>An exception thrown when the version of an entity specified with the <code>expectedVersion</code> parameter does not match the latest version in the system.</p>
12824    VersionConflict(String),
12825}
12826
12827impl DeleteThingGroupError {
12828    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteThingGroupError> {
12829        if let Some(err) = proto::json::Error::parse_rest(&res) {
12830            match err.typ.as_str() {
12831                "InternalFailureException" => {
12832                    return RusotoError::Service(DeleteThingGroupError::InternalFailure(err.msg))
12833                }
12834                "InvalidRequestException" => {
12835                    return RusotoError::Service(DeleteThingGroupError::InvalidRequest(err.msg))
12836                }
12837                "ThrottlingException" => {
12838                    return RusotoError::Service(DeleteThingGroupError::Throttling(err.msg))
12839                }
12840                "VersionConflictException" => {
12841                    return RusotoError::Service(DeleteThingGroupError::VersionConflict(err.msg))
12842                }
12843                "ValidationException" => return RusotoError::Validation(err.msg),
12844                _ => {}
12845            }
12846        }
12847        RusotoError::Unknown(res)
12848    }
12849}
12850impl fmt::Display for DeleteThingGroupError {
12851    #[allow(unused_variables)]
12852    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12853        match *self {
12854            DeleteThingGroupError::InternalFailure(ref cause) => write!(f, "{}", cause),
12855            DeleteThingGroupError::InvalidRequest(ref cause) => write!(f, "{}", cause),
12856            DeleteThingGroupError::Throttling(ref cause) => write!(f, "{}", cause),
12857            DeleteThingGroupError::VersionConflict(ref cause) => write!(f, "{}", cause),
12858        }
12859    }
12860}
12861impl Error for DeleteThingGroupError {}
12862/// Errors returned by DeleteThingType
12863#[derive(Debug, PartialEq)]
12864pub enum DeleteThingTypeError {
12865    /// <p>An unexpected error has occurred.</p>
12866    InternalFailure(String),
12867    /// <p>The request is not valid.</p>
12868    InvalidRequest(String),
12869    /// <p>The specified resource does not exist.</p>
12870    ResourceNotFound(String),
12871    /// <p>The service is temporarily unavailable.</p>
12872    ServiceUnavailable(String),
12873    /// <p>The rate exceeds the limit.</p>
12874    Throttling(String),
12875    /// <p>You are not authorized to perform this operation.</p>
12876    Unauthorized(String),
12877}
12878
12879impl DeleteThingTypeError {
12880    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteThingTypeError> {
12881        if let Some(err) = proto::json::Error::parse_rest(&res) {
12882            match err.typ.as_str() {
12883                "InternalFailureException" => {
12884                    return RusotoError::Service(DeleteThingTypeError::InternalFailure(err.msg))
12885                }
12886                "InvalidRequestException" => {
12887                    return RusotoError::Service(DeleteThingTypeError::InvalidRequest(err.msg))
12888                }
12889                "ResourceNotFoundException" => {
12890                    return RusotoError::Service(DeleteThingTypeError::ResourceNotFound(err.msg))
12891                }
12892                "ServiceUnavailableException" => {
12893                    return RusotoError::Service(DeleteThingTypeError::ServiceUnavailable(err.msg))
12894                }
12895                "ThrottlingException" => {
12896                    return RusotoError::Service(DeleteThingTypeError::Throttling(err.msg))
12897                }
12898                "UnauthorizedException" => {
12899                    return RusotoError::Service(DeleteThingTypeError::Unauthorized(err.msg))
12900                }
12901                "ValidationException" => return RusotoError::Validation(err.msg),
12902                _ => {}
12903            }
12904        }
12905        RusotoError::Unknown(res)
12906    }
12907}
12908impl fmt::Display for DeleteThingTypeError {
12909    #[allow(unused_variables)]
12910    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12911        match *self {
12912            DeleteThingTypeError::InternalFailure(ref cause) => write!(f, "{}", cause),
12913            DeleteThingTypeError::InvalidRequest(ref cause) => write!(f, "{}", cause),
12914            DeleteThingTypeError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
12915            DeleteThingTypeError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
12916            DeleteThingTypeError::Throttling(ref cause) => write!(f, "{}", cause),
12917            DeleteThingTypeError::Unauthorized(ref cause) => write!(f, "{}", cause),
12918        }
12919    }
12920}
12921impl Error for DeleteThingTypeError {}
12922/// Errors returned by DeleteTopicRule
12923#[derive(Debug, PartialEq)]
12924pub enum DeleteTopicRuleError {
12925    /// <p>A conflicting resource update exception. This exception is thrown when two pending updates cause a conflict.</p>
12926    ConflictingResourceUpdate(String),
12927    /// <p>An unexpected error has occurred.</p>
12928    Internal(String),
12929    /// <p>The request is not valid.</p>
12930    InvalidRequest(String),
12931    /// <p>The service is temporarily unavailable.</p>
12932    ServiceUnavailable(String),
12933    /// <p>You are not authorized to perform this operation.</p>
12934    Unauthorized(String),
12935}
12936
12937impl DeleteTopicRuleError {
12938    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteTopicRuleError> {
12939        if let Some(err) = proto::json::Error::parse_rest(&res) {
12940            match err.typ.as_str() {
12941                "ConflictingResourceUpdateException" => {
12942                    return RusotoError::Service(DeleteTopicRuleError::ConflictingResourceUpdate(
12943                        err.msg,
12944                    ))
12945                }
12946                "InternalException" => {
12947                    return RusotoError::Service(DeleteTopicRuleError::Internal(err.msg))
12948                }
12949                "InvalidRequestException" => {
12950                    return RusotoError::Service(DeleteTopicRuleError::InvalidRequest(err.msg))
12951                }
12952                "ServiceUnavailableException" => {
12953                    return RusotoError::Service(DeleteTopicRuleError::ServiceUnavailable(err.msg))
12954                }
12955                "UnauthorizedException" => {
12956                    return RusotoError::Service(DeleteTopicRuleError::Unauthorized(err.msg))
12957                }
12958                "ValidationException" => return RusotoError::Validation(err.msg),
12959                _ => {}
12960            }
12961        }
12962        RusotoError::Unknown(res)
12963    }
12964}
12965impl fmt::Display for DeleteTopicRuleError {
12966    #[allow(unused_variables)]
12967    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12968        match *self {
12969            DeleteTopicRuleError::ConflictingResourceUpdate(ref cause) => write!(f, "{}", cause),
12970            DeleteTopicRuleError::Internal(ref cause) => write!(f, "{}", cause),
12971            DeleteTopicRuleError::InvalidRequest(ref cause) => write!(f, "{}", cause),
12972            DeleteTopicRuleError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
12973            DeleteTopicRuleError::Unauthorized(ref cause) => write!(f, "{}", cause),
12974        }
12975    }
12976}
12977impl Error for DeleteTopicRuleError {}
12978/// Errors returned by DeleteTopicRuleDestination
12979#[derive(Debug, PartialEq)]
12980pub enum DeleteTopicRuleDestinationError {
12981    /// <p>A conflicting resource update exception. This exception is thrown when two pending updates cause a conflict.</p>
12982    ConflictingResourceUpdate(String),
12983    /// <p>An unexpected error has occurred.</p>
12984    Internal(String),
12985    /// <p>The request is not valid.</p>
12986    InvalidRequest(String),
12987    /// <p>The service is temporarily unavailable.</p>
12988    ServiceUnavailable(String),
12989    /// <p>You are not authorized to perform this operation.</p>
12990    Unauthorized(String),
12991}
12992
12993impl DeleteTopicRuleDestinationError {
12994    pub fn from_response(
12995        res: BufferedHttpResponse,
12996    ) -> RusotoError<DeleteTopicRuleDestinationError> {
12997        if let Some(err) = proto::json::Error::parse_rest(&res) {
12998            match err.typ.as_str() {
12999                "ConflictingResourceUpdateException" => {
13000                    return RusotoError::Service(
13001                        DeleteTopicRuleDestinationError::ConflictingResourceUpdate(err.msg),
13002                    )
13003                }
13004                "InternalException" => {
13005                    return RusotoError::Service(DeleteTopicRuleDestinationError::Internal(err.msg))
13006                }
13007                "InvalidRequestException" => {
13008                    return RusotoError::Service(DeleteTopicRuleDestinationError::InvalidRequest(
13009                        err.msg,
13010                    ))
13011                }
13012                "ServiceUnavailableException" => {
13013                    return RusotoError::Service(
13014                        DeleteTopicRuleDestinationError::ServiceUnavailable(err.msg),
13015                    )
13016                }
13017                "UnauthorizedException" => {
13018                    return RusotoError::Service(DeleteTopicRuleDestinationError::Unauthorized(
13019                        err.msg,
13020                    ))
13021                }
13022                "ValidationException" => return RusotoError::Validation(err.msg),
13023                _ => {}
13024            }
13025        }
13026        RusotoError::Unknown(res)
13027    }
13028}
13029impl fmt::Display for DeleteTopicRuleDestinationError {
13030    #[allow(unused_variables)]
13031    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13032        match *self {
13033            DeleteTopicRuleDestinationError::ConflictingResourceUpdate(ref cause) => {
13034                write!(f, "{}", cause)
13035            }
13036            DeleteTopicRuleDestinationError::Internal(ref cause) => write!(f, "{}", cause),
13037            DeleteTopicRuleDestinationError::InvalidRequest(ref cause) => write!(f, "{}", cause),
13038            DeleteTopicRuleDestinationError::ServiceUnavailable(ref cause) => {
13039                write!(f, "{}", cause)
13040            }
13041            DeleteTopicRuleDestinationError::Unauthorized(ref cause) => write!(f, "{}", cause),
13042        }
13043    }
13044}
13045impl Error for DeleteTopicRuleDestinationError {}
13046/// Errors returned by DeleteV2LoggingLevel
13047#[derive(Debug, PartialEq)]
13048pub enum DeleteV2LoggingLevelError {
13049    /// <p>An unexpected error has occurred.</p>
13050    Internal(String),
13051    /// <p>The request is not valid.</p>
13052    InvalidRequest(String),
13053    /// <p>The service is temporarily unavailable.</p>
13054    ServiceUnavailable(String),
13055}
13056
13057impl DeleteV2LoggingLevelError {
13058    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteV2LoggingLevelError> {
13059        if let Some(err) = proto::json::Error::parse_rest(&res) {
13060            match err.typ.as_str() {
13061                "InternalException" => {
13062                    return RusotoError::Service(DeleteV2LoggingLevelError::Internal(err.msg))
13063                }
13064                "InvalidRequestException" => {
13065                    return RusotoError::Service(DeleteV2LoggingLevelError::InvalidRequest(err.msg))
13066                }
13067                "ServiceUnavailableException" => {
13068                    return RusotoError::Service(DeleteV2LoggingLevelError::ServiceUnavailable(
13069                        err.msg,
13070                    ))
13071                }
13072                "ValidationException" => return RusotoError::Validation(err.msg),
13073                _ => {}
13074            }
13075        }
13076        RusotoError::Unknown(res)
13077    }
13078}
13079impl fmt::Display for DeleteV2LoggingLevelError {
13080    #[allow(unused_variables)]
13081    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13082        match *self {
13083            DeleteV2LoggingLevelError::Internal(ref cause) => write!(f, "{}", cause),
13084            DeleteV2LoggingLevelError::InvalidRequest(ref cause) => write!(f, "{}", cause),
13085            DeleteV2LoggingLevelError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
13086        }
13087    }
13088}
13089impl Error for DeleteV2LoggingLevelError {}
13090/// Errors returned by DeprecateThingType
13091#[derive(Debug, PartialEq)]
13092pub enum DeprecateThingTypeError {
13093    /// <p>An unexpected error has occurred.</p>
13094    InternalFailure(String),
13095    /// <p>The request is not valid.</p>
13096    InvalidRequest(String),
13097    /// <p>The specified resource does not exist.</p>
13098    ResourceNotFound(String),
13099    /// <p>The service is temporarily unavailable.</p>
13100    ServiceUnavailable(String),
13101    /// <p>The rate exceeds the limit.</p>
13102    Throttling(String),
13103    /// <p>You are not authorized to perform this operation.</p>
13104    Unauthorized(String),
13105}
13106
13107impl DeprecateThingTypeError {
13108    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeprecateThingTypeError> {
13109        if let Some(err) = proto::json::Error::parse_rest(&res) {
13110            match err.typ.as_str() {
13111                "InternalFailureException" => {
13112                    return RusotoError::Service(DeprecateThingTypeError::InternalFailure(err.msg))
13113                }
13114                "InvalidRequestException" => {
13115                    return RusotoError::Service(DeprecateThingTypeError::InvalidRequest(err.msg))
13116                }
13117                "ResourceNotFoundException" => {
13118                    return RusotoError::Service(DeprecateThingTypeError::ResourceNotFound(err.msg))
13119                }
13120                "ServiceUnavailableException" => {
13121                    return RusotoError::Service(DeprecateThingTypeError::ServiceUnavailable(
13122                        err.msg,
13123                    ))
13124                }
13125                "ThrottlingException" => {
13126                    return RusotoError::Service(DeprecateThingTypeError::Throttling(err.msg))
13127                }
13128                "UnauthorizedException" => {
13129                    return RusotoError::Service(DeprecateThingTypeError::Unauthorized(err.msg))
13130                }
13131                "ValidationException" => return RusotoError::Validation(err.msg),
13132                _ => {}
13133            }
13134        }
13135        RusotoError::Unknown(res)
13136    }
13137}
13138impl fmt::Display for DeprecateThingTypeError {
13139    #[allow(unused_variables)]
13140    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13141        match *self {
13142            DeprecateThingTypeError::InternalFailure(ref cause) => write!(f, "{}", cause),
13143            DeprecateThingTypeError::InvalidRequest(ref cause) => write!(f, "{}", cause),
13144            DeprecateThingTypeError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
13145            DeprecateThingTypeError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
13146            DeprecateThingTypeError::Throttling(ref cause) => write!(f, "{}", cause),
13147            DeprecateThingTypeError::Unauthorized(ref cause) => write!(f, "{}", cause),
13148        }
13149    }
13150}
13151impl Error for DeprecateThingTypeError {}
13152/// Errors returned by DescribeAccountAuditConfiguration
13153#[derive(Debug, PartialEq)]
13154pub enum DescribeAccountAuditConfigurationError {
13155    /// <p>An unexpected error has occurred.</p>
13156    InternalFailure(String),
13157    /// <p>The rate exceeds the limit.</p>
13158    Throttling(String),
13159}
13160
13161impl DescribeAccountAuditConfigurationError {
13162    pub fn from_response(
13163        res: BufferedHttpResponse,
13164    ) -> RusotoError<DescribeAccountAuditConfigurationError> {
13165        if let Some(err) = proto::json::Error::parse_rest(&res) {
13166            match err.typ.as_str() {
13167                "InternalFailureException" => {
13168                    return RusotoError::Service(
13169                        DescribeAccountAuditConfigurationError::InternalFailure(err.msg),
13170                    )
13171                }
13172                "ThrottlingException" => {
13173                    return RusotoError::Service(
13174                        DescribeAccountAuditConfigurationError::Throttling(err.msg),
13175                    )
13176                }
13177                "ValidationException" => return RusotoError::Validation(err.msg),
13178                _ => {}
13179            }
13180        }
13181        RusotoError::Unknown(res)
13182    }
13183}
13184impl fmt::Display for DescribeAccountAuditConfigurationError {
13185    #[allow(unused_variables)]
13186    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13187        match *self {
13188            DescribeAccountAuditConfigurationError::InternalFailure(ref cause) => {
13189                write!(f, "{}", cause)
13190            }
13191            DescribeAccountAuditConfigurationError::Throttling(ref cause) => write!(f, "{}", cause),
13192        }
13193    }
13194}
13195impl Error for DescribeAccountAuditConfigurationError {}
13196/// Errors returned by DescribeAuditFinding
13197#[derive(Debug, PartialEq)]
13198pub enum DescribeAuditFindingError {
13199    /// <p>An unexpected error has occurred.</p>
13200    InternalFailure(String),
13201    /// <p>The request is not valid.</p>
13202    InvalidRequest(String),
13203    /// <p>The specified resource does not exist.</p>
13204    ResourceNotFound(String),
13205    /// <p>The rate exceeds the limit.</p>
13206    Throttling(String),
13207}
13208
13209impl DescribeAuditFindingError {
13210    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeAuditFindingError> {
13211        if let Some(err) = proto::json::Error::parse_rest(&res) {
13212            match err.typ.as_str() {
13213                "InternalFailureException" => {
13214                    return RusotoError::Service(DescribeAuditFindingError::InternalFailure(
13215                        err.msg,
13216                    ))
13217                }
13218                "InvalidRequestException" => {
13219                    return RusotoError::Service(DescribeAuditFindingError::InvalidRequest(err.msg))
13220                }
13221                "ResourceNotFoundException" => {
13222                    return RusotoError::Service(DescribeAuditFindingError::ResourceNotFound(
13223                        err.msg,
13224                    ))
13225                }
13226                "ThrottlingException" => {
13227                    return RusotoError::Service(DescribeAuditFindingError::Throttling(err.msg))
13228                }
13229                "ValidationException" => return RusotoError::Validation(err.msg),
13230                _ => {}
13231            }
13232        }
13233        RusotoError::Unknown(res)
13234    }
13235}
13236impl fmt::Display for DescribeAuditFindingError {
13237    #[allow(unused_variables)]
13238    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13239        match *self {
13240            DescribeAuditFindingError::InternalFailure(ref cause) => write!(f, "{}", cause),
13241            DescribeAuditFindingError::InvalidRequest(ref cause) => write!(f, "{}", cause),
13242            DescribeAuditFindingError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
13243            DescribeAuditFindingError::Throttling(ref cause) => write!(f, "{}", cause),
13244        }
13245    }
13246}
13247impl Error for DescribeAuditFindingError {}
13248/// Errors returned by DescribeAuditMitigationActionsTask
13249#[derive(Debug, PartialEq)]
13250pub enum DescribeAuditMitigationActionsTaskError {
13251    /// <p>An unexpected error has occurred.</p>
13252    InternalFailure(String),
13253    /// <p>The request is not valid.</p>
13254    InvalidRequest(String),
13255    /// <p>The specified resource does not exist.</p>
13256    ResourceNotFound(String),
13257    /// <p>The rate exceeds the limit.</p>
13258    Throttling(String),
13259}
13260
13261impl DescribeAuditMitigationActionsTaskError {
13262    pub fn from_response(
13263        res: BufferedHttpResponse,
13264    ) -> RusotoError<DescribeAuditMitigationActionsTaskError> {
13265        if let Some(err) = proto::json::Error::parse_rest(&res) {
13266            match err.typ.as_str() {
13267                "InternalFailureException" => {
13268                    return RusotoError::Service(
13269                        DescribeAuditMitigationActionsTaskError::InternalFailure(err.msg),
13270                    )
13271                }
13272                "InvalidRequestException" => {
13273                    return RusotoError::Service(
13274                        DescribeAuditMitigationActionsTaskError::InvalidRequest(err.msg),
13275                    )
13276                }
13277                "ResourceNotFoundException" => {
13278                    return RusotoError::Service(
13279                        DescribeAuditMitigationActionsTaskError::ResourceNotFound(err.msg),
13280                    )
13281                }
13282                "ThrottlingException" => {
13283                    return RusotoError::Service(
13284                        DescribeAuditMitigationActionsTaskError::Throttling(err.msg),
13285                    )
13286                }
13287                "ValidationException" => return RusotoError::Validation(err.msg),
13288                _ => {}
13289            }
13290        }
13291        RusotoError::Unknown(res)
13292    }
13293}
13294impl fmt::Display for DescribeAuditMitigationActionsTaskError {
13295    #[allow(unused_variables)]
13296    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13297        match *self {
13298            DescribeAuditMitigationActionsTaskError::InternalFailure(ref cause) => {
13299                write!(f, "{}", cause)
13300            }
13301            DescribeAuditMitigationActionsTaskError::InvalidRequest(ref cause) => {
13302                write!(f, "{}", cause)
13303            }
13304            DescribeAuditMitigationActionsTaskError::ResourceNotFound(ref cause) => {
13305                write!(f, "{}", cause)
13306            }
13307            DescribeAuditMitigationActionsTaskError::Throttling(ref cause) => {
13308                write!(f, "{}", cause)
13309            }
13310        }
13311    }
13312}
13313impl Error for DescribeAuditMitigationActionsTaskError {}
13314/// Errors returned by DescribeAuditTask
13315#[derive(Debug, PartialEq)]
13316pub enum DescribeAuditTaskError {
13317    /// <p>An unexpected error has occurred.</p>
13318    InternalFailure(String),
13319    /// <p>The request is not valid.</p>
13320    InvalidRequest(String),
13321    /// <p>The specified resource does not exist.</p>
13322    ResourceNotFound(String),
13323    /// <p>The rate exceeds the limit.</p>
13324    Throttling(String),
13325}
13326
13327impl DescribeAuditTaskError {
13328    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeAuditTaskError> {
13329        if let Some(err) = proto::json::Error::parse_rest(&res) {
13330            match err.typ.as_str() {
13331                "InternalFailureException" => {
13332                    return RusotoError::Service(DescribeAuditTaskError::InternalFailure(err.msg))
13333                }
13334                "InvalidRequestException" => {
13335                    return RusotoError::Service(DescribeAuditTaskError::InvalidRequest(err.msg))
13336                }
13337                "ResourceNotFoundException" => {
13338                    return RusotoError::Service(DescribeAuditTaskError::ResourceNotFound(err.msg))
13339                }
13340                "ThrottlingException" => {
13341                    return RusotoError::Service(DescribeAuditTaskError::Throttling(err.msg))
13342                }
13343                "ValidationException" => return RusotoError::Validation(err.msg),
13344                _ => {}
13345            }
13346        }
13347        RusotoError::Unknown(res)
13348    }
13349}
13350impl fmt::Display for DescribeAuditTaskError {
13351    #[allow(unused_variables)]
13352    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13353        match *self {
13354            DescribeAuditTaskError::InternalFailure(ref cause) => write!(f, "{}", cause),
13355            DescribeAuditTaskError::InvalidRequest(ref cause) => write!(f, "{}", cause),
13356            DescribeAuditTaskError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
13357            DescribeAuditTaskError::Throttling(ref cause) => write!(f, "{}", cause),
13358        }
13359    }
13360}
13361impl Error for DescribeAuditTaskError {}
13362/// Errors returned by DescribeAuthorizer
13363#[derive(Debug, PartialEq)]
13364pub enum DescribeAuthorizerError {
13365    /// <p>An unexpected error has occurred.</p>
13366    InternalFailure(String),
13367    /// <p>The request is not valid.</p>
13368    InvalidRequest(String),
13369    /// <p>The specified resource does not exist.</p>
13370    ResourceNotFound(String),
13371    /// <p>The service is temporarily unavailable.</p>
13372    ServiceUnavailable(String),
13373    /// <p>The rate exceeds the limit.</p>
13374    Throttling(String),
13375    /// <p>You are not authorized to perform this operation.</p>
13376    Unauthorized(String),
13377}
13378
13379impl DescribeAuthorizerError {
13380    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeAuthorizerError> {
13381        if let Some(err) = proto::json::Error::parse_rest(&res) {
13382            match err.typ.as_str() {
13383                "InternalFailureException" => {
13384                    return RusotoError::Service(DescribeAuthorizerError::InternalFailure(err.msg))
13385                }
13386                "InvalidRequestException" => {
13387                    return RusotoError::Service(DescribeAuthorizerError::InvalidRequest(err.msg))
13388                }
13389                "ResourceNotFoundException" => {
13390                    return RusotoError::Service(DescribeAuthorizerError::ResourceNotFound(err.msg))
13391                }
13392                "ServiceUnavailableException" => {
13393                    return RusotoError::Service(DescribeAuthorizerError::ServiceUnavailable(
13394                        err.msg,
13395                    ))
13396                }
13397                "ThrottlingException" => {
13398                    return RusotoError::Service(DescribeAuthorizerError::Throttling(err.msg))
13399                }
13400                "UnauthorizedException" => {
13401                    return RusotoError::Service(DescribeAuthorizerError::Unauthorized(err.msg))
13402                }
13403                "ValidationException" => return RusotoError::Validation(err.msg),
13404                _ => {}
13405            }
13406        }
13407        RusotoError::Unknown(res)
13408    }
13409}
13410impl fmt::Display for DescribeAuthorizerError {
13411    #[allow(unused_variables)]
13412    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13413        match *self {
13414            DescribeAuthorizerError::InternalFailure(ref cause) => write!(f, "{}", cause),
13415            DescribeAuthorizerError::InvalidRequest(ref cause) => write!(f, "{}", cause),
13416            DescribeAuthorizerError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
13417            DescribeAuthorizerError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
13418            DescribeAuthorizerError::Throttling(ref cause) => write!(f, "{}", cause),
13419            DescribeAuthorizerError::Unauthorized(ref cause) => write!(f, "{}", cause),
13420        }
13421    }
13422}
13423impl Error for DescribeAuthorizerError {}
13424/// Errors returned by DescribeBillingGroup
13425#[derive(Debug, PartialEq)]
13426pub enum DescribeBillingGroupError {
13427    /// <p>An unexpected error has occurred.</p>
13428    InternalFailure(String),
13429    /// <p>The request is not valid.</p>
13430    InvalidRequest(String),
13431    /// <p>The specified resource does not exist.</p>
13432    ResourceNotFound(String),
13433    /// <p>The rate exceeds the limit.</p>
13434    Throttling(String),
13435}
13436
13437impl DescribeBillingGroupError {
13438    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeBillingGroupError> {
13439        if let Some(err) = proto::json::Error::parse_rest(&res) {
13440            match err.typ.as_str() {
13441                "InternalFailureException" => {
13442                    return RusotoError::Service(DescribeBillingGroupError::InternalFailure(
13443                        err.msg,
13444                    ))
13445                }
13446                "InvalidRequestException" => {
13447                    return RusotoError::Service(DescribeBillingGroupError::InvalidRequest(err.msg))
13448                }
13449                "ResourceNotFoundException" => {
13450                    return RusotoError::Service(DescribeBillingGroupError::ResourceNotFound(
13451                        err.msg,
13452                    ))
13453                }
13454                "ThrottlingException" => {
13455                    return RusotoError::Service(DescribeBillingGroupError::Throttling(err.msg))
13456                }
13457                "ValidationException" => return RusotoError::Validation(err.msg),
13458                _ => {}
13459            }
13460        }
13461        RusotoError::Unknown(res)
13462    }
13463}
13464impl fmt::Display for DescribeBillingGroupError {
13465    #[allow(unused_variables)]
13466    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13467        match *self {
13468            DescribeBillingGroupError::InternalFailure(ref cause) => write!(f, "{}", cause),
13469            DescribeBillingGroupError::InvalidRequest(ref cause) => write!(f, "{}", cause),
13470            DescribeBillingGroupError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
13471            DescribeBillingGroupError::Throttling(ref cause) => write!(f, "{}", cause),
13472        }
13473    }
13474}
13475impl Error for DescribeBillingGroupError {}
13476/// Errors returned by DescribeCACertificate
13477#[derive(Debug, PartialEq)]
13478pub enum DescribeCACertificateError {
13479    /// <p>An unexpected error has occurred.</p>
13480    InternalFailure(String),
13481    /// <p>The request is not valid.</p>
13482    InvalidRequest(String),
13483    /// <p>The specified resource does not exist.</p>
13484    ResourceNotFound(String),
13485    /// <p>The service is temporarily unavailable.</p>
13486    ServiceUnavailable(String),
13487    /// <p>The rate exceeds the limit.</p>
13488    Throttling(String),
13489    /// <p>You are not authorized to perform this operation.</p>
13490    Unauthorized(String),
13491}
13492
13493impl DescribeCACertificateError {
13494    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeCACertificateError> {
13495        if let Some(err) = proto::json::Error::parse_rest(&res) {
13496            match err.typ.as_str() {
13497                "InternalFailureException" => {
13498                    return RusotoError::Service(DescribeCACertificateError::InternalFailure(
13499                        err.msg,
13500                    ))
13501                }
13502                "InvalidRequestException" => {
13503                    return RusotoError::Service(DescribeCACertificateError::InvalidRequest(
13504                        err.msg,
13505                    ))
13506                }
13507                "ResourceNotFoundException" => {
13508                    return RusotoError::Service(DescribeCACertificateError::ResourceNotFound(
13509                        err.msg,
13510                    ))
13511                }
13512                "ServiceUnavailableException" => {
13513                    return RusotoError::Service(DescribeCACertificateError::ServiceUnavailable(
13514                        err.msg,
13515                    ))
13516                }
13517                "ThrottlingException" => {
13518                    return RusotoError::Service(DescribeCACertificateError::Throttling(err.msg))
13519                }
13520                "UnauthorizedException" => {
13521                    return RusotoError::Service(DescribeCACertificateError::Unauthorized(err.msg))
13522                }
13523                "ValidationException" => return RusotoError::Validation(err.msg),
13524                _ => {}
13525            }
13526        }
13527        RusotoError::Unknown(res)
13528    }
13529}
13530impl fmt::Display for DescribeCACertificateError {
13531    #[allow(unused_variables)]
13532    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13533        match *self {
13534            DescribeCACertificateError::InternalFailure(ref cause) => write!(f, "{}", cause),
13535            DescribeCACertificateError::InvalidRequest(ref cause) => write!(f, "{}", cause),
13536            DescribeCACertificateError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
13537            DescribeCACertificateError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
13538            DescribeCACertificateError::Throttling(ref cause) => write!(f, "{}", cause),
13539            DescribeCACertificateError::Unauthorized(ref cause) => write!(f, "{}", cause),
13540        }
13541    }
13542}
13543impl Error for DescribeCACertificateError {}
13544/// Errors returned by DescribeCertificate
13545#[derive(Debug, PartialEq)]
13546pub enum DescribeCertificateError {
13547    /// <p>An unexpected error has occurred.</p>
13548    InternalFailure(String),
13549    /// <p>The request is not valid.</p>
13550    InvalidRequest(String),
13551    /// <p>The specified resource does not exist.</p>
13552    ResourceNotFound(String),
13553    /// <p>The service is temporarily unavailable.</p>
13554    ServiceUnavailable(String),
13555    /// <p>The rate exceeds the limit.</p>
13556    Throttling(String),
13557    /// <p>You are not authorized to perform this operation.</p>
13558    Unauthorized(String),
13559}
13560
13561impl DescribeCertificateError {
13562    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeCertificateError> {
13563        if let Some(err) = proto::json::Error::parse_rest(&res) {
13564            match err.typ.as_str() {
13565                "InternalFailureException" => {
13566                    return RusotoError::Service(DescribeCertificateError::InternalFailure(err.msg))
13567                }
13568                "InvalidRequestException" => {
13569                    return RusotoError::Service(DescribeCertificateError::InvalidRequest(err.msg))
13570                }
13571                "ResourceNotFoundException" => {
13572                    return RusotoError::Service(DescribeCertificateError::ResourceNotFound(
13573                        err.msg,
13574                    ))
13575                }
13576                "ServiceUnavailableException" => {
13577                    return RusotoError::Service(DescribeCertificateError::ServiceUnavailable(
13578                        err.msg,
13579                    ))
13580                }
13581                "ThrottlingException" => {
13582                    return RusotoError::Service(DescribeCertificateError::Throttling(err.msg))
13583                }
13584                "UnauthorizedException" => {
13585                    return RusotoError::Service(DescribeCertificateError::Unauthorized(err.msg))
13586                }
13587                "ValidationException" => return RusotoError::Validation(err.msg),
13588                _ => {}
13589            }
13590        }
13591        RusotoError::Unknown(res)
13592    }
13593}
13594impl fmt::Display for DescribeCertificateError {
13595    #[allow(unused_variables)]
13596    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13597        match *self {
13598            DescribeCertificateError::InternalFailure(ref cause) => write!(f, "{}", cause),
13599            DescribeCertificateError::InvalidRequest(ref cause) => write!(f, "{}", cause),
13600            DescribeCertificateError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
13601            DescribeCertificateError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
13602            DescribeCertificateError::Throttling(ref cause) => write!(f, "{}", cause),
13603            DescribeCertificateError::Unauthorized(ref cause) => write!(f, "{}", cause),
13604        }
13605    }
13606}
13607impl Error for DescribeCertificateError {}
13608/// Errors returned by DescribeDefaultAuthorizer
13609#[derive(Debug, PartialEq)]
13610pub enum DescribeDefaultAuthorizerError {
13611    /// <p>An unexpected error has occurred.</p>
13612    InternalFailure(String),
13613    /// <p>The request is not valid.</p>
13614    InvalidRequest(String),
13615    /// <p>The specified resource does not exist.</p>
13616    ResourceNotFound(String),
13617    /// <p>The service is temporarily unavailable.</p>
13618    ServiceUnavailable(String),
13619    /// <p>The rate exceeds the limit.</p>
13620    Throttling(String),
13621    /// <p>You are not authorized to perform this operation.</p>
13622    Unauthorized(String),
13623}
13624
13625impl DescribeDefaultAuthorizerError {
13626    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeDefaultAuthorizerError> {
13627        if let Some(err) = proto::json::Error::parse_rest(&res) {
13628            match err.typ.as_str() {
13629                "InternalFailureException" => {
13630                    return RusotoError::Service(DescribeDefaultAuthorizerError::InternalFailure(
13631                        err.msg,
13632                    ))
13633                }
13634                "InvalidRequestException" => {
13635                    return RusotoError::Service(DescribeDefaultAuthorizerError::InvalidRequest(
13636                        err.msg,
13637                    ))
13638                }
13639                "ResourceNotFoundException" => {
13640                    return RusotoError::Service(DescribeDefaultAuthorizerError::ResourceNotFound(
13641                        err.msg,
13642                    ))
13643                }
13644                "ServiceUnavailableException" => {
13645                    return RusotoError::Service(
13646                        DescribeDefaultAuthorizerError::ServiceUnavailable(err.msg),
13647                    )
13648                }
13649                "ThrottlingException" => {
13650                    return RusotoError::Service(DescribeDefaultAuthorizerError::Throttling(
13651                        err.msg,
13652                    ))
13653                }
13654                "UnauthorizedException" => {
13655                    return RusotoError::Service(DescribeDefaultAuthorizerError::Unauthorized(
13656                        err.msg,
13657                    ))
13658                }
13659                "ValidationException" => return RusotoError::Validation(err.msg),
13660                _ => {}
13661            }
13662        }
13663        RusotoError::Unknown(res)
13664    }
13665}
13666impl fmt::Display for DescribeDefaultAuthorizerError {
13667    #[allow(unused_variables)]
13668    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13669        match *self {
13670            DescribeDefaultAuthorizerError::InternalFailure(ref cause) => write!(f, "{}", cause),
13671            DescribeDefaultAuthorizerError::InvalidRequest(ref cause) => write!(f, "{}", cause),
13672            DescribeDefaultAuthorizerError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
13673            DescribeDefaultAuthorizerError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
13674            DescribeDefaultAuthorizerError::Throttling(ref cause) => write!(f, "{}", cause),
13675            DescribeDefaultAuthorizerError::Unauthorized(ref cause) => write!(f, "{}", cause),
13676        }
13677    }
13678}
13679impl Error for DescribeDefaultAuthorizerError {}
13680/// Errors returned by DescribeDimension
13681#[derive(Debug, PartialEq)]
13682pub enum DescribeDimensionError {
13683    /// <p>An unexpected error has occurred.</p>
13684    InternalFailure(String),
13685    /// <p>The request is not valid.</p>
13686    InvalidRequest(String),
13687    /// <p>The specified resource does not exist.</p>
13688    ResourceNotFound(String),
13689    /// <p>The rate exceeds the limit.</p>
13690    Throttling(String),
13691}
13692
13693impl DescribeDimensionError {
13694    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeDimensionError> {
13695        if let Some(err) = proto::json::Error::parse_rest(&res) {
13696            match err.typ.as_str() {
13697                "InternalFailureException" => {
13698                    return RusotoError::Service(DescribeDimensionError::InternalFailure(err.msg))
13699                }
13700                "InvalidRequestException" => {
13701                    return RusotoError::Service(DescribeDimensionError::InvalidRequest(err.msg))
13702                }
13703                "ResourceNotFoundException" => {
13704                    return RusotoError::Service(DescribeDimensionError::ResourceNotFound(err.msg))
13705                }
13706                "ThrottlingException" => {
13707                    return RusotoError::Service(DescribeDimensionError::Throttling(err.msg))
13708                }
13709                "ValidationException" => return RusotoError::Validation(err.msg),
13710                _ => {}
13711            }
13712        }
13713        RusotoError::Unknown(res)
13714    }
13715}
13716impl fmt::Display for DescribeDimensionError {
13717    #[allow(unused_variables)]
13718    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13719        match *self {
13720            DescribeDimensionError::InternalFailure(ref cause) => write!(f, "{}", cause),
13721            DescribeDimensionError::InvalidRequest(ref cause) => write!(f, "{}", cause),
13722            DescribeDimensionError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
13723            DescribeDimensionError::Throttling(ref cause) => write!(f, "{}", cause),
13724        }
13725    }
13726}
13727impl Error for DescribeDimensionError {}
13728/// Errors returned by DescribeDomainConfiguration
13729#[derive(Debug, PartialEq)]
13730pub enum DescribeDomainConfigurationError {
13731    /// <p>An unexpected error has occurred.</p>
13732    InternalFailure(String),
13733    /// <p>The request is not valid.</p>
13734    InvalidRequest(String),
13735    /// <p>The specified resource does not exist.</p>
13736    ResourceNotFound(String),
13737    /// <p>The service is temporarily unavailable.</p>
13738    ServiceUnavailable(String),
13739    /// <p>The rate exceeds the limit.</p>
13740    Throttling(String),
13741    /// <p>You are not authorized to perform this operation.</p>
13742    Unauthorized(String),
13743}
13744
13745impl DescribeDomainConfigurationError {
13746    pub fn from_response(
13747        res: BufferedHttpResponse,
13748    ) -> RusotoError<DescribeDomainConfigurationError> {
13749        if let Some(err) = proto::json::Error::parse_rest(&res) {
13750            match err.typ.as_str() {
13751                "InternalFailureException" => {
13752                    return RusotoError::Service(DescribeDomainConfigurationError::InternalFailure(
13753                        err.msg,
13754                    ))
13755                }
13756                "InvalidRequestException" => {
13757                    return RusotoError::Service(DescribeDomainConfigurationError::InvalidRequest(
13758                        err.msg,
13759                    ))
13760                }
13761                "ResourceNotFoundException" => {
13762                    return RusotoError::Service(
13763                        DescribeDomainConfigurationError::ResourceNotFound(err.msg),
13764                    )
13765                }
13766                "ServiceUnavailableException" => {
13767                    return RusotoError::Service(
13768                        DescribeDomainConfigurationError::ServiceUnavailable(err.msg),
13769                    )
13770                }
13771                "ThrottlingException" => {
13772                    return RusotoError::Service(DescribeDomainConfigurationError::Throttling(
13773                        err.msg,
13774                    ))
13775                }
13776                "UnauthorizedException" => {
13777                    return RusotoError::Service(DescribeDomainConfigurationError::Unauthorized(
13778                        err.msg,
13779                    ))
13780                }
13781                "ValidationException" => return RusotoError::Validation(err.msg),
13782                _ => {}
13783            }
13784        }
13785        RusotoError::Unknown(res)
13786    }
13787}
13788impl fmt::Display for DescribeDomainConfigurationError {
13789    #[allow(unused_variables)]
13790    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13791        match *self {
13792            DescribeDomainConfigurationError::InternalFailure(ref cause) => write!(f, "{}", cause),
13793            DescribeDomainConfigurationError::InvalidRequest(ref cause) => write!(f, "{}", cause),
13794            DescribeDomainConfigurationError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
13795            DescribeDomainConfigurationError::ServiceUnavailable(ref cause) => {
13796                write!(f, "{}", cause)
13797            }
13798            DescribeDomainConfigurationError::Throttling(ref cause) => write!(f, "{}", cause),
13799            DescribeDomainConfigurationError::Unauthorized(ref cause) => write!(f, "{}", cause),
13800        }
13801    }
13802}
13803impl Error for DescribeDomainConfigurationError {}
13804/// Errors returned by DescribeEndpoint
13805#[derive(Debug, PartialEq)]
13806pub enum DescribeEndpointError {
13807    /// <p>An unexpected error has occurred.</p>
13808    InternalFailure(String),
13809    /// <p>The request is not valid.</p>
13810    InvalidRequest(String),
13811    /// <p>The rate exceeds the limit.</p>
13812    Throttling(String),
13813    /// <p>You are not authorized to perform this operation.</p>
13814    Unauthorized(String),
13815}
13816
13817impl DescribeEndpointError {
13818    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeEndpointError> {
13819        if let Some(err) = proto::json::Error::parse_rest(&res) {
13820            match err.typ.as_str() {
13821                "InternalFailureException" => {
13822                    return RusotoError::Service(DescribeEndpointError::InternalFailure(err.msg))
13823                }
13824                "InvalidRequestException" => {
13825                    return RusotoError::Service(DescribeEndpointError::InvalidRequest(err.msg))
13826                }
13827                "ThrottlingException" => {
13828                    return RusotoError::Service(DescribeEndpointError::Throttling(err.msg))
13829                }
13830                "UnauthorizedException" => {
13831                    return RusotoError::Service(DescribeEndpointError::Unauthorized(err.msg))
13832                }
13833                "ValidationException" => return RusotoError::Validation(err.msg),
13834                _ => {}
13835            }
13836        }
13837        RusotoError::Unknown(res)
13838    }
13839}
13840impl fmt::Display for DescribeEndpointError {
13841    #[allow(unused_variables)]
13842    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13843        match *self {
13844            DescribeEndpointError::InternalFailure(ref cause) => write!(f, "{}", cause),
13845            DescribeEndpointError::InvalidRequest(ref cause) => write!(f, "{}", cause),
13846            DescribeEndpointError::Throttling(ref cause) => write!(f, "{}", cause),
13847            DescribeEndpointError::Unauthorized(ref cause) => write!(f, "{}", cause),
13848        }
13849    }
13850}
13851impl Error for DescribeEndpointError {}
13852/// Errors returned by DescribeEventConfigurations
13853#[derive(Debug, PartialEq)]
13854pub enum DescribeEventConfigurationsError {
13855    /// <p>An unexpected error has occurred.</p>
13856    InternalFailure(String),
13857    /// <p>The rate exceeds the limit.</p>
13858    Throttling(String),
13859}
13860
13861impl DescribeEventConfigurationsError {
13862    pub fn from_response(
13863        res: BufferedHttpResponse,
13864    ) -> RusotoError<DescribeEventConfigurationsError> {
13865        if let Some(err) = proto::json::Error::parse_rest(&res) {
13866            match err.typ.as_str() {
13867                "InternalFailureException" => {
13868                    return RusotoError::Service(DescribeEventConfigurationsError::InternalFailure(
13869                        err.msg,
13870                    ))
13871                }
13872                "ThrottlingException" => {
13873                    return RusotoError::Service(DescribeEventConfigurationsError::Throttling(
13874                        err.msg,
13875                    ))
13876                }
13877                "ValidationException" => return RusotoError::Validation(err.msg),
13878                _ => {}
13879            }
13880        }
13881        RusotoError::Unknown(res)
13882    }
13883}
13884impl fmt::Display for DescribeEventConfigurationsError {
13885    #[allow(unused_variables)]
13886    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13887        match *self {
13888            DescribeEventConfigurationsError::InternalFailure(ref cause) => write!(f, "{}", cause),
13889            DescribeEventConfigurationsError::Throttling(ref cause) => write!(f, "{}", cause),
13890        }
13891    }
13892}
13893impl Error for DescribeEventConfigurationsError {}
13894/// Errors returned by DescribeIndex
13895#[derive(Debug, PartialEq)]
13896pub enum DescribeIndexError {
13897    /// <p>An unexpected error has occurred.</p>
13898    InternalFailure(String),
13899    /// <p>The request is not valid.</p>
13900    InvalidRequest(String),
13901    /// <p>The specified resource does not exist.</p>
13902    ResourceNotFound(String),
13903    /// <p>The service is temporarily unavailable.</p>
13904    ServiceUnavailable(String),
13905    /// <p>The rate exceeds the limit.</p>
13906    Throttling(String),
13907    /// <p>You are not authorized to perform this operation.</p>
13908    Unauthorized(String),
13909}
13910
13911impl DescribeIndexError {
13912    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeIndexError> {
13913        if let Some(err) = proto::json::Error::parse_rest(&res) {
13914            match err.typ.as_str() {
13915                "InternalFailureException" => {
13916                    return RusotoError::Service(DescribeIndexError::InternalFailure(err.msg))
13917                }
13918                "InvalidRequestException" => {
13919                    return RusotoError::Service(DescribeIndexError::InvalidRequest(err.msg))
13920                }
13921                "ResourceNotFoundException" => {
13922                    return RusotoError::Service(DescribeIndexError::ResourceNotFound(err.msg))
13923                }
13924                "ServiceUnavailableException" => {
13925                    return RusotoError::Service(DescribeIndexError::ServiceUnavailable(err.msg))
13926                }
13927                "ThrottlingException" => {
13928                    return RusotoError::Service(DescribeIndexError::Throttling(err.msg))
13929                }
13930                "UnauthorizedException" => {
13931                    return RusotoError::Service(DescribeIndexError::Unauthorized(err.msg))
13932                }
13933                "ValidationException" => return RusotoError::Validation(err.msg),
13934                _ => {}
13935            }
13936        }
13937        RusotoError::Unknown(res)
13938    }
13939}
13940impl fmt::Display for DescribeIndexError {
13941    #[allow(unused_variables)]
13942    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13943        match *self {
13944            DescribeIndexError::InternalFailure(ref cause) => write!(f, "{}", cause),
13945            DescribeIndexError::InvalidRequest(ref cause) => write!(f, "{}", cause),
13946            DescribeIndexError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
13947            DescribeIndexError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
13948            DescribeIndexError::Throttling(ref cause) => write!(f, "{}", cause),
13949            DescribeIndexError::Unauthorized(ref cause) => write!(f, "{}", cause),
13950        }
13951    }
13952}
13953impl Error for DescribeIndexError {}
13954/// Errors returned by DescribeJob
13955#[derive(Debug, PartialEq)]
13956pub enum DescribeJobError {
13957    /// <p>The request is not valid.</p>
13958    InvalidRequest(String),
13959    /// <p>The specified resource does not exist.</p>
13960    ResourceNotFound(String),
13961    /// <p>The service is temporarily unavailable.</p>
13962    ServiceUnavailable(String),
13963    /// <p>The rate exceeds the limit.</p>
13964    Throttling(String),
13965}
13966
13967impl DescribeJobError {
13968    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeJobError> {
13969        if let Some(err) = proto::json::Error::parse_rest(&res) {
13970            match err.typ.as_str() {
13971                "InvalidRequestException" => {
13972                    return RusotoError::Service(DescribeJobError::InvalidRequest(err.msg))
13973                }
13974                "ResourceNotFoundException" => {
13975                    return RusotoError::Service(DescribeJobError::ResourceNotFound(err.msg))
13976                }
13977                "ServiceUnavailableException" => {
13978                    return RusotoError::Service(DescribeJobError::ServiceUnavailable(err.msg))
13979                }
13980                "ThrottlingException" => {
13981                    return RusotoError::Service(DescribeJobError::Throttling(err.msg))
13982                }
13983                "ValidationException" => return RusotoError::Validation(err.msg),
13984                _ => {}
13985            }
13986        }
13987        RusotoError::Unknown(res)
13988    }
13989}
13990impl fmt::Display for DescribeJobError {
13991    #[allow(unused_variables)]
13992    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13993        match *self {
13994            DescribeJobError::InvalidRequest(ref cause) => write!(f, "{}", cause),
13995            DescribeJobError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
13996            DescribeJobError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
13997            DescribeJobError::Throttling(ref cause) => write!(f, "{}", cause),
13998        }
13999    }
14000}
14001impl Error for DescribeJobError {}
14002/// Errors returned by DescribeJobExecution
14003#[derive(Debug, PartialEq)]
14004pub enum DescribeJobExecutionError {
14005    /// <p>The request is not valid.</p>
14006    InvalidRequest(String),
14007    /// <p>The specified resource does not exist.</p>
14008    ResourceNotFound(String),
14009    /// <p>The service is temporarily unavailable.</p>
14010    ServiceUnavailable(String),
14011    /// <p>The rate exceeds the limit.</p>
14012    Throttling(String),
14013}
14014
14015impl DescribeJobExecutionError {
14016    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeJobExecutionError> {
14017        if let Some(err) = proto::json::Error::parse_rest(&res) {
14018            match err.typ.as_str() {
14019                "InvalidRequestException" => {
14020                    return RusotoError::Service(DescribeJobExecutionError::InvalidRequest(err.msg))
14021                }
14022                "ResourceNotFoundException" => {
14023                    return RusotoError::Service(DescribeJobExecutionError::ResourceNotFound(
14024                        err.msg,
14025                    ))
14026                }
14027                "ServiceUnavailableException" => {
14028                    return RusotoError::Service(DescribeJobExecutionError::ServiceUnavailable(
14029                        err.msg,
14030                    ))
14031                }
14032                "ThrottlingException" => {
14033                    return RusotoError::Service(DescribeJobExecutionError::Throttling(err.msg))
14034                }
14035                "ValidationException" => return RusotoError::Validation(err.msg),
14036                _ => {}
14037            }
14038        }
14039        RusotoError::Unknown(res)
14040    }
14041}
14042impl fmt::Display for DescribeJobExecutionError {
14043    #[allow(unused_variables)]
14044    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14045        match *self {
14046            DescribeJobExecutionError::InvalidRequest(ref cause) => write!(f, "{}", cause),
14047            DescribeJobExecutionError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
14048            DescribeJobExecutionError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
14049            DescribeJobExecutionError::Throttling(ref cause) => write!(f, "{}", cause),
14050        }
14051    }
14052}
14053impl Error for DescribeJobExecutionError {}
14054/// Errors returned by DescribeMitigationAction
14055#[derive(Debug, PartialEq)]
14056pub enum DescribeMitigationActionError {
14057    /// <p>An unexpected error has occurred.</p>
14058    InternalFailure(String),
14059    /// <p>The request is not valid.</p>
14060    InvalidRequest(String),
14061    /// <p>The specified resource does not exist.</p>
14062    ResourceNotFound(String),
14063    /// <p>The rate exceeds the limit.</p>
14064    Throttling(String),
14065}
14066
14067impl DescribeMitigationActionError {
14068    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeMitigationActionError> {
14069        if let Some(err) = proto::json::Error::parse_rest(&res) {
14070            match err.typ.as_str() {
14071                "InternalFailureException" => {
14072                    return RusotoError::Service(DescribeMitigationActionError::InternalFailure(
14073                        err.msg,
14074                    ))
14075                }
14076                "InvalidRequestException" => {
14077                    return RusotoError::Service(DescribeMitigationActionError::InvalidRequest(
14078                        err.msg,
14079                    ))
14080                }
14081                "ResourceNotFoundException" => {
14082                    return RusotoError::Service(DescribeMitigationActionError::ResourceNotFound(
14083                        err.msg,
14084                    ))
14085                }
14086                "ThrottlingException" => {
14087                    return RusotoError::Service(DescribeMitigationActionError::Throttling(err.msg))
14088                }
14089                "ValidationException" => return RusotoError::Validation(err.msg),
14090                _ => {}
14091            }
14092        }
14093        RusotoError::Unknown(res)
14094    }
14095}
14096impl fmt::Display for DescribeMitigationActionError {
14097    #[allow(unused_variables)]
14098    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14099        match *self {
14100            DescribeMitigationActionError::InternalFailure(ref cause) => write!(f, "{}", cause),
14101            DescribeMitigationActionError::InvalidRequest(ref cause) => write!(f, "{}", cause),
14102            DescribeMitigationActionError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
14103            DescribeMitigationActionError::Throttling(ref cause) => write!(f, "{}", cause),
14104        }
14105    }
14106}
14107impl Error for DescribeMitigationActionError {}
14108/// Errors returned by DescribeProvisioningTemplate
14109#[derive(Debug, PartialEq)]
14110pub enum DescribeProvisioningTemplateError {
14111    /// <p>An unexpected error has occurred.</p>
14112    InternalFailure(String),
14113    /// <p>The request is not valid.</p>
14114    InvalidRequest(String),
14115    /// <p>The specified resource does not exist.</p>
14116    ResourceNotFound(String),
14117    /// <p>The rate exceeds the limit.</p>
14118    Throttling(String),
14119    /// <p>You are not authorized to perform this operation.</p>
14120    Unauthorized(String),
14121}
14122
14123impl DescribeProvisioningTemplateError {
14124    pub fn from_response(
14125        res: BufferedHttpResponse,
14126    ) -> RusotoError<DescribeProvisioningTemplateError> {
14127        if let Some(err) = proto::json::Error::parse_rest(&res) {
14128            match err.typ.as_str() {
14129                "InternalFailureException" => {
14130                    return RusotoError::Service(
14131                        DescribeProvisioningTemplateError::InternalFailure(err.msg),
14132                    )
14133                }
14134                "InvalidRequestException" => {
14135                    return RusotoError::Service(DescribeProvisioningTemplateError::InvalidRequest(
14136                        err.msg,
14137                    ))
14138                }
14139                "ResourceNotFoundException" => {
14140                    return RusotoError::Service(
14141                        DescribeProvisioningTemplateError::ResourceNotFound(err.msg),
14142                    )
14143                }
14144                "ThrottlingException" => {
14145                    return RusotoError::Service(DescribeProvisioningTemplateError::Throttling(
14146                        err.msg,
14147                    ))
14148                }
14149                "UnauthorizedException" => {
14150                    return RusotoError::Service(DescribeProvisioningTemplateError::Unauthorized(
14151                        err.msg,
14152                    ))
14153                }
14154                "ValidationException" => return RusotoError::Validation(err.msg),
14155                _ => {}
14156            }
14157        }
14158        RusotoError::Unknown(res)
14159    }
14160}
14161impl fmt::Display for DescribeProvisioningTemplateError {
14162    #[allow(unused_variables)]
14163    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14164        match *self {
14165            DescribeProvisioningTemplateError::InternalFailure(ref cause) => write!(f, "{}", cause),
14166            DescribeProvisioningTemplateError::InvalidRequest(ref cause) => write!(f, "{}", cause),
14167            DescribeProvisioningTemplateError::ResourceNotFound(ref cause) => {
14168                write!(f, "{}", cause)
14169            }
14170            DescribeProvisioningTemplateError::Throttling(ref cause) => write!(f, "{}", cause),
14171            DescribeProvisioningTemplateError::Unauthorized(ref cause) => write!(f, "{}", cause),
14172        }
14173    }
14174}
14175impl Error for DescribeProvisioningTemplateError {}
14176/// Errors returned by DescribeProvisioningTemplateVersion
14177#[derive(Debug, PartialEq)]
14178pub enum DescribeProvisioningTemplateVersionError {
14179    /// <p>An unexpected error has occurred.</p>
14180    InternalFailure(String),
14181    /// <p>The request is not valid.</p>
14182    InvalidRequest(String),
14183    /// <p>The specified resource does not exist.</p>
14184    ResourceNotFound(String),
14185    /// <p>The rate exceeds the limit.</p>
14186    Throttling(String),
14187    /// <p>You are not authorized to perform this operation.</p>
14188    Unauthorized(String),
14189}
14190
14191impl DescribeProvisioningTemplateVersionError {
14192    pub fn from_response(
14193        res: BufferedHttpResponse,
14194    ) -> RusotoError<DescribeProvisioningTemplateVersionError> {
14195        if let Some(err) = proto::json::Error::parse_rest(&res) {
14196            match err.typ.as_str() {
14197                "InternalFailureException" => {
14198                    return RusotoError::Service(
14199                        DescribeProvisioningTemplateVersionError::InternalFailure(err.msg),
14200                    )
14201                }
14202                "InvalidRequestException" => {
14203                    return RusotoError::Service(
14204                        DescribeProvisioningTemplateVersionError::InvalidRequest(err.msg),
14205                    )
14206                }
14207                "ResourceNotFoundException" => {
14208                    return RusotoError::Service(
14209                        DescribeProvisioningTemplateVersionError::ResourceNotFound(err.msg),
14210                    )
14211                }
14212                "ThrottlingException" => {
14213                    return RusotoError::Service(
14214                        DescribeProvisioningTemplateVersionError::Throttling(err.msg),
14215                    )
14216                }
14217                "UnauthorizedException" => {
14218                    return RusotoError::Service(
14219                        DescribeProvisioningTemplateVersionError::Unauthorized(err.msg),
14220                    )
14221                }
14222                "ValidationException" => return RusotoError::Validation(err.msg),
14223                _ => {}
14224            }
14225        }
14226        RusotoError::Unknown(res)
14227    }
14228}
14229impl fmt::Display for DescribeProvisioningTemplateVersionError {
14230    #[allow(unused_variables)]
14231    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14232        match *self {
14233            DescribeProvisioningTemplateVersionError::InternalFailure(ref cause) => {
14234                write!(f, "{}", cause)
14235            }
14236            DescribeProvisioningTemplateVersionError::InvalidRequest(ref cause) => {
14237                write!(f, "{}", cause)
14238            }
14239            DescribeProvisioningTemplateVersionError::ResourceNotFound(ref cause) => {
14240                write!(f, "{}", cause)
14241            }
14242            DescribeProvisioningTemplateVersionError::Throttling(ref cause) => {
14243                write!(f, "{}", cause)
14244            }
14245            DescribeProvisioningTemplateVersionError::Unauthorized(ref cause) => {
14246                write!(f, "{}", cause)
14247            }
14248        }
14249    }
14250}
14251impl Error for DescribeProvisioningTemplateVersionError {}
14252/// Errors returned by DescribeRoleAlias
14253#[derive(Debug, PartialEq)]
14254pub enum DescribeRoleAliasError {
14255    /// <p>An unexpected error has occurred.</p>
14256    InternalFailure(String),
14257    /// <p>The request is not valid.</p>
14258    InvalidRequest(String),
14259    /// <p>The specified resource does not exist.</p>
14260    ResourceNotFound(String),
14261    /// <p>The service is temporarily unavailable.</p>
14262    ServiceUnavailable(String),
14263    /// <p>The rate exceeds the limit.</p>
14264    Throttling(String),
14265    /// <p>You are not authorized to perform this operation.</p>
14266    Unauthorized(String),
14267}
14268
14269impl DescribeRoleAliasError {
14270    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeRoleAliasError> {
14271        if let Some(err) = proto::json::Error::parse_rest(&res) {
14272            match err.typ.as_str() {
14273                "InternalFailureException" => {
14274                    return RusotoError::Service(DescribeRoleAliasError::InternalFailure(err.msg))
14275                }
14276                "InvalidRequestException" => {
14277                    return RusotoError::Service(DescribeRoleAliasError::InvalidRequest(err.msg))
14278                }
14279                "ResourceNotFoundException" => {
14280                    return RusotoError::Service(DescribeRoleAliasError::ResourceNotFound(err.msg))
14281                }
14282                "ServiceUnavailableException" => {
14283                    return RusotoError::Service(DescribeRoleAliasError::ServiceUnavailable(
14284                        err.msg,
14285                    ))
14286                }
14287                "ThrottlingException" => {
14288                    return RusotoError::Service(DescribeRoleAliasError::Throttling(err.msg))
14289                }
14290                "UnauthorizedException" => {
14291                    return RusotoError::Service(DescribeRoleAliasError::Unauthorized(err.msg))
14292                }
14293                "ValidationException" => return RusotoError::Validation(err.msg),
14294                _ => {}
14295            }
14296        }
14297        RusotoError::Unknown(res)
14298    }
14299}
14300impl fmt::Display for DescribeRoleAliasError {
14301    #[allow(unused_variables)]
14302    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14303        match *self {
14304            DescribeRoleAliasError::InternalFailure(ref cause) => write!(f, "{}", cause),
14305            DescribeRoleAliasError::InvalidRequest(ref cause) => write!(f, "{}", cause),
14306            DescribeRoleAliasError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
14307            DescribeRoleAliasError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
14308            DescribeRoleAliasError::Throttling(ref cause) => write!(f, "{}", cause),
14309            DescribeRoleAliasError::Unauthorized(ref cause) => write!(f, "{}", cause),
14310        }
14311    }
14312}
14313impl Error for DescribeRoleAliasError {}
14314/// Errors returned by DescribeScheduledAudit
14315#[derive(Debug, PartialEq)]
14316pub enum DescribeScheduledAuditError {
14317    /// <p>An unexpected error has occurred.</p>
14318    InternalFailure(String),
14319    /// <p>The request is not valid.</p>
14320    InvalidRequest(String),
14321    /// <p>The specified resource does not exist.</p>
14322    ResourceNotFound(String),
14323    /// <p>The rate exceeds the limit.</p>
14324    Throttling(String),
14325}
14326
14327impl DescribeScheduledAuditError {
14328    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeScheduledAuditError> {
14329        if let Some(err) = proto::json::Error::parse_rest(&res) {
14330            match err.typ.as_str() {
14331                "InternalFailureException" => {
14332                    return RusotoError::Service(DescribeScheduledAuditError::InternalFailure(
14333                        err.msg,
14334                    ))
14335                }
14336                "InvalidRequestException" => {
14337                    return RusotoError::Service(DescribeScheduledAuditError::InvalidRequest(
14338                        err.msg,
14339                    ))
14340                }
14341                "ResourceNotFoundException" => {
14342                    return RusotoError::Service(DescribeScheduledAuditError::ResourceNotFound(
14343                        err.msg,
14344                    ))
14345                }
14346                "ThrottlingException" => {
14347                    return RusotoError::Service(DescribeScheduledAuditError::Throttling(err.msg))
14348                }
14349                "ValidationException" => return RusotoError::Validation(err.msg),
14350                _ => {}
14351            }
14352        }
14353        RusotoError::Unknown(res)
14354    }
14355}
14356impl fmt::Display for DescribeScheduledAuditError {
14357    #[allow(unused_variables)]
14358    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14359        match *self {
14360            DescribeScheduledAuditError::InternalFailure(ref cause) => write!(f, "{}", cause),
14361            DescribeScheduledAuditError::InvalidRequest(ref cause) => write!(f, "{}", cause),
14362            DescribeScheduledAuditError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
14363            DescribeScheduledAuditError::Throttling(ref cause) => write!(f, "{}", cause),
14364        }
14365    }
14366}
14367impl Error for DescribeScheduledAuditError {}
14368/// Errors returned by DescribeSecurityProfile
14369#[derive(Debug, PartialEq)]
14370pub enum DescribeSecurityProfileError {
14371    /// <p>An unexpected error has occurred.</p>
14372    InternalFailure(String),
14373    /// <p>The request is not valid.</p>
14374    InvalidRequest(String),
14375    /// <p>The specified resource does not exist.</p>
14376    ResourceNotFound(String),
14377    /// <p>The rate exceeds the limit.</p>
14378    Throttling(String),
14379}
14380
14381impl DescribeSecurityProfileError {
14382    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeSecurityProfileError> {
14383        if let Some(err) = proto::json::Error::parse_rest(&res) {
14384            match err.typ.as_str() {
14385                "InternalFailureException" => {
14386                    return RusotoError::Service(DescribeSecurityProfileError::InternalFailure(
14387                        err.msg,
14388                    ))
14389                }
14390                "InvalidRequestException" => {
14391                    return RusotoError::Service(DescribeSecurityProfileError::InvalidRequest(
14392                        err.msg,
14393                    ))
14394                }
14395                "ResourceNotFoundException" => {
14396                    return RusotoError::Service(DescribeSecurityProfileError::ResourceNotFound(
14397                        err.msg,
14398                    ))
14399                }
14400                "ThrottlingException" => {
14401                    return RusotoError::Service(DescribeSecurityProfileError::Throttling(err.msg))
14402                }
14403                "ValidationException" => return RusotoError::Validation(err.msg),
14404                _ => {}
14405            }
14406        }
14407        RusotoError::Unknown(res)
14408    }
14409}
14410impl fmt::Display for DescribeSecurityProfileError {
14411    #[allow(unused_variables)]
14412    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14413        match *self {
14414            DescribeSecurityProfileError::InternalFailure(ref cause) => write!(f, "{}", cause),
14415            DescribeSecurityProfileError::InvalidRequest(ref cause) => write!(f, "{}", cause),
14416            DescribeSecurityProfileError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
14417            DescribeSecurityProfileError::Throttling(ref cause) => write!(f, "{}", cause),
14418        }
14419    }
14420}
14421impl Error for DescribeSecurityProfileError {}
14422/// Errors returned by DescribeStream
14423#[derive(Debug, PartialEq)]
14424pub enum DescribeStreamError {
14425    /// <p>An unexpected error has occurred.</p>
14426    InternalFailure(String),
14427    /// <p>The request is not valid.</p>
14428    InvalidRequest(String),
14429    /// <p>The specified resource does not exist.</p>
14430    ResourceNotFound(String),
14431    /// <p>The service is temporarily unavailable.</p>
14432    ServiceUnavailable(String),
14433    /// <p>The rate exceeds the limit.</p>
14434    Throttling(String),
14435    /// <p>You are not authorized to perform this operation.</p>
14436    Unauthorized(String),
14437}
14438
14439impl DescribeStreamError {
14440    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeStreamError> {
14441        if let Some(err) = proto::json::Error::parse_rest(&res) {
14442            match err.typ.as_str() {
14443                "InternalFailureException" => {
14444                    return RusotoError::Service(DescribeStreamError::InternalFailure(err.msg))
14445                }
14446                "InvalidRequestException" => {
14447                    return RusotoError::Service(DescribeStreamError::InvalidRequest(err.msg))
14448                }
14449                "ResourceNotFoundException" => {
14450                    return RusotoError::Service(DescribeStreamError::ResourceNotFound(err.msg))
14451                }
14452                "ServiceUnavailableException" => {
14453                    return RusotoError::Service(DescribeStreamError::ServiceUnavailable(err.msg))
14454                }
14455                "ThrottlingException" => {
14456                    return RusotoError::Service(DescribeStreamError::Throttling(err.msg))
14457                }
14458                "UnauthorizedException" => {
14459                    return RusotoError::Service(DescribeStreamError::Unauthorized(err.msg))
14460                }
14461                "ValidationException" => return RusotoError::Validation(err.msg),
14462                _ => {}
14463            }
14464        }
14465        RusotoError::Unknown(res)
14466    }
14467}
14468impl fmt::Display for DescribeStreamError {
14469    #[allow(unused_variables)]
14470    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14471        match *self {
14472            DescribeStreamError::InternalFailure(ref cause) => write!(f, "{}", cause),
14473            DescribeStreamError::InvalidRequest(ref cause) => write!(f, "{}", cause),
14474            DescribeStreamError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
14475            DescribeStreamError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
14476            DescribeStreamError::Throttling(ref cause) => write!(f, "{}", cause),
14477            DescribeStreamError::Unauthorized(ref cause) => write!(f, "{}", cause),
14478        }
14479    }
14480}
14481impl Error for DescribeStreamError {}
14482/// Errors returned by DescribeThing
14483#[derive(Debug, PartialEq)]
14484pub enum DescribeThingError {
14485    /// <p>An unexpected error has occurred.</p>
14486    InternalFailure(String),
14487    /// <p>The request is not valid.</p>
14488    InvalidRequest(String),
14489    /// <p>The specified resource does not exist.</p>
14490    ResourceNotFound(String),
14491    /// <p>The service is temporarily unavailable.</p>
14492    ServiceUnavailable(String),
14493    /// <p>The rate exceeds the limit.</p>
14494    Throttling(String),
14495    /// <p>You are not authorized to perform this operation.</p>
14496    Unauthorized(String),
14497}
14498
14499impl DescribeThingError {
14500    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeThingError> {
14501        if let Some(err) = proto::json::Error::parse_rest(&res) {
14502            match err.typ.as_str() {
14503                "InternalFailureException" => {
14504                    return RusotoError::Service(DescribeThingError::InternalFailure(err.msg))
14505                }
14506                "InvalidRequestException" => {
14507                    return RusotoError::Service(DescribeThingError::InvalidRequest(err.msg))
14508                }
14509                "ResourceNotFoundException" => {
14510                    return RusotoError::Service(DescribeThingError::ResourceNotFound(err.msg))
14511                }
14512                "ServiceUnavailableException" => {
14513                    return RusotoError::Service(DescribeThingError::ServiceUnavailable(err.msg))
14514                }
14515                "ThrottlingException" => {
14516                    return RusotoError::Service(DescribeThingError::Throttling(err.msg))
14517                }
14518                "UnauthorizedException" => {
14519                    return RusotoError::Service(DescribeThingError::Unauthorized(err.msg))
14520                }
14521                "ValidationException" => return RusotoError::Validation(err.msg),
14522                _ => {}
14523            }
14524        }
14525        RusotoError::Unknown(res)
14526    }
14527}
14528impl fmt::Display for DescribeThingError {
14529    #[allow(unused_variables)]
14530    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14531        match *self {
14532            DescribeThingError::InternalFailure(ref cause) => write!(f, "{}", cause),
14533            DescribeThingError::InvalidRequest(ref cause) => write!(f, "{}", cause),
14534            DescribeThingError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
14535            DescribeThingError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
14536            DescribeThingError::Throttling(ref cause) => write!(f, "{}", cause),
14537            DescribeThingError::Unauthorized(ref cause) => write!(f, "{}", cause),
14538        }
14539    }
14540}
14541impl Error for DescribeThingError {}
14542/// Errors returned by DescribeThingGroup
14543#[derive(Debug, PartialEq)]
14544pub enum DescribeThingGroupError {
14545    /// <p>An unexpected error has occurred.</p>
14546    InternalFailure(String),
14547    /// <p>The request is not valid.</p>
14548    InvalidRequest(String),
14549    /// <p>The specified resource does not exist.</p>
14550    ResourceNotFound(String),
14551    /// <p>The rate exceeds the limit.</p>
14552    Throttling(String),
14553}
14554
14555impl DescribeThingGroupError {
14556    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeThingGroupError> {
14557        if let Some(err) = proto::json::Error::parse_rest(&res) {
14558            match err.typ.as_str() {
14559                "InternalFailureException" => {
14560                    return RusotoError::Service(DescribeThingGroupError::InternalFailure(err.msg))
14561                }
14562                "InvalidRequestException" => {
14563                    return RusotoError::Service(DescribeThingGroupError::InvalidRequest(err.msg))
14564                }
14565                "ResourceNotFoundException" => {
14566                    return RusotoError::Service(DescribeThingGroupError::ResourceNotFound(err.msg))
14567                }
14568                "ThrottlingException" => {
14569                    return RusotoError::Service(DescribeThingGroupError::Throttling(err.msg))
14570                }
14571                "ValidationException" => return RusotoError::Validation(err.msg),
14572                _ => {}
14573            }
14574        }
14575        RusotoError::Unknown(res)
14576    }
14577}
14578impl fmt::Display for DescribeThingGroupError {
14579    #[allow(unused_variables)]
14580    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14581        match *self {
14582            DescribeThingGroupError::InternalFailure(ref cause) => write!(f, "{}", cause),
14583            DescribeThingGroupError::InvalidRequest(ref cause) => write!(f, "{}", cause),
14584            DescribeThingGroupError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
14585            DescribeThingGroupError::Throttling(ref cause) => write!(f, "{}", cause),
14586        }
14587    }
14588}
14589impl Error for DescribeThingGroupError {}
14590/// Errors returned by DescribeThingRegistrationTask
14591#[derive(Debug, PartialEq)]
14592pub enum DescribeThingRegistrationTaskError {
14593    /// <p>An unexpected error has occurred.</p>
14594    InternalFailure(String),
14595    /// <p>The request is not valid.</p>
14596    InvalidRequest(String),
14597    /// <p>The specified resource does not exist.</p>
14598    ResourceNotFound(String),
14599    /// <p>The rate exceeds the limit.</p>
14600    Throttling(String),
14601    /// <p>You are not authorized to perform this operation.</p>
14602    Unauthorized(String),
14603}
14604
14605impl DescribeThingRegistrationTaskError {
14606    pub fn from_response(
14607        res: BufferedHttpResponse,
14608    ) -> RusotoError<DescribeThingRegistrationTaskError> {
14609        if let Some(err) = proto::json::Error::parse_rest(&res) {
14610            match err.typ.as_str() {
14611                "InternalFailureException" => {
14612                    return RusotoError::Service(
14613                        DescribeThingRegistrationTaskError::InternalFailure(err.msg),
14614                    )
14615                }
14616                "InvalidRequestException" => {
14617                    return RusotoError::Service(
14618                        DescribeThingRegistrationTaskError::InvalidRequest(err.msg),
14619                    )
14620                }
14621                "ResourceNotFoundException" => {
14622                    return RusotoError::Service(
14623                        DescribeThingRegistrationTaskError::ResourceNotFound(err.msg),
14624                    )
14625                }
14626                "ThrottlingException" => {
14627                    return RusotoError::Service(DescribeThingRegistrationTaskError::Throttling(
14628                        err.msg,
14629                    ))
14630                }
14631                "UnauthorizedException" => {
14632                    return RusotoError::Service(DescribeThingRegistrationTaskError::Unauthorized(
14633                        err.msg,
14634                    ))
14635                }
14636                "ValidationException" => return RusotoError::Validation(err.msg),
14637                _ => {}
14638            }
14639        }
14640        RusotoError::Unknown(res)
14641    }
14642}
14643impl fmt::Display for DescribeThingRegistrationTaskError {
14644    #[allow(unused_variables)]
14645    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14646        match *self {
14647            DescribeThingRegistrationTaskError::InternalFailure(ref cause) => {
14648                write!(f, "{}", cause)
14649            }
14650            DescribeThingRegistrationTaskError::InvalidRequest(ref cause) => write!(f, "{}", cause),
14651            DescribeThingRegistrationTaskError::ResourceNotFound(ref cause) => {
14652                write!(f, "{}", cause)
14653            }
14654            DescribeThingRegistrationTaskError::Throttling(ref cause) => write!(f, "{}", cause),
14655            DescribeThingRegistrationTaskError::Unauthorized(ref cause) => write!(f, "{}", cause),
14656        }
14657    }
14658}
14659impl Error for DescribeThingRegistrationTaskError {}
14660/// Errors returned by DescribeThingType
14661#[derive(Debug, PartialEq)]
14662pub enum DescribeThingTypeError {
14663    /// <p>An unexpected error has occurred.</p>
14664    InternalFailure(String),
14665    /// <p>The request is not valid.</p>
14666    InvalidRequest(String),
14667    /// <p>The specified resource does not exist.</p>
14668    ResourceNotFound(String),
14669    /// <p>The service is temporarily unavailable.</p>
14670    ServiceUnavailable(String),
14671    /// <p>The rate exceeds the limit.</p>
14672    Throttling(String),
14673    /// <p>You are not authorized to perform this operation.</p>
14674    Unauthorized(String),
14675}
14676
14677impl DescribeThingTypeError {
14678    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeThingTypeError> {
14679        if let Some(err) = proto::json::Error::parse_rest(&res) {
14680            match err.typ.as_str() {
14681                "InternalFailureException" => {
14682                    return RusotoError::Service(DescribeThingTypeError::InternalFailure(err.msg))
14683                }
14684                "InvalidRequestException" => {
14685                    return RusotoError::Service(DescribeThingTypeError::InvalidRequest(err.msg))
14686                }
14687                "ResourceNotFoundException" => {
14688                    return RusotoError::Service(DescribeThingTypeError::ResourceNotFound(err.msg))
14689                }
14690                "ServiceUnavailableException" => {
14691                    return RusotoError::Service(DescribeThingTypeError::ServiceUnavailable(
14692                        err.msg,
14693                    ))
14694                }
14695                "ThrottlingException" => {
14696                    return RusotoError::Service(DescribeThingTypeError::Throttling(err.msg))
14697                }
14698                "UnauthorizedException" => {
14699                    return RusotoError::Service(DescribeThingTypeError::Unauthorized(err.msg))
14700                }
14701                "ValidationException" => return RusotoError::Validation(err.msg),
14702                _ => {}
14703            }
14704        }
14705        RusotoError::Unknown(res)
14706    }
14707}
14708impl fmt::Display for DescribeThingTypeError {
14709    #[allow(unused_variables)]
14710    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14711        match *self {
14712            DescribeThingTypeError::InternalFailure(ref cause) => write!(f, "{}", cause),
14713            DescribeThingTypeError::InvalidRequest(ref cause) => write!(f, "{}", cause),
14714            DescribeThingTypeError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
14715            DescribeThingTypeError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
14716            DescribeThingTypeError::Throttling(ref cause) => write!(f, "{}", cause),
14717            DescribeThingTypeError::Unauthorized(ref cause) => write!(f, "{}", cause),
14718        }
14719    }
14720}
14721impl Error for DescribeThingTypeError {}
14722/// Errors returned by DetachPolicy
14723#[derive(Debug, PartialEq)]
14724pub enum DetachPolicyError {
14725    /// <p>An unexpected error has occurred.</p>
14726    InternalFailure(String),
14727    /// <p>The request is not valid.</p>
14728    InvalidRequest(String),
14729    /// <p>A limit has been exceeded.</p>
14730    LimitExceeded(String),
14731    /// <p>The service is temporarily unavailable.</p>
14732    ServiceUnavailable(String),
14733    /// <p>The rate exceeds the limit.</p>
14734    Throttling(String),
14735    /// <p>You are not authorized to perform this operation.</p>
14736    Unauthorized(String),
14737}
14738
14739impl DetachPolicyError {
14740    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DetachPolicyError> {
14741        if let Some(err) = proto::json::Error::parse_rest(&res) {
14742            match err.typ.as_str() {
14743                "InternalFailureException" => {
14744                    return RusotoError::Service(DetachPolicyError::InternalFailure(err.msg))
14745                }
14746                "InvalidRequestException" => {
14747                    return RusotoError::Service(DetachPolicyError::InvalidRequest(err.msg))
14748                }
14749                "LimitExceededException" => {
14750                    return RusotoError::Service(DetachPolicyError::LimitExceeded(err.msg))
14751                }
14752                "ServiceUnavailableException" => {
14753                    return RusotoError::Service(DetachPolicyError::ServiceUnavailable(err.msg))
14754                }
14755                "ThrottlingException" => {
14756                    return RusotoError::Service(DetachPolicyError::Throttling(err.msg))
14757                }
14758                "UnauthorizedException" => {
14759                    return RusotoError::Service(DetachPolicyError::Unauthorized(err.msg))
14760                }
14761                "ValidationException" => return RusotoError::Validation(err.msg),
14762                _ => {}
14763            }
14764        }
14765        RusotoError::Unknown(res)
14766    }
14767}
14768impl fmt::Display for DetachPolicyError {
14769    #[allow(unused_variables)]
14770    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14771        match *self {
14772            DetachPolicyError::InternalFailure(ref cause) => write!(f, "{}", cause),
14773            DetachPolicyError::InvalidRequest(ref cause) => write!(f, "{}", cause),
14774            DetachPolicyError::LimitExceeded(ref cause) => write!(f, "{}", cause),
14775            DetachPolicyError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
14776            DetachPolicyError::Throttling(ref cause) => write!(f, "{}", cause),
14777            DetachPolicyError::Unauthorized(ref cause) => write!(f, "{}", cause),
14778        }
14779    }
14780}
14781impl Error for DetachPolicyError {}
14782/// Errors returned by DetachPrincipalPolicy
14783#[derive(Debug, PartialEq)]
14784pub enum DetachPrincipalPolicyError {
14785    /// <p>An unexpected error has occurred.</p>
14786    InternalFailure(String),
14787    /// <p>The request is not valid.</p>
14788    InvalidRequest(String),
14789    /// <p>The specified resource does not exist.</p>
14790    ResourceNotFound(String),
14791    /// <p>The service is temporarily unavailable.</p>
14792    ServiceUnavailable(String),
14793    /// <p>The rate exceeds the limit.</p>
14794    Throttling(String),
14795    /// <p>You are not authorized to perform this operation.</p>
14796    Unauthorized(String),
14797}
14798
14799impl DetachPrincipalPolicyError {
14800    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DetachPrincipalPolicyError> {
14801        if let Some(err) = proto::json::Error::parse_rest(&res) {
14802            match err.typ.as_str() {
14803                "InternalFailureException" => {
14804                    return RusotoError::Service(DetachPrincipalPolicyError::InternalFailure(
14805                        err.msg,
14806                    ))
14807                }
14808                "InvalidRequestException" => {
14809                    return RusotoError::Service(DetachPrincipalPolicyError::InvalidRequest(
14810                        err.msg,
14811                    ))
14812                }
14813                "ResourceNotFoundException" => {
14814                    return RusotoError::Service(DetachPrincipalPolicyError::ResourceNotFound(
14815                        err.msg,
14816                    ))
14817                }
14818                "ServiceUnavailableException" => {
14819                    return RusotoError::Service(DetachPrincipalPolicyError::ServiceUnavailable(
14820                        err.msg,
14821                    ))
14822                }
14823                "ThrottlingException" => {
14824                    return RusotoError::Service(DetachPrincipalPolicyError::Throttling(err.msg))
14825                }
14826                "UnauthorizedException" => {
14827                    return RusotoError::Service(DetachPrincipalPolicyError::Unauthorized(err.msg))
14828                }
14829                "ValidationException" => return RusotoError::Validation(err.msg),
14830                _ => {}
14831            }
14832        }
14833        RusotoError::Unknown(res)
14834    }
14835}
14836impl fmt::Display for DetachPrincipalPolicyError {
14837    #[allow(unused_variables)]
14838    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14839        match *self {
14840            DetachPrincipalPolicyError::InternalFailure(ref cause) => write!(f, "{}", cause),
14841            DetachPrincipalPolicyError::InvalidRequest(ref cause) => write!(f, "{}", cause),
14842            DetachPrincipalPolicyError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
14843            DetachPrincipalPolicyError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
14844            DetachPrincipalPolicyError::Throttling(ref cause) => write!(f, "{}", cause),
14845            DetachPrincipalPolicyError::Unauthorized(ref cause) => write!(f, "{}", cause),
14846        }
14847    }
14848}
14849impl Error for DetachPrincipalPolicyError {}
14850/// Errors returned by DetachSecurityProfile
14851#[derive(Debug, PartialEq)]
14852pub enum DetachSecurityProfileError {
14853    /// <p>An unexpected error has occurred.</p>
14854    InternalFailure(String),
14855    /// <p>The request is not valid.</p>
14856    InvalidRequest(String),
14857    /// <p>The specified resource does not exist.</p>
14858    ResourceNotFound(String),
14859    /// <p>The rate exceeds the limit.</p>
14860    Throttling(String),
14861}
14862
14863impl DetachSecurityProfileError {
14864    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DetachSecurityProfileError> {
14865        if let Some(err) = proto::json::Error::parse_rest(&res) {
14866            match err.typ.as_str() {
14867                "InternalFailureException" => {
14868                    return RusotoError::Service(DetachSecurityProfileError::InternalFailure(
14869                        err.msg,
14870                    ))
14871                }
14872                "InvalidRequestException" => {
14873                    return RusotoError::Service(DetachSecurityProfileError::InvalidRequest(
14874                        err.msg,
14875                    ))
14876                }
14877                "ResourceNotFoundException" => {
14878                    return RusotoError::Service(DetachSecurityProfileError::ResourceNotFound(
14879                        err.msg,
14880                    ))
14881                }
14882                "ThrottlingException" => {
14883                    return RusotoError::Service(DetachSecurityProfileError::Throttling(err.msg))
14884                }
14885                "ValidationException" => return RusotoError::Validation(err.msg),
14886                _ => {}
14887            }
14888        }
14889        RusotoError::Unknown(res)
14890    }
14891}
14892impl fmt::Display for DetachSecurityProfileError {
14893    #[allow(unused_variables)]
14894    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14895        match *self {
14896            DetachSecurityProfileError::InternalFailure(ref cause) => write!(f, "{}", cause),
14897            DetachSecurityProfileError::InvalidRequest(ref cause) => write!(f, "{}", cause),
14898            DetachSecurityProfileError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
14899            DetachSecurityProfileError::Throttling(ref cause) => write!(f, "{}", cause),
14900        }
14901    }
14902}
14903impl Error for DetachSecurityProfileError {}
14904/// Errors returned by DetachThingPrincipal
14905#[derive(Debug, PartialEq)]
14906pub enum DetachThingPrincipalError {
14907    /// <p>An unexpected error has occurred.</p>
14908    InternalFailure(String),
14909    /// <p>The request is not valid.</p>
14910    InvalidRequest(String),
14911    /// <p>The specified resource does not exist.</p>
14912    ResourceNotFound(String),
14913    /// <p>The service is temporarily unavailable.</p>
14914    ServiceUnavailable(String),
14915    /// <p>The rate exceeds the limit.</p>
14916    Throttling(String),
14917    /// <p>You are not authorized to perform this operation.</p>
14918    Unauthorized(String),
14919}
14920
14921impl DetachThingPrincipalError {
14922    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DetachThingPrincipalError> {
14923        if let Some(err) = proto::json::Error::parse_rest(&res) {
14924            match err.typ.as_str() {
14925                "InternalFailureException" => {
14926                    return RusotoError::Service(DetachThingPrincipalError::InternalFailure(
14927                        err.msg,
14928                    ))
14929                }
14930                "InvalidRequestException" => {
14931                    return RusotoError::Service(DetachThingPrincipalError::InvalidRequest(err.msg))
14932                }
14933                "ResourceNotFoundException" => {
14934                    return RusotoError::Service(DetachThingPrincipalError::ResourceNotFound(
14935                        err.msg,
14936                    ))
14937                }
14938                "ServiceUnavailableException" => {
14939                    return RusotoError::Service(DetachThingPrincipalError::ServiceUnavailable(
14940                        err.msg,
14941                    ))
14942                }
14943                "ThrottlingException" => {
14944                    return RusotoError::Service(DetachThingPrincipalError::Throttling(err.msg))
14945                }
14946                "UnauthorizedException" => {
14947                    return RusotoError::Service(DetachThingPrincipalError::Unauthorized(err.msg))
14948                }
14949                "ValidationException" => return RusotoError::Validation(err.msg),
14950                _ => {}
14951            }
14952        }
14953        RusotoError::Unknown(res)
14954    }
14955}
14956impl fmt::Display for DetachThingPrincipalError {
14957    #[allow(unused_variables)]
14958    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14959        match *self {
14960            DetachThingPrincipalError::InternalFailure(ref cause) => write!(f, "{}", cause),
14961            DetachThingPrincipalError::InvalidRequest(ref cause) => write!(f, "{}", cause),
14962            DetachThingPrincipalError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
14963            DetachThingPrincipalError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
14964            DetachThingPrincipalError::Throttling(ref cause) => write!(f, "{}", cause),
14965            DetachThingPrincipalError::Unauthorized(ref cause) => write!(f, "{}", cause),
14966        }
14967    }
14968}
14969impl Error for DetachThingPrincipalError {}
14970/// Errors returned by DisableTopicRule
14971#[derive(Debug, PartialEq)]
14972pub enum DisableTopicRuleError {
14973    /// <p>A conflicting resource update exception. This exception is thrown when two pending updates cause a conflict.</p>
14974    ConflictingResourceUpdate(String),
14975    /// <p>An unexpected error has occurred.</p>
14976    Internal(String),
14977    /// <p>The request is not valid.</p>
14978    InvalidRequest(String),
14979    /// <p>The service is temporarily unavailable.</p>
14980    ServiceUnavailable(String),
14981    /// <p>You are not authorized to perform this operation.</p>
14982    Unauthorized(String),
14983}
14984
14985impl DisableTopicRuleError {
14986    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DisableTopicRuleError> {
14987        if let Some(err) = proto::json::Error::parse_rest(&res) {
14988            match err.typ.as_str() {
14989                "ConflictingResourceUpdateException" => {
14990                    return RusotoError::Service(DisableTopicRuleError::ConflictingResourceUpdate(
14991                        err.msg,
14992                    ))
14993                }
14994                "InternalException" => {
14995                    return RusotoError::Service(DisableTopicRuleError::Internal(err.msg))
14996                }
14997                "InvalidRequestException" => {
14998                    return RusotoError::Service(DisableTopicRuleError::InvalidRequest(err.msg))
14999                }
15000                "ServiceUnavailableException" => {
15001                    return RusotoError::Service(DisableTopicRuleError::ServiceUnavailable(err.msg))
15002                }
15003                "UnauthorizedException" => {
15004                    return RusotoError::Service(DisableTopicRuleError::Unauthorized(err.msg))
15005                }
15006                "ValidationException" => return RusotoError::Validation(err.msg),
15007                _ => {}
15008            }
15009        }
15010        RusotoError::Unknown(res)
15011    }
15012}
15013impl fmt::Display for DisableTopicRuleError {
15014    #[allow(unused_variables)]
15015    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
15016        match *self {
15017            DisableTopicRuleError::ConflictingResourceUpdate(ref cause) => write!(f, "{}", cause),
15018            DisableTopicRuleError::Internal(ref cause) => write!(f, "{}", cause),
15019            DisableTopicRuleError::InvalidRequest(ref cause) => write!(f, "{}", cause),
15020            DisableTopicRuleError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
15021            DisableTopicRuleError::Unauthorized(ref cause) => write!(f, "{}", cause),
15022        }
15023    }
15024}
15025impl Error for DisableTopicRuleError {}
15026/// Errors returned by EnableTopicRule
15027#[derive(Debug, PartialEq)]
15028pub enum EnableTopicRuleError {
15029    /// <p>A conflicting resource update exception. This exception is thrown when two pending updates cause a conflict.</p>
15030    ConflictingResourceUpdate(String),
15031    /// <p>An unexpected error has occurred.</p>
15032    Internal(String),
15033    /// <p>The request is not valid.</p>
15034    InvalidRequest(String),
15035    /// <p>The service is temporarily unavailable.</p>
15036    ServiceUnavailable(String),
15037    /// <p>You are not authorized to perform this operation.</p>
15038    Unauthorized(String),
15039}
15040
15041impl EnableTopicRuleError {
15042    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<EnableTopicRuleError> {
15043        if let Some(err) = proto::json::Error::parse_rest(&res) {
15044            match err.typ.as_str() {
15045                "ConflictingResourceUpdateException" => {
15046                    return RusotoError::Service(EnableTopicRuleError::ConflictingResourceUpdate(
15047                        err.msg,
15048                    ))
15049                }
15050                "InternalException" => {
15051                    return RusotoError::Service(EnableTopicRuleError::Internal(err.msg))
15052                }
15053                "InvalidRequestException" => {
15054                    return RusotoError::Service(EnableTopicRuleError::InvalidRequest(err.msg))
15055                }
15056                "ServiceUnavailableException" => {
15057                    return RusotoError::Service(EnableTopicRuleError::ServiceUnavailable(err.msg))
15058                }
15059                "UnauthorizedException" => {
15060                    return RusotoError::Service(EnableTopicRuleError::Unauthorized(err.msg))
15061                }
15062                "ValidationException" => return RusotoError::Validation(err.msg),
15063                _ => {}
15064            }
15065        }
15066        RusotoError::Unknown(res)
15067    }
15068}
15069impl fmt::Display for EnableTopicRuleError {
15070    #[allow(unused_variables)]
15071    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
15072        match *self {
15073            EnableTopicRuleError::ConflictingResourceUpdate(ref cause) => write!(f, "{}", cause),
15074            EnableTopicRuleError::Internal(ref cause) => write!(f, "{}", cause),
15075            EnableTopicRuleError::InvalidRequest(ref cause) => write!(f, "{}", cause),
15076            EnableTopicRuleError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
15077            EnableTopicRuleError::Unauthorized(ref cause) => write!(f, "{}", cause),
15078        }
15079    }
15080}
15081impl Error for EnableTopicRuleError {}
15082/// Errors returned by GetCardinality
15083#[derive(Debug, PartialEq)]
15084pub enum GetCardinalityError {
15085    /// <p>The index is not ready.</p>
15086    IndexNotReady(String),
15087    /// <p>An unexpected error has occurred.</p>
15088    InternalFailure(String),
15089    /// <p>The aggregation is invalid.</p>
15090    InvalidAggregation(String),
15091    /// <p>The query is invalid.</p>
15092    InvalidQuery(String),
15093    /// <p>The request is not valid.</p>
15094    InvalidRequest(String),
15095    /// <p>The specified resource does not exist.</p>
15096    ResourceNotFound(String),
15097    /// <p>The service is temporarily unavailable.</p>
15098    ServiceUnavailable(String),
15099    /// <p>The rate exceeds the limit.</p>
15100    Throttling(String),
15101    /// <p>You are not authorized to perform this operation.</p>
15102    Unauthorized(String),
15103}
15104
15105impl GetCardinalityError {
15106    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetCardinalityError> {
15107        if let Some(err) = proto::json::Error::parse_rest(&res) {
15108            match err.typ.as_str() {
15109                "IndexNotReadyException" => {
15110                    return RusotoError::Service(GetCardinalityError::IndexNotReady(err.msg))
15111                }
15112                "InternalFailureException" => {
15113                    return RusotoError::Service(GetCardinalityError::InternalFailure(err.msg))
15114                }
15115                "InvalidAggregationException" => {
15116                    return RusotoError::Service(GetCardinalityError::InvalidAggregation(err.msg))
15117                }
15118                "InvalidQueryException" => {
15119                    return RusotoError::Service(GetCardinalityError::InvalidQuery(err.msg))
15120                }
15121                "InvalidRequestException" => {
15122                    return RusotoError::Service(GetCardinalityError::InvalidRequest(err.msg))
15123                }
15124                "ResourceNotFoundException" => {
15125                    return RusotoError::Service(GetCardinalityError::ResourceNotFound(err.msg))
15126                }
15127                "ServiceUnavailableException" => {
15128                    return RusotoError::Service(GetCardinalityError::ServiceUnavailable(err.msg))
15129                }
15130                "ThrottlingException" => {
15131                    return RusotoError::Service(GetCardinalityError::Throttling(err.msg))
15132                }
15133                "UnauthorizedException" => {
15134                    return RusotoError::Service(GetCardinalityError::Unauthorized(err.msg))
15135                }
15136                "ValidationException" => return RusotoError::Validation(err.msg),
15137                _ => {}
15138            }
15139        }
15140        RusotoError::Unknown(res)
15141    }
15142}
15143impl fmt::Display for GetCardinalityError {
15144    #[allow(unused_variables)]
15145    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
15146        match *self {
15147            GetCardinalityError::IndexNotReady(ref cause) => write!(f, "{}", cause),
15148            GetCardinalityError::InternalFailure(ref cause) => write!(f, "{}", cause),
15149            GetCardinalityError::InvalidAggregation(ref cause) => write!(f, "{}", cause),
15150            GetCardinalityError::InvalidQuery(ref cause) => write!(f, "{}", cause),
15151            GetCardinalityError::InvalidRequest(ref cause) => write!(f, "{}", cause),
15152            GetCardinalityError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
15153            GetCardinalityError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
15154            GetCardinalityError::Throttling(ref cause) => write!(f, "{}", cause),
15155            GetCardinalityError::Unauthorized(ref cause) => write!(f, "{}", cause),
15156        }
15157    }
15158}
15159impl Error for GetCardinalityError {}
15160/// Errors returned by GetEffectivePolicies
15161#[derive(Debug, PartialEq)]
15162pub enum GetEffectivePoliciesError {
15163    /// <p>An unexpected error has occurred.</p>
15164    InternalFailure(String),
15165    /// <p>The request is not valid.</p>
15166    InvalidRequest(String),
15167    /// <p>A limit has been exceeded.</p>
15168    LimitExceeded(String),
15169    /// <p>The specified resource does not exist.</p>
15170    ResourceNotFound(String),
15171    /// <p>The service is temporarily unavailable.</p>
15172    ServiceUnavailable(String),
15173    /// <p>The rate exceeds the limit.</p>
15174    Throttling(String),
15175    /// <p>You are not authorized to perform this operation.</p>
15176    Unauthorized(String),
15177}
15178
15179impl GetEffectivePoliciesError {
15180    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetEffectivePoliciesError> {
15181        if let Some(err) = proto::json::Error::parse_rest(&res) {
15182            match err.typ.as_str() {
15183                "InternalFailureException" => {
15184                    return RusotoError::Service(GetEffectivePoliciesError::InternalFailure(
15185                        err.msg,
15186                    ))
15187                }
15188                "InvalidRequestException" => {
15189                    return RusotoError::Service(GetEffectivePoliciesError::InvalidRequest(err.msg))
15190                }
15191                "LimitExceededException" => {
15192                    return RusotoError::Service(GetEffectivePoliciesError::LimitExceeded(err.msg))
15193                }
15194                "ResourceNotFoundException" => {
15195                    return RusotoError::Service(GetEffectivePoliciesError::ResourceNotFound(
15196                        err.msg,
15197                    ))
15198                }
15199                "ServiceUnavailableException" => {
15200                    return RusotoError::Service(GetEffectivePoliciesError::ServiceUnavailable(
15201                        err.msg,
15202                    ))
15203                }
15204                "ThrottlingException" => {
15205                    return RusotoError::Service(GetEffectivePoliciesError::Throttling(err.msg))
15206                }
15207                "UnauthorizedException" => {
15208                    return RusotoError::Service(GetEffectivePoliciesError::Unauthorized(err.msg))
15209                }
15210                "ValidationException" => return RusotoError::Validation(err.msg),
15211                _ => {}
15212            }
15213        }
15214        RusotoError::Unknown(res)
15215    }
15216}
15217impl fmt::Display for GetEffectivePoliciesError {
15218    #[allow(unused_variables)]
15219    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
15220        match *self {
15221            GetEffectivePoliciesError::InternalFailure(ref cause) => write!(f, "{}", cause),
15222            GetEffectivePoliciesError::InvalidRequest(ref cause) => write!(f, "{}", cause),
15223            GetEffectivePoliciesError::LimitExceeded(ref cause) => write!(f, "{}", cause),
15224            GetEffectivePoliciesError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
15225            GetEffectivePoliciesError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
15226            GetEffectivePoliciesError::Throttling(ref cause) => write!(f, "{}", cause),
15227            GetEffectivePoliciesError::Unauthorized(ref cause) => write!(f, "{}", cause),
15228        }
15229    }
15230}
15231impl Error for GetEffectivePoliciesError {}
15232/// Errors returned by GetIndexingConfiguration
15233#[derive(Debug, PartialEq)]
15234pub enum GetIndexingConfigurationError {
15235    /// <p>An unexpected error has occurred.</p>
15236    InternalFailure(String),
15237    /// <p>The request is not valid.</p>
15238    InvalidRequest(String),
15239    /// <p>The service is temporarily unavailable.</p>
15240    ServiceUnavailable(String),
15241    /// <p>The rate exceeds the limit.</p>
15242    Throttling(String),
15243    /// <p>You are not authorized to perform this operation.</p>
15244    Unauthorized(String),
15245}
15246
15247impl GetIndexingConfigurationError {
15248    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetIndexingConfigurationError> {
15249        if let Some(err) = proto::json::Error::parse_rest(&res) {
15250            match err.typ.as_str() {
15251                "InternalFailureException" => {
15252                    return RusotoError::Service(GetIndexingConfigurationError::InternalFailure(
15253                        err.msg,
15254                    ))
15255                }
15256                "InvalidRequestException" => {
15257                    return RusotoError::Service(GetIndexingConfigurationError::InvalidRequest(
15258                        err.msg,
15259                    ))
15260                }
15261                "ServiceUnavailableException" => {
15262                    return RusotoError::Service(GetIndexingConfigurationError::ServiceUnavailable(
15263                        err.msg,
15264                    ))
15265                }
15266                "ThrottlingException" => {
15267                    return RusotoError::Service(GetIndexingConfigurationError::Throttling(err.msg))
15268                }
15269                "UnauthorizedException" => {
15270                    return RusotoError::Service(GetIndexingConfigurationError::Unauthorized(
15271                        err.msg,
15272                    ))
15273                }
15274                "ValidationException" => return RusotoError::Validation(err.msg),
15275                _ => {}
15276            }
15277        }
15278        RusotoError::Unknown(res)
15279    }
15280}
15281impl fmt::Display for GetIndexingConfigurationError {
15282    #[allow(unused_variables)]
15283    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
15284        match *self {
15285            GetIndexingConfigurationError::InternalFailure(ref cause) => write!(f, "{}", cause),
15286            GetIndexingConfigurationError::InvalidRequest(ref cause) => write!(f, "{}", cause),
15287            GetIndexingConfigurationError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
15288            GetIndexingConfigurationError::Throttling(ref cause) => write!(f, "{}", cause),
15289            GetIndexingConfigurationError::Unauthorized(ref cause) => write!(f, "{}", cause),
15290        }
15291    }
15292}
15293impl Error for GetIndexingConfigurationError {}
15294/// Errors returned by GetJobDocument
15295#[derive(Debug, PartialEq)]
15296pub enum GetJobDocumentError {
15297    /// <p>The request is not valid.</p>
15298    InvalidRequest(String),
15299    /// <p>The specified resource does not exist.</p>
15300    ResourceNotFound(String),
15301    /// <p>The service is temporarily unavailable.</p>
15302    ServiceUnavailable(String),
15303    /// <p>The rate exceeds the limit.</p>
15304    Throttling(String),
15305}
15306
15307impl GetJobDocumentError {
15308    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetJobDocumentError> {
15309        if let Some(err) = proto::json::Error::parse_rest(&res) {
15310            match err.typ.as_str() {
15311                "InvalidRequestException" => {
15312                    return RusotoError::Service(GetJobDocumentError::InvalidRequest(err.msg))
15313                }
15314                "ResourceNotFoundException" => {
15315                    return RusotoError::Service(GetJobDocumentError::ResourceNotFound(err.msg))
15316                }
15317                "ServiceUnavailableException" => {
15318                    return RusotoError::Service(GetJobDocumentError::ServiceUnavailable(err.msg))
15319                }
15320                "ThrottlingException" => {
15321                    return RusotoError::Service(GetJobDocumentError::Throttling(err.msg))
15322                }
15323                "ValidationException" => return RusotoError::Validation(err.msg),
15324                _ => {}
15325            }
15326        }
15327        RusotoError::Unknown(res)
15328    }
15329}
15330impl fmt::Display for GetJobDocumentError {
15331    #[allow(unused_variables)]
15332    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
15333        match *self {
15334            GetJobDocumentError::InvalidRequest(ref cause) => write!(f, "{}", cause),
15335            GetJobDocumentError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
15336            GetJobDocumentError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
15337            GetJobDocumentError::Throttling(ref cause) => write!(f, "{}", cause),
15338        }
15339    }
15340}
15341impl Error for GetJobDocumentError {}
15342/// Errors returned by GetLoggingOptions
15343#[derive(Debug, PartialEq)]
15344pub enum GetLoggingOptionsError {
15345    /// <p>An unexpected error has occurred.</p>
15346    Internal(String),
15347    /// <p>The request is not valid.</p>
15348    InvalidRequest(String),
15349    /// <p>The service is temporarily unavailable.</p>
15350    ServiceUnavailable(String),
15351}
15352
15353impl GetLoggingOptionsError {
15354    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetLoggingOptionsError> {
15355        if let Some(err) = proto::json::Error::parse_rest(&res) {
15356            match err.typ.as_str() {
15357                "InternalException" => {
15358                    return RusotoError::Service(GetLoggingOptionsError::Internal(err.msg))
15359                }
15360                "InvalidRequestException" => {
15361                    return RusotoError::Service(GetLoggingOptionsError::InvalidRequest(err.msg))
15362                }
15363                "ServiceUnavailableException" => {
15364                    return RusotoError::Service(GetLoggingOptionsError::ServiceUnavailable(
15365                        err.msg,
15366                    ))
15367                }
15368                "ValidationException" => return RusotoError::Validation(err.msg),
15369                _ => {}
15370            }
15371        }
15372        RusotoError::Unknown(res)
15373    }
15374}
15375impl fmt::Display for GetLoggingOptionsError {
15376    #[allow(unused_variables)]
15377    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
15378        match *self {
15379            GetLoggingOptionsError::Internal(ref cause) => write!(f, "{}", cause),
15380            GetLoggingOptionsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
15381            GetLoggingOptionsError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
15382        }
15383    }
15384}
15385impl Error for GetLoggingOptionsError {}
15386/// Errors returned by GetOTAUpdate
15387#[derive(Debug, PartialEq)]
15388pub enum GetOTAUpdateError {
15389    /// <p>An unexpected error has occurred.</p>
15390    InternalFailure(String),
15391    /// <p>The request is not valid.</p>
15392    InvalidRequest(String),
15393    /// <p>The specified resource does not exist.</p>
15394    ResourceNotFound(String),
15395    /// <p>The service is temporarily unavailable.</p>
15396    ServiceUnavailable(String),
15397    /// <p>The rate exceeds the limit.</p>
15398    Throttling(String),
15399    /// <p>You are not authorized to perform this operation.</p>
15400    Unauthorized(String),
15401}
15402
15403impl GetOTAUpdateError {
15404    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetOTAUpdateError> {
15405        if let Some(err) = proto::json::Error::parse_rest(&res) {
15406            match err.typ.as_str() {
15407                "InternalFailureException" => {
15408                    return RusotoError::Service(GetOTAUpdateError::InternalFailure(err.msg))
15409                }
15410                "InvalidRequestException" => {
15411                    return RusotoError::Service(GetOTAUpdateError::InvalidRequest(err.msg))
15412                }
15413                "ResourceNotFoundException" => {
15414                    return RusotoError::Service(GetOTAUpdateError::ResourceNotFound(err.msg))
15415                }
15416                "ServiceUnavailableException" => {
15417                    return RusotoError::Service(GetOTAUpdateError::ServiceUnavailable(err.msg))
15418                }
15419                "ThrottlingException" => {
15420                    return RusotoError::Service(GetOTAUpdateError::Throttling(err.msg))
15421                }
15422                "UnauthorizedException" => {
15423                    return RusotoError::Service(GetOTAUpdateError::Unauthorized(err.msg))
15424                }
15425                "ValidationException" => return RusotoError::Validation(err.msg),
15426                _ => {}
15427            }
15428        }
15429        RusotoError::Unknown(res)
15430    }
15431}
15432impl fmt::Display for GetOTAUpdateError {
15433    #[allow(unused_variables)]
15434    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
15435        match *self {
15436            GetOTAUpdateError::InternalFailure(ref cause) => write!(f, "{}", cause),
15437            GetOTAUpdateError::InvalidRequest(ref cause) => write!(f, "{}", cause),
15438            GetOTAUpdateError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
15439            GetOTAUpdateError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
15440            GetOTAUpdateError::Throttling(ref cause) => write!(f, "{}", cause),
15441            GetOTAUpdateError::Unauthorized(ref cause) => write!(f, "{}", cause),
15442        }
15443    }
15444}
15445impl Error for GetOTAUpdateError {}
15446/// Errors returned by GetPercentiles
15447#[derive(Debug, PartialEq)]
15448pub enum GetPercentilesError {
15449    /// <p>The index is not ready.</p>
15450    IndexNotReady(String),
15451    /// <p>An unexpected error has occurred.</p>
15452    InternalFailure(String),
15453    /// <p>The aggregation is invalid.</p>
15454    InvalidAggregation(String),
15455    /// <p>The query is invalid.</p>
15456    InvalidQuery(String),
15457    /// <p>The request is not valid.</p>
15458    InvalidRequest(String),
15459    /// <p>The specified resource does not exist.</p>
15460    ResourceNotFound(String),
15461    /// <p>The service is temporarily unavailable.</p>
15462    ServiceUnavailable(String),
15463    /// <p>The rate exceeds the limit.</p>
15464    Throttling(String),
15465    /// <p>You are not authorized to perform this operation.</p>
15466    Unauthorized(String),
15467}
15468
15469impl GetPercentilesError {
15470    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetPercentilesError> {
15471        if let Some(err) = proto::json::Error::parse_rest(&res) {
15472            match err.typ.as_str() {
15473                "IndexNotReadyException" => {
15474                    return RusotoError::Service(GetPercentilesError::IndexNotReady(err.msg))
15475                }
15476                "InternalFailureException" => {
15477                    return RusotoError::Service(GetPercentilesError::InternalFailure(err.msg))
15478                }
15479                "InvalidAggregationException" => {
15480                    return RusotoError::Service(GetPercentilesError::InvalidAggregation(err.msg))
15481                }
15482                "InvalidQueryException" => {
15483                    return RusotoError::Service(GetPercentilesError::InvalidQuery(err.msg))
15484                }
15485                "InvalidRequestException" => {
15486                    return RusotoError::Service(GetPercentilesError::InvalidRequest(err.msg))
15487                }
15488                "ResourceNotFoundException" => {
15489                    return RusotoError::Service(GetPercentilesError::ResourceNotFound(err.msg))
15490                }
15491                "ServiceUnavailableException" => {
15492                    return RusotoError::Service(GetPercentilesError::ServiceUnavailable(err.msg))
15493                }
15494                "ThrottlingException" => {
15495                    return RusotoError::Service(GetPercentilesError::Throttling(err.msg))
15496                }
15497                "UnauthorizedException" => {
15498                    return RusotoError::Service(GetPercentilesError::Unauthorized(err.msg))
15499                }
15500                "ValidationException" => return RusotoError::Validation(err.msg),
15501                _ => {}
15502            }
15503        }
15504        RusotoError::Unknown(res)
15505    }
15506}
15507impl fmt::Display for GetPercentilesError {
15508    #[allow(unused_variables)]
15509    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
15510        match *self {
15511            GetPercentilesError::IndexNotReady(ref cause) => write!(f, "{}", cause),
15512            GetPercentilesError::InternalFailure(ref cause) => write!(f, "{}", cause),
15513            GetPercentilesError::InvalidAggregation(ref cause) => write!(f, "{}", cause),
15514            GetPercentilesError::InvalidQuery(ref cause) => write!(f, "{}", cause),
15515            GetPercentilesError::InvalidRequest(ref cause) => write!(f, "{}", cause),
15516            GetPercentilesError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
15517            GetPercentilesError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
15518            GetPercentilesError::Throttling(ref cause) => write!(f, "{}", cause),
15519            GetPercentilesError::Unauthorized(ref cause) => write!(f, "{}", cause),
15520        }
15521    }
15522}
15523impl Error for GetPercentilesError {}
15524/// Errors returned by GetPolicy
15525#[derive(Debug, PartialEq)]
15526pub enum GetPolicyError {
15527    /// <p>An unexpected error has occurred.</p>
15528    InternalFailure(String),
15529    /// <p>The request is not valid.</p>
15530    InvalidRequest(String),
15531    /// <p>The specified resource does not exist.</p>
15532    ResourceNotFound(String),
15533    /// <p>The service is temporarily unavailable.</p>
15534    ServiceUnavailable(String),
15535    /// <p>The rate exceeds the limit.</p>
15536    Throttling(String),
15537    /// <p>You are not authorized to perform this operation.</p>
15538    Unauthorized(String),
15539}
15540
15541impl GetPolicyError {
15542    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetPolicyError> {
15543        if let Some(err) = proto::json::Error::parse_rest(&res) {
15544            match err.typ.as_str() {
15545                "InternalFailureException" => {
15546                    return RusotoError::Service(GetPolicyError::InternalFailure(err.msg))
15547                }
15548                "InvalidRequestException" => {
15549                    return RusotoError::Service(GetPolicyError::InvalidRequest(err.msg))
15550                }
15551                "ResourceNotFoundException" => {
15552                    return RusotoError::Service(GetPolicyError::ResourceNotFound(err.msg))
15553                }
15554                "ServiceUnavailableException" => {
15555                    return RusotoError::Service(GetPolicyError::ServiceUnavailable(err.msg))
15556                }
15557                "ThrottlingException" => {
15558                    return RusotoError::Service(GetPolicyError::Throttling(err.msg))
15559                }
15560                "UnauthorizedException" => {
15561                    return RusotoError::Service(GetPolicyError::Unauthorized(err.msg))
15562                }
15563                "ValidationException" => return RusotoError::Validation(err.msg),
15564                _ => {}
15565            }
15566        }
15567        RusotoError::Unknown(res)
15568    }
15569}
15570impl fmt::Display for GetPolicyError {
15571    #[allow(unused_variables)]
15572    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
15573        match *self {
15574            GetPolicyError::InternalFailure(ref cause) => write!(f, "{}", cause),
15575            GetPolicyError::InvalidRequest(ref cause) => write!(f, "{}", cause),
15576            GetPolicyError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
15577            GetPolicyError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
15578            GetPolicyError::Throttling(ref cause) => write!(f, "{}", cause),
15579            GetPolicyError::Unauthorized(ref cause) => write!(f, "{}", cause),
15580        }
15581    }
15582}
15583impl Error for GetPolicyError {}
15584/// Errors returned by GetPolicyVersion
15585#[derive(Debug, PartialEq)]
15586pub enum GetPolicyVersionError {
15587    /// <p>An unexpected error has occurred.</p>
15588    InternalFailure(String),
15589    /// <p>The request is not valid.</p>
15590    InvalidRequest(String),
15591    /// <p>The specified resource does not exist.</p>
15592    ResourceNotFound(String),
15593    /// <p>The service is temporarily unavailable.</p>
15594    ServiceUnavailable(String),
15595    /// <p>The rate exceeds the limit.</p>
15596    Throttling(String),
15597    /// <p>You are not authorized to perform this operation.</p>
15598    Unauthorized(String),
15599}
15600
15601impl GetPolicyVersionError {
15602    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetPolicyVersionError> {
15603        if let Some(err) = proto::json::Error::parse_rest(&res) {
15604            match err.typ.as_str() {
15605                "InternalFailureException" => {
15606                    return RusotoError::Service(GetPolicyVersionError::InternalFailure(err.msg))
15607                }
15608                "InvalidRequestException" => {
15609                    return RusotoError::Service(GetPolicyVersionError::InvalidRequest(err.msg))
15610                }
15611                "ResourceNotFoundException" => {
15612                    return RusotoError::Service(GetPolicyVersionError::ResourceNotFound(err.msg))
15613                }
15614                "ServiceUnavailableException" => {
15615                    return RusotoError::Service(GetPolicyVersionError::ServiceUnavailable(err.msg))
15616                }
15617                "ThrottlingException" => {
15618                    return RusotoError::Service(GetPolicyVersionError::Throttling(err.msg))
15619                }
15620                "UnauthorizedException" => {
15621                    return RusotoError::Service(GetPolicyVersionError::Unauthorized(err.msg))
15622                }
15623                "ValidationException" => return RusotoError::Validation(err.msg),
15624                _ => {}
15625            }
15626        }
15627        RusotoError::Unknown(res)
15628    }
15629}
15630impl fmt::Display for GetPolicyVersionError {
15631    #[allow(unused_variables)]
15632    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
15633        match *self {
15634            GetPolicyVersionError::InternalFailure(ref cause) => write!(f, "{}", cause),
15635            GetPolicyVersionError::InvalidRequest(ref cause) => write!(f, "{}", cause),
15636            GetPolicyVersionError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
15637            GetPolicyVersionError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
15638            GetPolicyVersionError::Throttling(ref cause) => write!(f, "{}", cause),
15639            GetPolicyVersionError::Unauthorized(ref cause) => write!(f, "{}", cause),
15640        }
15641    }
15642}
15643impl Error for GetPolicyVersionError {}
15644/// Errors returned by GetRegistrationCode
15645#[derive(Debug, PartialEq)]
15646pub enum GetRegistrationCodeError {
15647    /// <p>An unexpected error has occurred.</p>
15648    InternalFailure(String),
15649    /// <p>The request is not valid.</p>
15650    InvalidRequest(String),
15651    /// <p>The service is temporarily unavailable.</p>
15652    ServiceUnavailable(String),
15653    /// <p>The rate exceeds the limit.</p>
15654    Throttling(String),
15655    /// <p>You are not authorized to perform this operation.</p>
15656    Unauthorized(String),
15657}
15658
15659impl GetRegistrationCodeError {
15660    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetRegistrationCodeError> {
15661        if let Some(err) = proto::json::Error::parse_rest(&res) {
15662            match err.typ.as_str() {
15663                "InternalFailureException" => {
15664                    return RusotoError::Service(GetRegistrationCodeError::InternalFailure(err.msg))
15665                }
15666                "InvalidRequestException" => {
15667                    return RusotoError::Service(GetRegistrationCodeError::InvalidRequest(err.msg))
15668                }
15669                "ServiceUnavailableException" => {
15670                    return RusotoError::Service(GetRegistrationCodeError::ServiceUnavailable(
15671                        err.msg,
15672                    ))
15673                }
15674                "ThrottlingException" => {
15675                    return RusotoError::Service(GetRegistrationCodeError::Throttling(err.msg))
15676                }
15677                "UnauthorizedException" => {
15678                    return RusotoError::Service(GetRegistrationCodeError::Unauthorized(err.msg))
15679                }
15680                "ValidationException" => return RusotoError::Validation(err.msg),
15681                _ => {}
15682            }
15683        }
15684        RusotoError::Unknown(res)
15685    }
15686}
15687impl fmt::Display for GetRegistrationCodeError {
15688    #[allow(unused_variables)]
15689    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
15690        match *self {
15691            GetRegistrationCodeError::InternalFailure(ref cause) => write!(f, "{}", cause),
15692            GetRegistrationCodeError::InvalidRequest(ref cause) => write!(f, "{}", cause),
15693            GetRegistrationCodeError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
15694            GetRegistrationCodeError::Throttling(ref cause) => write!(f, "{}", cause),
15695            GetRegistrationCodeError::Unauthorized(ref cause) => write!(f, "{}", cause),
15696        }
15697    }
15698}
15699impl Error for GetRegistrationCodeError {}
15700/// Errors returned by GetStatistics
15701#[derive(Debug, PartialEq)]
15702pub enum GetStatisticsError {
15703    /// <p>The index is not ready.</p>
15704    IndexNotReady(String),
15705    /// <p>An unexpected error has occurred.</p>
15706    InternalFailure(String),
15707    /// <p>The aggregation is invalid.</p>
15708    InvalidAggregation(String),
15709    /// <p>The query is invalid.</p>
15710    InvalidQuery(String),
15711    /// <p>The request is not valid.</p>
15712    InvalidRequest(String),
15713    /// <p>The specified resource does not exist.</p>
15714    ResourceNotFound(String),
15715    /// <p>The service is temporarily unavailable.</p>
15716    ServiceUnavailable(String),
15717    /// <p>The rate exceeds the limit.</p>
15718    Throttling(String),
15719    /// <p>You are not authorized to perform this operation.</p>
15720    Unauthorized(String),
15721}
15722
15723impl GetStatisticsError {
15724    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetStatisticsError> {
15725        if let Some(err) = proto::json::Error::parse_rest(&res) {
15726            match err.typ.as_str() {
15727                "IndexNotReadyException" => {
15728                    return RusotoError::Service(GetStatisticsError::IndexNotReady(err.msg))
15729                }
15730                "InternalFailureException" => {
15731                    return RusotoError::Service(GetStatisticsError::InternalFailure(err.msg))
15732                }
15733                "InvalidAggregationException" => {
15734                    return RusotoError::Service(GetStatisticsError::InvalidAggregation(err.msg))
15735                }
15736                "InvalidQueryException" => {
15737                    return RusotoError::Service(GetStatisticsError::InvalidQuery(err.msg))
15738                }
15739                "InvalidRequestException" => {
15740                    return RusotoError::Service(GetStatisticsError::InvalidRequest(err.msg))
15741                }
15742                "ResourceNotFoundException" => {
15743                    return RusotoError::Service(GetStatisticsError::ResourceNotFound(err.msg))
15744                }
15745                "ServiceUnavailableException" => {
15746                    return RusotoError::Service(GetStatisticsError::ServiceUnavailable(err.msg))
15747                }
15748                "ThrottlingException" => {
15749                    return RusotoError::Service(GetStatisticsError::Throttling(err.msg))
15750                }
15751                "UnauthorizedException" => {
15752                    return RusotoError::Service(GetStatisticsError::Unauthorized(err.msg))
15753                }
15754                "ValidationException" => return RusotoError::Validation(err.msg),
15755                _ => {}
15756            }
15757        }
15758        RusotoError::Unknown(res)
15759    }
15760}
15761impl fmt::Display for GetStatisticsError {
15762    #[allow(unused_variables)]
15763    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
15764        match *self {
15765            GetStatisticsError::IndexNotReady(ref cause) => write!(f, "{}", cause),
15766            GetStatisticsError::InternalFailure(ref cause) => write!(f, "{}", cause),
15767            GetStatisticsError::InvalidAggregation(ref cause) => write!(f, "{}", cause),
15768            GetStatisticsError::InvalidQuery(ref cause) => write!(f, "{}", cause),
15769            GetStatisticsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
15770            GetStatisticsError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
15771            GetStatisticsError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
15772            GetStatisticsError::Throttling(ref cause) => write!(f, "{}", cause),
15773            GetStatisticsError::Unauthorized(ref cause) => write!(f, "{}", cause),
15774        }
15775    }
15776}
15777impl Error for GetStatisticsError {}
15778/// Errors returned by GetTopicRule
15779#[derive(Debug, PartialEq)]
15780pub enum GetTopicRuleError {
15781    /// <p>An unexpected error has occurred.</p>
15782    Internal(String),
15783    /// <p>The request is not valid.</p>
15784    InvalidRequest(String),
15785    /// <p>The service is temporarily unavailable.</p>
15786    ServiceUnavailable(String),
15787    /// <p>You are not authorized to perform this operation.</p>
15788    Unauthorized(String),
15789}
15790
15791impl GetTopicRuleError {
15792    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetTopicRuleError> {
15793        if let Some(err) = proto::json::Error::parse_rest(&res) {
15794            match err.typ.as_str() {
15795                "InternalException" => {
15796                    return RusotoError::Service(GetTopicRuleError::Internal(err.msg))
15797                }
15798                "InvalidRequestException" => {
15799                    return RusotoError::Service(GetTopicRuleError::InvalidRequest(err.msg))
15800                }
15801                "ServiceUnavailableException" => {
15802                    return RusotoError::Service(GetTopicRuleError::ServiceUnavailable(err.msg))
15803                }
15804                "UnauthorizedException" => {
15805                    return RusotoError::Service(GetTopicRuleError::Unauthorized(err.msg))
15806                }
15807                "ValidationException" => return RusotoError::Validation(err.msg),
15808                _ => {}
15809            }
15810        }
15811        RusotoError::Unknown(res)
15812    }
15813}
15814impl fmt::Display for GetTopicRuleError {
15815    #[allow(unused_variables)]
15816    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
15817        match *self {
15818            GetTopicRuleError::Internal(ref cause) => write!(f, "{}", cause),
15819            GetTopicRuleError::InvalidRequest(ref cause) => write!(f, "{}", cause),
15820            GetTopicRuleError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
15821            GetTopicRuleError::Unauthorized(ref cause) => write!(f, "{}", cause),
15822        }
15823    }
15824}
15825impl Error for GetTopicRuleError {}
15826/// Errors returned by GetTopicRuleDestination
15827#[derive(Debug, PartialEq)]
15828pub enum GetTopicRuleDestinationError {
15829    /// <p>An unexpected error has occurred.</p>
15830    Internal(String),
15831    /// <p>The request is not valid.</p>
15832    InvalidRequest(String),
15833    /// <p>The service is temporarily unavailable.</p>
15834    ServiceUnavailable(String),
15835    /// <p>You are not authorized to perform this operation.</p>
15836    Unauthorized(String),
15837}
15838
15839impl GetTopicRuleDestinationError {
15840    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetTopicRuleDestinationError> {
15841        if let Some(err) = proto::json::Error::parse_rest(&res) {
15842            match err.typ.as_str() {
15843                "InternalException" => {
15844                    return RusotoError::Service(GetTopicRuleDestinationError::Internal(err.msg))
15845                }
15846                "InvalidRequestException" => {
15847                    return RusotoError::Service(GetTopicRuleDestinationError::InvalidRequest(
15848                        err.msg,
15849                    ))
15850                }
15851                "ServiceUnavailableException" => {
15852                    return RusotoError::Service(GetTopicRuleDestinationError::ServiceUnavailable(
15853                        err.msg,
15854                    ))
15855                }
15856                "UnauthorizedException" => {
15857                    return RusotoError::Service(GetTopicRuleDestinationError::Unauthorized(
15858                        err.msg,
15859                    ))
15860                }
15861                "ValidationException" => return RusotoError::Validation(err.msg),
15862                _ => {}
15863            }
15864        }
15865        RusotoError::Unknown(res)
15866    }
15867}
15868impl fmt::Display for GetTopicRuleDestinationError {
15869    #[allow(unused_variables)]
15870    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
15871        match *self {
15872            GetTopicRuleDestinationError::Internal(ref cause) => write!(f, "{}", cause),
15873            GetTopicRuleDestinationError::InvalidRequest(ref cause) => write!(f, "{}", cause),
15874            GetTopicRuleDestinationError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
15875            GetTopicRuleDestinationError::Unauthorized(ref cause) => write!(f, "{}", cause),
15876        }
15877    }
15878}
15879impl Error for GetTopicRuleDestinationError {}
15880/// Errors returned by GetV2LoggingOptions
15881#[derive(Debug, PartialEq)]
15882pub enum GetV2LoggingOptionsError {
15883    /// <p>An unexpected error has occurred.</p>
15884    Internal(String),
15885    /// <p>The resource is not configured.</p>
15886    NotConfigured(String),
15887    /// <p>The service is temporarily unavailable.</p>
15888    ServiceUnavailable(String),
15889}
15890
15891impl GetV2LoggingOptionsError {
15892    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetV2LoggingOptionsError> {
15893        if let Some(err) = proto::json::Error::parse_rest(&res) {
15894            match err.typ.as_str() {
15895                "InternalException" => {
15896                    return RusotoError::Service(GetV2LoggingOptionsError::Internal(err.msg))
15897                }
15898                "NotConfiguredException" => {
15899                    return RusotoError::Service(GetV2LoggingOptionsError::NotConfigured(err.msg))
15900                }
15901                "ServiceUnavailableException" => {
15902                    return RusotoError::Service(GetV2LoggingOptionsError::ServiceUnavailable(
15903                        err.msg,
15904                    ))
15905                }
15906                "ValidationException" => return RusotoError::Validation(err.msg),
15907                _ => {}
15908            }
15909        }
15910        RusotoError::Unknown(res)
15911    }
15912}
15913impl fmt::Display for GetV2LoggingOptionsError {
15914    #[allow(unused_variables)]
15915    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
15916        match *self {
15917            GetV2LoggingOptionsError::Internal(ref cause) => write!(f, "{}", cause),
15918            GetV2LoggingOptionsError::NotConfigured(ref cause) => write!(f, "{}", cause),
15919            GetV2LoggingOptionsError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
15920        }
15921    }
15922}
15923impl Error for GetV2LoggingOptionsError {}
15924/// Errors returned by ListActiveViolations
15925#[derive(Debug, PartialEq)]
15926pub enum ListActiveViolationsError {
15927    /// <p>An unexpected error has occurred.</p>
15928    InternalFailure(String),
15929    /// <p>The request is not valid.</p>
15930    InvalidRequest(String),
15931    /// <p>The specified resource does not exist.</p>
15932    ResourceNotFound(String),
15933    /// <p>The rate exceeds the limit.</p>
15934    Throttling(String),
15935}
15936
15937impl ListActiveViolationsError {
15938    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListActiveViolationsError> {
15939        if let Some(err) = proto::json::Error::parse_rest(&res) {
15940            match err.typ.as_str() {
15941                "InternalFailureException" => {
15942                    return RusotoError::Service(ListActiveViolationsError::InternalFailure(
15943                        err.msg,
15944                    ))
15945                }
15946                "InvalidRequestException" => {
15947                    return RusotoError::Service(ListActiveViolationsError::InvalidRequest(err.msg))
15948                }
15949                "ResourceNotFoundException" => {
15950                    return RusotoError::Service(ListActiveViolationsError::ResourceNotFound(
15951                        err.msg,
15952                    ))
15953                }
15954                "ThrottlingException" => {
15955                    return RusotoError::Service(ListActiveViolationsError::Throttling(err.msg))
15956                }
15957                "ValidationException" => return RusotoError::Validation(err.msg),
15958                _ => {}
15959            }
15960        }
15961        RusotoError::Unknown(res)
15962    }
15963}
15964impl fmt::Display for ListActiveViolationsError {
15965    #[allow(unused_variables)]
15966    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
15967        match *self {
15968            ListActiveViolationsError::InternalFailure(ref cause) => write!(f, "{}", cause),
15969            ListActiveViolationsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
15970            ListActiveViolationsError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
15971            ListActiveViolationsError::Throttling(ref cause) => write!(f, "{}", cause),
15972        }
15973    }
15974}
15975impl Error for ListActiveViolationsError {}
15976/// Errors returned by ListAttachedPolicies
15977#[derive(Debug, PartialEq)]
15978pub enum ListAttachedPoliciesError {
15979    /// <p>An unexpected error has occurred.</p>
15980    InternalFailure(String),
15981    /// <p>The request is not valid.</p>
15982    InvalidRequest(String),
15983    /// <p>A limit has been exceeded.</p>
15984    LimitExceeded(String),
15985    /// <p>The specified resource does not exist.</p>
15986    ResourceNotFound(String),
15987    /// <p>The service is temporarily unavailable.</p>
15988    ServiceUnavailable(String),
15989    /// <p>The rate exceeds the limit.</p>
15990    Throttling(String),
15991    /// <p>You are not authorized to perform this operation.</p>
15992    Unauthorized(String),
15993}
15994
15995impl ListAttachedPoliciesError {
15996    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListAttachedPoliciesError> {
15997        if let Some(err) = proto::json::Error::parse_rest(&res) {
15998            match err.typ.as_str() {
15999                "InternalFailureException" => {
16000                    return RusotoError::Service(ListAttachedPoliciesError::InternalFailure(
16001                        err.msg,
16002                    ))
16003                }
16004                "InvalidRequestException" => {
16005                    return RusotoError::Service(ListAttachedPoliciesError::InvalidRequest(err.msg))
16006                }
16007                "LimitExceededException" => {
16008                    return RusotoError::Service(ListAttachedPoliciesError::LimitExceeded(err.msg))
16009                }
16010                "ResourceNotFoundException" => {
16011                    return RusotoError::Service(ListAttachedPoliciesError::ResourceNotFound(
16012                        err.msg,
16013                    ))
16014                }
16015                "ServiceUnavailableException" => {
16016                    return RusotoError::Service(ListAttachedPoliciesError::ServiceUnavailable(
16017                        err.msg,
16018                    ))
16019                }
16020                "ThrottlingException" => {
16021                    return RusotoError::Service(ListAttachedPoliciesError::Throttling(err.msg))
16022                }
16023                "UnauthorizedException" => {
16024                    return RusotoError::Service(ListAttachedPoliciesError::Unauthorized(err.msg))
16025                }
16026                "ValidationException" => return RusotoError::Validation(err.msg),
16027                _ => {}
16028            }
16029        }
16030        RusotoError::Unknown(res)
16031    }
16032}
16033impl fmt::Display for ListAttachedPoliciesError {
16034    #[allow(unused_variables)]
16035    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
16036        match *self {
16037            ListAttachedPoliciesError::InternalFailure(ref cause) => write!(f, "{}", cause),
16038            ListAttachedPoliciesError::InvalidRequest(ref cause) => write!(f, "{}", cause),
16039            ListAttachedPoliciesError::LimitExceeded(ref cause) => write!(f, "{}", cause),
16040            ListAttachedPoliciesError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
16041            ListAttachedPoliciesError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
16042            ListAttachedPoliciesError::Throttling(ref cause) => write!(f, "{}", cause),
16043            ListAttachedPoliciesError::Unauthorized(ref cause) => write!(f, "{}", cause),
16044        }
16045    }
16046}
16047impl Error for ListAttachedPoliciesError {}
16048/// Errors returned by ListAuditFindings
16049#[derive(Debug, PartialEq)]
16050pub enum ListAuditFindingsError {
16051    /// <p>An unexpected error has occurred.</p>
16052    InternalFailure(String),
16053    /// <p>The request is not valid.</p>
16054    InvalidRequest(String),
16055    /// <p>The rate exceeds the limit.</p>
16056    Throttling(String),
16057}
16058
16059impl ListAuditFindingsError {
16060    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListAuditFindingsError> {
16061        if let Some(err) = proto::json::Error::parse_rest(&res) {
16062            match err.typ.as_str() {
16063                "InternalFailureException" => {
16064                    return RusotoError::Service(ListAuditFindingsError::InternalFailure(err.msg))
16065                }
16066                "InvalidRequestException" => {
16067                    return RusotoError::Service(ListAuditFindingsError::InvalidRequest(err.msg))
16068                }
16069                "ThrottlingException" => {
16070                    return RusotoError::Service(ListAuditFindingsError::Throttling(err.msg))
16071                }
16072                "ValidationException" => return RusotoError::Validation(err.msg),
16073                _ => {}
16074            }
16075        }
16076        RusotoError::Unknown(res)
16077    }
16078}
16079impl fmt::Display for ListAuditFindingsError {
16080    #[allow(unused_variables)]
16081    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
16082        match *self {
16083            ListAuditFindingsError::InternalFailure(ref cause) => write!(f, "{}", cause),
16084            ListAuditFindingsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
16085            ListAuditFindingsError::Throttling(ref cause) => write!(f, "{}", cause),
16086        }
16087    }
16088}
16089impl Error for ListAuditFindingsError {}
16090/// Errors returned by ListAuditMitigationActionsExecutions
16091#[derive(Debug, PartialEq)]
16092pub enum ListAuditMitigationActionsExecutionsError {
16093    /// <p>An unexpected error has occurred.</p>
16094    InternalFailure(String),
16095    /// <p>The request is not valid.</p>
16096    InvalidRequest(String),
16097    /// <p>The rate exceeds the limit.</p>
16098    Throttling(String),
16099}
16100
16101impl ListAuditMitigationActionsExecutionsError {
16102    pub fn from_response(
16103        res: BufferedHttpResponse,
16104    ) -> RusotoError<ListAuditMitigationActionsExecutionsError> {
16105        if let Some(err) = proto::json::Error::parse_rest(&res) {
16106            match err.typ.as_str() {
16107                "InternalFailureException" => {
16108                    return RusotoError::Service(
16109                        ListAuditMitigationActionsExecutionsError::InternalFailure(err.msg),
16110                    )
16111                }
16112                "InvalidRequestException" => {
16113                    return RusotoError::Service(
16114                        ListAuditMitigationActionsExecutionsError::InvalidRequest(err.msg),
16115                    )
16116                }
16117                "ThrottlingException" => {
16118                    return RusotoError::Service(
16119                        ListAuditMitigationActionsExecutionsError::Throttling(err.msg),
16120                    )
16121                }
16122                "ValidationException" => return RusotoError::Validation(err.msg),
16123                _ => {}
16124            }
16125        }
16126        RusotoError::Unknown(res)
16127    }
16128}
16129impl fmt::Display for ListAuditMitigationActionsExecutionsError {
16130    #[allow(unused_variables)]
16131    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
16132        match *self {
16133            ListAuditMitigationActionsExecutionsError::InternalFailure(ref cause) => {
16134                write!(f, "{}", cause)
16135            }
16136            ListAuditMitigationActionsExecutionsError::InvalidRequest(ref cause) => {
16137                write!(f, "{}", cause)
16138            }
16139            ListAuditMitigationActionsExecutionsError::Throttling(ref cause) => {
16140                write!(f, "{}", cause)
16141            }
16142        }
16143    }
16144}
16145impl Error for ListAuditMitigationActionsExecutionsError {}
16146/// Errors returned by ListAuditMitigationActionsTasks
16147#[derive(Debug, PartialEq)]
16148pub enum ListAuditMitigationActionsTasksError {
16149    /// <p>An unexpected error has occurred.</p>
16150    InternalFailure(String),
16151    /// <p>The request is not valid.</p>
16152    InvalidRequest(String),
16153    /// <p>The rate exceeds the limit.</p>
16154    Throttling(String),
16155}
16156
16157impl ListAuditMitigationActionsTasksError {
16158    pub fn from_response(
16159        res: BufferedHttpResponse,
16160    ) -> RusotoError<ListAuditMitigationActionsTasksError> {
16161        if let Some(err) = proto::json::Error::parse_rest(&res) {
16162            match err.typ.as_str() {
16163                "InternalFailureException" => {
16164                    return RusotoError::Service(
16165                        ListAuditMitigationActionsTasksError::InternalFailure(err.msg),
16166                    )
16167                }
16168                "InvalidRequestException" => {
16169                    return RusotoError::Service(
16170                        ListAuditMitigationActionsTasksError::InvalidRequest(err.msg),
16171                    )
16172                }
16173                "ThrottlingException" => {
16174                    return RusotoError::Service(ListAuditMitigationActionsTasksError::Throttling(
16175                        err.msg,
16176                    ))
16177                }
16178                "ValidationException" => return RusotoError::Validation(err.msg),
16179                _ => {}
16180            }
16181        }
16182        RusotoError::Unknown(res)
16183    }
16184}
16185impl fmt::Display for ListAuditMitigationActionsTasksError {
16186    #[allow(unused_variables)]
16187    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
16188        match *self {
16189            ListAuditMitigationActionsTasksError::InternalFailure(ref cause) => {
16190                write!(f, "{}", cause)
16191            }
16192            ListAuditMitigationActionsTasksError::InvalidRequest(ref cause) => {
16193                write!(f, "{}", cause)
16194            }
16195            ListAuditMitigationActionsTasksError::Throttling(ref cause) => write!(f, "{}", cause),
16196        }
16197    }
16198}
16199impl Error for ListAuditMitigationActionsTasksError {}
16200/// Errors returned by ListAuditTasks
16201#[derive(Debug, PartialEq)]
16202pub enum ListAuditTasksError {
16203    /// <p>An unexpected error has occurred.</p>
16204    InternalFailure(String),
16205    /// <p>The request is not valid.</p>
16206    InvalidRequest(String),
16207    /// <p>The rate exceeds the limit.</p>
16208    Throttling(String),
16209}
16210
16211impl ListAuditTasksError {
16212    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListAuditTasksError> {
16213        if let Some(err) = proto::json::Error::parse_rest(&res) {
16214            match err.typ.as_str() {
16215                "InternalFailureException" => {
16216                    return RusotoError::Service(ListAuditTasksError::InternalFailure(err.msg))
16217                }
16218                "InvalidRequestException" => {
16219                    return RusotoError::Service(ListAuditTasksError::InvalidRequest(err.msg))
16220                }
16221                "ThrottlingException" => {
16222                    return RusotoError::Service(ListAuditTasksError::Throttling(err.msg))
16223                }
16224                "ValidationException" => return RusotoError::Validation(err.msg),
16225                _ => {}
16226            }
16227        }
16228        RusotoError::Unknown(res)
16229    }
16230}
16231impl fmt::Display for ListAuditTasksError {
16232    #[allow(unused_variables)]
16233    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
16234        match *self {
16235            ListAuditTasksError::InternalFailure(ref cause) => write!(f, "{}", cause),
16236            ListAuditTasksError::InvalidRequest(ref cause) => write!(f, "{}", cause),
16237            ListAuditTasksError::Throttling(ref cause) => write!(f, "{}", cause),
16238        }
16239    }
16240}
16241impl Error for ListAuditTasksError {}
16242/// Errors returned by ListAuthorizers
16243#[derive(Debug, PartialEq)]
16244pub enum ListAuthorizersError {
16245    /// <p>An unexpected error has occurred.</p>
16246    InternalFailure(String),
16247    /// <p>The request is not valid.</p>
16248    InvalidRequest(String),
16249    /// <p>The service is temporarily unavailable.</p>
16250    ServiceUnavailable(String),
16251    /// <p>The rate exceeds the limit.</p>
16252    Throttling(String),
16253    /// <p>You are not authorized to perform this operation.</p>
16254    Unauthorized(String),
16255}
16256
16257impl ListAuthorizersError {
16258    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListAuthorizersError> {
16259        if let Some(err) = proto::json::Error::parse_rest(&res) {
16260            match err.typ.as_str() {
16261                "InternalFailureException" => {
16262                    return RusotoError::Service(ListAuthorizersError::InternalFailure(err.msg))
16263                }
16264                "InvalidRequestException" => {
16265                    return RusotoError::Service(ListAuthorizersError::InvalidRequest(err.msg))
16266                }
16267                "ServiceUnavailableException" => {
16268                    return RusotoError::Service(ListAuthorizersError::ServiceUnavailable(err.msg))
16269                }
16270                "ThrottlingException" => {
16271                    return RusotoError::Service(ListAuthorizersError::Throttling(err.msg))
16272                }
16273                "UnauthorizedException" => {
16274                    return RusotoError::Service(ListAuthorizersError::Unauthorized(err.msg))
16275                }
16276                "ValidationException" => return RusotoError::Validation(err.msg),
16277                _ => {}
16278            }
16279        }
16280        RusotoError::Unknown(res)
16281    }
16282}
16283impl fmt::Display for ListAuthorizersError {
16284    #[allow(unused_variables)]
16285    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
16286        match *self {
16287            ListAuthorizersError::InternalFailure(ref cause) => write!(f, "{}", cause),
16288            ListAuthorizersError::InvalidRequest(ref cause) => write!(f, "{}", cause),
16289            ListAuthorizersError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
16290            ListAuthorizersError::Throttling(ref cause) => write!(f, "{}", cause),
16291            ListAuthorizersError::Unauthorized(ref cause) => write!(f, "{}", cause),
16292        }
16293    }
16294}
16295impl Error for ListAuthorizersError {}
16296/// Errors returned by ListBillingGroups
16297#[derive(Debug, PartialEq)]
16298pub enum ListBillingGroupsError {
16299    /// <p>An unexpected error has occurred.</p>
16300    InternalFailure(String),
16301    /// <p>The request is not valid.</p>
16302    InvalidRequest(String),
16303    /// <p>The specified resource does not exist.</p>
16304    ResourceNotFound(String),
16305    /// <p>The rate exceeds the limit.</p>
16306    Throttling(String),
16307}
16308
16309impl ListBillingGroupsError {
16310    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListBillingGroupsError> {
16311        if let Some(err) = proto::json::Error::parse_rest(&res) {
16312            match err.typ.as_str() {
16313                "InternalFailureException" => {
16314                    return RusotoError::Service(ListBillingGroupsError::InternalFailure(err.msg))
16315                }
16316                "InvalidRequestException" => {
16317                    return RusotoError::Service(ListBillingGroupsError::InvalidRequest(err.msg))
16318                }
16319                "ResourceNotFoundException" => {
16320                    return RusotoError::Service(ListBillingGroupsError::ResourceNotFound(err.msg))
16321                }
16322                "ThrottlingException" => {
16323                    return RusotoError::Service(ListBillingGroupsError::Throttling(err.msg))
16324                }
16325                "ValidationException" => return RusotoError::Validation(err.msg),
16326                _ => {}
16327            }
16328        }
16329        RusotoError::Unknown(res)
16330    }
16331}
16332impl fmt::Display for ListBillingGroupsError {
16333    #[allow(unused_variables)]
16334    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
16335        match *self {
16336            ListBillingGroupsError::InternalFailure(ref cause) => write!(f, "{}", cause),
16337            ListBillingGroupsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
16338            ListBillingGroupsError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
16339            ListBillingGroupsError::Throttling(ref cause) => write!(f, "{}", cause),
16340        }
16341    }
16342}
16343impl Error for ListBillingGroupsError {}
16344/// Errors returned by ListCACertificates
16345#[derive(Debug, PartialEq)]
16346pub enum ListCACertificatesError {
16347    /// <p>An unexpected error has occurred.</p>
16348    InternalFailure(String),
16349    /// <p>The request is not valid.</p>
16350    InvalidRequest(String),
16351    /// <p>The service is temporarily unavailable.</p>
16352    ServiceUnavailable(String),
16353    /// <p>The rate exceeds the limit.</p>
16354    Throttling(String),
16355    /// <p>You are not authorized to perform this operation.</p>
16356    Unauthorized(String),
16357}
16358
16359impl ListCACertificatesError {
16360    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListCACertificatesError> {
16361        if let Some(err) = proto::json::Error::parse_rest(&res) {
16362            match err.typ.as_str() {
16363                "InternalFailureException" => {
16364                    return RusotoError::Service(ListCACertificatesError::InternalFailure(err.msg))
16365                }
16366                "InvalidRequestException" => {
16367                    return RusotoError::Service(ListCACertificatesError::InvalidRequest(err.msg))
16368                }
16369                "ServiceUnavailableException" => {
16370                    return RusotoError::Service(ListCACertificatesError::ServiceUnavailable(
16371                        err.msg,
16372                    ))
16373                }
16374                "ThrottlingException" => {
16375                    return RusotoError::Service(ListCACertificatesError::Throttling(err.msg))
16376                }
16377                "UnauthorizedException" => {
16378                    return RusotoError::Service(ListCACertificatesError::Unauthorized(err.msg))
16379                }
16380                "ValidationException" => return RusotoError::Validation(err.msg),
16381                _ => {}
16382            }
16383        }
16384        RusotoError::Unknown(res)
16385    }
16386}
16387impl fmt::Display for ListCACertificatesError {
16388    #[allow(unused_variables)]
16389    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
16390        match *self {
16391            ListCACertificatesError::InternalFailure(ref cause) => write!(f, "{}", cause),
16392            ListCACertificatesError::InvalidRequest(ref cause) => write!(f, "{}", cause),
16393            ListCACertificatesError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
16394            ListCACertificatesError::Throttling(ref cause) => write!(f, "{}", cause),
16395            ListCACertificatesError::Unauthorized(ref cause) => write!(f, "{}", cause),
16396        }
16397    }
16398}
16399impl Error for ListCACertificatesError {}
16400/// Errors returned by ListCertificates
16401#[derive(Debug, PartialEq)]
16402pub enum ListCertificatesError {
16403    /// <p>An unexpected error has occurred.</p>
16404    InternalFailure(String),
16405    /// <p>The request is not valid.</p>
16406    InvalidRequest(String),
16407    /// <p>The service is temporarily unavailable.</p>
16408    ServiceUnavailable(String),
16409    /// <p>The rate exceeds the limit.</p>
16410    Throttling(String),
16411    /// <p>You are not authorized to perform this operation.</p>
16412    Unauthorized(String),
16413}
16414
16415impl ListCertificatesError {
16416    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListCertificatesError> {
16417        if let Some(err) = proto::json::Error::parse_rest(&res) {
16418            match err.typ.as_str() {
16419                "InternalFailureException" => {
16420                    return RusotoError::Service(ListCertificatesError::InternalFailure(err.msg))
16421                }
16422                "InvalidRequestException" => {
16423                    return RusotoError::Service(ListCertificatesError::InvalidRequest(err.msg))
16424                }
16425                "ServiceUnavailableException" => {
16426                    return RusotoError::Service(ListCertificatesError::ServiceUnavailable(err.msg))
16427                }
16428                "ThrottlingException" => {
16429                    return RusotoError::Service(ListCertificatesError::Throttling(err.msg))
16430                }
16431                "UnauthorizedException" => {
16432                    return RusotoError::Service(ListCertificatesError::Unauthorized(err.msg))
16433                }
16434                "ValidationException" => return RusotoError::Validation(err.msg),
16435                _ => {}
16436            }
16437        }
16438        RusotoError::Unknown(res)
16439    }
16440}
16441impl fmt::Display for ListCertificatesError {
16442    #[allow(unused_variables)]
16443    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
16444        match *self {
16445            ListCertificatesError::InternalFailure(ref cause) => write!(f, "{}", cause),
16446            ListCertificatesError::InvalidRequest(ref cause) => write!(f, "{}", cause),
16447            ListCertificatesError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
16448            ListCertificatesError::Throttling(ref cause) => write!(f, "{}", cause),
16449            ListCertificatesError::Unauthorized(ref cause) => write!(f, "{}", cause),
16450        }
16451    }
16452}
16453impl Error for ListCertificatesError {}
16454/// Errors returned by ListCertificatesByCA
16455#[derive(Debug, PartialEq)]
16456pub enum ListCertificatesByCAError {
16457    /// <p>An unexpected error has occurred.</p>
16458    InternalFailure(String),
16459    /// <p>The request is not valid.</p>
16460    InvalidRequest(String),
16461    /// <p>The service is temporarily unavailable.</p>
16462    ServiceUnavailable(String),
16463    /// <p>The rate exceeds the limit.</p>
16464    Throttling(String),
16465    /// <p>You are not authorized to perform this operation.</p>
16466    Unauthorized(String),
16467}
16468
16469impl ListCertificatesByCAError {
16470    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListCertificatesByCAError> {
16471        if let Some(err) = proto::json::Error::parse_rest(&res) {
16472            match err.typ.as_str() {
16473                "InternalFailureException" => {
16474                    return RusotoError::Service(ListCertificatesByCAError::InternalFailure(
16475                        err.msg,
16476                    ))
16477                }
16478                "InvalidRequestException" => {
16479                    return RusotoError::Service(ListCertificatesByCAError::InvalidRequest(err.msg))
16480                }
16481                "ServiceUnavailableException" => {
16482                    return RusotoError::Service(ListCertificatesByCAError::ServiceUnavailable(
16483                        err.msg,
16484                    ))
16485                }
16486                "ThrottlingException" => {
16487                    return RusotoError::Service(ListCertificatesByCAError::Throttling(err.msg))
16488                }
16489                "UnauthorizedException" => {
16490                    return RusotoError::Service(ListCertificatesByCAError::Unauthorized(err.msg))
16491                }
16492                "ValidationException" => return RusotoError::Validation(err.msg),
16493                _ => {}
16494            }
16495        }
16496        RusotoError::Unknown(res)
16497    }
16498}
16499impl fmt::Display for ListCertificatesByCAError {
16500    #[allow(unused_variables)]
16501    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
16502        match *self {
16503            ListCertificatesByCAError::InternalFailure(ref cause) => write!(f, "{}", cause),
16504            ListCertificatesByCAError::InvalidRequest(ref cause) => write!(f, "{}", cause),
16505            ListCertificatesByCAError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
16506            ListCertificatesByCAError::Throttling(ref cause) => write!(f, "{}", cause),
16507            ListCertificatesByCAError::Unauthorized(ref cause) => write!(f, "{}", cause),
16508        }
16509    }
16510}
16511impl Error for ListCertificatesByCAError {}
16512/// Errors returned by ListDimensions
16513#[derive(Debug, PartialEq)]
16514pub enum ListDimensionsError {
16515    /// <p>An unexpected error has occurred.</p>
16516    InternalFailure(String),
16517    /// <p>The request is not valid.</p>
16518    InvalidRequest(String),
16519    /// <p>The rate exceeds the limit.</p>
16520    Throttling(String),
16521}
16522
16523impl ListDimensionsError {
16524    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListDimensionsError> {
16525        if let Some(err) = proto::json::Error::parse_rest(&res) {
16526            match err.typ.as_str() {
16527                "InternalFailureException" => {
16528                    return RusotoError::Service(ListDimensionsError::InternalFailure(err.msg))
16529                }
16530                "InvalidRequestException" => {
16531                    return RusotoError::Service(ListDimensionsError::InvalidRequest(err.msg))
16532                }
16533                "ThrottlingException" => {
16534                    return RusotoError::Service(ListDimensionsError::Throttling(err.msg))
16535                }
16536                "ValidationException" => return RusotoError::Validation(err.msg),
16537                _ => {}
16538            }
16539        }
16540        RusotoError::Unknown(res)
16541    }
16542}
16543impl fmt::Display for ListDimensionsError {
16544    #[allow(unused_variables)]
16545    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
16546        match *self {
16547            ListDimensionsError::InternalFailure(ref cause) => write!(f, "{}", cause),
16548            ListDimensionsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
16549            ListDimensionsError::Throttling(ref cause) => write!(f, "{}", cause),
16550        }
16551    }
16552}
16553impl Error for ListDimensionsError {}
16554/// Errors returned by ListDomainConfigurations
16555#[derive(Debug, PartialEq)]
16556pub enum ListDomainConfigurationsError {
16557    /// <p>An unexpected error has occurred.</p>
16558    InternalFailure(String),
16559    /// <p>The request is not valid.</p>
16560    InvalidRequest(String),
16561    /// <p>The service is temporarily unavailable.</p>
16562    ServiceUnavailable(String),
16563    /// <p>The rate exceeds the limit.</p>
16564    Throttling(String),
16565    /// <p>You are not authorized to perform this operation.</p>
16566    Unauthorized(String),
16567}
16568
16569impl ListDomainConfigurationsError {
16570    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListDomainConfigurationsError> {
16571        if let Some(err) = proto::json::Error::parse_rest(&res) {
16572            match err.typ.as_str() {
16573                "InternalFailureException" => {
16574                    return RusotoError::Service(ListDomainConfigurationsError::InternalFailure(
16575                        err.msg,
16576                    ))
16577                }
16578                "InvalidRequestException" => {
16579                    return RusotoError::Service(ListDomainConfigurationsError::InvalidRequest(
16580                        err.msg,
16581                    ))
16582                }
16583                "ServiceUnavailableException" => {
16584                    return RusotoError::Service(ListDomainConfigurationsError::ServiceUnavailable(
16585                        err.msg,
16586                    ))
16587                }
16588                "ThrottlingException" => {
16589                    return RusotoError::Service(ListDomainConfigurationsError::Throttling(err.msg))
16590                }
16591                "UnauthorizedException" => {
16592                    return RusotoError::Service(ListDomainConfigurationsError::Unauthorized(
16593                        err.msg,
16594                    ))
16595                }
16596                "ValidationException" => return RusotoError::Validation(err.msg),
16597                _ => {}
16598            }
16599        }
16600        RusotoError::Unknown(res)
16601    }
16602}
16603impl fmt::Display for ListDomainConfigurationsError {
16604    #[allow(unused_variables)]
16605    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
16606        match *self {
16607            ListDomainConfigurationsError::InternalFailure(ref cause) => write!(f, "{}", cause),
16608            ListDomainConfigurationsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
16609            ListDomainConfigurationsError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
16610            ListDomainConfigurationsError::Throttling(ref cause) => write!(f, "{}", cause),
16611            ListDomainConfigurationsError::Unauthorized(ref cause) => write!(f, "{}", cause),
16612        }
16613    }
16614}
16615impl Error for ListDomainConfigurationsError {}
16616/// Errors returned by ListIndices
16617#[derive(Debug, PartialEq)]
16618pub enum ListIndicesError {
16619    /// <p>An unexpected error has occurred.</p>
16620    InternalFailure(String),
16621    /// <p>The request is not valid.</p>
16622    InvalidRequest(String),
16623    /// <p>The service is temporarily unavailable.</p>
16624    ServiceUnavailable(String),
16625    /// <p>The rate exceeds the limit.</p>
16626    Throttling(String),
16627    /// <p>You are not authorized to perform this operation.</p>
16628    Unauthorized(String),
16629}
16630
16631impl ListIndicesError {
16632    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListIndicesError> {
16633        if let Some(err) = proto::json::Error::parse_rest(&res) {
16634            match err.typ.as_str() {
16635                "InternalFailureException" => {
16636                    return RusotoError::Service(ListIndicesError::InternalFailure(err.msg))
16637                }
16638                "InvalidRequestException" => {
16639                    return RusotoError::Service(ListIndicesError::InvalidRequest(err.msg))
16640                }
16641                "ServiceUnavailableException" => {
16642                    return RusotoError::Service(ListIndicesError::ServiceUnavailable(err.msg))
16643                }
16644                "ThrottlingException" => {
16645                    return RusotoError::Service(ListIndicesError::Throttling(err.msg))
16646                }
16647                "UnauthorizedException" => {
16648                    return RusotoError::Service(ListIndicesError::Unauthorized(err.msg))
16649                }
16650                "ValidationException" => return RusotoError::Validation(err.msg),
16651                _ => {}
16652            }
16653        }
16654        RusotoError::Unknown(res)
16655    }
16656}
16657impl fmt::Display for ListIndicesError {
16658    #[allow(unused_variables)]
16659    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
16660        match *self {
16661            ListIndicesError::InternalFailure(ref cause) => write!(f, "{}", cause),
16662            ListIndicesError::InvalidRequest(ref cause) => write!(f, "{}", cause),
16663            ListIndicesError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
16664            ListIndicesError::Throttling(ref cause) => write!(f, "{}", cause),
16665            ListIndicesError::Unauthorized(ref cause) => write!(f, "{}", cause),
16666        }
16667    }
16668}
16669impl Error for ListIndicesError {}
16670/// Errors returned by ListJobExecutionsForJob
16671#[derive(Debug, PartialEq)]
16672pub enum ListJobExecutionsForJobError {
16673    /// <p>The request is not valid.</p>
16674    InvalidRequest(String),
16675    /// <p>The specified resource does not exist.</p>
16676    ResourceNotFound(String),
16677    /// <p>The service is temporarily unavailable.</p>
16678    ServiceUnavailable(String),
16679    /// <p>The rate exceeds the limit.</p>
16680    Throttling(String),
16681}
16682
16683impl ListJobExecutionsForJobError {
16684    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListJobExecutionsForJobError> {
16685        if let Some(err) = proto::json::Error::parse_rest(&res) {
16686            match err.typ.as_str() {
16687                "InvalidRequestException" => {
16688                    return RusotoError::Service(ListJobExecutionsForJobError::InvalidRequest(
16689                        err.msg,
16690                    ))
16691                }
16692                "ResourceNotFoundException" => {
16693                    return RusotoError::Service(ListJobExecutionsForJobError::ResourceNotFound(
16694                        err.msg,
16695                    ))
16696                }
16697                "ServiceUnavailableException" => {
16698                    return RusotoError::Service(ListJobExecutionsForJobError::ServiceUnavailable(
16699                        err.msg,
16700                    ))
16701                }
16702                "ThrottlingException" => {
16703                    return RusotoError::Service(ListJobExecutionsForJobError::Throttling(err.msg))
16704                }
16705                "ValidationException" => return RusotoError::Validation(err.msg),
16706                _ => {}
16707            }
16708        }
16709        RusotoError::Unknown(res)
16710    }
16711}
16712impl fmt::Display for ListJobExecutionsForJobError {
16713    #[allow(unused_variables)]
16714    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
16715        match *self {
16716            ListJobExecutionsForJobError::InvalidRequest(ref cause) => write!(f, "{}", cause),
16717            ListJobExecutionsForJobError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
16718            ListJobExecutionsForJobError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
16719            ListJobExecutionsForJobError::Throttling(ref cause) => write!(f, "{}", cause),
16720        }
16721    }
16722}
16723impl Error for ListJobExecutionsForJobError {}
16724/// Errors returned by ListJobExecutionsForThing
16725#[derive(Debug, PartialEq)]
16726pub enum ListJobExecutionsForThingError {
16727    /// <p>The request is not valid.</p>
16728    InvalidRequest(String),
16729    /// <p>The specified resource does not exist.</p>
16730    ResourceNotFound(String),
16731    /// <p>The service is temporarily unavailable.</p>
16732    ServiceUnavailable(String),
16733    /// <p>The rate exceeds the limit.</p>
16734    Throttling(String),
16735}
16736
16737impl ListJobExecutionsForThingError {
16738    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListJobExecutionsForThingError> {
16739        if let Some(err) = proto::json::Error::parse_rest(&res) {
16740            match err.typ.as_str() {
16741                "InvalidRequestException" => {
16742                    return RusotoError::Service(ListJobExecutionsForThingError::InvalidRequest(
16743                        err.msg,
16744                    ))
16745                }
16746                "ResourceNotFoundException" => {
16747                    return RusotoError::Service(ListJobExecutionsForThingError::ResourceNotFound(
16748                        err.msg,
16749                    ))
16750                }
16751                "ServiceUnavailableException" => {
16752                    return RusotoError::Service(
16753                        ListJobExecutionsForThingError::ServiceUnavailable(err.msg),
16754                    )
16755                }
16756                "ThrottlingException" => {
16757                    return RusotoError::Service(ListJobExecutionsForThingError::Throttling(
16758                        err.msg,
16759                    ))
16760                }
16761                "ValidationException" => return RusotoError::Validation(err.msg),
16762                _ => {}
16763            }
16764        }
16765        RusotoError::Unknown(res)
16766    }
16767}
16768impl fmt::Display for ListJobExecutionsForThingError {
16769    #[allow(unused_variables)]
16770    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
16771        match *self {
16772            ListJobExecutionsForThingError::InvalidRequest(ref cause) => write!(f, "{}", cause),
16773            ListJobExecutionsForThingError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
16774            ListJobExecutionsForThingError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
16775            ListJobExecutionsForThingError::Throttling(ref cause) => write!(f, "{}", cause),
16776        }
16777    }
16778}
16779impl Error for ListJobExecutionsForThingError {}
16780/// Errors returned by ListJobs
16781#[derive(Debug, PartialEq)]
16782pub enum ListJobsError {
16783    /// <p>The request is not valid.</p>
16784    InvalidRequest(String),
16785    /// <p>The specified resource does not exist.</p>
16786    ResourceNotFound(String),
16787    /// <p>The service is temporarily unavailable.</p>
16788    ServiceUnavailable(String),
16789    /// <p>The rate exceeds the limit.</p>
16790    Throttling(String),
16791}
16792
16793impl ListJobsError {
16794    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListJobsError> {
16795        if let Some(err) = proto::json::Error::parse_rest(&res) {
16796            match err.typ.as_str() {
16797                "InvalidRequestException" => {
16798                    return RusotoError::Service(ListJobsError::InvalidRequest(err.msg))
16799                }
16800                "ResourceNotFoundException" => {
16801                    return RusotoError::Service(ListJobsError::ResourceNotFound(err.msg))
16802                }
16803                "ServiceUnavailableException" => {
16804                    return RusotoError::Service(ListJobsError::ServiceUnavailable(err.msg))
16805                }
16806                "ThrottlingException" => {
16807                    return RusotoError::Service(ListJobsError::Throttling(err.msg))
16808                }
16809                "ValidationException" => return RusotoError::Validation(err.msg),
16810                _ => {}
16811            }
16812        }
16813        RusotoError::Unknown(res)
16814    }
16815}
16816impl fmt::Display for ListJobsError {
16817    #[allow(unused_variables)]
16818    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
16819        match *self {
16820            ListJobsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
16821            ListJobsError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
16822            ListJobsError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
16823            ListJobsError::Throttling(ref cause) => write!(f, "{}", cause),
16824        }
16825    }
16826}
16827impl Error for ListJobsError {}
16828/// Errors returned by ListMitigationActions
16829#[derive(Debug, PartialEq)]
16830pub enum ListMitigationActionsError {
16831    /// <p>An unexpected error has occurred.</p>
16832    InternalFailure(String),
16833    /// <p>The request is not valid.</p>
16834    InvalidRequest(String),
16835    /// <p>The rate exceeds the limit.</p>
16836    Throttling(String),
16837}
16838
16839impl ListMitigationActionsError {
16840    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListMitigationActionsError> {
16841        if let Some(err) = proto::json::Error::parse_rest(&res) {
16842            match err.typ.as_str() {
16843                "InternalFailureException" => {
16844                    return RusotoError::Service(ListMitigationActionsError::InternalFailure(
16845                        err.msg,
16846                    ))
16847                }
16848                "InvalidRequestException" => {
16849                    return RusotoError::Service(ListMitigationActionsError::InvalidRequest(
16850                        err.msg,
16851                    ))
16852                }
16853                "ThrottlingException" => {
16854                    return RusotoError::Service(ListMitigationActionsError::Throttling(err.msg))
16855                }
16856                "ValidationException" => return RusotoError::Validation(err.msg),
16857                _ => {}
16858            }
16859        }
16860        RusotoError::Unknown(res)
16861    }
16862}
16863impl fmt::Display for ListMitigationActionsError {
16864    #[allow(unused_variables)]
16865    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
16866        match *self {
16867            ListMitigationActionsError::InternalFailure(ref cause) => write!(f, "{}", cause),
16868            ListMitigationActionsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
16869            ListMitigationActionsError::Throttling(ref cause) => write!(f, "{}", cause),
16870        }
16871    }
16872}
16873impl Error for ListMitigationActionsError {}
16874/// Errors returned by ListOTAUpdates
16875#[derive(Debug, PartialEq)]
16876pub enum ListOTAUpdatesError {
16877    /// <p>An unexpected error has occurred.</p>
16878    InternalFailure(String),
16879    /// <p>The request is not valid.</p>
16880    InvalidRequest(String),
16881    /// <p>The service is temporarily unavailable.</p>
16882    ServiceUnavailable(String),
16883    /// <p>The rate exceeds the limit.</p>
16884    Throttling(String),
16885    /// <p>You are not authorized to perform this operation.</p>
16886    Unauthorized(String),
16887}
16888
16889impl ListOTAUpdatesError {
16890    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListOTAUpdatesError> {
16891        if let Some(err) = proto::json::Error::parse_rest(&res) {
16892            match err.typ.as_str() {
16893                "InternalFailureException" => {
16894                    return RusotoError::Service(ListOTAUpdatesError::InternalFailure(err.msg))
16895                }
16896                "InvalidRequestException" => {
16897                    return RusotoError::Service(ListOTAUpdatesError::InvalidRequest(err.msg))
16898                }
16899                "ServiceUnavailableException" => {
16900                    return RusotoError::Service(ListOTAUpdatesError::ServiceUnavailable(err.msg))
16901                }
16902                "ThrottlingException" => {
16903                    return RusotoError::Service(ListOTAUpdatesError::Throttling(err.msg))
16904                }
16905                "UnauthorizedException" => {
16906                    return RusotoError::Service(ListOTAUpdatesError::Unauthorized(err.msg))
16907                }
16908                "ValidationException" => return RusotoError::Validation(err.msg),
16909                _ => {}
16910            }
16911        }
16912        RusotoError::Unknown(res)
16913    }
16914}
16915impl fmt::Display for ListOTAUpdatesError {
16916    #[allow(unused_variables)]
16917    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
16918        match *self {
16919            ListOTAUpdatesError::InternalFailure(ref cause) => write!(f, "{}", cause),
16920            ListOTAUpdatesError::InvalidRequest(ref cause) => write!(f, "{}", cause),
16921            ListOTAUpdatesError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
16922            ListOTAUpdatesError::Throttling(ref cause) => write!(f, "{}", cause),
16923            ListOTAUpdatesError::Unauthorized(ref cause) => write!(f, "{}", cause),
16924        }
16925    }
16926}
16927impl Error for ListOTAUpdatesError {}
16928/// Errors returned by ListOutgoingCertificates
16929#[derive(Debug, PartialEq)]
16930pub enum ListOutgoingCertificatesError {
16931    /// <p>An unexpected error has occurred.</p>
16932    InternalFailure(String),
16933    /// <p>The request is not valid.</p>
16934    InvalidRequest(String),
16935    /// <p>The service is temporarily unavailable.</p>
16936    ServiceUnavailable(String),
16937    /// <p>The rate exceeds the limit.</p>
16938    Throttling(String),
16939    /// <p>You are not authorized to perform this operation.</p>
16940    Unauthorized(String),
16941}
16942
16943impl ListOutgoingCertificatesError {
16944    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListOutgoingCertificatesError> {
16945        if let Some(err) = proto::json::Error::parse_rest(&res) {
16946            match err.typ.as_str() {
16947                "InternalFailureException" => {
16948                    return RusotoError::Service(ListOutgoingCertificatesError::InternalFailure(
16949                        err.msg,
16950                    ))
16951                }
16952                "InvalidRequestException" => {
16953                    return RusotoError::Service(ListOutgoingCertificatesError::InvalidRequest(
16954                        err.msg,
16955                    ))
16956                }
16957                "ServiceUnavailableException" => {
16958                    return RusotoError::Service(ListOutgoingCertificatesError::ServiceUnavailable(
16959                        err.msg,
16960                    ))
16961                }
16962                "ThrottlingException" => {
16963                    return RusotoError::Service(ListOutgoingCertificatesError::Throttling(err.msg))
16964                }
16965                "UnauthorizedException" => {
16966                    return RusotoError::Service(ListOutgoingCertificatesError::Unauthorized(
16967                        err.msg,
16968                    ))
16969                }
16970                "ValidationException" => return RusotoError::Validation(err.msg),
16971                _ => {}
16972            }
16973        }
16974        RusotoError::Unknown(res)
16975    }
16976}
16977impl fmt::Display for ListOutgoingCertificatesError {
16978    #[allow(unused_variables)]
16979    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
16980        match *self {
16981            ListOutgoingCertificatesError::InternalFailure(ref cause) => write!(f, "{}", cause),
16982            ListOutgoingCertificatesError::InvalidRequest(ref cause) => write!(f, "{}", cause),
16983            ListOutgoingCertificatesError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
16984            ListOutgoingCertificatesError::Throttling(ref cause) => write!(f, "{}", cause),
16985            ListOutgoingCertificatesError::Unauthorized(ref cause) => write!(f, "{}", cause),
16986        }
16987    }
16988}
16989impl Error for ListOutgoingCertificatesError {}
16990/// Errors returned by ListPolicies
16991#[derive(Debug, PartialEq)]
16992pub enum ListPoliciesError {
16993    /// <p>An unexpected error has occurred.</p>
16994    InternalFailure(String),
16995    /// <p>The request is not valid.</p>
16996    InvalidRequest(String),
16997    /// <p>The service is temporarily unavailable.</p>
16998    ServiceUnavailable(String),
16999    /// <p>The rate exceeds the limit.</p>
17000    Throttling(String),
17001    /// <p>You are not authorized to perform this operation.</p>
17002    Unauthorized(String),
17003}
17004
17005impl ListPoliciesError {
17006    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListPoliciesError> {
17007        if let Some(err) = proto::json::Error::parse_rest(&res) {
17008            match err.typ.as_str() {
17009                "InternalFailureException" => {
17010                    return RusotoError::Service(ListPoliciesError::InternalFailure(err.msg))
17011                }
17012                "InvalidRequestException" => {
17013                    return RusotoError::Service(ListPoliciesError::InvalidRequest(err.msg))
17014                }
17015                "ServiceUnavailableException" => {
17016                    return RusotoError::Service(ListPoliciesError::ServiceUnavailable(err.msg))
17017                }
17018                "ThrottlingException" => {
17019                    return RusotoError::Service(ListPoliciesError::Throttling(err.msg))
17020                }
17021                "UnauthorizedException" => {
17022                    return RusotoError::Service(ListPoliciesError::Unauthorized(err.msg))
17023                }
17024                "ValidationException" => return RusotoError::Validation(err.msg),
17025                _ => {}
17026            }
17027        }
17028        RusotoError::Unknown(res)
17029    }
17030}
17031impl fmt::Display for ListPoliciesError {
17032    #[allow(unused_variables)]
17033    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
17034        match *self {
17035            ListPoliciesError::InternalFailure(ref cause) => write!(f, "{}", cause),
17036            ListPoliciesError::InvalidRequest(ref cause) => write!(f, "{}", cause),
17037            ListPoliciesError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
17038            ListPoliciesError::Throttling(ref cause) => write!(f, "{}", cause),
17039            ListPoliciesError::Unauthorized(ref cause) => write!(f, "{}", cause),
17040        }
17041    }
17042}
17043impl Error for ListPoliciesError {}
17044/// Errors returned by ListPolicyPrincipals
17045#[derive(Debug, PartialEq)]
17046pub enum ListPolicyPrincipalsError {
17047    /// <p>An unexpected error has occurred.</p>
17048    InternalFailure(String),
17049    /// <p>The request is not valid.</p>
17050    InvalidRequest(String),
17051    /// <p>The specified resource does not exist.</p>
17052    ResourceNotFound(String),
17053    /// <p>The service is temporarily unavailable.</p>
17054    ServiceUnavailable(String),
17055    /// <p>The rate exceeds the limit.</p>
17056    Throttling(String),
17057    /// <p>You are not authorized to perform this operation.</p>
17058    Unauthorized(String),
17059}
17060
17061impl ListPolicyPrincipalsError {
17062    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListPolicyPrincipalsError> {
17063        if let Some(err) = proto::json::Error::parse_rest(&res) {
17064            match err.typ.as_str() {
17065                "InternalFailureException" => {
17066                    return RusotoError::Service(ListPolicyPrincipalsError::InternalFailure(
17067                        err.msg,
17068                    ))
17069                }
17070                "InvalidRequestException" => {
17071                    return RusotoError::Service(ListPolicyPrincipalsError::InvalidRequest(err.msg))
17072                }
17073                "ResourceNotFoundException" => {
17074                    return RusotoError::Service(ListPolicyPrincipalsError::ResourceNotFound(
17075                        err.msg,
17076                    ))
17077                }
17078                "ServiceUnavailableException" => {
17079                    return RusotoError::Service(ListPolicyPrincipalsError::ServiceUnavailable(
17080                        err.msg,
17081                    ))
17082                }
17083                "ThrottlingException" => {
17084                    return RusotoError::Service(ListPolicyPrincipalsError::Throttling(err.msg))
17085                }
17086                "UnauthorizedException" => {
17087                    return RusotoError::Service(ListPolicyPrincipalsError::Unauthorized(err.msg))
17088                }
17089                "ValidationException" => return RusotoError::Validation(err.msg),
17090                _ => {}
17091            }
17092        }
17093        RusotoError::Unknown(res)
17094    }
17095}
17096impl fmt::Display for ListPolicyPrincipalsError {
17097    #[allow(unused_variables)]
17098    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
17099        match *self {
17100            ListPolicyPrincipalsError::InternalFailure(ref cause) => write!(f, "{}", cause),
17101            ListPolicyPrincipalsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
17102            ListPolicyPrincipalsError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
17103            ListPolicyPrincipalsError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
17104            ListPolicyPrincipalsError::Throttling(ref cause) => write!(f, "{}", cause),
17105            ListPolicyPrincipalsError::Unauthorized(ref cause) => write!(f, "{}", cause),
17106        }
17107    }
17108}
17109impl Error for ListPolicyPrincipalsError {}
17110/// Errors returned by ListPolicyVersions
17111#[derive(Debug, PartialEq)]
17112pub enum ListPolicyVersionsError {
17113    /// <p>An unexpected error has occurred.</p>
17114    InternalFailure(String),
17115    /// <p>The request is not valid.</p>
17116    InvalidRequest(String),
17117    /// <p>The specified resource does not exist.</p>
17118    ResourceNotFound(String),
17119    /// <p>The service is temporarily unavailable.</p>
17120    ServiceUnavailable(String),
17121    /// <p>The rate exceeds the limit.</p>
17122    Throttling(String),
17123    /// <p>You are not authorized to perform this operation.</p>
17124    Unauthorized(String),
17125}
17126
17127impl ListPolicyVersionsError {
17128    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListPolicyVersionsError> {
17129        if let Some(err) = proto::json::Error::parse_rest(&res) {
17130            match err.typ.as_str() {
17131                "InternalFailureException" => {
17132                    return RusotoError::Service(ListPolicyVersionsError::InternalFailure(err.msg))
17133                }
17134                "InvalidRequestException" => {
17135                    return RusotoError::Service(ListPolicyVersionsError::InvalidRequest(err.msg))
17136                }
17137                "ResourceNotFoundException" => {
17138                    return RusotoError::Service(ListPolicyVersionsError::ResourceNotFound(err.msg))
17139                }
17140                "ServiceUnavailableException" => {
17141                    return RusotoError::Service(ListPolicyVersionsError::ServiceUnavailable(
17142                        err.msg,
17143                    ))
17144                }
17145                "ThrottlingException" => {
17146                    return RusotoError::Service(ListPolicyVersionsError::Throttling(err.msg))
17147                }
17148                "UnauthorizedException" => {
17149                    return RusotoError::Service(ListPolicyVersionsError::Unauthorized(err.msg))
17150                }
17151                "ValidationException" => return RusotoError::Validation(err.msg),
17152                _ => {}
17153            }
17154        }
17155        RusotoError::Unknown(res)
17156    }
17157}
17158impl fmt::Display for ListPolicyVersionsError {
17159    #[allow(unused_variables)]
17160    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
17161        match *self {
17162            ListPolicyVersionsError::InternalFailure(ref cause) => write!(f, "{}", cause),
17163            ListPolicyVersionsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
17164            ListPolicyVersionsError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
17165            ListPolicyVersionsError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
17166            ListPolicyVersionsError::Throttling(ref cause) => write!(f, "{}", cause),
17167            ListPolicyVersionsError::Unauthorized(ref cause) => write!(f, "{}", cause),
17168        }
17169    }
17170}
17171impl Error for ListPolicyVersionsError {}
17172/// Errors returned by ListPrincipalPolicies
17173#[derive(Debug, PartialEq)]
17174pub enum ListPrincipalPoliciesError {
17175    /// <p>An unexpected error has occurred.</p>
17176    InternalFailure(String),
17177    /// <p>The request is not valid.</p>
17178    InvalidRequest(String),
17179    /// <p>The specified resource does not exist.</p>
17180    ResourceNotFound(String),
17181    /// <p>The service is temporarily unavailable.</p>
17182    ServiceUnavailable(String),
17183    /// <p>The rate exceeds the limit.</p>
17184    Throttling(String),
17185    /// <p>You are not authorized to perform this operation.</p>
17186    Unauthorized(String),
17187}
17188
17189impl ListPrincipalPoliciesError {
17190    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListPrincipalPoliciesError> {
17191        if let Some(err) = proto::json::Error::parse_rest(&res) {
17192            match err.typ.as_str() {
17193                "InternalFailureException" => {
17194                    return RusotoError::Service(ListPrincipalPoliciesError::InternalFailure(
17195                        err.msg,
17196                    ))
17197                }
17198                "InvalidRequestException" => {
17199                    return RusotoError::Service(ListPrincipalPoliciesError::InvalidRequest(
17200                        err.msg,
17201                    ))
17202                }
17203                "ResourceNotFoundException" => {
17204                    return RusotoError::Service(ListPrincipalPoliciesError::ResourceNotFound(
17205                        err.msg,
17206                    ))
17207                }
17208                "ServiceUnavailableException" => {
17209                    return RusotoError::Service(ListPrincipalPoliciesError::ServiceUnavailable(
17210                        err.msg,
17211                    ))
17212                }
17213                "ThrottlingException" => {
17214                    return RusotoError::Service(ListPrincipalPoliciesError::Throttling(err.msg))
17215                }
17216                "UnauthorizedException" => {
17217                    return RusotoError::Service(ListPrincipalPoliciesError::Unauthorized(err.msg))
17218                }
17219                "ValidationException" => return RusotoError::Validation(err.msg),
17220                _ => {}
17221            }
17222        }
17223        RusotoError::Unknown(res)
17224    }
17225}
17226impl fmt::Display for ListPrincipalPoliciesError {
17227    #[allow(unused_variables)]
17228    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
17229        match *self {
17230            ListPrincipalPoliciesError::InternalFailure(ref cause) => write!(f, "{}", cause),
17231            ListPrincipalPoliciesError::InvalidRequest(ref cause) => write!(f, "{}", cause),
17232            ListPrincipalPoliciesError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
17233            ListPrincipalPoliciesError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
17234            ListPrincipalPoliciesError::Throttling(ref cause) => write!(f, "{}", cause),
17235            ListPrincipalPoliciesError::Unauthorized(ref cause) => write!(f, "{}", cause),
17236        }
17237    }
17238}
17239impl Error for ListPrincipalPoliciesError {}
17240/// Errors returned by ListPrincipalThings
17241#[derive(Debug, PartialEq)]
17242pub enum ListPrincipalThingsError {
17243    /// <p>An unexpected error has occurred.</p>
17244    InternalFailure(String),
17245    /// <p>The request is not valid.</p>
17246    InvalidRequest(String),
17247    /// <p>The specified resource does not exist.</p>
17248    ResourceNotFound(String),
17249    /// <p>The service is temporarily unavailable.</p>
17250    ServiceUnavailable(String),
17251    /// <p>The rate exceeds the limit.</p>
17252    Throttling(String),
17253    /// <p>You are not authorized to perform this operation.</p>
17254    Unauthorized(String),
17255}
17256
17257impl ListPrincipalThingsError {
17258    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListPrincipalThingsError> {
17259        if let Some(err) = proto::json::Error::parse_rest(&res) {
17260            match err.typ.as_str() {
17261                "InternalFailureException" => {
17262                    return RusotoError::Service(ListPrincipalThingsError::InternalFailure(err.msg))
17263                }
17264                "InvalidRequestException" => {
17265                    return RusotoError::Service(ListPrincipalThingsError::InvalidRequest(err.msg))
17266                }
17267                "ResourceNotFoundException" => {
17268                    return RusotoError::Service(ListPrincipalThingsError::ResourceNotFound(
17269                        err.msg,
17270                    ))
17271                }
17272                "ServiceUnavailableException" => {
17273                    return RusotoError::Service(ListPrincipalThingsError::ServiceUnavailable(
17274                        err.msg,
17275                    ))
17276                }
17277                "ThrottlingException" => {
17278                    return RusotoError::Service(ListPrincipalThingsError::Throttling(err.msg))
17279                }
17280                "UnauthorizedException" => {
17281                    return RusotoError::Service(ListPrincipalThingsError::Unauthorized(err.msg))
17282                }
17283                "ValidationException" => return RusotoError::Validation(err.msg),
17284                _ => {}
17285            }
17286        }
17287        RusotoError::Unknown(res)
17288    }
17289}
17290impl fmt::Display for ListPrincipalThingsError {
17291    #[allow(unused_variables)]
17292    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
17293        match *self {
17294            ListPrincipalThingsError::InternalFailure(ref cause) => write!(f, "{}", cause),
17295            ListPrincipalThingsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
17296            ListPrincipalThingsError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
17297            ListPrincipalThingsError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
17298            ListPrincipalThingsError::Throttling(ref cause) => write!(f, "{}", cause),
17299            ListPrincipalThingsError::Unauthorized(ref cause) => write!(f, "{}", cause),
17300        }
17301    }
17302}
17303impl Error for ListPrincipalThingsError {}
17304/// Errors returned by ListProvisioningTemplateVersions
17305#[derive(Debug, PartialEq)]
17306pub enum ListProvisioningTemplateVersionsError {
17307    /// <p>An unexpected error has occurred.</p>
17308    InternalFailure(String),
17309    /// <p>The request is not valid.</p>
17310    InvalidRequest(String),
17311    /// <p>The specified resource does not exist.</p>
17312    ResourceNotFound(String),
17313    /// <p>The rate exceeds the limit.</p>
17314    Throttling(String),
17315    /// <p>You are not authorized to perform this operation.</p>
17316    Unauthorized(String),
17317}
17318
17319impl ListProvisioningTemplateVersionsError {
17320    pub fn from_response(
17321        res: BufferedHttpResponse,
17322    ) -> RusotoError<ListProvisioningTemplateVersionsError> {
17323        if let Some(err) = proto::json::Error::parse_rest(&res) {
17324            match err.typ.as_str() {
17325                "InternalFailureException" => {
17326                    return RusotoError::Service(
17327                        ListProvisioningTemplateVersionsError::InternalFailure(err.msg),
17328                    )
17329                }
17330                "InvalidRequestException" => {
17331                    return RusotoError::Service(
17332                        ListProvisioningTemplateVersionsError::InvalidRequest(err.msg),
17333                    )
17334                }
17335                "ResourceNotFoundException" => {
17336                    return RusotoError::Service(
17337                        ListProvisioningTemplateVersionsError::ResourceNotFound(err.msg),
17338                    )
17339                }
17340                "ThrottlingException" => {
17341                    return RusotoError::Service(ListProvisioningTemplateVersionsError::Throttling(
17342                        err.msg,
17343                    ))
17344                }
17345                "UnauthorizedException" => {
17346                    return RusotoError::Service(
17347                        ListProvisioningTemplateVersionsError::Unauthorized(err.msg),
17348                    )
17349                }
17350                "ValidationException" => return RusotoError::Validation(err.msg),
17351                _ => {}
17352            }
17353        }
17354        RusotoError::Unknown(res)
17355    }
17356}
17357impl fmt::Display for ListProvisioningTemplateVersionsError {
17358    #[allow(unused_variables)]
17359    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
17360        match *self {
17361            ListProvisioningTemplateVersionsError::InternalFailure(ref cause) => {
17362                write!(f, "{}", cause)
17363            }
17364            ListProvisioningTemplateVersionsError::InvalidRequest(ref cause) => {
17365                write!(f, "{}", cause)
17366            }
17367            ListProvisioningTemplateVersionsError::ResourceNotFound(ref cause) => {
17368                write!(f, "{}", cause)
17369            }
17370            ListProvisioningTemplateVersionsError::Throttling(ref cause) => write!(f, "{}", cause),
17371            ListProvisioningTemplateVersionsError::Unauthorized(ref cause) => {
17372                write!(f, "{}", cause)
17373            }
17374        }
17375    }
17376}
17377impl Error for ListProvisioningTemplateVersionsError {}
17378/// Errors returned by ListProvisioningTemplates
17379#[derive(Debug, PartialEq)]
17380pub enum ListProvisioningTemplatesError {
17381    /// <p>An unexpected error has occurred.</p>
17382    InternalFailure(String),
17383    /// <p>The request is not valid.</p>
17384    InvalidRequest(String),
17385    /// <p>The rate exceeds the limit.</p>
17386    Throttling(String),
17387    /// <p>You are not authorized to perform this operation.</p>
17388    Unauthorized(String),
17389}
17390
17391impl ListProvisioningTemplatesError {
17392    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListProvisioningTemplatesError> {
17393        if let Some(err) = proto::json::Error::parse_rest(&res) {
17394            match err.typ.as_str() {
17395                "InternalFailureException" => {
17396                    return RusotoError::Service(ListProvisioningTemplatesError::InternalFailure(
17397                        err.msg,
17398                    ))
17399                }
17400                "InvalidRequestException" => {
17401                    return RusotoError::Service(ListProvisioningTemplatesError::InvalidRequest(
17402                        err.msg,
17403                    ))
17404                }
17405                "ThrottlingException" => {
17406                    return RusotoError::Service(ListProvisioningTemplatesError::Throttling(
17407                        err.msg,
17408                    ))
17409                }
17410                "UnauthorizedException" => {
17411                    return RusotoError::Service(ListProvisioningTemplatesError::Unauthorized(
17412                        err.msg,
17413                    ))
17414                }
17415                "ValidationException" => return RusotoError::Validation(err.msg),
17416                _ => {}
17417            }
17418        }
17419        RusotoError::Unknown(res)
17420    }
17421}
17422impl fmt::Display for ListProvisioningTemplatesError {
17423    #[allow(unused_variables)]
17424    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
17425        match *self {
17426            ListProvisioningTemplatesError::InternalFailure(ref cause) => write!(f, "{}", cause),
17427            ListProvisioningTemplatesError::InvalidRequest(ref cause) => write!(f, "{}", cause),
17428            ListProvisioningTemplatesError::Throttling(ref cause) => write!(f, "{}", cause),
17429            ListProvisioningTemplatesError::Unauthorized(ref cause) => write!(f, "{}", cause),
17430        }
17431    }
17432}
17433impl Error for ListProvisioningTemplatesError {}
17434/// Errors returned by ListRoleAliases
17435#[derive(Debug, PartialEq)]
17436pub enum ListRoleAliasesError {
17437    /// <p>An unexpected error has occurred.</p>
17438    InternalFailure(String),
17439    /// <p>The request is not valid.</p>
17440    InvalidRequest(String),
17441    /// <p>The service is temporarily unavailable.</p>
17442    ServiceUnavailable(String),
17443    /// <p>The rate exceeds the limit.</p>
17444    Throttling(String),
17445    /// <p>You are not authorized to perform this operation.</p>
17446    Unauthorized(String),
17447}
17448
17449impl ListRoleAliasesError {
17450    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListRoleAliasesError> {
17451        if let Some(err) = proto::json::Error::parse_rest(&res) {
17452            match err.typ.as_str() {
17453                "InternalFailureException" => {
17454                    return RusotoError::Service(ListRoleAliasesError::InternalFailure(err.msg))
17455                }
17456                "InvalidRequestException" => {
17457                    return RusotoError::Service(ListRoleAliasesError::InvalidRequest(err.msg))
17458                }
17459                "ServiceUnavailableException" => {
17460                    return RusotoError::Service(ListRoleAliasesError::ServiceUnavailable(err.msg))
17461                }
17462                "ThrottlingException" => {
17463                    return RusotoError::Service(ListRoleAliasesError::Throttling(err.msg))
17464                }
17465                "UnauthorizedException" => {
17466                    return RusotoError::Service(ListRoleAliasesError::Unauthorized(err.msg))
17467                }
17468                "ValidationException" => return RusotoError::Validation(err.msg),
17469                _ => {}
17470            }
17471        }
17472        RusotoError::Unknown(res)
17473    }
17474}
17475impl fmt::Display for ListRoleAliasesError {
17476    #[allow(unused_variables)]
17477    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
17478        match *self {
17479            ListRoleAliasesError::InternalFailure(ref cause) => write!(f, "{}", cause),
17480            ListRoleAliasesError::InvalidRequest(ref cause) => write!(f, "{}", cause),
17481            ListRoleAliasesError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
17482            ListRoleAliasesError::Throttling(ref cause) => write!(f, "{}", cause),
17483            ListRoleAliasesError::Unauthorized(ref cause) => write!(f, "{}", cause),
17484        }
17485    }
17486}
17487impl Error for ListRoleAliasesError {}
17488/// Errors returned by ListScheduledAudits
17489#[derive(Debug, PartialEq)]
17490pub enum ListScheduledAuditsError {
17491    /// <p>An unexpected error has occurred.</p>
17492    InternalFailure(String),
17493    /// <p>The request is not valid.</p>
17494    InvalidRequest(String),
17495    /// <p>The rate exceeds the limit.</p>
17496    Throttling(String),
17497}
17498
17499impl ListScheduledAuditsError {
17500    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListScheduledAuditsError> {
17501        if let Some(err) = proto::json::Error::parse_rest(&res) {
17502            match err.typ.as_str() {
17503                "InternalFailureException" => {
17504                    return RusotoError::Service(ListScheduledAuditsError::InternalFailure(err.msg))
17505                }
17506                "InvalidRequestException" => {
17507                    return RusotoError::Service(ListScheduledAuditsError::InvalidRequest(err.msg))
17508                }
17509                "ThrottlingException" => {
17510                    return RusotoError::Service(ListScheduledAuditsError::Throttling(err.msg))
17511                }
17512                "ValidationException" => return RusotoError::Validation(err.msg),
17513                _ => {}
17514            }
17515        }
17516        RusotoError::Unknown(res)
17517    }
17518}
17519impl fmt::Display for ListScheduledAuditsError {
17520    #[allow(unused_variables)]
17521    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
17522        match *self {
17523            ListScheduledAuditsError::InternalFailure(ref cause) => write!(f, "{}", cause),
17524            ListScheduledAuditsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
17525            ListScheduledAuditsError::Throttling(ref cause) => write!(f, "{}", cause),
17526        }
17527    }
17528}
17529impl Error for ListScheduledAuditsError {}
17530/// Errors returned by ListSecurityProfiles
17531#[derive(Debug, PartialEq)]
17532pub enum ListSecurityProfilesError {
17533    /// <p>An unexpected error has occurred.</p>
17534    InternalFailure(String),
17535    /// <p>The request is not valid.</p>
17536    InvalidRequest(String),
17537    /// <p>The specified resource does not exist.</p>
17538    ResourceNotFound(String),
17539    /// <p>The rate exceeds the limit.</p>
17540    Throttling(String),
17541}
17542
17543impl ListSecurityProfilesError {
17544    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListSecurityProfilesError> {
17545        if let Some(err) = proto::json::Error::parse_rest(&res) {
17546            match err.typ.as_str() {
17547                "InternalFailureException" => {
17548                    return RusotoError::Service(ListSecurityProfilesError::InternalFailure(
17549                        err.msg,
17550                    ))
17551                }
17552                "InvalidRequestException" => {
17553                    return RusotoError::Service(ListSecurityProfilesError::InvalidRequest(err.msg))
17554                }
17555                "ResourceNotFoundException" => {
17556                    return RusotoError::Service(ListSecurityProfilesError::ResourceNotFound(
17557                        err.msg,
17558                    ))
17559                }
17560                "ThrottlingException" => {
17561                    return RusotoError::Service(ListSecurityProfilesError::Throttling(err.msg))
17562                }
17563                "ValidationException" => return RusotoError::Validation(err.msg),
17564                _ => {}
17565            }
17566        }
17567        RusotoError::Unknown(res)
17568    }
17569}
17570impl fmt::Display for ListSecurityProfilesError {
17571    #[allow(unused_variables)]
17572    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
17573        match *self {
17574            ListSecurityProfilesError::InternalFailure(ref cause) => write!(f, "{}", cause),
17575            ListSecurityProfilesError::InvalidRequest(ref cause) => write!(f, "{}", cause),
17576            ListSecurityProfilesError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
17577            ListSecurityProfilesError::Throttling(ref cause) => write!(f, "{}", cause),
17578        }
17579    }
17580}
17581impl Error for ListSecurityProfilesError {}
17582/// Errors returned by ListSecurityProfilesForTarget
17583#[derive(Debug, PartialEq)]
17584pub enum ListSecurityProfilesForTargetError {
17585    /// <p>An unexpected error has occurred.</p>
17586    InternalFailure(String),
17587    /// <p>The request is not valid.</p>
17588    InvalidRequest(String),
17589    /// <p>The specified resource does not exist.</p>
17590    ResourceNotFound(String),
17591    /// <p>The rate exceeds the limit.</p>
17592    Throttling(String),
17593}
17594
17595impl ListSecurityProfilesForTargetError {
17596    pub fn from_response(
17597        res: BufferedHttpResponse,
17598    ) -> RusotoError<ListSecurityProfilesForTargetError> {
17599        if let Some(err) = proto::json::Error::parse_rest(&res) {
17600            match err.typ.as_str() {
17601                "InternalFailureException" => {
17602                    return RusotoError::Service(
17603                        ListSecurityProfilesForTargetError::InternalFailure(err.msg),
17604                    )
17605                }
17606                "InvalidRequestException" => {
17607                    return RusotoError::Service(
17608                        ListSecurityProfilesForTargetError::InvalidRequest(err.msg),
17609                    )
17610                }
17611                "ResourceNotFoundException" => {
17612                    return RusotoError::Service(
17613                        ListSecurityProfilesForTargetError::ResourceNotFound(err.msg),
17614                    )
17615                }
17616                "ThrottlingException" => {
17617                    return RusotoError::Service(ListSecurityProfilesForTargetError::Throttling(
17618                        err.msg,
17619                    ))
17620                }
17621                "ValidationException" => return RusotoError::Validation(err.msg),
17622                _ => {}
17623            }
17624        }
17625        RusotoError::Unknown(res)
17626    }
17627}
17628impl fmt::Display for ListSecurityProfilesForTargetError {
17629    #[allow(unused_variables)]
17630    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
17631        match *self {
17632            ListSecurityProfilesForTargetError::InternalFailure(ref cause) => {
17633                write!(f, "{}", cause)
17634            }
17635            ListSecurityProfilesForTargetError::InvalidRequest(ref cause) => write!(f, "{}", cause),
17636            ListSecurityProfilesForTargetError::ResourceNotFound(ref cause) => {
17637                write!(f, "{}", cause)
17638            }
17639            ListSecurityProfilesForTargetError::Throttling(ref cause) => write!(f, "{}", cause),
17640        }
17641    }
17642}
17643impl Error for ListSecurityProfilesForTargetError {}
17644/// Errors returned by ListStreams
17645#[derive(Debug, PartialEq)]
17646pub enum ListStreamsError {
17647    /// <p>An unexpected error has occurred.</p>
17648    InternalFailure(String),
17649    /// <p>The request is not valid.</p>
17650    InvalidRequest(String),
17651    /// <p>The service is temporarily unavailable.</p>
17652    ServiceUnavailable(String),
17653    /// <p>The rate exceeds the limit.</p>
17654    Throttling(String),
17655    /// <p>You are not authorized to perform this operation.</p>
17656    Unauthorized(String),
17657}
17658
17659impl ListStreamsError {
17660    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListStreamsError> {
17661        if let Some(err) = proto::json::Error::parse_rest(&res) {
17662            match err.typ.as_str() {
17663                "InternalFailureException" => {
17664                    return RusotoError::Service(ListStreamsError::InternalFailure(err.msg))
17665                }
17666                "InvalidRequestException" => {
17667                    return RusotoError::Service(ListStreamsError::InvalidRequest(err.msg))
17668                }
17669                "ServiceUnavailableException" => {
17670                    return RusotoError::Service(ListStreamsError::ServiceUnavailable(err.msg))
17671                }
17672                "ThrottlingException" => {
17673                    return RusotoError::Service(ListStreamsError::Throttling(err.msg))
17674                }
17675                "UnauthorizedException" => {
17676                    return RusotoError::Service(ListStreamsError::Unauthorized(err.msg))
17677                }
17678                "ValidationException" => return RusotoError::Validation(err.msg),
17679                _ => {}
17680            }
17681        }
17682        RusotoError::Unknown(res)
17683    }
17684}
17685impl fmt::Display for ListStreamsError {
17686    #[allow(unused_variables)]
17687    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
17688        match *self {
17689            ListStreamsError::InternalFailure(ref cause) => write!(f, "{}", cause),
17690            ListStreamsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
17691            ListStreamsError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
17692            ListStreamsError::Throttling(ref cause) => write!(f, "{}", cause),
17693            ListStreamsError::Unauthorized(ref cause) => write!(f, "{}", cause),
17694        }
17695    }
17696}
17697impl Error for ListStreamsError {}
17698/// Errors returned by ListTagsForResource
17699#[derive(Debug, PartialEq)]
17700pub enum ListTagsForResourceError {
17701    /// <p>An unexpected error has occurred.</p>
17702    InternalFailure(String),
17703    /// <p>The request is not valid.</p>
17704    InvalidRequest(String),
17705    /// <p>The specified resource does not exist.</p>
17706    ResourceNotFound(String),
17707    /// <p>The rate exceeds the limit.</p>
17708    Throttling(String),
17709}
17710
17711impl ListTagsForResourceError {
17712    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListTagsForResourceError> {
17713        if let Some(err) = proto::json::Error::parse_rest(&res) {
17714            match err.typ.as_str() {
17715                "InternalFailureException" => {
17716                    return RusotoError::Service(ListTagsForResourceError::InternalFailure(err.msg))
17717                }
17718                "InvalidRequestException" => {
17719                    return RusotoError::Service(ListTagsForResourceError::InvalidRequest(err.msg))
17720                }
17721                "ResourceNotFoundException" => {
17722                    return RusotoError::Service(ListTagsForResourceError::ResourceNotFound(
17723                        err.msg,
17724                    ))
17725                }
17726                "ThrottlingException" => {
17727                    return RusotoError::Service(ListTagsForResourceError::Throttling(err.msg))
17728                }
17729                "ValidationException" => return RusotoError::Validation(err.msg),
17730                _ => {}
17731            }
17732        }
17733        RusotoError::Unknown(res)
17734    }
17735}
17736impl fmt::Display for ListTagsForResourceError {
17737    #[allow(unused_variables)]
17738    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
17739        match *self {
17740            ListTagsForResourceError::InternalFailure(ref cause) => write!(f, "{}", cause),
17741            ListTagsForResourceError::InvalidRequest(ref cause) => write!(f, "{}", cause),
17742            ListTagsForResourceError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
17743            ListTagsForResourceError::Throttling(ref cause) => write!(f, "{}", cause),
17744        }
17745    }
17746}
17747impl Error for ListTagsForResourceError {}
17748/// Errors returned by ListTargetsForPolicy
17749#[derive(Debug, PartialEq)]
17750pub enum ListTargetsForPolicyError {
17751    /// <p>An unexpected error has occurred.</p>
17752    InternalFailure(String),
17753    /// <p>The request is not valid.</p>
17754    InvalidRequest(String),
17755    /// <p>A limit has been exceeded.</p>
17756    LimitExceeded(String),
17757    /// <p>The specified resource does not exist.</p>
17758    ResourceNotFound(String),
17759    /// <p>The service is temporarily unavailable.</p>
17760    ServiceUnavailable(String),
17761    /// <p>The rate exceeds the limit.</p>
17762    Throttling(String),
17763    /// <p>You are not authorized to perform this operation.</p>
17764    Unauthorized(String),
17765}
17766
17767impl ListTargetsForPolicyError {
17768    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListTargetsForPolicyError> {
17769        if let Some(err) = proto::json::Error::parse_rest(&res) {
17770            match err.typ.as_str() {
17771                "InternalFailureException" => {
17772                    return RusotoError::Service(ListTargetsForPolicyError::InternalFailure(
17773                        err.msg,
17774                    ))
17775                }
17776                "InvalidRequestException" => {
17777                    return RusotoError::Service(ListTargetsForPolicyError::InvalidRequest(err.msg))
17778                }
17779                "LimitExceededException" => {
17780                    return RusotoError::Service(ListTargetsForPolicyError::LimitExceeded(err.msg))
17781                }
17782                "ResourceNotFoundException" => {
17783                    return RusotoError::Service(ListTargetsForPolicyError::ResourceNotFound(
17784                        err.msg,
17785                    ))
17786                }
17787                "ServiceUnavailableException" => {
17788                    return RusotoError::Service(ListTargetsForPolicyError::ServiceUnavailable(
17789                        err.msg,
17790                    ))
17791                }
17792                "ThrottlingException" => {
17793                    return RusotoError::Service(ListTargetsForPolicyError::Throttling(err.msg))
17794                }
17795                "UnauthorizedException" => {
17796                    return RusotoError::Service(ListTargetsForPolicyError::Unauthorized(err.msg))
17797                }
17798                "ValidationException" => return RusotoError::Validation(err.msg),
17799                _ => {}
17800            }
17801        }
17802        RusotoError::Unknown(res)
17803    }
17804}
17805impl fmt::Display for ListTargetsForPolicyError {
17806    #[allow(unused_variables)]
17807    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
17808        match *self {
17809            ListTargetsForPolicyError::InternalFailure(ref cause) => write!(f, "{}", cause),
17810            ListTargetsForPolicyError::InvalidRequest(ref cause) => write!(f, "{}", cause),
17811            ListTargetsForPolicyError::LimitExceeded(ref cause) => write!(f, "{}", cause),
17812            ListTargetsForPolicyError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
17813            ListTargetsForPolicyError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
17814            ListTargetsForPolicyError::Throttling(ref cause) => write!(f, "{}", cause),
17815            ListTargetsForPolicyError::Unauthorized(ref cause) => write!(f, "{}", cause),
17816        }
17817    }
17818}
17819impl Error for ListTargetsForPolicyError {}
17820/// Errors returned by ListTargetsForSecurityProfile
17821#[derive(Debug, PartialEq)]
17822pub enum ListTargetsForSecurityProfileError {
17823    /// <p>An unexpected error has occurred.</p>
17824    InternalFailure(String),
17825    /// <p>The request is not valid.</p>
17826    InvalidRequest(String),
17827    /// <p>The specified resource does not exist.</p>
17828    ResourceNotFound(String),
17829    /// <p>The rate exceeds the limit.</p>
17830    Throttling(String),
17831}
17832
17833impl ListTargetsForSecurityProfileError {
17834    pub fn from_response(
17835        res: BufferedHttpResponse,
17836    ) -> RusotoError<ListTargetsForSecurityProfileError> {
17837        if let Some(err) = proto::json::Error::parse_rest(&res) {
17838            match err.typ.as_str() {
17839                "InternalFailureException" => {
17840                    return RusotoError::Service(
17841                        ListTargetsForSecurityProfileError::InternalFailure(err.msg),
17842                    )
17843                }
17844                "InvalidRequestException" => {
17845                    return RusotoError::Service(
17846                        ListTargetsForSecurityProfileError::InvalidRequest(err.msg),
17847                    )
17848                }
17849                "ResourceNotFoundException" => {
17850                    return RusotoError::Service(
17851                        ListTargetsForSecurityProfileError::ResourceNotFound(err.msg),
17852                    )
17853                }
17854                "ThrottlingException" => {
17855                    return RusotoError::Service(ListTargetsForSecurityProfileError::Throttling(
17856                        err.msg,
17857                    ))
17858                }
17859                "ValidationException" => return RusotoError::Validation(err.msg),
17860                _ => {}
17861            }
17862        }
17863        RusotoError::Unknown(res)
17864    }
17865}
17866impl fmt::Display for ListTargetsForSecurityProfileError {
17867    #[allow(unused_variables)]
17868    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
17869        match *self {
17870            ListTargetsForSecurityProfileError::InternalFailure(ref cause) => {
17871                write!(f, "{}", cause)
17872            }
17873            ListTargetsForSecurityProfileError::InvalidRequest(ref cause) => write!(f, "{}", cause),
17874            ListTargetsForSecurityProfileError::ResourceNotFound(ref cause) => {
17875                write!(f, "{}", cause)
17876            }
17877            ListTargetsForSecurityProfileError::Throttling(ref cause) => write!(f, "{}", cause),
17878        }
17879    }
17880}
17881impl Error for ListTargetsForSecurityProfileError {}
17882/// Errors returned by ListThingGroups
17883#[derive(Debug, PartialEq)]
17884pub enum ListThingGroupsError {
17885    /// <p>An unexpected error has occurred.</p>
17886    InternalFailure(String),
17887    /// <p>The request is not valid.</p>
17888    InvalidRequest(String),
17889    /// <p>The specified resource does not exist.</p>
17890    ResourceNotFound(String),
17891}
17892
17893impl ListThingGroupsError {
17894    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListThingGroupsError> {
17895        if let Some(err) = proto::json::Error::parse_rest(&res) {
17896            match err.typ.as_str() {
17897                "InternalFailureException" => {
17898                    return RusotoError::Service(ListThingGroupsError::InternalFailure(err.msg))
17899                }
17900                "InvalidRequestException" => {
17901                    return RusotoError::Service(ListThingGroupsError::InvalidRequest(err.msg))
17902                }
17903                "ResourceNotFoundException" => {
17904                    return RusotoError::Service(ListThingGroupsError::ResourceNotFound(err.msg))
17905                }
17906                "ValidationException" => return RusotoError::Validation(err.msg),
17907                _ => {}
17908            }
17909        }
17910        RusotoError::Unknown(res)
17911    }
17912}
17913impl fmt::Display for ListThingGroupsError {
17914    #[allow(unused_variables)]
17915    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
17916        match *self {
17917            ListThingGroupsError::InternalFailure(ref cause) => write!(f, "{}", cause),
17918            ListThingGroupsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
17919            ListThingGroupsError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
17920        }
17921    }
17922}
17923impl Error for ListThingGroupsError {}
17924/// Errors returned by ListThingGroupsForThing
17925#[derive(Debug, PartialEq)]
17926pub enum ListThingGroupsForThingError {
17927    /// <p>An unexpected error has occurred.</p>
17928    InternalFailure(String),
17929    /// <p>The request is not valid.</p>
17930    InvalidRequest(String),
17931    /// <p>The specified resource does not exist.</p>
17932    ResourceNotFound(String),
17933}
17934
17935impl ListThingGroupsForThingError {
17936    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListThingGroupsForThingError> {
17937        if let Some(err) = proto::json::Error::parse_rest(&res) {
17938            match err.typ.as_str() {
17939                "InternalFailureException" => {
17940                    return RusotoError::Service(ListThingGroupsForThingError::InternalFailure(
17941                        err.msg,
17942                    ))
17943                }
17944                "InvalidRequestException" => {
17945                    return RusotoError::Service(ListThingGroupsForThingError::InvalidRequest(
17946                        err.msg,
17947                    ))
17948                }
17949                "ResourceNotFoundException" => {
17950                    return RusotoError::Service(ListThingGroupsForThingError::ResourceNotFound(
17951                        err.msg,
17952                    ))
17953                }
17954                "ValidationException" => return RusotoError::Validation(err.msg),
17955                _ => {}
17956            }
17957        }
17958        RusotoError::Unknown(res)
17959    }
17960}
17961impl fmt::Display for ListThingGroupsForThingError {
17962    #[allow(unused_variables)]
17963    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
17964        match *self {
17965            ListThingGroupsForThingError::InternalFailure(ref cause) => write!(f, "{}", cause),
17966            ListThingGroupsForThingError::InvalidRequest(ref cause) => write!(f, "{}", cause),
17967            ListThingGroupsForThingError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
17968        }
17969    }
17970}
17971impl Error for ListThingGroupsForThingError {}
17972/// Errors returned by ListThingPrincipals
17973#[derive(Debug, PartialEq)]
17974pub enum ListThingPrincipalsError {
17975    /// <p>An unexpected error has occurred.</p>
17976    InternalFailure(String),
17977    /// <p>The request is not valid.</p>
17978    InvalidRequest(String),
17979    /// <p>The specified resource does not exist.</p>
17980    ResourceNotFound(String),
17981    /// <p>The service is temporarily unavailable.</p>
17982    ServiceUnavailable(String),
17983    /// <p>The rate exceeds the limit.</p>
17984    Throttling(String),
17985    /// <p>You are not authorized to perform this operation.</p>
17986    Unauthorized(String),
17987}
17988
17989impl ListThingPrincipalsError {
17990    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListThingPrincipalsError> {
17991        if let Some(err) = proto::json::Error::parse_rest(&res) {
17992            match err.typ.as_str() {
17993                "InternalFailureException" => {
17994                    return RusotoError::Service(ListThingPrincipalsError::InternalFailure(err.msg))
17995                }
17996                "InvalidRequestException" => {
17997                    return RusotoError::Service(ListThingPrincipalsError::InvalidRequest(err.msg))
17998                }
17999                "ResourceNotFoundException" => {
18000                    return RusotoError::Service(ListThingPrincipalsError::ResourceNotFound(
18001                        err.msg,
18002                    ))
18003                }
18004                "ServiceUnavailableException" => {
18005                    return RusotoError::Service(ListThingPrincipalsError::ServiceUnavailable(
18006                        err.msg,
18007                    ))
18008                }
18009                "ThrottlingException" => {
18010                    return RusotoError::Service(ListThingPrincipalsError::Throttling(err.msg))
18011                }
18012                "UnauthorizedException" => {
18013                    return RusotoError::Service(ListThingPrincipalsError::Unauthorized(err.msg))
18014                }
18015                "ValidationException" => return RusotoError::Validation(err.msg),
18016                _ => {}
18017            }
18018        }
18019        RusotoError::Unknown(res)
18020    }
18021}
18022impl fmt::Display for ListThingPrincipalsError {
18023    #[allow(unused_variables)]
18024    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
18025        match *self {
18026            ListThingPrincipalsError::InternalFailure(ref cause) => write!(f, "{}", cause),
18027            ListThingPrincipalsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
18028            ListThingPrincipalsError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
18029            ListThingPrincipalsError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
18030            ListThingPrincipalsError::Throttling(ref cause) => write!(f, "{}", cause),
18031            ListThingPrincipalsError::Unauthorized(ref cause) => write!(f, "{}", cause),
18032        }
18033    }
18034}
18035impl Error for ListThingPrincipalsError {}
18036/// Errors returned by ListThingRegistrationTaskReports
18037#[derive(Debug, PartialEq)]
18038pub enum ListThingRegistrationTaskReportsError {
18039    /// <p>An unexpected error has occurred.</p>
18040    InternalFailure(String),
18041    /// <p>The request is not valid.</p>
18042    InvalidRequest(String),
18043    /// <p>The rate exceeds the limit.</p>
18044    Throttling(String),
18045    /// <p>You are not authorized to perform this operation.</p>
18046    Unauthorized(String),
18047}
18048
18049impl ListThingRegistrationTaskReportsError {
18050    pub fn from_response(
18051        res: BufferedHttpResponse,
18052    ) -> RusotoError<ListThingRegistrationTaskReportsError> {
18053        if let Some(err) = proto::json::Error::parse_rest(&res) {
18054            match err.typ.as_str() {
18055                "InternalFailureException" => {
18056                    return RusotoError::Service(
18057                        ListThingRegistrationTaskReportsError::InternalFailure(err.msg),
18058                    )
18059                }
18060                "InvalidRequestException" => {
18061                    return RusotoError::Service(
18062                        ListThingRegistrationTaskReportsError::InvalidRequest(err.msg),
18063                    )
18064                }
18065                "ThrottlingException" => {
18066                    return RusotoError::Service(ListThingRegistrationTaskReportsError::Throttling(
18067                        err.msg,
18068                    ))
18069                }
18070                "UnauthorizedException" => {
18071                    return RusotoError::Service(
18072                        ListThingRegistrationTaskReportsError::Unauthorized(err.msg),
18073                    )
18074                }
18075                "ValidationException" => return RusotoError::Validation(err.msg),
18076                _ => {}
18077            }
18078        }
18079        RusotoError::Unknown(res)
18080    }
18081}
18082impl fmt::Display for ListThingRegistrationTaskReportsError {
18083    #[allow(unused_variables)]
18084    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
18085        match *self {
18086            ListThingRegistrationTaskReportsError::InternalFailure(ref cause) => {
18087                write!(f, "{}", cause)
18088            }
18089            ListThingRegistrationTaskReportsError::InvalidRequest(ref cause) => {
18090                write!(f, "{}", cause)
18091            }
18092            ListThingRegistrationTaskReportsError::Throttling(ref cause) => write!(f, "{}", cause),
18093            ListThingRegistrationTaskReportsError::Unauthorized(ref cause) => {
18094                write!(f, "{}", cause)
18095            }
18096        }
18097    }
18098}
18099impl Error for ListThingRegistrationTaskReportsError {}
18100/// Errors returned by ListThingRegistrationTasks
18101#[derive(Debug, PartialEq)]
18102pub enum ListThingRegistrationTasksError {
18103    /// <p>An unexpected error has occurred.</p>
18104    InternalFailure(String),
18105    /// <p>The request is not valid.</p>
18106    InvalidRequest(String),
18107    /// <p>The rate exceeds the limit.</p>
18108    Throttling(String),
18109    /// <p>You are not authorized to perform this operation.</p>
18110    Unauthorized(String),
18111}
18112
18113impl ListThingRegistrationTasksError {
18114    pub fn from_response(
18115        res: BufferedHttpResponse,
18116    ) -> RusotoError<ListThingRegistrationTasksError> {
18117        if let Some(err) = proto::json::Error::parse_rest(&res) {
18118            match err.typ.as_str() {
18119                "InternalFailureException" => {
18120                    return RusotoError::Service(ListThingRegistrationTasksError::InternalFailure(
18121                        err.msg,
18122                    ))
18123                }
18124                "InvalidRequestException" => {
18125                    return RusotoError::Service(ListThingRegistrationTasksError::InvalidRequest(
18126                        err.msg,
18127                    ))
18128                }
18129                "ThrottlingException" => {
18130                    return RusotoError::Service(ListThingRegistrationTasksError::Throttling(
18131                        err.msg,
18132                    ))
18133                }
18134                "UnauthorizedException" => {
18135                    return RusotoError::Service(ListThingRegistrationTasksError::Unauthorized(
18136                        err.msg,
18137                    ))
18138                }
18139                "ValidationException" => return RusotoError::Validation(err.msg),
18140                _ => {}
18141            }
18142        }
18143        RusotoError::Unknown(res)
18144    }
18145}
18146impl fmt::Display for ListThingRegistrationTasksError {
18147    #[allow(unused_variables)]
18148    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
18149        match *self {
18150            ListThingRegistrationTasksError::InternalFailure(ref cause) => write!(f, "{}", cause),
18151            ListThingRegistrationTasksError::InvalidRequest(ref cause) => write!(f, "{}", cause),
18152            ListThingRegistrationTasksError::Throttling(ref cause) => write!(f, "{}", cause),
18153            ListThingRegistrationTasksError::Unauthorized(ref cause) => write!(f, "{}", cause),
18154        }
18155    }
18156}
18157impl Error for ListThingRegistrationTasksError {}
18158/// Errors returned by ListThingTypes
18159#[derive(Debug, PartialEq)]
18160pub enum ListThingTypesError {
18161    /// <p>An unexpected error has occurred.</p>
18162    InternalFailure(String),
18163    /// <p>The request is not valid.</p>
18164    InvalidRequest(String),
18165    /// <p>The service is temporarily unavailable.</p>
18166    ServiceUnavailable(String),
18167    /// <p>The rate exceeds the limit.</p>
18168    Throttling(String),
18169    /// <p>You are not authorized to perform this operation.</p>
18170    Unauthorized(String),
18171}
18172
18173impl ListThingTypesError {
18174    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListThingTypesError> {
18175        if let Some(err) = proto::json::Error::parse_rest(&res) {
18176            match err.typ.as_str() {
18177                "InternalFailureException" => {
18178                    return RusotoError::Service(ListThingTypesError::InternalFailure(err.msg))
18179                }
18180                "InvalidRequestException" => {
18181                    return RusotoError::Service(ListThingTypesError::InvalidRequest(err.msg))
18182                }
18183                "ServiceUnavailableException" => {
18184                    return RusotoError::Service(ListThingTypesError::ServiceUnavailable(err.msg))
18185                }
18186                "ThrottlingException" => {
18187                    return RusotoError::Service(ListThingTypesError::Throttling(err.msg))
18188                }
18189                "UnauthorizedException" => {
18190                    return RusotoError::Service(ListThingTypesError::Unauthorized(err.msg))
18191                }
18192                "ValidationException" => return RusotoError::Validation(err.msg),
18193                _ => {}
18194            }
18195        }
18196        RusotoError::Unknown(res)
18197    }
18198}
18199impl fmt::Display for ListThingTypesError {
18200    #[allow(unused_variables)]
18201    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
18202        match *self {
18203            ListThingTypesError::InternalFailure(ref cause) => write!(f, "{}", cause),
18204            ListThingTypesError::InvalidRequest(ref cause) => write!(f, "{}", cause),
18205            ListThingTypesError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
18206            ListThingTypesError::Throttling(ref cause) => write!(f, "{}", cause),
18207            ListThingTypesError::Unauthorized(ref cause) => write!(f, "{}", cause),
18208        }
18209    }
18210}
18211impl Error for ListThingTypesError {}
18212/// Errors returned by ListThings
18213#[derive(Debug, PartialEq)]
18214pub enum ListThingsError {
18215    /// <p>An unexpected error has occurred.</p>
18216    InternalFailure(String),
18217    /// <p>The request is not valid.</p>
18218    InvalidRequest(String),
18219    /// <p>The service is temporarily unavailable.</p>
18220    ServiceUnavailable(String),
18221    /// <p>The rate exceeds the limit.</p>
18222    Throttling(String),
18223    /// <p>You are not authorized to perform this operation.</p>
18224    Unauthorized(String),
18225}
18226
18227impl ListThingsError {
18228    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListThingsError> {
18229        if let Some(err) = proto::json::Error::parse_rest(&res) {
18230            match err.typ.as_str() {
18231                "InternalFailureException" => {
18232                    return RusotoError::Service(ListThingsError::InternalFailure(err.msg))
18233                }
18234                "InvalidRequestException" => {
18235                    return RusotoError::Service(ListThingsError::InvalidRequest(err.msg))
18236                }
18237                "ServiceUnavailableException" => {
18238                    return RusotoError::Service(ListThingsError::ServiceUnavailable(err.msg))
18239                }
18240                "ThrottlingException" => {
18241                    return RusotoError::Service(ListThingsError::Throttling(err.msg))
18242                }
18243                "UnauthorizedException" => {
18244                    return RusotoError::Service(ListThingsError::Unauthorized(err.msg))
18245                }
18246                "ValidationException" => return RusotoError::Validation(err.msg),
18247                _ => {}
18248            }
18249        }
18250        RusotoError::Unknown(res)
18251    }
18252}
18253impl fmt::Display for ListThingsError {
18254    #[allow(unused_variables)]
18255    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
18256        match *self {
18257            ListThingsError::InternalFailure(ref cause) => write!(f, "{}", cause),
18258            ListThingsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
18259            ListThingsError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
18260            ListThingsError::Throttling(ref cause) => write!(f, "{}", cause),
18261            ListThingsError::Unauthorized(ref cause) => write!(f, "{}", cause),
18262        }
18263    }
18264}
18265impl Error for ListThingsError {}
18266/// Errors returned by ListThingsInBillingGroup
18267#[derive(Debug, PartialEq)]
18268pub enum ListThingsInBillingGroupError {
18269    /// <p>An unexpected error has occurred.</p>
18270    InternalFailure(String),
18271    /// <p>The request is not valid.</p>
18272    InvalidRequest(String),
18273    /// <p>The specified resource does not exist.</p>
18274    ResourceNotFound(String),
18275    /// <p>The rate exceeds the limit.</p>
18276    Throttling(String),
18277}
18278
18279impl ListThingsInBillingGroupError {
18280    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListThingsInBillingGroupError> {
18281        if let Some(err) = proto::json::Error::parse_rest(&res) {
18282            match err.typ.as_str() {
18283                "InternalFailureException" => {
18284                    return RusotoError::Service(ListThingsInBillingGroupError::InternalFailure(
18285                        err.msg,
18286                    ))
18287                }
18288                "InvalidRequestException" => {
18289                    return RusotoError::Service(ListThingsInBillingGroupError::InvalidRequest(
18290                        err.msg,
18291                    ))
18292                }
18293                "ResourceNotFoundException" => {
18294                    return RusotoError::Service(ListThingsInBillingGroupError::ResourceNotFound(
18295                        err.msg,
18296                    ))
18297                }
18298                "ThrottlingException" => {
18299                    return RusotoError::Service(ListThingsInBillingGroupError::Throttling(err.msg))
18300                }
18301                "ValidationException" => return RusotoError::Validation(err.msg),
18302                _ => {}
18303            }
18304        }
18305        RusotoError::Unknown(res)
18306    }
18307}
18308impl fmt::Display for ListThingsInBillingGroupError {
18309    #[allow(unused_variables)]
18310    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
18311        match *self {
18312            ListThingsInBillingGroupError::InternalFailure(ref cause) => write!(f, "{}", cause),
18313            ListThingsInBillingGroupError::InvalidRequest(ref cause) => write!(f, "{}", cause),
18314            ListThingsInBillingGroupError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
18315            ListThingsInBillingGroupError::Throttling(ref cause) => write!(f, "{}", cause),
18316        }
18317    }
18318}
18319impl Error for ListThingsInBillingGroupError {}
18320/// Errors returned by ListThingsInThingGroup
18321#[derive(Debug, PartialEq)]
18322pub enum ListThingsInThingGroupError {
18323    /// <p>An unexpected error has occurred.</p>
18324    InternalFailure(String),
18325    /// <p>The request is not valid.</p>
18326    InvalidRequest(String),
18327    /// <p>The specified resource does not exist.</p>
18328    ResourceNotFound(String),
18329}
18330
18331impl ListThingsInThingGroupError {
18332    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListThingsInThingGroupError> {
18333        if let Some(err) = proto::json::Error::parse_rest(&res) {
18334            match err.typ.as_str() {
18335                "InternalFailureException" => {
18336                    return RusotoError::Service(ListThingsInThingGroupError::InternalFailure(
18337                        err.msg,
18338                    ))
18339                }
18340                "InvalidRequestException" => {
18341                    return RusotoError::Service(ListThingsInThingGroupError::InvalidRequest(
18342                        err.msg,
18343                    ))
18344                }
18345                "ResourceNotFoundException" => {
18346                    return RusotoError::Service(ListThingsInThingGroupError::ResourceNotFound(
18347                        err.msg,
18348                    ))
18349                }
18350                "ValidationException" => return RusotoError::Validation(err.msg),
18351                _ => {}
18352            }
18353        }
18354        RusotoError::Unknown(res)
18355    }
18356}
18357impl fmt::Display for ListThingsInThingGroupError {
18358    #[allow(unused_variables)]
18359    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
18360        match *self {
18361            ListThingsInThingGroupError::InternalFailure(ref cause) => write!(f, "{}", cause),
18362            ListThingsInThingGroupError::InvalidRequest(ref cause) => write!(f, "{}", cause),
18363            ListThingsInThingGroupError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
18364        }
18365    }
18366}
18367impl Error for ListThingsInThingGroupError {}
18368/// Errors returned by ListTopicRuleDestinations
18369#[derive(Debug, PartialEq)]
18370pub enum ListTopicRuleDestinationsError {
18371    /// <p>An unexpected error has occurred.</p>
18372    Internal(String),
18373    /// <p>The request is not valid.</p>
18374    InvalidRequest(String),
18375    /// <p>The service is temporarily unavailable.</p>
18376    ServiceUnavailable(String),
18377    /// <p>You are not authorized to perform this operation.</p>
18378    Unauthorized(String),
18379}
18380
18381impl ListTopicRuleDestinationsError {
18382    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListTopicRuleDestinationsError> {
18383        if let Some(err) = proto::json::Error::parse_rest(&res) {
18384            match err.typ.as_str() {
18385                "InternalException" => {
18386                    return RusotoError::Service(ListTopicRuleDestinationsError::Internal(err.msg))
18387                }
18388                "InvalidRequestException" => {
18389                    return RusotoError::Service(ListTopicRuleDestinationsError::InvalidRequest(
18390                        err.msg,
18391                    ))
18392                }
18393                "ServiceUnavailableException" => {
18394                    return RusotoError::Service(
18395                        ListTopicRuleDestinationsError::ServiceUnavailable(err.msg),
18396                    )
18397                }
18398                "UnauthorizedException" => {
18399                    return RusotoError::Service(ListTopicRuleDestinationsError::Unauthorized(
18400                        err.msg,
18401                    ))
18402                }
18403                "ValidationException" => return RusotoError::Validation(err.msg),
18404                _ => {}
18405            }
18406        }
18407        RusotoError::Unknown(res)
18408    }
18409}
18410impl fmt::Display for ListTopicRuleDestinationsError {
18411    #[allow(unused_variables)]
18412    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
18413        match *self {
18414            ListTopicRuleDestinationsError::Internal(ref cause) => write!(f, "{}", cause),
18415            ListTopicRuleDestinationsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
18416            ListTopicRuleDestinationsError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
18417            ListTopicRuleDestinationsError::Unauthorized(ref cause) => write!(f, "{}", cause),
18418        }
18419    }
18420}
18421impl Error for ListTopicRuleDestinationsError {}
18422/// Errors returned by ListTopicRules
18423#[derive(Debug, PartialEq)]
18424pub enum ListTopicRulesError {
18425    /// <p>An unexpected error has occurred.</p>
18426    Internal(String),
18427    /// <p>The request is not valid.</p>
18428    InvalidRequest(String),
18429    /// <p>The service is temporarily unavailable.</p>
18430    ServiceUnavailable(String),
18431}
18432
18433impl ListTopicRulesError {
18434    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListTopicRulesError> {
18435        if let Some(err) = proto::json::Error::parse_rest(&res) {
18436            match err.typ.as_str() {
18437                "InternalException" => {
18438                    return RusotoError::Service(ListTopicRulesError::Internal(err.msg))
18439                }
18440                "InvalidRequestException" => {
18441                    return RusotoError::Service(ListTopicRulesError::InvalidRequest(err.msg))
18442                }
18443                "ServiceUnavailableException" => {
18444                    return RusotoError::Service(ListTopicRulesError::ServiceUnavailable(err.msg))
18445                }
18446                "ValidationException" => return RusotoError::Validation(err.msg),
18447                _ => {}
18448            }
18449        }
18450        RusotoError::Unknown(res)
18451    }
18452}
18453impl fmt::Display for ListTopicRulesError {
18454    #[allow(unused_variables)]
18455    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
18456        match *self {
18457            ListTopicRulesError::Internal(ref cause) => write!(f, "{}", cause),
18458            ListTopicRulesError::InvalidRequest(ref cause) => write!(f, "{}", cause),
18459            ListTopicRulesError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
18460        }
18461    }
18462}
18463impl Error for ListTopicRulesError {}
18464/// Errors returned by ListV2LoggingLevels
18465#[derive(Debug, PartialEq)]
18466pub enum ListV2LoggingLevelsError {
18467    /// <p>An unexpected error has occurred.</p>
18468    Internal(String),
18469    /// <p>The request is not valid.</p>
18470    InvalidRequest(String),
18471    /// <p>The resource is not configured.</p>
18472    NotConfigured(String),
18473    /// <p>The service is temporarily unavailable.</p>
18474    ServiceUnavailable(String),
18475}
18476
18477impl ListV2LoggingLevelsError {
18478    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListV2LoggingLevelsError> {
18479        if let Some(err) = proto::json::Error::parse_rest(&res) {
18480            match err.typ.as_str() {
18481                "InternalException" => {
18482                    return RusotoError::Service(ListV2LoggingLevelsError::Internal(err.msg))
18483                }
18484                "InvalidRequestException" => {
18485                    return RusotoError::Service(ListV2LoggingLevelsError::InvalidRequest(err.msg))
18486                }
18487                "NotConfiguredException" => {
18488                    return RusotoError::Service(ListV2LoggingLevelsError::NotConfigured(err.msg))
18489                }
18490                "ServiceUnavailableException" => {
18491                    return RusotoError::Service(ListV2LoggingLevelsError::ServiceUnavailable(
18492                        err.msg,
18493                    ))
18494                }
18495                "ValidationException" => return RusotoError::Validation(err.msg),
18496                _ => {}
18497            }
18498        }
18499        RusotoError::Unknown(res)
18500    }
18501}
18502impl fmt::Display for ListV2LoggingLevelsError {
18503    #[allow(unused_variables)]
18504    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
18505        match *self {
18506            ListV2LoggingLevelsError::Internal(ref cause) => write!(f, "{}", cause),
18507            ListV2LoggingLevelsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
18508            ListV2LoggingLevelsError::NotConfigured(ref cause) => write!(f, "{}", cause),
18509            ListV2LoggingLevelsError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
18510        }
18511    }
18512}
18513impl Error for ListV2LoggingLevelsError {}
18514/// Errors returned by ListViolationEvents
18515#[derive(Debug, PartialEq)]
18516pub enum ListViolationEventsError {
18517    /// <p>An unexpected error has occurred.</p>
18518    InternalFailure(String),
18519    /// <p>The request is not valid.</p>
18520    InvalidRequest(String),
18521    /// <p>The rate exceeds the limit.</p>
18522    Throttling(String),
18523}
18524
18525impl ListViolationEventsError {
18526    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListViolationEventsError> {
18527        if let Some(err) = proto::json::Error::parse_rest(&res) {
18528            match err.typ.as_str() {
18529                "InternalFailureException" => {
18530                    return RusotoError::Service(ListViolationEventsError::InternalFailure(err.msg))
18531                }
18532                "InvalidRequestException" => {
18533                    return RusotoError::Service(ListViolationEventsError::InvalidRequest(err.msg))
18534                }
18535                "ThrottlingException" => {
18536                    return RusotoError::Service(ListViolationEventsError::Throttling(err.msg))
18537                }
18538                "ValidationException" => return RusotoError::Validation(err.msg),
18539                _ => {}
18540            }
18541        }
18542        RusotoError::Unknown(res)
18543    }
18544}
18545impl fmt::Display for ListViolationEventsError {
18546    #[allow(unused_variables)]
18547    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
18548        match *self {
18549            ListViolationEventsError::InternalFailure(ref cause) => write!(f, "{}", cause),
18550            ListViolationEventsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
18551            ListViolationEventsError::Throttling(ref cause) => write!(f, "{}", cause),
18552        }
18553    }
18554}
18555impl Error for ListViolationEventsError {}
18556/// Errors returned by RegisterCACertificate
18557#[derive(Debug, PartialEq)]
18558pub enum RegisterCACertificateError {
18559    /// <p>The certificate is invalid.</p>
18560    CertificateValidation(String),
18561    /// <p>An unexpected error has occurred.</p>
18562    InternalFailure(String),
18563    /// <p>The request is not valid.</p>
18564    InvalidRequest(String),
18565    /// <p>A limit has been exceeded.</p>
18566    LimitExceeded(String),
18567    /// <p>The registration code is invalid.</p>
18568    RegistrationCodeValidation(String),
18569    /// <p>The resource already exists.</p>
18570    ResourceAlreadyExists(String),
18571    /// <p>The service is temporarily unavailable.</p>
18572    ServiceUnavailable(String),
18573    /// <p>The rate exceeds the limit.</p>
18574    Throttling(String),
18575    /// <p>You are not authorized to perform this operation.</p>
18576    Unauthorized(String),
18577}
18578
18579impl RegisterCACertificateError {
18580    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<RegisterCACertificateError> {
18581        if let Some(err) = proto::json::Error::parse_rest(&res) {
18582            match err.typ.as_str() {
18583                "CertificateValidationException" => {
18584                    return RusotoError::Service(RegisterCACertificateError::CertificateValidation(
18585                        err.msg,
18586                    ))
18587                }
18588                "InternalFailureException" => {
18589                    return RusotoError::Service(RegisterCACertificateError::InternalFailure(
18590                        err.msg,
18591                    ))
18592                }
18593                "InvalidRequestException" => {
18594                    return RusotoError::Service(RegisterCACertificateError::InvalidRequest(
18595                        err.msg,
18596                    ))
18597                }
18598                "LimitExceededException" => {
18599                    return RusotoError::Service(RegisterCACertificateError::LimitExceeded(err.msg))
18600                }
18601                "RegistrationCodeValidationException" => {
18602                    return RusotoError::Service(
18603                        RegisterCACertificateError::RegistrationCodeValidation(err.msg),
18604                    )
18605                }
18606                "ResourceAlreadyExistsException" => {
18607                    return RusotoError::Service(RegisterCACertificateError::ResourceAlreadyExists(
18608                        err.msg,
18609                    ))
18610                }
18611                "ServiceUnavailableException" => {
18612                    return RusotoError::Service(RegisterCACertificateError::ServiceUnavailable(
18613                        err.msg,
18614                    ))
18615                }
18616                "ThrottlingException" => {
18617                    return RusotoError::Service(RegisterCACertificateError::Throttling(err.msg))
18618                }
18619                "UnauthorizedException" => {
18620                    return RusotoError::Service(RegisterCACertificateError::Unauthorized(err.msg))
18621                }
18622                "ValidationException" => return RusotoError::Validation(err.msg),
18623                _ => {}
18624            }
18625        }
18626        RusotoError::Unknown(res)
18627    }
18628}
18629impl fmt::Display for RegisterCACertificateError {
18630    #[allow(unused_variables)]
18631    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
18632        match *self {
18633            RegisterCACertificateError::CertificateValidation(ref cause) => write!(f, "{}", cause),
18634            RegisterCACertificateError::InternalFailure(ref cause) => write!(f, "{}", cause),
18635            RegisterCACertificateError::InvalidRequest(ref cause) => write!(f, "{}", cause),
18636            RegisterCACertificateError::LimitExceeded(ref cause) => write!(f, "{}", cause),
18637            RegisterCACertificateError::RegistrationCodeValidation(ref cause) => {
18638                write!(f, "{}", cause)
18639            }
18640            RegisterCACertificateError::ResourceAlreadyExists(ref cause) => write!(f, "{}", cause),
18641            RegisterCACertificateError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
18642            RegisterCACertificateError::Throttling(ref cause) => write!(f, "{}", cause),
18643            RegisterCACertificateError::Unauthorized(ref cause) => write!(f, "{}", cause),
18644        }
18645    }
18646}
18647impl Error for RegisterCACertificateError {}
18648/// Errors returned by RegisterCertificate
18649#[derive(Debug, PartialEq)]
18650pub enum RegisterCertificateError {
18651    /// <p>Unable to verify the CA certificate used to sign the device certificate you are attempting to register. This is happens when you have registered more than one CA certificate that has the same subject field and public key.</p>
18652    CertificateConflict(String),
18653    /// <p>The certificate operation is not allowed.</p>
18654    CertificateState(String),
18655    /// <p>The certificate is invalid.</p>
18656    CertificateValidation(String),
18657    /// <p>An unexpected error has occurred.</p>
18658    InternalFailure(String),
18659    /// <p>The request is not valid.</p>
18660    InvalidRequest(String),
18661    /// <p>The resource already exists.</p>
18662    ResourceAlreadyExists(String),
18663    /// <p>The service is temporarily unavailable.</p>
18664    ServiceUnavailable(String),
18665    /// <p>The rate exceeds the limit.</p>
18666    Throttling(String),
18667    /// <p>You are not authorized to perform this operation.</p>
18668    Unauthorized(String),
18669}
18670
18671impl RegisterCertificateError {
18672    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<RegisterCertificateError> {
18673        if let Some(err) = proto::json::Error::parse_rest(&res) {
18674            match err.typ.as_str() {
18675                "CertificateConflictException" => {
18676                    return RusotoError::Service(RegisterCertificateError::CertificateConflict(
18677                        err.msg,
18678                    ))
18679                }
18680                "CertificateStateException" => {
18681                    return RusotoError::Service(RegisterCertificateError::CertificateState(
18682                        err.msg,
18683                    ))
18684                }
18685                "CertificateValidationException" => {
18686                    return RusotoError::Service(RegisterCertificateError::CertificateValidation(
18687                        err.msg,
18688                    ))
18689                }
18690                "InternalFailureException" => {
18691                    return RusotoError::Service(RegisterCertificateError::InternalFailure(err.msg))
18692                }
18693                "InvalidRequestException" => {
18694                    return RusotoError::Service(RegisterCertificateError::InvalidRequest(err.msg))
18695                }
18696                "ResourceAlreadyExistsException" => {
18697                    return RusotoError::Service(RegisterCertificateError::ResourceAlreadyExists(
18698                        err.msg,
18699                    ))
18700                }
18701                "ServiceUnavailableException" => {
18702                    return RusotoError::Service(RegisterCertificateError::ServiceUnavailable(
18703                        err.msg,
18704                    ))
18705                }
18706                "ThrottlingException" => {
18707                    return RusotoError::Service(RegisterCertificateError::Throttling(err.msg))
18708                }
18709                "UnauthorizedException" => {
18710                    return RusotoError::Service(RegisterCertificateError::Unauthorized(err.msg))
18711                }
18712                "ValidationException" => return RusotoError::Validation(err.msg),
18713                _ => {}
18714            }
18715        }
18716        RusotoError::Unknown(res)
18717    }
18718}
18719impl fmt::Display for RegisterCertificateError {
18720    #[allow(unused_variables)]
18721    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
18722        match *self {
18723            RegisterCertificateError::CertificateConflict(ref cause) => write!(f, "{}", cause),
18724            RegisterCertificateError::CertificateState(ref cause) => write!(f, "{}", cause),
18725            RegisterCertificateError::CertificateValidation(ref cause) => write!(f, "{}", cause),
18726            RegisterCertificateError::InternalFailure(ref cause) => write!(f, "{}", cause),
18727            RegisterCertificateError::InvalidRequest(ref cause) => write!(f, "{}", cause),
18728            RegisterCertificateError::ResourceAlreadyExists(ref cause) => write!(f, "{}", cause),
18729            RegisterCertificateError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
18730            RegisterCertificateError::Throttling(ref cause) => write!(f, "{}", cause),
18731            RegisterCertificateError::Unauthorized(ref cause) => write!(f, "{}", cause),
18732        }
18733    }
18734}
18735impl Error for RegisterCertificateError {}
18736/// Errors returned by RegisterCertificateWithoutCA
18737#[derive(Debug, PartialEq)]
18738pub enum RegisterCertificateWithoutCAError {
18739    /// <p>The certificate operation is not allowed.</p>
18740    CertificateState(String),
18741    /// <p>The certificate is invalid.</p>
18742    CertificateValidation(String),
18743    /// <p>An unexpected error has occurred.</p>
18744    InternalFailure(String),
18745    /// <p>The request is not valid.</p>
18746    InvalidRequest(String),
18747    /// <p>The resource already exists.</p>
18748    ResourceAlreadyExists(String),
18749    /// <p>The service is temporarily unavailable.</p>
18750    ServiceUnavailable(String),
18751    /// <p>The rate exceeds the limit.</p>
18752    Throttling(String),
18753    /// <p>You are not authorized to perform this operation.</p>
18754    Unauthorized(String),
18755}
18756
18757impl RegisterCertificateWithoutCAError {
18758    pub fn from_response(
18759        res: BufferedHttpResponse,
18760    ) -> RusotoError<RegisterCertificateWithoutCAError> {
18761        if let Some(err) = proto::json::Error::parse_rest(&res) {
18762            match err.typ.as_str() {
18763                "CertificateStateException" => {
18764                    return RusotoError::Service(
18765                        RegisterCertificateWithoutCAError::CertificateState(err.msg),
18766                    )
18767                }
18768                "CertificateValidationException" => {
18769                    return RusotoError::Service(
18770                        RegisterCertificateWithoutCAError::CertificateValidation(err.msg),
18771                    )
18772                }
18773                "InternalFailureException" => {
18774                    return RusotoError::Service(
18775                        RegisterCertificateWithoutCAError::InternalFailure(err.msg),
18776                    )
18777                }
18778                "InvalidRequestException" => {
18779                    return RusotoError::Service(RegisterCertificateWithoutCAError::InvalidRequest(
18780                        err.msg,
18781                    ))
18782                }
18783                "ResourceAlreadyExistsException" => {
18784                    return RusotoError::Service(
18785                        RegisterCertificateWithoutCAError::ResourceAlreadyExists(err.msg),
18786                    )
18787                }
18788                "ServiceUnavailableException" => {
18789                    return RusotoError::Service(
18790                        RegisterCertificateWithoutCAError::ServiceUnavailable(err.msg),
18791                    )
18792                }
18793                "ThrottlingException" => {
18794                    return RusotoError::Service(RegisterCertificateWithoutCAError::Throttling(
18795                        err.msg,
18796                    ))
18797                }
18798                "UnauthorizedException" => {
18799                    return RusotoError::Service(RegisterCertificateWithoutCAError::Unauthorized(
18800                        err.msg,
18801                    ))
18802                }
18803                "ValidationException" => return RusotoError::Validation(err.msg),
18804                _ => {}
18805            }
18806        }
18807        RusotoError::Unknown(res)
18808    }
18809}
18810impl fmt::Display for RegisterCertificateWithoutCAError {
18811    #[allow(unused_variables)]
18812    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
18813        match *self {
18814            RegisterCertificateWithoutCAError::CertificateState(ref cause) => {
18815                write!(f, "{}", cause)
18816            }
18817            RegisterCertificateWithoutCAError::CertificateValidation(ref cause) => {
18818                write!(f, "{}", cause)
18819            }
18820            RegisterCertificateWithoutCAError::InternalFailure(ref cause) => write!(f, "{}", cause),
18821            RegisterCertificateWithoutCAError::InvalidRequest(ref cause) => write!(f, "{}", cause),
18822            RegisterCertificateWithoutCAError::ResourceAlreadyExists(ref cause) => {
18823                write!(f, "{}", cause)
18824            }
18825            RegisterCertificateWithoutCAError::ServiceUnavailable(ref cause) => {
18826                write!(f, "{}", cause)
18827            }
18828            RegisterCertificateWithoutCAError::Throttling(ref cause) => write!(f, "{}", cause),
18829            RegisterCertificateWithoutCAError::Unauthorized(ref cause) => write!(f, "{}", cause),
18830        }
18831    }
18832}
18833impl Error for RegisterCertificateWithoutCAError {}
18834/// Errors returned by RegisterThing
18835#[derive(Debug, PartialEq)]
18836pub enum RegisterThingError {
18837    /// <p>A conflicting resource update exception. This exception is thrown when two pending updates cause a conflict.</p>
18838    ConflictingResourceUpdate(String),
18839    /// <p>An unexpected error has occurred.</p>
18840    InternalFailure(String),
18841    /// <p>The request is not valid.</p>
18842    InvalidRequest(String),
18843    /// <p>The resource registration failed.</p>
18844    ResourceRegistrationFailure(String),
18845    /// <p>The service is temporarily unavailable.</p>
18846    ServiceUnavailable(String),
18847    /// <p>The rate exceeds the limit.</p>
18848    Throttling(String),
18849    /// <p>You are not authorized to perform this operation.</p>
18850    Unauthorized(String),
18851}
18852
18853impl RegisterThingError {
18854    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<RegisterThingError> {
18855        if let Some(err) = proto::json::Error::parse_rest(&res) {
18856            match err.typ.as_str() {
18857                "ConflictingResourceUpdateException" => {
18858                    return RusotoError::Service(RegisterThingError::ConflictingResourceUpdate(
18859                        err.msg,
18860                    ))
18861                }
18862                "InternalFailureException" => {
18863                    return RusotoError::Service(RegisterThingError::InternalFailure(err.msg))
18864                }
18865                "InvalidRequestException" => {
18866                    return RusotoError::Service(RegisterThingError::InvalidRequest(err.msg))
18867                }
18868                "ResourceRegistrationFailureException" => {
18869                    return RusotoError::Service(RegisterThingError::ResourceRegistrationFailure(
18870                        err.msg,
18871                    ))
18872                }
18873                "ServiceUnavailableException" => {
18874                    return RusotoError::Service(RegisterThingError::ServiceUnavailable(err.msg))
18875                }
18876                "ThrottlingException" => {
18877                    return RusotoError::Service(RegisterThingError::Throttling(err.msg))
18878                }
18879                "UnauthorizedException" => {
18880                    return RusotoError::Service(RegisterThingError::Unauthorized(err.msg))
18881                }
18882                "ValidationException" => return RusotoError::Validation(err.msg),
18883                _ => {}
18884            }
18885        }
18886        RusotoError::Unknown(res)
18887    }
18888}
18889impl fmt::Display for RegisterThingError {
18890    #[allow(unused_variables)]
18891    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
18892        match *self {
18893            RegisterThingError::ConflictingResourceUpdate(ref cause) => write!(f, "{}", cause),
18894            RegisterThingError::InternalFailure(ref cause) => write!(f, "{}", cause),
18895            RegisterThingError::InvalidRequest(ref cause) => write!(f, "{}", cause),
18896            RegisterThingError::ResourceRegistrationFailure(ref cause) => write!(f, "{}", cause),
18897            RegisterThingError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
18898            RegisterThingError::Throttling(ref cause) => write!(f, "{}", cause),
18899            RegisterThingError::Unauthorized(ref cause) => write!(f, "{}", cause),
18900        }
18901    }
18902}
18903impl Error for RegisterThingError {}
18904/// Errors returned by RejectCertificateTransfer
18905#[derive(Debug, PartialEq)]
18906pub enum RejectCertificateTransferError {
18907    /// <p>An unexpected error has occurred.</p>
18908    InternalFailure(String),
18909    /// <p>The request is not valid.</p>
18910    InvalidRequest(String),
18911    /// <p>The specified resource does not exist.</p>
18912    ResourceNotFound(String),
18913    /// <p>The service is temporarily unavailable.</p>
18914    ServiceUnavailable(String),
18915    /// <p>The rate exceeds the limit.</p>
18916    Throttling(String),
18917    /// <p>You can't revert the certificate transfer because the transfer is already complete.</p>
18918    TransferAlreadyCompleted(String),
18919    /// <p>You are not authorized to perform this operation.</p>
18920    Unauthorized(String),
18921}
18922
18923impl RejectCertificateTransferError {
18924    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<RejectCertificateTransferError> {
18925        if let Some(err) = proto::json::Error::parse_rest(&res) {
18926            match err.typ.as_str() {
18927                "InternalFailureException" => {
18928                    return RusotoError::Service(RejectCertificateTransferError::InternalFailure(
18929                        err.msg,
18930                    ))
18931                }
18932                "InvalidRequestException" => {
18933                    return RusotoError::Service(RejectCertificateTransferError::InvalidRequest(
18934                        err.msg,
18935                    ))
18936                }
18937                "ResourceNotFoundException" => {
18938                    return RusotoError::Service(RejectCertificateTransferError::ResourceNotFound(
18939                        err.msg,
18940                    ))
18941                }
18942                "ServiceUnavailableException" => {
18943                    return RusotoError::Service(
18944                        RejectCertificateTransferError::ServiceUnavailable(err.msg),
18945                    )
18946                }
18947                "ThrottlingException" => {
18948                    return RusotoError::Service(RejectCertificateTransferError::Throttling(
18949                        err.msg,
18950                    ))
18951                }
18952                "TransferAlreadyCompletedException" => {
18953                    return RusotoError::Service(
18954                        RejectCertificateTransferError::TransferAlreadyCompleted(err.msg),
18955                    )
18956                }
18957                "UnauthorizedException" => {
18958                    return RusotoError::Service(RejectCertificateTransferError::Unauthorized(
18959                        err.msg,
18960                    ))
18961                }
18962                "ValidationException" => return RusotoError::Validation(err.msg),
18963                _ => {}
18964            }
18965        }
18966        RusotoError::Unknown(res)
18967    }
18968}
18969impl fmt::Display for RejectCertificateTransferError {
18970    #[allow(unused_variables)]
18971    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
18972        match *self {
18973            RejectCertificateTransferError::InternalFailure(ref cause) => write!(f, "{}", cause),
18974            RejectCertificateTransferError::InvalidRequest(ref cause) => write!(f, "{}", cause),
18975            RejectCertificateTransferError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
18976            RejectCertificateTransferError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
18977            RejectCertificateTransferError::Throttling(ref cause) => write!(f, "{}", cause),
18978            RejectCertificateTransferError::TransferAlreadyCompleted(ref cause) => {
18979                write!(f, "{}", cause)
18980            }
18981            RejectCertificateTransferError::Unauthorized(ref cause) => write!(f, "{}", cause),
18982        }
18983    }
18984}
18985impl Error for RejectCertificateTransferError {}
18986/// Errors returned by RemoveThingFromBillingGroup
18987#[derive(Debug, PartialEq)]
18988pub enum RemoveThingFromBillingGroupError {
18989    /// <p>An unexpected error has occurred.</p>
18990    InternalFailure(String),
18991    /// <p>The request is not valid.</p>
18992    InvalidRequest(String),
18993    /// <p>The specified resource does not exist.</p>
18994    ResourceNotFound(String),
18995    /// <p>The rate exceeds the limit.</p>
18996    Throttling(String),
18997}
18998
18999impl RemoveThingFromBillingGroupError {
19000    pub fn from_response(
19001        res: BufferedHttpResponse,
19002    ) -> RusotoError<RemoveThingFromBillingGroupError> {
19003        if let Some(err) = proto::json::Error::parse_rest(&res) {
19004            match err.typ.as_str() {
19005                "InternalFailureException" => {
19006                    return RusotoError::Service(RemoveThingFromBillingGroupError::InternalFailure(
19007                        err.msg,
19008                    ))
19009                }
19010                "InvalidRequestException" => {
19011                    return RusotoError::Service(RemoveThingFromBillingGroupError::InvalidRequest(
19012                        err.msg,
19013                    ))
19014                }
19015                "ResourceNotFoundException" => {
19016                    return RusotoError::Service(
19017                        RemoveThingFromBillingGroupError::ResourceNotFound(err.msg),
19018                    )
19019                }
19020                "ThrottlingException" => {
19021                    return RusotoError::Service(RemoveThingFromBillingGroupError::Throttling(
19022                        err.msg,
19023                    ))
19024                }
19025                "ValidationException" => return RusotoError::Validation(err.msg),
19026                _ => {}
19027            }
19028        }
19029        RusotoError::Unknown(res)
19030    }
19031}
19032impl fmt::Display for RemoveThingFromBillingGroupError {
19033    #[allow(unused_variables)]
19034    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
19035        match *self {
19036            RemoveThingFromBillingGroupError::InternalFailure(ref cause) => write!(f, "{}", cause),
19037            RemoveThingFromBillingGroupError::InvalidRequest(ref cause) => write!(f, "{}", cause),
19038            RemoveThingFromBillingGroupError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
19039            RemoveThingFromBillingGroupError::Throttling(ref cause) => write!(f, "{}", cause),
19040        }
19041    }
19042}
19043impl Error for RemoveThingFromBillingGroupError {}
19044/// Errors returned by RemoveThingFromThingGroup
19045#[derive(Debug, PartialEq)]
19046pub enum RemoveThingFromThingGroupError {
19047    /// <p>An unexpected error has occurred.</p>
19048    InternalFailure(String),
19049    /// <p>The request is not valid.</p>
19050    InvalidRequest(String),
19051    /// <p>The specified resource does not exist.</p>
19052    ResourceNotFound(String),
19053    /// <p>The rate exceeds the limit.</p>
19054    Throttling(String),
19055}
19056
19057impl RemoveThingFromThingGroupError {
19058    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<RemoveThingFromThingGroupError> {
19059        if let Some(err) = proto::json::Error::parse_rest(&res) {
19060            match err.typ.as_str() {
19061                "InternalFailureException" => {
19062                    return RusotoError::Service(RemoveThingFromThingGroupError::InternalFailure(
19063                        err.msg,
19064                    ))
19065                }
19066                "InvalidRequestException" => {
19067                    return RusotoError::Service(RemoveThingFromThingGroupError::InvalidRequest(
19068                        err.msg,
19069                    ))
19070                }
19071                "ResourceNotFoundException" => {
19072                    return RusotoError::Service(RemoveThingFromThingGroupError::ResourceNotFound(
19073                        err.msg,
19074                    ))
19075                }
19076                "ThrottlingException" => {
19077                    return RusotoError::Service(RemoveThingFromThingGroupError::Throttling(
19078                        err.msg,
19079                    ))
19080                }
19081                "ValidationException" => return RusotoError::Validation(err.msg),
19082                _ => {}
19083            }
19084        }
19085        RusotoError::Unknown(res)
19086    }
19087}
19088impl fmt::Display for RemoveThingFromThingGroupError {
19089    #[allow(unused_variables)]
19090    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
19091        match *self {
19092            RemoveThingFromThingGroupError::InternalFailure(ref cause) => write!(f, "{}", cause),
19093            RemoveThingFromThingGroupError::InvalidRequest(ref cause) => write!(f, "{}", cause),
19094            RemoveThingFromThingGroupError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
19095            RemoveThingFromThingGroupError::Throttling(ref cause) => write!(f, "{}", cause),
19096        }
19097    }
19098}
19099impl Error for RemoveThingFromThingGroupError {}
19100/// Errors returned by ReplaceTopicRule
19101#[derive(Debug, PartialEq)]
19102pub enum ReplaceTopicRuleError {
19103    /// <p>A conflicting resource update exception. This exception is thrown when two pending updates cause a conflict.</p>
19104    ConflictingResourceUpdate(String),
19105    /// <p>An unexpected error has occurred.</p>
19106    Internal(String),
19107    /// <p>The request is not valid.</p>
19108    InvalidRequest(String),
19109    /// <p>The service is temporarily unavailable.</p>
19110    ServiceUnavailable(String),
19111    /// <p>The Rule-SQL expression can't be parsed correctly.</p>
19112    SqlParse(String),
19113    /// <p>You are not authorized to perform this operation.</p>
19114    Unauthorized(String),
19115}
19116
19117impl ReplaceTopicRuleError {
19118    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ReplaceTopicRuleError> {
19119        if let Some(err) = proto::json::Error::parse_rest(&res) {
19120            match err.typ.as_str() {
19121                "ConflictingResourceUpdateException" => {
19122                    return RusotoError::Service(ReplaceTopicRuleError::ConflictingResourceUpdate(
19123                        err.msg,
19124                    ))
19125                }
19126                "InternalException" => {
19127                    return RusotoError::Service(ReplaceTopicRuleError::Internal(err.msg))
19128                }
19129                "InvalidRequestException" => {
19130                    return RusotoError::Service(ReplaceTopicRuleError::InvalidRequest(err.msg))
19131                }
19132                "ServiceUnavailableException" => {
19133                    return RusotoError::Service(ReplaceTopicRuleError::ServiceUnavailable(err.msg))
19134                }
19135                "SqlParseException" => {
19136                    return RusotoError::Service(ReplaceTopicRuleError::SqlParse(err.msg))
19137                }
19138                "UnauthorizedException" => {
19139                    return RusotoError::Service(ReplaceTopicRuleError::Unauthorized(err.msg))
19140                }
19141                "ValidationException" => return RusotoError::Validation(err.msg),
19142                _ => {}
19143            }
19144        }
19145        RusotoError::Unknown(res)
19146    }
19147}
19148impl fmt::Display for ReplaceTopicRuleError {
19149    #[allow(unused_variables)]
19150    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
19151        match *self {
19152            ReplaceTopicRuleError::ConflictingResourceUpdate(ref cause) => write!(f, "{}", cause),
19153            ReplaceTopicRuleError::Internal(ref cause) => write!(f, "{}", cause),
19154            ReplaceTopicRuleError::InvalidRequest(ref cause) => write!(f, "{}", cause),
19155            ReplaceTopicRuleError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
19156            ReplaceTopicRuleError::SqlParse(ref cause) => write!(f, "{}", cause),
19157            ReplaceTopicRuleError::Unauthorized(ref cause) => write!(f, "{}", cause),
19158        }
19159    }
19160}
19161impl Error for ReplaceTopicRuleError {}
19162/// Errors returned by SearchIndex
19163#[derive(Debug, PartialEq)]
19164pub enum SearchIndexError {
19165    /// <p>The index is not ready.</p>
19166    IndexNotReady(String),
19167    /// <p>An unexpected error has occurred.</p>
19168    InternalFailure(String),
19169    /// <p>The query is invalid.</p>
19170    InvalidQuery(String),
19171    /// <p>The request is not valid.</p>
19172    InvalidRequest(String),
19173    /// <p>The specified resource does not exist.</p>
19174    ResourceNotFound(String),
19175    /// <p>The service is temporarily unavailable.</p>
19176    ServiceUnavailable(String),
19177    /// <p>The rate exceeds the limit.</p>
19178    Throttling(String),
19179    /// <p>You are not authorized to perform this operation.</p>
19180    Unauthorized(String),
19181}
19182
19183impl SearchIndexError {
19184    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<SearchIndexError> {
19185        if let Some(err) = proto::json::Error::parse_rest(&res) {
19186            match err.typ.as_str() {
19187                "IndexNotReadyException" => {
19188                    return RusotoError::Service(SearchIndexError::IndexNotReady(err.msg))
19189                }
19190                "InternalFailureException" => {
19191                    return RusotoError::Service(SearchIndexError::InternalFailure(err.msg))
19192                }
19193                "InvalidQueryException" => {
19194                    return RusotoError::Service(SearchIndexError::InvalidQuery(err.msg))
19195                }
19196                "InvalidRequestException" => {
19197                    return RusotoError::Service(SearchIndexError::InvalidRequest(err.msg))
19198                }
19199                "ResourceNotFoundException" => {
19200                    return RusotoError::Service(SearchIndexError::ResourceNotFound(err.msg))
19201                }
19202                "ServiceUnavailableException" => {
19203                    return RusotoError::Service(SearchIndexError::ServiceUnavailable(err.msg))
19204                }
19205                "ThrottlingException" => {
19206                    return RusotoError::Service(SearchIndexError::Throttling(err.msg))
19207                }
19208                "UnauthorizedException" => {
19209                    return RusotoError::Service(SearchIndexError::Unauthorized(err.msg))
19210                }
19211                "ValidationException" => return RusotoError::Validation(err.msg),
19212                _ => {}
19213            }
19214        }
19215        RusotoError::Unknown(res)
19216    }
19217}
19218impl fmt::Display for SearchIndexError {
19219    #[allow(unused_variables)]
19220    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
19221        match *self {
19222            SearchIndexError::IndexNotReady(ref cause) => write!(f, "{}", cause),
19223            SearchIndexError::InternalFailure(ref cause) => write!(f, "{}", cause),
19224            SearchIndexError::InvalidQuery(ref cause) => write!(f, "{}", cause),
19225            SearchIndexError::InvalidRequest(ref cause) => write!(f, "{}", cause),
19226            SearchIndexError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
19227            SearchIndexError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
19228            SearchIndexError::Throttling(ref cause) => write!(f, "{}", cause),
19229            SearchIndexError::Unauthorized(ref cause) => write!(f, "{}", cause),
19230        }
19231    }
19232}
19233impl Error for SearchIndexError {}
19234/// Errors returned by SetDefaultAuthorizer
19235#[derive(Debug, PartialEq)]
19236pub enum SetDefaultAuthorizerError {
19237    /// <p>An unexpected error has occurred.</p>
19238    InternalFailure(String),
19239    /// <p>The request is not valid.</p>
19240    InvalidRequest(String),
19241    /// <p>The resource already exists.</p>
19242    ResourceAlreadyExists(String),
19243    /// <p>The specified resource does not exist.</p>
19244    ResourceNotFound(String),
19245    /// <p>The service is temporarily unavailable.</p>
19246    ServiceUnavailable(String),
19247    /// <p>The rate exceeds the limit.</p>
19248    Throttling(String),
19249    /// <p>You are not authorized to perform this operation.</p>
19250    Unauthorized(String),
19251}
19252
19253impl SetDefaultAuthorizerError {
19254    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<SetDefaultAuthorizerError> {
19255        if let Some(err) = proto::json::Error::parse_rest(&res) {
19256            match err.typ.as_str() {
19257                "InternalFailureException" => {
19258                    return RusotoError::Service(SetDefaultAuthorizerError::InternalFailure(
19259                        err.msg,
19260                    ))
19261                }
19262                "InvalidRequestException" => {
19263                    return RusotoError::Service(SetDefaultAuthorizerError::InvalidRequest(err.msg))
19264                }
19265                "ResourceAlreadyExistsException" => {
19266                    return RusotoError::Service(SetDefaultAuthorizerError::ResourceAlreadyExists(
19267                        err.msg,
19268                    ))
19269                }
19270                "ResourceNotFoundException" => {
19271                    return RusotoError::Service(SetDefaultAuthorizerError::ResourceNotFound(
19272                        err.msg,
19273                    ))
19274                }
19275                "ServiceUnavailableException" => {
19276                    return RusotoError::Service(SetDefaultAuthorizerError::ServiceUnavailable(
19277                        err.msg,
19278                    ))
19279                }
19280                "ThrottlingException" => {
19281                    return RusotoError::Service(SetDefaultAuthorizerError::Throttling(err.msg))
19282                }
19283                "UnauthorizedException" => {
19284                    return RusotoError::Service(SetDefaultAuthorizerError::Unauthorized(err.msg))
19285                }
19286                "ValidationException" => return RusotoError::Validation(err.msg),
19287                _ => {}
19288            }
19289        }
19290        RusotoError::Unknown(res)
19291    }
19292}
19293impl fmt::Display for SetDefaultAuthorizerError {
19294    #[allow(unused_variables)]
19295    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
19296        match *self {
19297            SetDefaultAuthorizerError::InternalFailure(ref cause) => write!(f, "{}", cause),
19298            SetDefaultAuthorizerError::InvalidRequest(ref cause) => write!(f, "{}", cause),
19299            SetDefaultAuthorizerError::ResourceAlreadyExists(ref cause) => write!(f, "{}", cause),
19300            SetDefaultAuthorizerError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
19301            SetDefaultAuthorizerError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
19302            SetDefaultAuthorizerError::Throttling(ref cause) => write!(f, "{}", cause),
19303            SetDefaultAuthorizerError::Unauthorized(ref cause) => write!(f, "{}", cause),
19304        }
19305    }
19306}
19307impl Error for SetDefaultAuthorizerError {}
19308/// Errors returned by SetDefaultPolicyVersion
19309#[derive(Debug, PartialEq)]
19310pub enum SetDefaultPolicyVersionError {
19311    /// <p>An unexpected error has occurred.</p>
19312    InternalFailure(String),
19313    /// <p>The request is not valid.</p>
19314    InvalidRequest(String),
19315    /// <p>The specified resource does not exist.</p>
19316    ResourceNotFound(String),
19317    /// <p>The service is temporarily unavailable.</p>
19318    ServiceUnavailable(String),
19319    /// <p>The rate exceeds the limit.</p>
19320    Throttling(String),
19321    /// <p>You are not authorized to perform this operation.</p>
19322    Unauthorized(String),
19323}
19324
19325impl SetDefaultPolicyVersionError {
19326    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<SetDefaultPolicyVersionError> {
19327        if let Some(err) = proto::json::Error::parse_rest(&res) {
19328            match err.typ.as_str() {
19329                "InternalFailureException" => {
19330                    return RusotoError::Service(SetDefaultPolicyVersionError::InternalFailure(
19331                        err.msg,
19332                    ))
19333                }
19334                "InvalidRequestException" => {
19335                    return RusotoError::Service(SetDefaultPolicyVersionError::InvalidRequest(
19336                        err.msg,
19337                    ))
19338                }
19339                "ResourceNotFoundException" => {
19340                    return RusotoError::Service(SetDefaultPolicyVersionError::ResourceNotFound(
19341                        err.msg,
19342                    ))
19343                }
19344                "ServiceUnavailableException" => {
19345                    return RusotoError::Service(SetDefaultPolicyVersionError::ServiceUnavailable(
19346                        err.msg,
19347                    ))
19348                }
19349                "ThrottlingException" => {
19350                    return RusotoError::Service(SetDefaultPolicyVersionError::Throttling(err.msg))
19351                }
19352                "UnauthorizedException" => {
19353                    return RusotoError::Service(SetDefaultPolicyVersionError::Unauthorized(
19354                        err.msg,
19355                    ))
19356                }
19357                "ValidationException" => return RusotoError::Validation(err.msg),
19358                _ => {}
19359            }
19360        }
19361        RusotoError::Unknown(res)
19362    }
19363}
19364impl fmt::Display for SetDefaultPolicyVersionError {
19365    #[allow(unused_variables)]
19366    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
19367        match *self {
19368            SetDefaultPolicyVersionError::InternalFailure(ref cause) => write!(f, "{}", cause),
19369            SetDefaultPolicyVersionError::InvalidRequest(ref cause) => write!(f, "{}", cause),
19370            SetDefaultPolicyVersionError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
19371            SetDefaultPolicyVersionError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
19372            SetDefaultPolicyVersionError::Throttling(ref cause) => write!(f, "{}", cause),
19373            SetDefaultPolicyVersionError::Unauthorized(ref cause) => write!(f, "{}", cause),
19374        }
19375    }
19376}
19377impl Error for SetDefaultPolicyVersionError {}
19378/// Errors returned by SetLoggingOptions
19379#[derive(Debug, PartialEq)]
19380pub enum SetLoggingOptionsError {
19381    /// <p>An unexpected error has occurred.</p>
19382    Internal(String),
19383    /// <p>The request is not valid.</p>
19384    InvalidRequest(String),
19385    /// <p>The service is temporarily unavailable.</p>
19386    ServiceUnavailable(String),
19387}
19388
19389impl SetLoggingOptionsError {
19390    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<SetLoggingOptionsError> {
19391        if let Some(err) = proto::json::Error::parse_rest(&res) {
19392            match err.typ.as_str() {
19393                "InternalException" => {
19394                    return RusotoError::Service(SetLoggingOptionsError::Internal(err.msg))
19395                }
19396                "InvalidRequestException" => {
19397                    return RusotoError::Service(SetLoggingOptionsError::InvalidRequest(err.msg))
19398                }
19399                "ServiceUnavailableException" => {
19400                    return RusotoError::Service(SetLoggingOptionsError::ServiceUnavailable(
19401                        err.msg,
19402                    ))
19403                }
19404                "ValidationException" => return RusotoError::Validation(err.msg),
19405                _ => {}
19406            }
19407        }
19408        RusotoError::Unknown(res)
19409    }
19410}
19411impl fmt::Display for SetLoggingOptionsError {
19412    #[allow(unused_variables)]
19413    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
19414        match *self {
19415            SetLoggingOptionsError::Internal(ref cause) => write!(f, "{}", cause),
19416            SetLoggingOptionsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
19417            SetLoggingOptionsError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
19418        }
19419    }
19420}
19421impl Error for SetLoggingOptionsError {}
19422/// Errors returned by SetV2LoggingLevel
19423#[derive(Debug, PartialEq)]
19424pub enum SetV2LoggingLevelError {
19425    /// <p>An unexpected error has occurred.</p>
19426    Internal(String),
19427    /// <p>The request is not valid.</p>
19428    InvalidRequest(String),
19429    /// <p>The resource is not configured.</p>
19430    NotConfigured(String),
19431    /// <p>The service is temporarily unavailable.</p>
19432    ServiceUnavailable(String),
19433}
19434
19435impl SetV2LoggingLevelError {
19436    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<SetV2LoggingLevelError> {
19437        if let Some(err) = proto::json::Error::parse_rest(&res) {
19438            match err.typ.as_str() {
19439                "InternalException" => {
19440                    return RusotoError::Service(SetV2LoggingLevelError::Internal(err.msg))
19441                }
19442                "InvalidRequestException" => {
19443                    return RusotoError::Service(SetV2LoggingLevelError::InvalidRequest(err.msg))
19444                }
19445                "NotConfiguredException" => {
19446                    return RusotoError::Service(SetV2LoggingLevelError::NotConfigured(err.msg))
19447                }
19448                "ServiceUnavailableException" => {
19449                    return RusotoError::Service(SetV2LoggingLevelError::ServiceUnavailable(
19450                        err.msg,
19451                    ))
19452                }
19453                "ValidationException" => return RusotoError::Validation(err.msg),
19454                _ => {}
19455            }
19456        }
19457        RusotoError::Unknown(res)
19458    }
19459}
19460impl fmt::Display for SetV2LoggingLevelError {
19461    #[allow(unused_variables)]
19462    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
19463        match *self {
19464            SetV2LoggingLevelError::Internal(ref cause) => write!(f, "{}", cause),
19465            SetV2LoggingLevelError::InvalidRequest(ref cause) => write!(f, "{}", cause),
19466            SetV2LoggingLevelError::NotConfigured(ref cause) => write!(f, "{}", cause),
19467            SetV2LoggingLevelError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
19468        }
19469    }
19470}
19471impl Error for SetV2LoggingLevelError {}
19472/// Errors returned by SetV2LoggingOptions
19473#[derive(Debug, PartialEq)]
19474pub enum SetV2LoggingOptionsError {
19475    /// <p>An unexpected error has occurred.</p>
19476    Internal(String),
19477    /// <p>The request is not valid.</p>
19478    InvalidRequest(String),
19479    /// <p>The service is temporarily unavailable.</p>
19480    ServiceUnavailable(String),
19481}
19482
19483impl SetV2LoggingOptionsError {
19484    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<SetV2LoggingOptionsError> {
19485        if let Some(err) = proto::json::Error::parse_rest(&res) {
19486            match err.typ.as_str() {
19487                "InternalException" => {
19488                    return RusotoError::Service(SetV2LoggingOptionsError::Internal(err.msg))
19489                }
19490                "InvalidRequestException" => {
19491                    return RusotoError::Service(SetV2LoggingOptionsError::InvalidRequest(err.msg))
19492                }
19493                "ServiceUnavailableException" => {
19494                    return RusotoError::Service(SetV2LoggingOptionsError::ServiceUnavailable(
19495                        err.msg,
19496                    ))
19497                }
19498                "ValidationException" => return RusotoError::Validation(err.msg),
19499                _ => {}
19500            }
19501        }
19502        RusotoError::Unknown(res)
19503    }
19504}
19505impl fmt::Display for SetV2LoggingOptionsError {
19506    #[allow(unused_variables)]
19507    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
19508        match *self {
19509            SetV2LoggingOptionsError::Internal(ref cause) => write!(f, "{}", cause),
19510            SetV2LoggingOptionsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
19511            SetV2LoggingOptionsError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
19512        }
19513    }
19514}
19515impl Error for SetV2LoggingOptionsError {}
19516/// Errors returned by StartAuditMitigationActionsTask
19517#[derive(Debug, PartialEq)]
19518pub enum StartAuditMitigationActionsTaskError {
19519    /// <p>An unexpected error has occurred.</p>
19520    InternalFailure(String),
19521    /// <p>The request is not valid.</p>
19522    InvalidRequest(String),
19523    /// <p>A limit has been exceeded.</p>
19524    LimitExceeded(String),
19525    /// <p>This exception occurs if you attempt to start a task with the same task-id as an existing task but with a different clientRequestToken.</p>
19526    TaskAlreadyExists(String),
19527    /// <p>The rate exceeds the limit.</p>
19528    Throttling(String),
19529}
19530
19531impl StartAuditMitigationActionsTaskError {
19532    pub fn from_response(
19533        res: BufferedHttpResponse,
19534    ) -> RusotoError<StartAuditMitigationActionsTaskError> {
19535        if let Some(err) = proto::json::Error::parse_rest(&res) {
19536            match err.typ.as_str() {
19537                "InternalFailureException" => {
19538                    return RusotoError::Service(
19539                        StartAuditMitigationActionsTaskError::InternalFailure(err.msg),
19540                    )
19541                }
19542                "InvalidRequestException" => {
19543                    return RusotoError::Service(
19544                        StartAuditMitigationActionsTaskError::InvalidRequest(err.msg),
19545                    )
19546                }
19547                "LimitExceededException" => {
19548                    return RusotoError::Service(
19549                        StartAuditMitigationActionsTaskError::LimitExceeded(err.msg),
19550                    )
19551                }
19552                "TaskAlreadyExistsException" => {
19553                    return RusotoError::Service(
19554                        StartAuditMitigationActionsTaskError::TaskAlreadyExists(err.msg),
19555                    )
19556                }
19557                "ThrottlingException" => {
19558                    return RusotoError::Service(StartAuditMitigationActionsTaskError::Throttling(
19559                        err.msg,
19560                    ))
19561                }
19562                "ValidationException" => return RusotoError::Validation(err.msg),
19563                _ => {}
19564            }
19565        }
19566        RusotoError::Unknown(res)
19567    }
19568}
19569impl fmt::Display for StartAuditMitigationActionsTaskError {
19570    #[allow(unused_variables)]
19571    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
19572        match *self {
19573            StartAuditMitigationActionsTaskError::InternalFailure(ref cause) => {
19574                write!(f, "{}", cause)
19575            }
19576            StartAuditMitigationActionsTaskError::InvalidRequest(ref cause) => {
19577                write!(f, "{}", cause)
19578            }
19579            StartAuditMitigationActionsTaskError::LimitExceeded(ref cause) => {
19580                write!(f, "{}", cause)
19581            }
19582            StartAuditMitigationActionsTaskError::TaskAlreadyExists(ref cause) => {
19583                write!(f, "{}", cause)
19584            }
19585            StartAuditMitigationActionsTaskError::Throttling(ref cause) => write!(f, "{}", cause),
19586        }
19587    }
19588}
19589impl Error for StartAuditMitigationActionsTaskError {}
19590/// Errors returned by StartOnDemandAuditTask
19591#[derive(Debug, PartialEq)]
19592pub enum StartOnDemandAuditTaskError {
19593    /// <p>An unexpected error has occurred.</p>
19594    InternalFailure(String),
19595    /// <p>The request is not valid.</p>
19596    InvalidRequest(String),
19597    /// <p>A limit has been exceeded.</p>
19598    LimitExceeded(String),
19599    /// <p>The rate exceeds the limit.</p>
19600    Throttling(String),
19601}
19602
19603impl StartOnDemandAuditTaskError {
19604    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<StartOnDemandAuditTaskError> {
19605        if let Some(err) = proto::json::Error::parse_rest(&res) {
19606            match err.typ.as_str() {
19607                "InternalFailureException" => {
19608                    return RusotoError::Service(StartOnDemandAuditTaskError::InternalFailure(
19609                        err.msg,
19610                    ))
19611                }
19612                "InvalidRequestException" => {
19613                    return RusotoError::Service(StartOnDemandAuditTaskError::InvalidRequest(
19614                        err.msg,
19615                    ))
19616                }
19617                "LimitExceededException" => {
19618                    return RusotoError::Service(StartOnDemandAuditTaskError::LimitExceeded(
19619                        err.msg,
19620                    ))
19621                }
19622                "ThrottlingException" => {
19623                    return RusotoError::Service(StartOnDemandAuditTaskError::Throttling(err.msg))
19624                }
19625                "ValidationException" => return RusotoError::Validation(err.msg),
19626                _ => {}
19627            }
19628        }
19629        RusotoError::Unknown(res)
19630    }
19631}
19632impl fmt::Display for StartOnDemandAuditTaskError {
19633    #[allow(unused_variables)]
19634    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
19635        match *self {
19636            StartOnDemandAuditTaskError::InternalFailure(ref cause) => write!(f, "{}", cause),
19637            StartOnDemandAuditTaskError::InvalidRequest(ref cause) => write!(f, "{}", cause),
19638            StartOnDemandAuditTaskError::LimitExceeded(ref cause) => write!(f, "{}", cause),
19639            StartOnDemandAuditTaskError::Throttling(ref cause) => write!(f, "{}", cause),
19640        }
19641    }
19642}
19643impl Error for StartOnDemandAuditTaskError {}
19644/// Errors returned by StartThingRegistrationTask
19645#[derive(Debug, PartialEq)]
19646pub enum StartThingRegistrationTaskError {
19647    /// <p>An unexpected error has occurred.</p>
19648    InternalFailure(String),
19649    /// <p>The request is not valid.</p>
19650    InvalidRequest(String),
19651    /// <p>The rate exceeds the limit.</p>
19652    Throttling(String),
19653    /// <p>You are not authorized to perform this operation.</p>
19654    Unauthorized(String),
19655}
19656
19657impl StartThingRegistrationTaskError {
19658    pub fn from_response(
19659        res: BufferedHttpResponse,
19660    ) -> RusotoError<StartThingRegistrationTaskError> {
19661        if let Some(err) = proto::json::Error::parse_rest(&res) {
19662            match err.typ.as_str() {
19663                "InternalFailureException" => {
19664                    return RusotoError::Service(StartThingRegistrationTaskError::InternalFailure(
19665                        err.msg,
19666                    ))
19667                }
19668                "InvalidRequestException" => {
19669                    return RusotoError::Service(StartThingRegistrationTaskError::InvalidRequest(
19670                        err.msg,
19671                    ))
19672                }
19673                "ThrottlingException" => {
19674                    return RusotoError::Service(StartThingRegistrationTaskError::Throttling(
19675                        err.msg,
19676                    ))
19677                }
19678                "UnauthorizedException" => {
19679                    return RusotoError::Service(StartThingRegistrationTaskError::Unauthorized(
19680                        err.msg,
19681                    ))
19682                }
19683                "ValidationException" => return RusotoError::Validation(err.msg),
19684                _ => {}
19685            }
19686        }
19687        RusotoError::Unknown(res)
19688    }
19689}
19690impl fmt::Display for StartThingRegistrationTaskError {
19691    #[allow(unused_variables)]
19692    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
19693        match *self {
19694            StartThingRegistrationTaskError::InternalFailure(ref cause) => write!(f, "{}", cause),
19695            StartThingRegistrationTaskError::InvalidRequest(ref cause) => write!(f, "{}", cause),
19696            StartThingRegistrationTaskError::Throttling(ref cause) => write!(f, "{}", cause),
19697            StartThingRegistrationTaskError::Unauthorized(ref cause) => write!(f, "{}", cause),
19698        }
19699    }
19700}
19701impl Error for StartThingRegistrationTaskError {}
19702/// Errors returned by StopThingRegistrationTask
19703#[derive(Debug, PartialEq)]
19704pub enum StopThingRegistrationTaskError {
19705    /// <p>An unexpected error has occurred.</p>
19706    InternalFailure(String),
19707    /// <p>The request is not valid.</p>
19708    InvalidRequest(String),
19709    /// <p>The specified resource does not exist.</p>
19710    ResourceNotFound(String),
19711    /// <p>The rate exceeds the limit.</p>
19712    Throttling(String),
19713    /// <p>You are not authorized to perform this operation.</p>
19714    Unauthorized(String),
19715}
19716
19717impl StopThingRegistrationTaskError {
19718    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<StopThingRegistrationTaskError> {
19719        if let Some(err) = proto::json::Error::parse_rest(&res) {
19720            match err.typ.as_str() {
19721                "InternalFailureException" => {
19722                    return RusotoError::Service(StopThingRegistrationTaskError::InternalFailure(
19723                        err.msg,
19724                    ))
19725                }
19726                "InvalidRequestException" => {
19727                    return RusotoError::Service(StopThingRegistrationTaskError::InvalidRequest(
19728                        err.msg,
19729                    ))
19730                }
19731                "ResourceNotFoundException" => {
19732                    return RusotoError::Service(StopThingRegistrationTaskError::ResourceNotFound(
19733                        err.msg,
19734                    ))
19735                }
19736                "ThrottlingException" => {
19737                    return RusotoError::Service(StopThingRegistrationTaskError::Throttling(
19738                        err.msg,
19739                    ))
19740                }
19741                "UnauthorizedException" => {
19742                    return RusotoError::Service(StopThingRegistrationTaskError::Unauthorized(
19743                        err.msg,
19744                    ))
19745                }
19746                "ValidationException" => return RusotoError::Validation(err.msg),
19747                _ => {}
19748            }
19749        }
19750        RusotoError::Unknown(res)
19751    }
19752}
19753impl fmt::Display for StopThingRegistrationTaskError {
19754    #[allow(unused_variables)]
19755    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
19756        match *self {
19757            StopThingRegistrationTaskError::InternalFailure(ref cause) => write!(f, "{}", cause),
19758            StopThingRegistrationTaskError::InvalidRequest(ref cause) => write!(f, "{}", cause),
19759            StopThingRegistrationTaskError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
19760            StopThingRegistrationTaskError::Throttling(ref cause) => write!(f, "{}", cause),
19761            StopThingRegistrationTaskError::Unauthorized(ref cause) => write!(f, "{}", cause),
19762        }
19763    }
19764}
19765impl Error for StopThingRegistrationTaskError {}
19766/// Errors returned by TagResource
19767#[derive(Debug, PartialEq)]
19768pub enum TagResourceError {
19769    /// <p>An unexpected error has occurred.</p>
19770    InternalFailure(String),
19771    /// <p>The request is not valid.</p>
19772    InvalidRequest(String),
19773    /// <p>A limit has been exceeded.</p>
19774    LimitExceeded(String),
19775    /// <p>The specified resource does not exist.</p>
19776    ResourceNotFound(String),
19777    /// <p>The rate exceeds the limit.</p>
19778    Throttling(String),
19779}
19780
19781impl TagResourceError {
19782    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<TagResourceError> {
19783        if let Some(err) = proto::json::Error::parse_rest(&res) {
19784            match err.typ.as_str() {
19785                "InternalFailureException" => {
19786                    return RusotoError::Service(TagResourceError::InternalFailure(err.msg))
19787                }
19788                "InvalidRequestException" => {
19789                    return RusotoError::Service(TagResourceError::InvalidRequest(err.msg))
19790                }
19791                "LimitExceededException" => {
19792                    return RusotoError::Service(TagResourceError::LimitExceeded(err.msg))
19793                }
19794                "ResourceNotFoundException" => {
19795                    return RusotoError::Service(TagResourceError::ResourceNotFound(err.msg))
19796                }
19797                "ThrottlingException" => {
19798                    return RusotoError::Service(TagResourceError::Throttling(err.msg))
19799                }
19800                "ValidationException" => return RusotoError::Validation(err.msg),
19801                _ => {}
19802            }
19803        }
19804        RusotoError::Unknown(res)
19805    }
19806}
19807impl fmt::Display for TagResourceError {
19808    #[allow(unused_variables)]
19809    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
19810        match *self {
19811            TagResourceError::InternalFailure(ref cause) => write!(f, "{}", cause),
19812            TagResourceError::InvalidRequest(ref cause) => write!(f, "{}", cause),
19813            TagResourceError::LimitExceeded(ref cause) => write!(f, "{}", cause),
19814            TagResourceError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
19815            TagResourceError::Throttling(ref cause) => write!(f, "{}", cause),
19816        }
19817    }
19818}
19819impl Error for TagResourceError {}
19820/// Errors returned by TestAuthorization
19821#[derive(Debug, PartialEq)]
19822pub enum TestAuthorizationError {
19823    /// <p>An unexpected error has occurred.</p>
19824    InternalFailure(String),
19825    /// <p>The request is not valid.</p>
19826    InvalidRequest(String),
19827    /// <p>A limit has been exceeded.</p>
19828    LimitExceeded(String),
19829    /// <p>The specified resource does not exist.</p>
19830    ResourceNotFound(String),
19831    /// <p>The service is temporarily unavailable.</p>
19832    ServiceUnavailable(String),
19833    /// <p>The rate exceeds the limit.</p>
19834    Throttling(String),
19835    /// <p>You are not authorized to perform this operation.</p>
19836    Unauthorized(String),
19837}
19838
19839impl TestAuthorizationError {
19840    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<TestAuthorizationError> {
19841        if let Some(err) = proto::json::Error::parse_rest(&res) {
19842            match err.typ.as_str() {
19843                "InternalFailureException" => {
19844                    return RusotoError::Service(TestAuthorizationError::InternalFailure(err.msg))
19845                }
19846                "InvalidRequestException" => {
19847                    return RusotoError::Service(TestAuthorizationError::InvalidRequest(err.msg))
19848                }
19849                "LimitExceededException" => {
19850                    return RusotoError::Service(TestAuthorizationError::LimitExceeded(err.msg))
19851                }
19852                "ResourceNotFoundException" => {
19853                    return RusotoError::Service(TestAuthorizationError::ResourceNotFound(err.msg))
19854                }
19855                "ServiceUnavailableException" => {
19856                    return RusotoError::Service(TestAuthorizationError::ServiceUnavailable(
19857                        err.msg,
19858                    ))
19859                }
19860                "ThrottlingException" => {
19861                    return RusotoError::Service(TestAuthorizationError::Throttling(err.msg))
19862                }
19863                "UnauthorizedException" => {
19864                    return RusotoError::Service(TestAuthorizationError::Unauthorized(err.msg))
19865                }
19866                "ValidationException" => return RusotoError::Validation(err.msg),
19867                _ => {}
19868            }
19869        }
19870        RusotoError::Unknown(res)
19871    }
19872}
19873impl fmt::Display for TestAuthorizationError {
19874    #[allow(unused_variables)]
19875    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
19876        match *self {
19877            TestAuthorizationError::InternalFailure(ref cause) => write!(f, "{}", cause),
19878            TestAuthorizationError::InvalidRequest(ref cause) => write!(f, "{}", cause),
19879            TestAuthorizationError::LimitExceeded(ref cause) => write!(f, "{}", cause),
19880            TestAuthorizationError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
19881            TestAuthorizationError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
19882            TestAuthorizationError::Throttling(ref cause) => write!(f, "{}", cause),
19883            TestAuthorizationError::Unauthorized(ref cause) => write!(f, "{}", cause),
19884        }
19885    }
19886}
19887impl Error for TestAuthorizationError {}
19888/// Errors returned by TestInvokeAuthorizer
19889#[derive(Debug, PartialEq)]
19890pub enum TestInvokeAuthorizerError {
19891    /// <p>An unexpected error has occurred.</p>
19892    InternalFailure(String),
19893    /// <p>The request is not valid.</p>
19894    InvalidRequest(String),
19895    /// <p>The response is invalid.</p>
19896    InvalidResponse(String),
19897    /// <p>The specified resource does not exist.</p>
19898    ResourceNotFound(String),
19899    /// <p>The service is temporarily unavailable.</p>
19900    ServiceUnavailable(String),
19901    /// <p>The rate exceeds the limit.</p>
19902    Throttling(String),
19903    /// <p>You are not authorized to perform this operation.</p>
19904    Unauthorized(String),
19905}
19906
19907impl TestInvokeAuthorizerError {
19908    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<TestInvokeAuthorizerError> {
19909        if let Some(err) = proto::json::Error::parse_rest(&res) {
19910            match err.typ.as_str() {
19911                "InternalFailureException" => {
19912                    return RusotoError::Service(TestInvokeAuthorizerError::InternalFailure(
19913                        err.msg,
19914                    ))
19915                }
19916                "InvalidRequestException" => {
19917                    return RusotoError::Service(TestInvokeAuthorizerError::InvalidRequest(err.msg))
19918                }
19919                "InvalidResponseException" => {
19920                    return RusotoError::Service(TestInvokeAuthorizerError::InvalidResponse(
19921                        err.msg,
19922                    ))
19923                }
19924                "ResourceNotFoundException" => {
19925                    return RusotoError::Service(TestInvokeAuthorizerError::ResourceNotFound(
19926                        err.msg,
19927                    ))
19928                }
19929                "ServiceUnavailableException" => {
19930                    return RusotoError::Service(TestInvokeAuthorizerError::ServiceUnavailable(
19931                        err.msg,
19932                    ))
19933                }
19934                "ThrottlingException" => {
19935                    return RusotoError::Service(TestInvokeAuthorizerError::Throttling(err.msg))
19936                }
19937                "UnauthorizedException" => {
19938                    return RusotoError::Service(TestInvokeAuthorizerError::Unauthorized(err.msg))
19939                }
19940                "ValidationException" => return RusotoError::Validation(err.msg),
19941                _ => {}
19942            }
19943        }
19944        RusotoError::Unknown(res)
19945    }
19946}
19947impl fmt::Display for TestInvokeAuthorizerError {
19948    #[allow(unused_variables)]
19949    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
19950        match *self {
19951            TestInvokeAuthorizerError::InternalFailure(ref cause) => write!(f, "{}", cause),
19952            TestInvokeAuthorizerError::InvalidRequest(ref cause) => write!(f, "{}", cause),
19953            TestInvokeAuthorizerError::InvalidResponse(ref cause) => write!(f, "{}", cause),
19954            TestInvokeAuthorizerError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
19955            TestInvokeAuthorizerError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
19956            TestInvokeAuthorizerError::Throttling(ref cause) => write!(f, "{}", cause),
19957            TestInvokeAuthorizerError::Unauthorized(ref cause) => write!(f, "{}", cause),
19958        }
19959    }
19960}
19961impl Error for TestInvokeAuthorizerError {}
19962/// Errors returned by TransferCertificate
19963#[derive(Debug, PartialEq)]
19964pub enum TransferCertificateError {
19965    /// <p>The certificate operation is not allowed.</p>
19966    CertificateState(String),
19967    /// <p>An unexpected error has occurred.</p>
19968    InternalFailure(String),
19969    /// <p>The request is not valid.</p>
19970    InvalidRequest(String),
19971    /// <p>The specified resource does not exist.</p>
19972    ResourceNotFound(String),
19973    /// <p>The service is temporarily unavailable.</p>
19974    ServiceUnavailable(String),
19975    /// <p>The rate exceeds the limit.</p>
19976    Throttling(String),
19977    /// <p>You can't transfer the certificate because authorization policies are still attached.</p>
19978    TransferConflict(String),
19979    /// <p>You are not authorized to perform this operation.</p>
19980    Unauthorized(String),
19981}
19982
19983impl TransferCertificateError {
19984    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<TransferCertificateError> {
19985        if let Some(err) = proto::json::Error::parse_rest(&res) {
19986            match err.typ.as_str() {
19987                "CertificateStateException" => {
19988                    return RusotoError::Service(TransferCertificateError::CertificateState(
19989                        err.msg,
19990                    ))
19991                }
19992                "InternalFailureException" => {
19993                    return RusotoError::Service(TransferCertificateError::InternalFailure(err.msg))
19994                }
19995                "InvalidRequestException" => {
19996                    return RusotoError::Service(TransferCertificateError::InvalidRequest(err.msg))
19997                }
19998                "ResourceNotFoundException" => {
19999                    return RusotoError::Service(TransferCertificateError::ResourceNotFound(
20000                        err.msg,
20001                    ))
20002                }
20003                "ServiceUnavailableException" => {
20004                    return RusotoError::Service(TransferCertificateError::ServiceUnavailable(
20005                        err.msg,
20006                    ))
20007                }
20008                "ThrottlingException" => {
20009                    return RusotoError::Service(TransferCertificateError::Throttling(err.msg))
20010                }
20011                "TransferConflictException" => {
20012                    return RusotoError::Service(TransferCertificateError::TransferConflict(
20013                        err.msg,
20014                    ))
20015                }
20016                "UnauthorizedException" => {
20017                    return RusotoError::Service(TransferCertificateError::Unauthorized(err.msg))
20018                }
20019                "ValidationException" => return RusotoError::Validation(err.msg),
20020                _ => {}
20021            }
20022        }
20023        RusotoError::Unknown(res)
20024    }
20025}
20026impl fmt::Display for TransferCertificateError {
20027    #[allow(unused_variables)]
20028    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
20029        match *self {
20030            TransferCertificateError::CertificateState(ref cause) => write!(f, "{}", cause),
20031            TransferCertificateError::InternalFailure(ref cause) => write!(f, "{}", cause),
20032            TransferCertificateError::InvalidRequest(ref cause) => write!(f, "{}", cause),
20033            TransferCertificateError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
20034            TransferCertificateError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
20035            TransferCertificateError::Throttling(ref cause) => write!(f, "{}", cause),
20036            TransferCertificateError::TransferConflict(ref cause) => write!(f, "{}", cause),
20037            TransferCertificateError::Unauthorized(ref cause) => write!(f, "{}", cause),
20038        }
20039    }
20040}
20041impl Error for TransferCertificateError {}
20042/// Errors returned by UntagResource
20043#[derive(Debug, PartialEq)]
20044pub enum UntagResourceError {
20045    /// <p>An unexpected error has occurred.</p>
20046    InternalFailure(String),
20047    /// <p>The request is not valid.</p>
20048    InvalidRequest(String),
20049    /// <p>The specified resource does not exist.</p>
20050    ResourceNotFound(String),
20051    /// <p>The rate exceeds the limit.</p>
20052    Throttling(String),
20053}
20054
20055impl UntagResourceError {
20056    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UntagResourceError> {
20057        if let Some(err) = proto::json::Error::parse_rest(&res) {
20058            match err.typ.as_str() {
20059                "InternalFailureException" => {
20060                    return RusotoError::Service(UntagResourceError::InternalFailure(err.msg))
20061                }
20062                "InvalidRequestException" => {
20063                    return RusotoError::Service(UntagResourceError::InvalidRequest(err.msg))
20064                }
20065                "ResourceNotFoundException" => {
20066                    return RusotoError::Service(UntagResourceError::ResourceNotFound(err.msg))
20067                }
20068                "ThrottlingException" => {
20069                    return RusotoError::Service(UntagResourceError::Throttling(err.msg))
20070                }
20071                "ValidationException" => return RusotoError::Validation(err.msg),
20072                _ => {}
20073            }
20074        }
20075        RusotoError::Unknown(res)
20076    }
20077}
20078impl fmt::Display for UntagResourceError {
20079    #[allow(unused_variables)]
20080    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
20081        match *self {
20082            UntagResourceError::InternalFailure(ref cause) => write!(f, "{}", cause),
20083            UntagResourceError::InvalidRequest(ref cause) => write!(f, "{}", cause),
20084            UntagResourceError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
20085            UntagResourceError::Throttling(ref cause) => write!(f, "{}", cause),
20086        }
20087    }
20088}
20089impl Error for UntagResourceError {}
20090/// Errors returned by UpdateAccountAuditConfiguration
20091#[derive(Debug, PartialEq)]
20092pub enum UpdateAccountAuditConfigurationError {
20093    /// <p>An unexpected error has occurred.</p>
20094    InternalFailure(String),
20095    /// <p>The request is not valid.</p>
20096    InvalidRequest(String),
20097    /// <p>The rate exceeds the limit.</p>
20098    Throttling(String),
20099}
20100
20101impl UpdateAccountAuditConfigurationError {
20102    pub fn from_response(
20103        res: BufferedHttpResponse,
20104    ) -> RusotoError<UpdateAccountAuditConfigurationError> {
20105        if let Some(err) = proto::json::Error::parse_rest(&res) {
20106            match err.typ.as_str() {
20107                "InternalFailureException" => {
20108                    return RusotoError::Service(
20109                        UpdateAccountAuditConfigurationError::InternalFailure(err.msg),
20110                    )
20111                }
20112                "InvalidRequestException" => {
20113                    return RusotoError::Service(
20114                        UpdateAccountAuditConfigurationError::InvalidRequest(err.msg),
20115                    )
20116                }
20117                "ThrottlingException" => {
20118                    return RusotoError::Service(UpdateAccountAuditConfigurationError::Throttling(
20119                        err.msg,
20120                    ))
20121                }
20122                "ValidationException" => return RusotoError::Validation(err.msg),
20123                _ => {}
20124            }
20125        }
20126        RusotoError::Unknown(res)
20127    }
20128}
20129impl fmt::Display for UpdateAccountAuditConfigurationError {
20130    #[allow(unused_variables)]
20131    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
20132        match *self {
20133            UpdateAccountAuditConfigurationError::InternalFailure(ref cause) => {
20134                write!(f, "{}", cause)
20135            }
20136            UpdateAccountAuditConfigurationError::InvalidRequest(ref cause) => {
20137                write!(f, "{}", cause)
20138            }
20139            UpdateAccountAuditConfigurationError::Throttling(ref cause) => write!(f, "{}", cause),
20140        }
20141    }
20142}
20143impl Error for UpdateAccountAuditConfigurationError {}
20144/// Errors returned by UpdateAuthorizer
20145#[derive(Debug, PartialEq)]
20146pub enum UpdateAuthorizerError {
20147    /// <p>An unexpected error has occurred.</p>
20148    InternalFailure(String),
20149    /// <p>The request is not valid.</p>
20150    InvalidRequest(String),
20151    /// <p>A limit has been exceeded.</p>
20152    LimitExceeded(String),
20153    /// <p>The specified resource does not exist.</p>
20154    ResourceNotFound(String),
20155    /// <p>The service is temporarily unavailable.</p>
20156    ServiceUnavailable(String),
20157    /// <p>The rate exceeds the limit.</p>
20158    Throttling(String),
20159    /// <p>You are not authorized to perform this operation.</p>
20160    Unauthorized(String),
20161}
20162
20163impl UpdateAuthorizerError {
20164    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateAuthorizerError> {
20165        if let Some(err) = proto::json::Error::parse_rest(&res) {
20166            match err.typ.as_str() {
20167                "InternalFailureException" => {
20168                    return RusotoError::Service(UpdateAuthorizerError::InternalFailure(err.msg))
20169                }
20170                "InvalidRequestException" => {
20171                    return RusotoError::Service(UpdateAuthorizerError::InvalidRequest(err.msg))
20172                }
20173                "LimitExceededException" => {
20174                    return RusotoError::Service(UpdateAuthorizerError::LimitExceeded(err.msg))
20175                }
20176                "ResourceNotFoundException" => {
20177                    return RusotoError::Service(UpdateAuthorizerError::ResourceNotFound(err.msg))
20178                }
20179                "ServiceUnavailableException" => {
20180                    return RusotoError::Service(UpdateAuthorizerError::ServiceUnavailable(err.msg))
20181                }
20182                "ThrottlingException" => {
20183                    return RusotoError::Service(UpdateAuthorizerError::Throttling(err.msg))
20184                }
20185                "UnauthorizedException" => {
20186                    return RusotoError::Service(UpdateAuthorizerError::Unauthorized(err.msg))
20187                }
20188                "ValidationException" => return RusotoError::Validation(err.msg),
20189                _ => {}
20190            }
20191        }
20192        RusotoError::Unknown(res)
20193    }
20194}
20195impl fmt::Display for UpdateAuthorizerError {
20196    #[allow(unused_variables)]
20197    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
20198        match *self {
20199            UpdateAuthorizerError::InternalFailure(ref cause) => write!(f, "{}", cause),
20200            UpdateAuthorizerError::InvalidRequest(ref cause) => write!(f, "{}", cause),
20201            UpdateAuthorizerError::LimitExceeded(ref cause) => write!(f, "{}", cause),
20202            UpdateAuthorizerError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
20203            UpdateAuthorizerError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
20204            UpdateAuthorizerError::Throttling(ref cause) => write!(f, "{}", cause),
20205            UpdateAuthorizerError::Unauthorized(ref cause) => write!(f, "{}", cause),
20206        }
20207    }
20208}
20209impl Error for UpdateAuthorizerError {}
20210/// Errors returned by UpdateBillingGroup
20211#[derive(Debug, PartialEq)]
20212pub enum UpdateBillingGroupError {
20213    /// <p>An unexpected error has occurred.</p>
20214    InternalFailure(String),
20215    /// <p>The request is not valid.</p>
20216    InvalidRequest(String),
20217    /// <p>The specified resource does not exist.</p>
20218    ResourceNotFound(String),
20219    /// <p>The rate exceeds the limit.</p>
20220    Throttling(String),
20221    /// <p>An exception thrown when the version of an entity specified with the <code>expectedVersion</code> parameter does not match the latest version in the system.</p>
20222    VersionConflict(String),
20223}
20224
20225impl UpdateBillingGroupError {
20226    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateBillingGroupError> {
20227        if let Some(err) = proto::json::Error::parse_rest(&res) {
20228            match err.typ.as_str() {
20229                "InternalFailureException" => {
20230                    return RusotoError::Service(UpdateBillingGroupError::InternalFailure(err.msg))
20231                }
20232                "InvalidRequestException" => {
20233                    return RusotoError::Service(UpdateBillingGroupError::InvalidRequest(err.msg))
20234                }
20235                "ResourceNotFoundException" => {
20236                    return RusotoError::Service(UpdateBillingGroupError::ResourceNotFound(err.msg))
20237                }
20238                "ThrottlingException" => {
20239                    return RusotoError::Service(UpdateBillingGroupError::Throttling(err.msg))
20240                }
20241                "VersionConflictException" => {
20242                    return RusotoError::Service(UpdateBillingGroupError::VersionConflict(err.msg))
20243                }
20244                "ValidationException" => return RusotoError::Validation(err.msg),
20245                _ => {}
20246            }
20247        }
20248        RusotoError::Unknown(res)
20249    }
20250}
20251impl fmt::Display for UpdateBillingGroupError {
20252    #[allow(unused_variables)]
20253    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
20254        match *self {
20255            UpdateBillingGroupError::InternalFailure(ref cause) => write!(f, "{}", cause),
20256            UpdateBillingGroupError::InvalidRequest(ref cause) => write!(f, "{}", cause),
20257            UpdateBillingGroupError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
20258            UpdateBillingGroupError::Throttling(ref cause) => write!(f, "{}", cause),
20259            UpdateBillingGroupError::VersionConflict(ref cause) => write!(f, "{}", cause),
20260        }
20261    }
20262}
20263impl Error for UpdateBillingGroupError {}
20264/// Errors returned by UpdateCACertificate
20265#[derive(Debug, PartialEq)]
20266pub enum UpdateCACertificateError {
20267    /// <p>An unexpected error has occurred.</p>
20268    InternalFailure(String),
20269    /// <p>The request is not valid.</p>
20270    InvalidRequest(String),
20271    /// <p>The specified resource does not exist.</p>
20272    ResourceNotFound(String),
20273    /// <p>The service is temporarily unavailable.</p>
20274    ServiceUnavailable(String),
20275    /// <p>The rate exceeds the limit.</p>
20276    Throttling(String),
20277    /// <p>You are not authorized to perform this operation.</p>
20278    Unauthorized(String),
20279}
20280
20281impl UpdateCACertificateError {
20282    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateCACertificateError> {
20283        if let Some(err) = proto::json::Error::parse_rest(&res) {
20284            match err.typ.as_str() {
20285                "InternalFailureException" => {
20286                    return RusotoError::Service(UpdateCACertificateError::InternalFailure(err.msg))
20287                }
20288                "InvalidRequestException" => {
20289                    return RusotoError::Service(UpdateCACertificateError::InvalidRequest(err.msg))
20290                }
20291                "ResourceNotFoundException" => {
20292                    return RusotoError::Service(UpdateCACertificateError::ResourceNotFound(
20293                        err.msg,
20294                    ))
20295                }
20296                "ServiceUnavailableException" => {
20297                    return RusotoError::Service(UpdateCACertificateError::ServiceUnavailable(
20298                        err.msg,
20299                    ))
20300                }
20301                "ThrottlingException" => {
20302                    return RusotoError::Service(UpdateCACertificateError::Throttling(err.msg))
20303                }
20304                "UnauthorizedException" => {
20305                    return RusotoError::Service(UpdateCACertificateError::Unauthorized(err.msg))
20306                }
20307                "ValidationException" => return RusotoError::Validation(err.msg),
20308                _ => {}
20309            }
20310        }
20311        RusotoError::Unknown(res)
20312    }
20313}
20314impl fmt::Display for UpdateCACertificateError {
20315    #[allow(unused_variables)]
20316    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
20317        match *self {
20318            UpdateCACertificateError::InternalFailure(ref cause) => write!(f, "{}", cause),
20319            UpdateCACertificateError::InvalidRequest(ref cause) => write!(f, "{}", cause),
20320            UpdateCACertificateError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
20321            UpdateCACertificateError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
20322            UpdateCACertificateError::Throttling(ref cause) => write!(f, "{}", cause),
20323            UpdateCACertificateError::Unauthorized(ref cause) => write!(f, "{}", cause),
20324        }
20325    }
20326}
20327impl Error for UpdateCACertificateError {}
20328/// Errors returned by UpdateCertificate
20329#[derive(Debug, PartialEq)]
20330pub enum UpdateCertificateError {
20331    /// <p>The certificate operation is not allowed.</p>
20332    CertificateState(String),
20333    /// <p>An unexpected error has occurred.</p>
20334    InternalFailure(String),
20335    /// <p>The request is not valid.</p>
20336    InvalidRequest(String),
20337    /// <p>The specified resource does not exist.</p>
20338    ResourceNotFound(String),
20339    /// <p>The service is temporarily unavailable.</p>
20340    ServiceUnavailable(String),
20341    /// <p>The rate exceeds the limit.</p>
20342    Throttling(String),
20343    /// <p>You are not authorized to perform this operation.</p>
20344    Unauthorized(String),
20345}
20346
20347impl UpdateCertificateError {
20348    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateCertificateError> {
20349        if let Some(err) = proto::json::Error::parse_rest(&res) {
20350            match err.typ.as_str() {
20351                "CertificateStateException" => {
20352                    return RusotoError::Service(UpdateCertificateError::CertificateState(err.msg))
20353                }
20354                "InternalFailureException" => {
20355                    return RusotoError::Service(UpdateCertificateError::InternalFailure(err.msg))
20356                }
20357                "InvalidRequestException" => {
20358                    return RusotoError::Service(UpdateCertificateError::InvalidRequest(err.msg))
20359                }
20360                "ResourceNotFoundException" => {
20361                    return RusotoError::Service(UpdateCertificateError::ResourceNotFound(err.msg))
20362                }
20363                "ServiceUnavailableException" => {
20364                    return RusotoError::Service(UpdateCertificateError::ServiceUnavailable(
20365                        err.msg,
20366                    ))
20367                }
20368                "ThrottlingException" => {
20369                    return RusotoError::Service(UpdateCertificateError::Throttling(err.msg))
20370                }
20371                "UnauthorizedException" => {
20372                    return RusotoError::Service(UpdateCertificateError::Unauthorized(err.msg))
20373                }
20374                "ValidationException" => return RusotoError::Validation(err.msg),
20375                _ => {}
20376            }
20377        }
20378        RusotoError::Unknown(res)
20379    }
20380}
20381impl fmt::Display for UpdateCertificateError {
20382    #[allow(unused_variables)]
20383    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
20384        match *self {
20385            UpdateCertificateError::CertificateState(ref cause) => write!(f, "{}", cause),
20386            UpdateCertificateError::InternalFailure(ref cause) => write!(f, "{}", cause),
20387            UpdateCertificateError::InvalidRequest(ref cause) => write!(f, "{}", cause),
20388            UpdateCertificateError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
20389            UpdateCertificateError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
20390            UpdateCertificateError::Throttling(ref cause) => write!(f, "{}", cause),
20391            UpdateCertificateError::Unauthorized(ref cause) => write!(f, "{}", cause),
20392        }
20393    }
20394}
20395impl Error for UpdateCertificateError {}
20396/// Errors returned by UpdateDimension
20397#[derive(Debug, PartialEq)]
20398pub enum UpdateDimensionError {
20399    /// <p>An unexpected error has occurred.</p>
20400    InternalFailure(String),
20401    /// <p>The request is not valid.</p>
20402    InvalidRequest(String),
20403    /// <p>The specified resource does not exist.</p>
20404    ResourceNotFound(String),
20405    /// <p>The rate exceeds the limit.</p>
20406    Throttling(String),
20407}
20408
20409impl UpdateDimensionError {
20410    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateDimensionError> {
20411        if let Some(err) = proto::json::Error::parse_rest(&res) {
20412            match err.typ.as_str() {
20413                "InternalFailureException" => {
20414                    return RusotoError::Service(UpdateDimensionError::InternalFailure(err.msg))
20415                }
20416                "InvalidRequestException" => {
20417                    return RusotoError::Service(UpdateDimensionError::InvalidRequest(err.msg))
20418                }
20419                "ResourceNotFoundException" => {
20420                    return RusotoError::Service(UpdateDimensionError::ResourceNotFound(err.msg))
20421                }
20422                "ThrottlingException" => {
20423                    return RusotoError::Service(UpdateDimensionError::Throttling(err.msg))
20424                }
20425                "ValidationException" => return RusotoError::Validation(err.msg),
20426                _ => {}
20427            }
20428        }
20429        RusotoError::Unknown(res)
20430    }
20431}
20432impl fmt::Display for UpdateDimensionError {
20433    #[allow(unused_variables)]
20434    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
20435        match *self {
20436            UpdateDimensionError::InternalFailure(ref cause) => write!(f, "{}", cause),
20437            UpdateDimensionError::InvalidRequest(ref cause) => write!(f, "{}", cause),
20438            UpdateDimensionError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
20439            UpdateDimensionError::Throttling(ref cause) => write!(f, "{}", cause),
20440        }
20441    }
20442}
20443impl Error for UpdateDimensionError {}
20444/// Errors returned by UpdateDomainConfiguration
20445#[derive(Debug, PartialEq)]
20446pub enum UpdateDomainConfigurationError {
20447    /// <p>The certificate is invalid.</p>
20448    CertificateValidation(String),
20449    /// <p>An unexpected error has occurred.</p>
20450    InternalFailure(String),
20451    /// <p>The request is not valid.</p>
20452    InvalidRequest(String),
20453    /// <p>The specified resource does not exist.</p>
20454    ResourceNotFound(String),
20455    /// <p>The service is temporarily unavailable.</p>
20456    ServiceUnavailable(String),
20457    /// <p>The rate exceeds the limit.</p>
20458    Throttling(String),
20459    /// <p>You are not authorized to perform this operation.</p>
20460    Unauthorized(String),
20461}
20462
20463impl UpdateDomainConfigurationError {
20464    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateDomainConfigurationError> {
20465        if let Some(err) = proto::json::Error::parse_rest(&res) {
20466            match err.typ.as_str() {
20467                "CertificateValidationException" => {
20468                    return RusotoError::Service(
20469                        UpdateDomainConfigurationError::CertificateValidation(err.msg),
20470                    )
20471                }
20472                "InternalFailureException" => {
20473                    return RusotoError::Service(UpdateDomainConfigurationError::InternalFailure(
20474                        err.msg,
20475                    ))
20476                }
20477                "InvalidRequestException" => {
20478                    return RusotoError::Service(UpdateDomainConfigurationError::InvalidRequest(
20479                        err.msg,
20480                    ))
20481                }
20482                "ResourceNotFoundException" => {
20483                    return RusotoError::Service(UpdateDomainConfigurationError::ResourceNotFound(
20484                        err.msg,
20485                    ))
20486                }
20487                "ServiceUnavailableException" => {
20488                    return RusotoError::Service(
20489                        UpdateDomainConfigurationError::ServiceUnavailable(err.msg),
20490                    )
20491                }
20492                "ThrottlingException" => {
20493                    return RusotoError::Service(UpdateDomainConfigurationError::Throttling(
20494                        err.msg,
20495                    ))
20496                }
20497                "UnauthorizedException" => {
20498                    return RusotoError::Service(UpdateDomainConfigurationError::Unauthorized(
20499                        err.msg,
20500                    ))
20501                }
20502                "ValidationException" => return RusotoError::Validation(err.msg),
20503                _ => {}
20504            }
20505        }
20506        RusotoError::Unknown(res)
20507    }
20508}
20509impl fmt::Display for UpdateDomainConfigurationError {
20510    #[allow(unused_variables)]
20511    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
20512        match *self {
20513            UpdateDomainConfigurationError::CertificateValidation(ref cause) => {
20514                write!(f, "{}", cause)
20515            }
20516            UpdateDomainConfigurationError::InternalFailure(ref cause) => write!(f, "{}", cause),
20517            UpdateDomainConfigurationError::InvalidRequest(ref cause) => write!(f, "{}", cause),
20518            UpdateDomainConfigurationError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
20519            UpdateDomainConfigurationError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
20520            UpdateDomainConfigurationError::Throttling(ref cause) => write!(f, "{}", cause),
20521            UpdateDomainConfigurationError::Unauthorized(ref cause) => write!(f, "{}", cause),
20522        }
20523    }
20524}
20525impl Error for UpdateDomainConfigurationError {}
20526/// Errors returned by UpdateDynamicThingGroup
20527#[derive(Debug, PartialEq)]
20528pub enum UpdateDynamicThingGroupError {
20529    /// <p>An unexpected error has occurred.</p>
20530    InternalFailure(String),
20531    /// <p>The query is invalid.</p>
20532    InvalidQuery(String),
20533    /// <p>The request is not valid.</p>
20534    InvalidRequest(String),
20535    /// <p>The specified resource does not exist.</p>
20536    ResourceNotFound(String),
20537    /// <p>The rate exceeds the limit.</p>
20538    Throttling(String),
20539    /// <p>An exception thrown when the version of an entity specified with the <code>expectedVersion</code> parameter does not match the latest version in the system.</p>
20540    VersionConflict(String),
20541}
20542
20543impl UpdateDynamicThingGroupError {
20544    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateDynamicThingGroupError> {
20545        if let Some(err) = proto::json::Error::parse_rest(&res) {
20546            match err.typ.as_str() {
20547                "InternalFailureException" => {
20548                    return RusotoError::Service(UpdateDynamicThingGroupError::InternalFailure(
20549                        err.msg,
20550                    ))
20551                }
20552                "InvalidQueryException" => {
20553                    return RusotoError::Service(UpdateDynamicThingGroupError::InvalidQuery(
20554                        err.msg,
20555                    ))
20556                }
20557                "InvalidRequestException" => {
20558                    return RusotoError::Service(UpdateDynamicThingGroupError::InvalidRequest(
20559                        err.msg,
20560                    ))
20561                }
20562                "ResourceNotFoundException" => {
20563                    return RusotoError::Service(UpdateDynamicThingGroupError::ResourceNotFound(
20564                        err.msg,
20565                    ))
20566                }
20567                "ThrottlingException" => {
20568                    return RusotoError::Service(UpdateDynamicThingGroupError::Throttling(err.msg))
20569                }
20570                "VersionConflictException" => {
20571                    return RusotoError::Service(UpdateDynamicThingGroupError::VersionConflict(
20572                        err.msg,
20573                    ))
20574                }
20575                "ValidationException" => return RusotoError::Validation(err.msg),
20576                _ => {}
20577            }
20578        }
20579        RusotoError::Unknown(res)
20580    }
20581}
20582impl fmt::Display for UpdateDynamicThingGroupError {
20583    #[allow(unused_variables)]
20584    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
20585        match *self {
20586            UpdateDynamicThingGroupError::InternalFailure(ref cause) => write!(f, "{}", cause),
20587            UpdateDynamicThingGroupError::InvalidQuery(ref cause) => write!(f, "{}", cause),
20588            UpdateDynamicThingGroupError::InvalidRequest(ref cause) => write!(f, "{}", cause),
20589            UpdateDynamicThingGroupError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
20590            UpdateDynamicThingGroupError::Throttling(ref cause) => write!(f, "{}", cause),
20591            UpdateDynamicThingGroupError::VersionConflict(ref cause) => write!(f, "{}", cause),
20592        }
20593    }
20594}
20595impl Error for UpdateDynamicThingGroupError {}
20596/// Errors returned by UpdateEventConfigurations
20597#[derive(Debug, PartialEq)]
20598pub enum UpdateEventConfigurationsError {
20599    /// <p>An unexpected error has occurred.</p>
20600    InternalFailure(String),
20601    /// <p>The request is not valid.</p>
20602    InvalidRequest(String),
20603    /// <p>The rate exceeds the limit.</p>
20604    Throttling(String),
20605}
20606
20607impl UpdateEventConfigurationsError {
20608    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateEventConfigurationsError> {
20609        if let Some(err) = proto::json::Error::parse_rest(&res) {
20610            match err.typ.as_str() {
20611                "InternalFailureException" => {
20612                    return RusotoError::Service(UpdateEventConfigurationsError::InternalFailure(
20613                        err.msg,
20614                    ))
20615                }
20616                "InvalidRequestException" => {
20617                    return RusotoError::Service(UpdateEventConfigurationsError::InvalidRequest(
20618                        err.msg,
20619                    ))
20620                }
20621                "ThrottlingException" => {
20622                    return RusotoError::Service(UpdateEventConfigurationsError::Throttling(
20623                        err.msg,
20624                    ))
20625                }
20626                "ValidationException" => return RusotoError::Validation(err.msg),
20627                _ => {}
20628            }
20629        }
20630        RusotoError::Unknown(res)
20631    }
20632}
20633impl fmt::Display for UpdateEventConfigurationsError {
20634    #[allow(unused_variables)]
20635    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
20636        match *self {
20637            UpdateEventConfigurationsError::InternalFailure(ref cause) => write!(f, "{}", cause),
20638            UpdateEventConfigurationsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
20639            UpdateEventConfigurationsError::Throttling(ref cause) => write!(f, "{}", cause),
20640        }
20641    }
20642}
20643impl Error for UpdateEventConfigurationsError {}
20644/// Errors returned by UpdateIndexingConfiguration
20645#[derive(Debug, PartialEq)]
20646pub enum UpdateIndexingConfigurationError {
20647    /// <p>An unexpected error has occurred.</p>
20648    InternalFailure(String),
20649    /// <p>The request is not valid.</p>
20650    InvalidRequest(String),
20651    /// <p>The service is temporarily unavailable.</p>
20652    ServiceUnavailable(String),
20653    /// <p>The rate exceeds the limit.</p>
20654    Throttling(String),
20655    /// <p>You are not authorized to perform this operation.</p>
20656    Unauthorized(String),
20657}
20658
20659impl UpdateIndexingConfigurationError {
20660    pub fn from_response(
20661        res: BufferedHttpResponse,
20662    ) -> RusotoError<UpdateIndexingConfigurationError> {
20663        if let Some(err) = proto::json::Error::parse_rest(&res) {
20664            match err.typ.as_str() {
20665                "InternalFailureException" => {
20666                    return RusotoError::Service(UpdateIndexingConfigurationError::InternalFailure(
20667                        err.msg,
20668                    ))
20669                }
20670                "InvalidRequestException" => {
20671                    return RusotoError::Service(UpdateIndexingConfigurationError::InvalidRequest(
20672                        err.msg,
20673                    ))
20674                }
20675                "ServiceUnavailableException" => {
20676                    return RusotoError::Service(
20677                        UpdateIndexingConfigurationError::ServiceUnavailable(err.msg),
20678                    )
20679                }
20680                "ThrottlingException" => {
20681                    return RusotoError::Service(UpdateIndexingConfigurationError::Throttling(
20682                        err.msg,
20683                    ))
20684                }
20685                "UnauthorizedException" => {
20686                    return RusotoError::Service(UpdateIndexingConfigurationError::Unauthorized(
20687                        err.msg,
20688                    ))
20689                }
20690                "ValidationException" => return RusotoError::Validation(err.msg),
20691                _ => {}
20692            }
20693        }
20694        RusotoError::Unknown(res)
20695    }
20696}
20697impl fmt::Display for UpdateIndexingConfigurationError {
20698    #[allow(unused_variables)]
20699    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
20700        match *self {
20701            UpdateIndexingConfigurationError::InternalFailure(ref cause) => write!(f, "{}", cause),
20702            UpdateIndexingConfigurationError::InvalidRequest(ref cause) => write!(f, "{}", cause),
20703            UpdateIndexingConfigurationError::ServiceUnavailable(ref cause) => {
20704                write!(f, "{}", cause)
20705            }
20706            UpdateIndexingConfigurationError::Throttling(ref cause) => write!(f, "{}", cause),
20707            UpdateIndexingConfigurationError::Unauthorized(ref cause) => write!(f, "{}", cause),
20708        }
20709    }
20710}
20711impl Error for UpdateIndexingConfigurationError {}
20712/// Errors returned by UpdateJob
20713#[derive(Debug, PartialEq)]
20714pub enum UpdateJobError {
20715    /// <p>The request is not valid.</p>
20716    InvalidRequest(String),
20717    /// <p>The specified resource does not exist.</p>
20718    ResourceNotFound(String),
20719    /// <p>The service is temporarily unavailable.</p>
20720    ServiceUnavailable(String),
20721    /// <p>The rate exceeds the limit.</p>
20722    Throttling(String),
20723}
20724
20725impl UpdateJobError {
20726    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateJobError> {
20727        if let Some(err) = proto::json::Error::parse_rest(&res) {
20728            match err.typ.as_str() {
20729                "InvalidRequestException" => {
20730                    return RusotoError::Service(UpdateJobError::InvalidRequest(err.msg))
20731                }
20732                "ResourceNotFoundException" => {
20733                    return RusotoError::Service(UpdateJobError::ResourceNotFound(err.msg))
20734                }
20735                "ServiceUnavailableException" => {
20736                    return RusotoError::Service(UpdateJobError::ServiceUnavailable(err.msg))
20737                }
20738                "ThrottlingException" => {
20739                    return RusotoError::Service(UpdateJobError::Throttling(err.msg))
20740                }
20741                "ValidationException" => return RusotoError::Validation(err.msg),
20742                _ => {}
20743            }
20744        }
20745        RusotoError::Unknown(res)
20746    }
20747}
20748impl fmt::Display for UpdateJobError {
20749    #[allow(unused_variables)]
20750    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
20751        match *self {
20752            UpdateJobError::InvalidRequest(ref cause) => write!(f, "{}", cause),
20753            UpdateJobError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
20754            UpdateJobError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
20755            UpdateJobError::Throttling(ref cause) => write!(f, "{}", cause),
20756        }
20757    }
20758}
20759impl Error for UpdateJobError {}
20760/// Errors returned by UpdateMitigationAction
20761#[derive(Debug, PartialEq)]
20762pub enum UpdateMitigationActionError {
20763    /// <p>An unexpected error has occurred.</p>
20764    InternalFailure(String),
20765    /// <p>The request is not valid.</p>
20766    InvalidRequest(String),
20767    /// <p>The specified resource does not exist.</p>
20768    ResourceNotFound(String),
20769    /// <p>The rate exceeds the limit.</p>
20770    Throttling(String),
20771}
20772
20773impl UpdateMitigationActionError {
20774    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateMitigationActionError> {
20775        if let Some(err) = proto::json::Error::parse_rest(&res) {
20776            match err.typ.as_str() {
20777                "InternalFailureException" => {
20778                    return RusotoError::Service(UpdateMitigationActionError::InternalFailure(
20779                        err.msg,
20780                    ))
20781                }
20782                "InvalidRequestException" => {
20783                    return RusotoError::Service(UpdateMitigationActionError::InvalidRequest(
20784                        err.msg,
20785                    ))
20786                }
20787                "ResourceNotFoundException" => {
20788                    return RusotoError::Service(UpdateMitigationActionError::ResourceNotFound(
20789                        err.msg,
20790                    ))
20791                }
20792                "ThrottlingException" => {
20793                    return RusotoError::Service(UpdateMitigationActionError::Throttling(err.msg))
20794                }
20795                "ValidationException" => return RusotoError::Validation(err.msg),
20796                _ => {}
20797            }
20798        }
20799        RusotoError::Unknown(res)
20800    }
20801}
20802impl fmt::Display for UpdateMitigationActionError {
20803    #[allow(unused_variables)]
20804    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
20805        match *self {
20806            UpdateMitigationActionError::InternalFailure(ref cause) => write!(f, "{}", cause),
20807            UpdateMitigationActionError::InvalidRequest(ref cause) => write!(f, "{}", cause),
20808            UpdateMitigationActionError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
20809            UpdateMitigationActionError::Throttling(ref cause) => write!(f, "{}", cause),
20810        }
20811    }
20812}
20813impl Error for UpdateMitigationActionError {}
20814/// Errors returned by UpdateProvisioningTemplate
20815#[derive(Debug, PartialEq)]
20816pub enum UpdateProvisioningTemplateError {
20817    /// <p>A conflicting resource update exception. This exception is thrown when two pending updates cause a conflict.</p>
20818    ConflictingResourceUpdate(String),
20819    /// <p>An unexpected error has occurred.</p>
20820    InternalFailure(String),
20821    /// <p>The request is not valid.</p>
20822    InvalidRequest(String),
20823    /// <p>The specified resource does not exist.</p>
20824    ResourceNotFound(String),
20825    /// <p>You are not authorized to perform this operation.</p>
20826    Unauthorized(String),
20827}
20828
20829impl UpdateProvisioningTemplateError {
20830    pub fn from_response(
20831        res: BufferedHttpResponse,
20832    ) -> RusotoError<UpdateProvisioningTemplateError> {
20833        if let Some(err) = proto::json::Error::parse_rest(&res) {
20834            match err.typ.as_str() {
20835                "ConflictingResourceUpdateException" => {
20836                    return RusotoError::Service(
20837                        UpdateProvisioningTemplateError::ConflictingResourceUpdate(err.msg),
20838                    )
20839                }
20840                "InternalFailureException" => {
20841                    return RusotoError::Service(UpdateProvisioningTemplateError::InternalFailure(
20842                        err.msg,
20843                    ))
20844                }
20845                "InvalidRequestException" => {
20846                    return RusotoError::Service(UpdateProvisioningTemplateError::InvalidRequest(
20847                        err.msg,
20848                    ))
20849                }
20850                "ResourceNotFoundException" => {
20851                    return RusotoError::Service(UpdateProvisioningTemplateError::ResourceNotFound(
20852                        err.msg,
20853                    ))
20854                }
20855                "UnauthorizedException" => {
20856                    return RusotoError::Service(UpdateProvisioningTemplateError::Unauthorized(
20857                        err.msg,
20858                    ))
20859                }
20860                "ValidationException" => return RusotoError::Validation(err.msg),
20861                _ => {}
20862            }
20863        }
20864        RusotoError::Unknown(res)
20865    }
20866}
20867impl fmt::Display for UpdateProvisioningTemplateError {
20868    #[allow(unused_variables)]
20869    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
20870        match *self {
20871            UpdateProvisioningTemplateError::ConflictingResourceUpdate(ref cause) => {
20872                write!(f, "{}", cause)
20873            }
20874            UpdateProvisioningTemplateError::InternalFailure(ref cause) => write!(f, "{}", cause),
20875            UpdateProvisioningTemplateError::InvalidRequest(ref cause) => write!(f, "{}", cause),
20876            UpdateProvisioningTemplateError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
20877            UpdateProvisioningTemplateError::Unauthorized(ref cause) => write!(f, "{}", cause),
20878        }
20879    }
20880}
20881impl Error for UpdateProvisioningTemplateError {}
20882/// Errors returned by UpdateRoleAlias
20883#[derive(Debug, PartialEq)]
20884pub enum UpdateRoleAliasError {
20885    /// <p>An unexpected error has occurred.</p>
20886    InternalFailure(String),
20887    /// <p>The request is not valid.</p>
20888    InvalidRequest(String),
20889    /// <p>The specified resource does not exist.</p>
20890    ResourceNotFound(String),
20891    /// <p>The service is temporarily unavailable.</p>
20892    ServiceUnavailable(String),
20893    /// <p>The rate exceeds the limit.</p>
20894    Throttling(String),
20895    /// <p>You are not authorized to perform this operation.</p>
20896    Unauthorized(String),
20897}
20898
20899impl UpdateRoleAliasError {
20900    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateRoleAliasError> {
20901        if let Some(err) = proto::json::Error::parse_rest(&res) {
20902            match err.typ.as_str() {
20903                "InternalFailureException" => {
20904                    return RusotoError::Service(UpdateRoleAliasError::InternalFailure(err.msg))
20905                }
20906                "InvalidRequestException" => {
20907                    return RusotoError::Service(UpdateRoleAliasError::InvalidRequest(err.msg))
20908                }
20909                "ResourceNotFoundException" => {
20910                    return RusotoError::Service(UpdateRoleAliasError::ResourceNotFound(err.msg))
20911                }
20912                "ServiceUnavailableException" => {
20913                    return RusotoError::Service(UpdateRoleAliasError::ServiceUnavailable(err.msg))
20914                }
20915                "ThrottlingException" => {
20916                    return RusotoError::Service(UpdateRoleAliasError::Throttling(err.msg))
20917                }
20918                "UnauthorizedException" => {
20919                    return RusotoError::Service(UpdateRoleAliasError::Unauthorized(err.msg))
20920                }
20921                "ValidationException" => return RusotoError::Validation(err.msg),
20922                _ => {}
20923            }
20924        }
20925        RusotoError::Unknown(res)
20926    }
20927}
20928impl fmt::Display for UpdateRoleAliasError {
20929    #[allow(unused_variables)]
20930    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
20931        match *self {
20932            UpdateRoleAliasError::InternalFailure(ref cause) => write!(f, "{}", cause),
20933            UpdateRoleAliasError::InvalidRequest(ref cause) => write!(f, "{}", cause),
20934            UpdateRoleAliasError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
20935            UpdateRoleAliasError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
20936            UpdateRoleAliasError::Throttling(ref cause) => write!(f, "{}", cause),
20937            UpdateRoleAliasError::Unauthorized(ref cause) => write!(f, "{}", cause),
20938        }
20939    }
20940}
20941impl Error for UpdateRoleAliasError {}
20942/// Errors returned by UpdateScheduledAudit
20943#[derive(Debug, PartialEq)]
20944pub enum UpdateScheduledAuditError {
20945    /// <p>An unexpected error has occurred.</p>
20946    InternalFailure(String),
20947    /// <p>The request is not valid.</p>
20948    InvalidRequest(String),
20949    /// <p>The specified resource does not exist.</p>
20950    ResourceNotFound(String),
20951    /// <p>The rate exceeds the limit.</p>
20952    Throttling(String),
20953}
20954
20955impl UpdateScheduledAuditError {
20956    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateScheduledAuditError> {
20957        if let Some(err) = proto::json::Error::parse_rest(&res) {
20958            match err.typ.as_str() {
20959                "InternalFailureException" => {
20960                    return RusotoError::Service(UpdateScheduledAuditError::InternalFailure(
20961                        err.msg,
20962                    ))
20963                }
20964                "InvalidRequestException" => {
20965                    return RusotoError::Service(UpdateScheduledAuditError::InvalidRequest(err.msg))
20966                }
20967                "ResourceNotFoundException" => {
20968                    return RusotoError::Service(UpdateScheduledAuditError::ResourceNotFound(
20969                        err.msg,
20970                    ))
20971                }
20972                "ThrottlingException" => {
20973                    return RusotoError::Service(UpdateScheduledAuditError::Throttling(err.msg))
20974                }
20975                "ValidationException" => return RusotoError::Validation(err.msg),
20976                _ => {}
20977            }
20978        }
20979        RusotoError::Unknown(res)
20980    }
20981}
20982impl fmt::Display for UpdateScheduledAuditError {
20983    #[allow(unused_variables)]
20984    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
20985        match *self {
20986            UpdateScheduledAuditError::InternalFailure(ref cause) => write!(f, "{}", cause),
20987            UpdateScheduledAuditError::InvalidRequest(ref cause) => write!(f, "{}", cause),
20988            UpdateScheduledAuditError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
20989            UpdateScheduledAuditError::Throttling(ref cause) => write!(f, "{}", cause),
20990        }
20991    }
20992}
20993impl Error for UpdateScheduledAuditError {}
20994/// Errors returned by UpdateSecurityProfile
20995#[derive(Debug, PartialEq)]
20996pub enum UpdateSecurityProfileError {
20997    /// <p>An unexpected error has occurred.</p>
20998    InternalFailure(String),
20999    /// <p>The request is not valid.</p>
21000    InvalidRequest(String),
21001    /// <p>The specified resource does not exist.</p>
21002    ResourceNotFound(String),
21003    /// <p>The rate exceeds the limit.</p>
21004    Throttling(String),
21005    /// <p>An exception thrown when the version of an entity specified with the <code>expectedVersion</code> parameter does not match the latest version in the system.</p>
21006    VersionConflict(String),
21007}
21008
21009impl UpdateSecurityProfileError {
21010    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateSecurityProfileError> {
21011        if let Some(err) = proto::json::Error::parse_rest(&res) {
21012            match err.typ.as_str() {
21013                "InternalFailureException" => {
21014                    return RusotoError::Service(UpdateSecurityProfileError::InternalFailure(
21015                        err.msg,
21016                    ))
21017                }
21018                "InvalidRequestException" => {
21019                    return RusotoError::Service(UpdateSecurityProfileError::InvalidRequest(
21020                        err.msg,
21021                    ))
21022                }
21023                "ResourceNotFoundException" => {
21024                    return RusotoError::Service(UpdateSecurityProfileError::ResourceNotFound(
21025                        err.msg,
21026                    ))
21027                }
21028                "ThrottlingException" => {
21029                    return RusotoError::Service(UpdateSecurityProfileError::Throttling(err.msg))
21030                }
21031                "VersionConflictException" => {
21032                    return RusotoError::Service(UpdateSecurityProfileError::VersionConflict(
21033                        err.msg,
21034                    ))
21035                }
21036                "ValidationException" => return RusotoError::Validation(err.msg),
21037                _ => {}
21038            }
21039        }
21040        RusotoError::Unknown(res)
21041    }
21042}
21043impl fmt::Display for UpdateSecurityProfileError {
21044    #[allow(unused_variables)]
21045    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
21046        match *self {
21047            UpdateSecurityProfileError::InternalFailure(ref cause) => write!(f, "{}", cause),
21048            UpdateSecurityProfileError::InvalidRequest(ref cause) => write!(f, "{}", cause),
21049            UpdateSecurityProfileError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
21050            UpdateSecurityProfileError::Throttling(ref cause) => write!(f, "{}", cause),
21051            UpdateSecurityProfileError::VersionConflict(ref cause) => write!(f, "{}", cause),
21052        }
21053    }
21054}
21055impl Error for UpdateSecurityProfileError {}
21056/// Errors returned by UpdateStream
21057#[derive(Debug, PartialEq)]
21058pub enum UpdateStreamError {
21059    /// <p>An unexpected error has occurred.</p>
21060    InternalFailure(String),
21061    /// <p>The request is not valid.</p>
21062    InvalidRequest(String),
21063    /// <p>The specified resource does not exist.</p>
21064    ResourceNotFound(String),
21065    /// <p>The service is temporarily unavailable.</p>
21066    ServiceUnavailable(String),
21067    /// <p>The rate exceeds the limit.</p>
21068    Throttling(String),
21069    /// <p>You are not authorized to perform this operation.</p>
21070    Unauthorized(String),
21071}
21072
21073impl UpdateStreamError {
21074    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateStreamError> {
21075        if let Some(err) = proto::json::Error::parse_rest(&res) {
21076            match err.typ.as_str() {
21077                "InternalFailureException" => {
21078                    return RusotoError::Service(UpdateStreamError::InternalFailure(err.msg))
21079                }
21080                "InvalidRequestException" => {
21081                    return RusotoError::Service(UpdateStreamError::InvalidRequest(err.msg))
21082                }
21083                "ResourceNotFoundException" => {
21084                    return RusotoError::Service(UpdateStreamError::ResourceNotFound(err.msg))
21085                }
21086                "ServiceUnavailableException" => {
21087                    return RusotoError::Service(UpdateStreamError::ServiceUnavailable(err.msg))
21088                }
21089                "ThrottlingException" => {
21090                    return RusotoError::Service(UpdateStreamError::Throttling(err.msg))
21091                }
21092                "UnauthorizedException" => {
21093                    return RusotoError::Service(UpdateStreamError::Unauthorized(err.msg))
21094                }
21095                "ValidationException" => return RusotoError::Validation(err.msg),
21096                _ => {}
21097            }
21098        }
21099        RusotoError::Unknown(res)
21100    }
21101}
21102impl fmt::Display for UpdateStreamError {
21103    #[allow(unused_variables)]
21104    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
21105        match *self {
21106            UpdateStreamError::InternalFailure(ref cause) => write!(f, "{}", cause),
21107            UpdateStreamError::InvalidRequest(ref cause) => write!(f, "{}", cause),
21108            UpdateStreamError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
21109            UpdateStreamError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
21110            UpdateStreamError::Throttling(ref cause) => write!(f, "{}", cause),
21111            UpdateStreamError::Unauthorized(ref cause) => write!(f, "{}", cause),
21112        }
21113    }
21114}
21115impl Error for UpdateStreamError {}
21116/// Errors returned by UpdateThing
21117#[derive(Debug, PartialEq)]
21118pub enum UpdateThingError {
21119    /// <p>An unexpected error has occurred.</p>
21120    InternalFailure(String),
21121    /// <p>The request is not valid.</p>
21122    InvalidRequest(String),
21123    /// <p>The specified resource does not exist.</p>
21124    ResourceNotFound(String),
21125    /// <p>The service is temporarily unavailable.</p>
21126    ServiceUnavailable(String),
21127    /// <p>The rate exceeds the limit.</p>
21128    Throttling(String),
21129    /// <p>You are not authorized to perform this operation.</p>
21130    Unauthorized(String),
21131    /// <p>An exception thrown when the version of an entity specified with the <code>expectedVersion</code> parameter does not match the latest version in the system.</p>
21132    VersionConflict(String),
21133}
21134
21135impl UpdateThingError {
21136    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateThingError> {
21137        if let Some(err) = proto::json::Error::parse_rest(&res) {
21138            match err.typ.as_str() {
21139                "InternalFailureException" => {
21140                    return RusotoError::Service(UpdateThingError::InternalFailure(err.msg))
21141                }
21142                "InvalidRequestException" => {
21143                    return RusotoError::Service(UpdateThingError::InvalidRequest(err.msg))
21144                }
21145                "ResourceNotFoundException" => {
21146                    return RusotoError::Service(UpdateThingError::ResourceNotFound(err.msg))
21147                }
21148                "ServiceUnavailableException" => {
21149                    return RusotoError::Service(UpdateThingError::ServiceUnavailable(err.msg))
21150                }
21151                "ThrottlingException" => {
21152                    return RusotoError::Service(UpdateThingError::Throttling(err.msg))
21153                }
21154                "UnauthorizedException" => {
21155                    return RusotoError::Service(UpdateThingError::Unauthorized(err.msg))
21156                }
21157                "VersionConflictException" => {
21158                    return RusotoError::Service(UpdateThingError::VersionConflict(err.msg))
21159                }
21160                "ValidationException" => return RusotoError::Validation(err.msg),
21161                _ => {}
21162            }
21163        }
21164        RusotoError::Unknown(res)
21165    }
21166}
21167impl fmt::Display for UpdateThingError {
21168    #[allow(unused_variables)]
21169    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
21170        match *self {
21171            UpdateThingError::InternalFailure(ref cause) => write!(f, "{}", cause),
21172            UpdateThingError::InvalidRequest(ref cause) => write!(f, "{}", cause),
21173            UpdateThingError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
21174            UpdateThingError::ServiceUnavailable(ref cause) => write!(f, "{}", cause),
21175            UpdateThingError::Throttling(ref cause) => write!(f, "{}", cause),
21176            UpdateThingError::Unauthorized(ref cause) => write!(f, "{}", cause),
21177            UpdateThingError::VersionConflict(ref cause) => write!(f, "{}", cause),
21178        }
21179    }
21180}
21181impl Error for UpdateThingError {}
21182/// Errors returned by UpdateThingGroup
21183#[derive(Debug, PartialEq)]
21184pub enum UpdateThingGroupError {
21185    /// <p>An unexpected error has occurred.</p>
21186    InternalFailure(String),
21187    /// <p>The request is not valid.</p>
21188    InvalidRequest(String),
21189    /// <p>The specified resource does not exist.</p>
21190    ResourceNotFound(String),
21191    /// <p>The rate exceeds the limit.</p>
21192    Throttling(String),
21193    /// <p>An exception thrown when the version of an entity specified with the <code>expectedVersion</code> parameter does not match the latest version in the system.</p>
21194    VersionConflict(String),
21195}
21196
21197impl UpdateThingGroupError {
21198    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateThingGroupError> {
21199        if let Some(err) = proto::json::Error::parse_rest(&res) {
21200            match err.typ.as_str() {
21201                "InternalFailureException" => {
21202                    return RusotoError::Service(UpdateThingGroupError::InternalFailure(err.msg))
21203                }
21204                "InvalidRequestException" => {
21205                    return RusotoError::Service(UpdateThingGroupError::InvalidRequest(err.msg))
21206                }
21207                "ResourceNotFoundException" => {
21208                    return RusotoError::Service(UpdateThingGroupError::ResourceNotFound(err.msg))
21209                }
21210                "ThrottlingException" => {
21211                    return RusotoError::Service(UpdateThingGroupError::Throttling(err.msg))
21212                }
21213                "VersionConflictException" => {
21214                    return RusotoError::Service(UpdateThingGroupError::VersionConflict(err.msg))
21215                }
21216                "ValidationException" => return RusotoError::Validation(err.msg),
21217                _ => {}
21218            }
21219        }
21220        RusotoError::Unknown(res)
21221    }
21222}
21223impl fmt::Display for UpdateThingGroupError {
21224    #[allow(unused_variables)]
21225    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
21226        match *self {
21227            UpdateThingGroupError::InternalFailure(ref cause) => write!(f, "{}", cause),
21228            UpdateThingGroupError::InvalidRequest(ref cause) => write!(f, "{}", cause),
21229            UpdateThingGroupError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
21230            UpdateThingGroupError::Throttling(ref cause) => write!(f, "{}", cause),
21231            UpdateThingGroupError::VersionConflict(ref cause) => write!(f, "{}", cause),
21232        }
21233    }
21234}
21235impl Error for UpdateThingGroupError {}
21236/// Errors returned by UpdateThingGroupsForThing
21237#[derive(Debug, PartialEq)]
21238pub enum UpdateThingGroupsForThingError {
21239    /// <p>An unexpected error has occurred.</p>
21240    InternalFailure(String),
21241    /// <p>The request is not valid.</p>
21242    InvalidRequest(String),
21243    /// <p>The specified resource does not exist.</p>
21244    ResourceNotFound(String),
21245    /// <p>The rate exceeds the limit.</p>
21246    Throttling(String),
21247}
21248
21249impl UpdateThingGroupsForThingError {
21250    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateThingGroupsForThingError> {
21251        if let Some(err) = proto::json::Error::parse_rest(&res) {
21252            match err.typ.as_str() {
21253                "InternalFailureException" => {
21254                    return RusotoError::Service(UpdateThingGroupsForThingError::InternalFailure(
21255                        err.msg,
21256                    ))
21257                }
21258                "InvalidRequestException" => {
21259                    return RusotoError::Service(UpdateThingGroupsForThingError::InvalidRequest(
21260                        err.msg,
21261                    ))
21262                }
21263                "ResourceNotFoundException" => {
21264                    return RusotoError::Service(UpdateThingGroupsForThingError::ResourceNotFound(
21265                        err.msg,
21266                    ))
21267                }
21268                "ThrottlingException" => {
21269                    return RusotoError::Service(UpdateThingGroupsForThingError::Throttling(
21270                        err.msg,
21271                    ))
21272                }
21273                "ValidationException" => return RusotoError::Validation(err.msg),
21274                _ => {}
21275            }
21276        }
21277        RusotoError::Unknown(res)
21278    }
21279}
21280impl fmt::Display for UpdateThingGroupsForThingError {
21281    #[allow(unused_variables)]
21282    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
21283        match *self {
21284            UpdateThingGroupsForThingError::InternalFailure(ref cause) => write!(f, "{}", cause),
21285            UpdateThingGroupsForThingError::InvalidRequest(ref cause) => write!(f, "{}", cause),
21286            UpdateThingGroupsForThingError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
21287            UpdateThingGroupsForThingError::Throttling(ref cause) => write!(f, "{}", cause),
21288        }
21289    }
21290}
21291impl Error for UpdateThingGroupsForThingError {}
21292/// Errors returned by UpdateTopicRuleDestination
21293#[derive(Debug, PartialEq)]
21294pub enum UpdateTopicRuleDestinationError {
21295    /// <p>A conflicting resource update exception. This exception is thrown when two pending updates cause a conflict.</p>
21296    ConflictingResourceUpdate(String),
21297    /// <p>An unexpected error has occurred.</p>
21298    Internal(String),
21299    /// <p>The request is not valid.</p>
21300    InvalidRequest(String),
21301    /// <p>The service is temporarily unavailable.</p>
21302    ServiceUnavailable(String),
21303    /// <p>You are not authorized to perform this operation.</p>
21304    Unauthorized(String),
21305}
21306
21307impl UpdateTopicRuleDestinationError {
21308    pub fn from_response(
21309        res: BufferedHttpResponse,
21310    ) -> RusotoError<UpdateTopicRuleDestinationError> {
21311        if let Some(err) = proto::json::Error::parse_rest(&res) {
21312            match err.typ.as_str() {
21313                "ConflictingResourceUpdateException" => {
21314                    return RusotoError::Service(
21315                        UpdateTopicRuleDestinationError::ConflictingResourceUpdate(err.msg),
21316                    )
21317                }
21318                "InternalException" => {
21319                    return RusotoError::Service(UpdateTopicRuleDestinationError::Internal(err.msg))
21320                }
21321                "InvalidRequestException" => {
21322                    return RusotoError::Service(UpdateTopicRuleDestinationError::InvalidRequest(
21323                        err.msg,
21324                    ))
21325                }
21326                "ServiceUnavailableException" => {
21327                    return RusotoError::Service(
21328                        UpdateTopicRuleDestinationError::ServiceUnavailable(err.msg),
21329                    )
21330                }
21331                "UnauthorizedException" => {
21332                    return RusotoError::Service(UpdateTopicRuleDestinationError::Unauthorized(
21333                        err.msg,
21334                    ))
21335                }
21336                "ValidationException" => return RusotoError::Validation(err.msg),
21337                _ => {}
21338            }
21339        }
21340        RusotoError::Unknown(res)
21341    }
21342}
21343impl fmt::Display for UpdateTopicRuleDestinationError {
21344    #[allow(unused_variables)]
21345    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
21346        match *self {
21347            UpdateTopicRuleDestinationError::ConflictingResourceUpdate(ref cause) => {
21348                write!(f, "{}", cause)
21349            }
21350            UpdateTopicRuleDestinationError::Internal(ref cause) => write!(f, "{}", cause),
21351            UpdateTopicRuleDestinationError::InvalidRequest(ref cause) => write!(f, "{}", cause),
21352            UpdateTopicRuleDestinationError::ServiceUnavailable(ref cause) => {
21353                write!(f, "{}", cause)
21354            }
21355            UpdateTopicRuleDestinationError::Unauthorized(ref cause) => write!(f, "{}", cause),
21356        }
21357    }
21358}
21359impl Error for UpdateTopicRuleDestinationError {}
21360/// Errors returned by ValidateSecurityProfileBehaviors
21361#[derive(Debug, PartialEq)]
21362pub enum ValidateSecurityProfileBehaviorsError {
21363    /// <p>An unexpected error has occurred.</p>
21364    InternalFailure(String),
21365    /// <p>The request is not valid.</p>
21366    InvalidRequest(String),
21367    /// <p>The rate exceeds the limit.</p>
21368    Throttling(String),
21369}
21370
21371impl ValidateSecurityProfileBehaviorsError {
21372    pub fn from_response(
21373        res: BufferedHttpResponse,
21374    ) -> RusotoError<ValidateSecurityProfileBehaviorsError> {
21375        if let Some(err) = proto::json::Error::parse_rest(&res) {
21376            match err.typ.as_str() {
21377                "InternalFailureException" => {
21378                    return RusotoError::Service(
21379                        ValidateSecurityProfileBehaviorsError::InternalFailure(err.msg),
21380                    )
21381                }
21382                "InvalidRequestException" => {
21383                    return RusotoError::Service(
21384                        ValidateSecurityProfileBehaviorsError::InvalidRequest(err.msg),
21385                    )
21386                }
21387                "ThrottlingException" => {
21388                    return RusotoError::Service(ValidateSecurityProfileBehaviorsError::Throttling(
21389                        err.msg,
21390                    ))
21391                }
21392                "ValidationException" => return RusotoError::Validation(err.msg),
21393                _ => {}
21394            }
21395        }
21396        RusotoError::Unknown(res)
21397    }
21398}
21399impl fmt::Display for ValidateSecurityProfileBehaviorsError {
21400    #[allow(unused_variables)]
21401    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
21402        match *self {
21403            ValidateSecurityProfileBehaviorsError::InternalFailure(ref cause) => {
21404                write!(f, "{}", cause)
21405            }
21406            ValidateSecurityProfileBehaviorsError::InvalidRequest(ref cause) => {
21407                write!(f, "{}", cause)
21408            }
21409            ValidateSecurityProfileBehaviorsError::Throttling(ref cause) => write!(f, "{}", cause),
21410        }
21411    }
21412}
21413impl Error for ValidateSecurityProfileBehaviorsError {}
21414/// Trait representing the capabilities of the AWS IoT API. AWS IoT clients implement this trait.
21415#[async_trait]
21416pub trait Iot {
21417    /// <p>Accepts a pending certificate transfer. The default state of the certificate is INACTIVE.</p> <p>To check for pending certificate transfers, call <a>ListCertificates</a> to enumerate your certificates.</p>
21418    async fn accept_certificate_transfer(
21419        &self,
21420        input: AcceptCertificateTransferRequest,
21421    ) -> Result<(), RusotoError<AcceptCertificateTransferError>>;
21422
21423    /// <p>Adds a thing to a billing group.</p>
21424    async fn add_thing_to_billing_group(
21425        &self,
21426        input: AddThingToBillingGroupRequest,
21427    ) -> Result<AddThingToBillingGroupResponse, RusotoError<AddThingToBillingGroupError>>;
21428
21429    /// <p>Adds a thing to a thing group.</p>
21430    async fn add_thing_to_thing_group(
21431        &self,
21432        input: AddThingToThingGroupRequest,
21433    ) -> Result<AddThingToThingGroupResponse, RusotoError<AddThingToThingGroupError>>;
21434
21435    /// <p><p>Associates a group with a continuous job. The following criteria must be met: </p> <ul> <li> <p>The job must have been created with the <code>targetSelection</code> field set to &quot;CONTINUOUS&quot;.</p> </li> <li> <p>The job status must currently be &quot;IN_PROGRESS&quot;.</p> </li> <li> <p>The total number of targets associated with a job must not exceed 100.</p> </li> </ul></p>
21436    async fn associate_targets_with_job(
21437        &self,
21438        input: AssociateTargetsWithJobRequest,
21439    ) -> Result<AssociateTargetsWithJobResponse, RusotoError<AssociateTargetsWithJobError>>;
21440
21441    /// <p>Attaches a policy to the specified target.</p>
21442    async fn attach_policy(
21443        &self,
21444        input: AttachPolicyRequest,
21445    ) -> Result<(), RusotoError<AttachPolicyError>>;
21446
21447    /// <p>Attaches the specified policy to the specified principal (certificate or other credential).</p> <p> <b>Note:</b> This API is deprecated. Please use <a>AttachPolicy</a> instead.</p>
21448    async fn attach_principal_policy(
21449        &self,
21450        input: AttachPrincipalPolicyRequest,
21451    ) -> Result<(), RusotoError<AttachPrincipalPolicyError>>;
21452
21453    /// <p>Associates a Device Defender security profile with a thing group or this account. Each thing group or account can have up to five security profiles associated with it.</p>
21454    async fn attach_security_profile(
21455        &self,
21456        input: AttachSecurityProfileRequest,
21457    ) -> Result<AttachSecurityProfileResponse, RusotoError<AttachSecurityProfileError>>;
21458
21459    /// <p>Attaches the specified principal to the specified thing. A principal can be X.509 certificates, IAM users, groups, and roles, Amazon Cognito identities or federated identities.</p>
21460    async fn attach_thing_principal(
21461        &self,
21462        input: AttachThingPrincipalRequest,
21463    ) -> Result<AttachThingPrincipalResponse, RusotoError<AttachThingPrincipalError>>;
21464
21465    /// <p>Cancels a mitigation action task that is in progress. If the task is not in progress, an InvalidRequestException occurs.</p>
21466    async fn cancel_audit_mitigation_actions_task(
21467        &self,
21468        input: CancelAuditMitigationActionsTaskRequest,
21469    ) -> Result<
21470        CancelAuditMitigationActionsTaskResponse,
21471        RusotoError<CancelAuditMitigationActionsTaskError>,
21472    >;
21473
21474    /// <p>Cancels an audit that is in progress. The audit can be either scheduled or on-demand. If the audit is not in progress, an "InvalidRequestException" occurs.</p>
21475    async fn cancel_audit_task(
21476        &self,
21477        input: CancelAuditTaskRequest,
21478    ) -> Result<CancelAuditTaskResponse, RusotoError<CancelAuditTaskError>>;
21479
21480    /// <p>Cancels a pending transfer for the specified certificate.</p> <p> <b>Note</b> Only the transfer source account can use this operation to cancel a transfer. (Transfer destinations can use <a>RejectCertificateTransfer</a> instead.) After transfer, AWS IoT returns the certificate to the source account in the INACTIVE state. After the destination account has accepted the transfer, the transfer cannot be cancelled.</p> <p>After a certificate transfer is cancelled, the status of the certificate changes from PENDING_TRANSFER to INACTIVE.</p>
21481    async fn cancel_certificate_transfer(
21482        &self,
21483        input: CancelCertificateTransferRequest,
21484    ) -> Result<(), RusotoError<CancelCertificateTransferError>>;
21485
21486    /// <p>Cancels a job.</p>
21487    async fn cancel_job(
21488        &self,
21489        input: CancelJobRequest,
21490    ) -> Result<CancelJobResponse, RusotoError<CancelJobError>>;
21491
21492    /// <p>Cancels the execution of a job for a given thing.</p>
21493    async fn cancel_job_execution(
21494        &self,
21495        input: CancelJobExecutionRequest,
21496    ) -> Result<(), RusotoError<CancelJobExecutionError>>;
21497
21498    /// <p>Clears the default authorizer.</p>
21499    async fn clear_default_authorizer(
21500        &self,
21501    ) -> Result<ClearDefaultAuthorizerResponse, RusotoError<ClearDefaultAuthorizerError>>;
21502
21503    /// <p>Confirms a topic rule destination. When you create a rule requiring a destination, AWS IoT sends a confirmation message to the endpoint or base address you specify. The message includes a token which you pass back when calling <code>ConfirmTopicRuleDestination</code> to confirm that you own or have access to the endpoint.</p>
21504    async fn confirm_topic_rule_destination(
21505        &self,
21506        input: ConfirmTopicRuleDestinationRequest,
21507    ) -> Result<ConfirmTopicRuleDestinationResponse, RusotoError<ConfirmTopicRuleDestinationError>>;
21508
21509    /// <p>Creates an authorizer.</p>
21510    async fn create_authorizer(
21511        &self,
21512        input: CreateAuthorizerRequest,
21513    ) -> Result<CreateAuthorizerResponse, RusotoError<CreateAuthorizerError>>;
21514
21515    /// <p>Creates a billing group.</p>
21516    async fn create_billing_group(
21517        &self,
21518        input: CreateBillingGroupRequest,
21519    ) -> Result<CreateBillingGroupResponse, RusotoError<CreateBillingGroupError>>;
21520
21521    /// <p>Creates an X.509 certificate using the specified certificate signing request.</p> <p> <b>Note:</b> The CSR must include a public key that is either an RSA key with a length of at least 2048 bits or an ECC key from NIST P-256 or NIST P-384 curves. </p> <p> <b>Note:</b> Reusing the same certificate signing request (CSR) results in a distinct certificate.</p> <p>You can create multiple certificates in a batch by creating a directory, copying multiple .csr files into that directory, and then specifying that directory on the command line. The following commands show how to create a batch of certificates given a batch of CSRs.</p> <p>Assuming a set of CSRs are located inside of the directory my-csr-directory:</p> <p>On Linux and OS X, the command is:</p> <p>$ ls my-csr-directory/ | xargs -I {} aws iot create-certificate-from-csr --certificate-signing-request file://my-csr-directory/{}</p> <p>This command lists all of the CSRs in my-csr-directory and pipes each CSR file name to the aws iot create-certificate-from-csr AWS CLI command to create a certificate for the corresponding CSR.</p> <p>The aws iot create-certificate-from-csr part of the command can also be run in parallel to speed up the certificate creation process:</p> <p>$ ls my-csr-directory/ | xargs -P 10 -I {} aws iot create-certificate-from-csr --certificate-signing-request file://my-csr-directory/{}</p> <p>On Windows PowerShell, the command to create certificates for all CSRs in my-csr-directory is:</p> <p>&gt; ls -Name my-csr-directory | %{aws iot create-certificate-from-csr --certificate-signing-request file://my-csr-directory/$_}</p> <p>On a Windows command prompt, the command to create certificates for all CSRs in my-csr-directory is:</p> <p>&gt; forfiles /p my-csr-directory /c "cmd /c aws iot create-certificate-from-csr --certificate-signing-request file://@path"</p>
21522    async fn create_certificate_from_csr(
21523        &self,
21524        input: CreateCertificateFromCsrRequest,
21525    ) -> Result<CreateCertificateFromCsrResponse, RusotoError<CreateCertificateFromCsrError>>;
21526
21527    /// <p>Create a dimension that you can use to limit the scope of a metric used in a security profile for AWS IoT Device Defender. For example, using a <code>TOPIC_FILTER</code> dimension, you can narrow down the scope of the metric only to MQTT topics whose name match the pattern specified in the dimension.</p>
21528    async fn create_dimension(
21529        &self,
21530        input: CreateDimensionRequest,
21531    ) -> Result<CreateDimensionResponse, RusotoError<CreateDimensionError>>;
21532
21533    /// <p><p>Creates a domain configuration.</p> <note> <p>The domain configuration feature is in public preview and is subject to change.</p> </note></p>
21534    async fn create_domain_configuration(
21535        &self,
21536        input: CreateDomainConfigurationRequest,
21537    ) -> Result<CreateDomainConfigurationResponse, RusotoError<CreateDomainConfigurationError>>;
21538
21539    /// <p>Creates a dynamic thing group.</p>
21540    async fn create_dynamic_thing_group(
21541        &self,
21542        input: CreateDynamicThingGroupRequest,
21543    ) -> Result<CreateDynamicThingGroupResponse, RusotoError<CreateDynamicThingGroupError>>;
21544
21545    /// <p>Creates a job.</p>
21546    async fn create_job(
21547        &self,
21548        input: CreateJobRequest,
21549    ) -> Result<CreateJobResponse, RusotoError<CreateJobError>>;
21550
21551    /// <p>Creates a 2048-bit RSA key pair and issues an X.509 certificate using the issued public key. You can also call <code>CreateKeysAndCertificate</code> over MQTT from a device, for more information, see <a href="https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html#provision-mqtt-api">Provisioning MQTT API</a>.</p> <p> <b>Note</b> This is the only time AWS IoT issues the private key for this certificate, so it is important to keep it in a secure location.</p>
21552    async fn create_keys_and_certificate(
21553        &self,
21554        input: CreateKeysAndCertificateRequest,
21555    ) -> Result<CreateKeysAndCertificateResponse, RusotoError<CreateKeysAndCertificateError>>;
21556
21557    /// <p>Defines an action that can be applied to audit findings by using StartAuditMitigationActionsTask. Each mitigation action can apply only one type of change.</p>
21558    async fn create_mitigation_action(
21559        &self,
21560        input: CreateMitigationActionRequest,
21561    ) -> Result<CreateMitigationActionResponse, RusotoError<CreateMitigationActionError>>;
21562
21563    /// <p>Creates an AWS IoT OTAUpdate on a target group of things or groups.</p>
21564    async fn create_ota_update(
21565        &self,
21566        input: CreateOTAUpdateRequest,
21567    ) -> Result<CreateOTAUpdateResponse, RusotoError<CreateOTAUpdateError>>;
21568
21569    /// <p>Creates an AWS IoT policy.</p> <p>The created policy is the default version for the policy. This operation creates a policy version with a version identifier of <b>1</b> and sets <b>1</b> as the policy's default version.</p>
21570    async fn create_policy(
21571        &self,
21572        input: CreatePolicyRequest,
21573    ) -> Result<CreatePolicyResponse, RusotoError<CreatePolicyError>>;
21574
21575    /// <p>Creates a new version of the specified AWS IoT policy. To update a policy, create a new policy version. A managed policy can have up to five versions. If the policy has five versions, you must use <a>DeletePolicyVersion</a> to delete an existing version before you create a new one.</p> <p>Optionally, you can set the new version as the policy's default version. The default version is the operative version (that is, the version that is in effect for the certificates to which the policy is attached).</p>
21576    async fn create_policy_version(
21577        &self,
21578        input: CreatePolicyVersionRequest,
21579    ) -> Result<CreatePolicyVersionResponse, RusotoError<CreatePolicyVersionError>>;
21580
21581    /// <p>Creates a provisioning claim.</p>
21582    async fn create_provisioning_claim(
21583        &self,
21584        input: CreateProvisioningClaimRequest,
21585    ) -> Result<CreateProvisioningClaimResponse, RusotoError<CreateProvisioningClaimError>>;
21586
21587    /// <p>Creates a fleet provisioning template.</p>
21588    async fn create_provisioning_template(
21589        &self,
21590        input: CreateProvisioningTemplateRequest,
21591    ) -> Result<CreateProvisioningTemplateResponse, RusotoError<CreateProvisioningTemplateError>>;
21592
21593    /// <p>Creates a new version of a fleet provisioning template.</p>
21594    async fn create_provisioning_template_version(
21595        &self,
21596        input: CreateProvisioningTemplateVersionRequest,
21597    ) -> Result<
21598        CreateProvisioningTemplateVersionResponse,
21599        RusotoError<CreateProvisioningTemplateVersionError>,
21600    >;
21601
21602    /// <p>Creates a role alias.</p>
21603    async fn create_role_alias(
21604        &self,
21605        input: CreateRoleAliasRequest,
21606    ) -> Result<CreateRoleAliasResponse, RusotoError<CreateRoleAliasError>>;
21607
21608    /// <p>Creates a scheduled audit that is run at a specified time interval.</p>
21609    async fn create_scheduled_audit(
21610        &self,
21611        input: CreateScheduledAuditRequest,
21612    ) -> Result<CreateScheduledAuditResponse, RusotoError<CreateScheduledAuditError>>;
21613
21614    /// <p>Creates a Device Defender security profile.</p>
21615    async fn create_security_profile(
21616        &self,
21617        input: CreateSecurityProfileRequest,
21618    ) -> Result<CreateSecurityProfileResponse, RusotoError<CreateSecurityProfileError>>;
21619
21620    /// <p>Creates a stream for delivering one or more large files in chunks over MQTT. A stream transports data bytes in chunks or blocks packaged as MQTT messages from a source like S3. You can have one or more files associated with a stream.</p>
21621    async fn create_stream(
21622        &self,
21623        input: CreateStreamRequest,
21624    ) -> Result<CreateStreamResponse, RusotoError<CreateStreamError>>;
21625
21626    /// <p><p>Creates a thing record in the registry. If this call is made multiple times using the same thing name and configuration, the call will succeed. If this call is made with the same thing name but different configuration a <code>ResourceAlreadyExistsException</code> is thrown.</p> <note> <p>This is a control plane operation. See <a href="https://docs.aws.amazon.com/iot/latest/developerguide/iot-authorization.html">Authorization</a> for information about authorizing control plane actions.</p> </note></p>
21627    async fn create_thing(
21628        &self,
21629        input: CreateThingRequest,
21630    ) -> Result<CreateThingResponse, RusotoError<CreateThingError>>;
21631
21632    /// <p><p>Create a thing group.</p> <note> <p>This is a control plane operation. See <a href="https://docs.aws.amazon.com/iot/latest/developerguide/iot-authorization.html">Authorization</a> for information about authorizing control plane actions.</p> </note></p>
21633    async fn create_thing_group(
21634        &self,
21635        input: CreateThingGroupRequest,
21636    ) -> Result<CreateThingGroupResponse, RusotoError<CreateThingGroupError>>;
21637
21638    /// <p>Creates a new thing type.</p>
21639    async fn create_thing_type(
21640        &self,
21641        input: CreateThingTypeRequest,
21642    ) -> Result<CreateThingTypeResponse, RusotoError<CreateThingTypeError>>;
21643
21644    /// <p>Creates a rule. Creating rules is an administrator-level action. Any user who has permission to create rules will be able to access data processed by the rule.</p>
21645    async fn create_topic_rule(
21646        &self,
21647        input: CreateTopicRuleRequest,
21648    ) -> Result<(), RusotoError<CreateTopicRuleError>>;
21649
21650    /// <p>Creates a topic rule destination. The destination must be confirmed prior to use.</p>
21651    async fn create_topic_rule_destination(
21652        &self,
21653        input: CreateTopicRuleDestinationRequest,
21654    ) -> Result<CreateTopicRuleDestinationResponse, RusotoError<CreateTopicRuleDestinationError>>;
21655
21656    /// <p>Restores the default settings for Device Defender audits for this account. Any configuration data you entered is deleted and all audit checks are reset to disabled. </p>
21657    async fn delete_account_audit_configuration(
21658        &self,
21659        input: DeleteAccountAuditConfigurationRequest,
21660    ) -> Result<
21661        DeleteAccountAuditConfigurationResponse,
21662        RusotoError<DeleteAccountAuditConfigurationError>,
21663    >;
21664
21665    /// <p>Deletes an authorizer.</p>
21666    async fn delete_authorizer(
21667        &self,
21668        input: DeleteAuthorizerRequest,
21669    ) -> Result<DeleteAuthorizerResponse, RusotoError<DeleteAuthorizerError>>;
21670
21671    /// <p>Deletes the billing group.</p>
21672    async fn delete_billing_group(
21673        &self,
21674        input: DeleteBillingGroupRequest,
21675    ) -> Result<DeleteBillingGroupResponse, RusotoError<DeleteBillingGroupError>>;
21676
21677    /// <p>Deletes a registered CA certificate.</p>
21678    async fn delete_ca_certificate(
21679        &self,
21680        input: DeleteCACertificateRequest,
21681    ) -> Result<DeleteCACertificateResponse, RusotoError<DeleteCACertificateError>>;
21682
21683    /// <p>Deletes the specified certificate.</p> <p>A certificate cannot be deleted if it has a policy or IoT thing attached to it or if its status is set to ACTIVE. To delete a certificate, first use the <a>DetachPrincipalPolicy</a> API to detach all policies. Next, use the <a>UpdateCertificate</a> API to set the certificate to the INACTIVE status.</p>
21684    async fn delete_certificate(
21685        &self,
21686        input: DeleteCertificateRequest,
21687    ) -> Result<(), RusotoError<DeleteCertificateError>>;
21688
21689    /// <p>Removes the specified dimension from your AWS account.</p>
21690    async fn delete_dimension(
21691        &self,
21692        input: DeleteDimensionRequest,
21693    ) -> Result<DeleteDimensionResponse, RusotoError<DeleteDimensionError>>;
21694
21695    /// <p><p>Deletes the specified domain configuration.</p> <note> <p>The domain configuration feature is in public preview and is subject to change.</p> </note></p>
21696    async fn delete_domain_configuration(
21697        &self,
21698        input: DeleteDomainConfigurationRequest,
21699    ) -> Result<DeleteDomainConfigurationResponse, RusotoError<DeleteDomainConfigurationError>>;
21700
21701    /// <p>Deletes a dynamic thing group.</p>
21702    async fn delete_dynamic_thing_group(
21703        &self,
21704        input: DeleteDynamicThingGroupRequest,
21705    ) -> Result<DeleteDynamicThingGroupResponse, RusotoError<DeleteDynamicThingGroupError>>;
21706
21707    /// <p>Deletes a job and its related job executions.</p> <p>Deleting a job may take time, depending on the number of job executions created for the job and various other factors. While the job is being deleted, the status of the job will be shown as "DELETION_IN_PROGRESS". Attempting to delete or cancel a job whose status is already "DELETION_IN_PROGRESS" will result in an error.</p> <p>Only 10 jobs may have status "DELETION_IN_PROGRESS" at the same time, or a LimitExceededException will occur.</p>
21708    async fn delete_job(&self, input: DeleteJobRequest) -> Result<(), RusotoError<DeleteJobError>>;
21709
21710    /// <p>Deletes a job execution.</p>
21711    async fn delete_job_execution(
21712        &self,
21713        input: DeleteJobExecutionRequest,
21714    ) -> Result<(), RusotoError<DeleteJobExecutionError>>;
21715
21716    /// <p>Deletes a defined mitigation action from your AWS account.</p>
21717    async fn delete_mitigation_action(
21718        &self,
21719        input: DeleteMitigationActionRequest,
21720    ) -> Result<DeleteMitigationActionResponse, RusotoError<DeleteMitigationActionError>>;
21721
21722    /// <p>Delete an OTA update.</p>
21723    async fn delete_ota_update(
21724        &self,
21725        input: DeleteOTAUpdateRequest,
21726    ) -> Result<DeleteOTAUpdateResponse, RusotoError<DeleteOTAUpdateError>>;
21727
21728    /// <p>Deletes the specified policy.</p> <p>A policy cannot be deleted if it has non-default versions or it is attached to any certificate.</p> <p>To delete a policy, use the DeletePolicyVersion API to delete all non-default versions of the policy; use the DetachPrincipalPolicy API to detach the policy from any certificate; and then use the DeletePolicy API to delete the policy.</p> <p>When a policy is deleted using DeletePolicy, its default version is deleted with it.</p>
21729    async fn delete_policy(
21730        &self,
21731        input: DeletePolicyRequest,
21732    ) -> Result<(), RusotoError<DeletePolicyError>>;
21733
21734    /// <p>Deletes the specified version of the specified policy. You cannot delete the default version of a policy using this API. To delete the default version of a policy, use <a>DeletePolicy</a>. To find out which version of a policy is marked as the default version, use ListPolicyVersions.</p>
21735    async fn delete_policy_version(
21736        &self,
21737        input: DeletePolicyVersionRequest,
21738    ) -> Result<(), RusotoError<DeletePolicyVersionError>>;
21739
21740    /// <p>Deletes a fleet provisioning template.</p>
21741    async fn delete_provisioning_template(
21742        &self,
21743        input: DeleteProvisioningTemplateRequest,
21744    ) -> Result<DeleteProvisioningTemplateResponse, RusotoError<DeleteProvisioningTemplateError>>;
21745
21746    /// <p>Deletes a fleet provisioning template version.</p>
21747    async fn delete_provisioning_template_version(
21748        &self,
21749        input: DeleteProvisioningTemplateVersionRequest,
21750    ) -> Result<
21751        DeleteProvisioningTemplateVersionResponse,
21752        RusotoError<DeleteProvisioningTemplateVersionError>,
21753    >;
21754
21755    /// <p>Deletes a CA certificate registration code.</p>
21756    async fn delete_registration_code(
21757        &self,
21758    ) -> Result<DeleteRegistrationCodeResponse, RusotoError<DeleteRegistrationCodeError>>;
21759
21760    /// <p>Deletes a role alias</p>
21761    async fn delete_role_alias(
21762        &self,
21763        input: DeleteRoleAliasRequest,
21764    ) -> Result<DeleteRoleAliasResponse, RusotoError<DeleteRoleAliasError>>;
21765
21766    /// <p>Deletes a scheduled audit.</p>
21767    async fn delete_scheduled_audit(
21768        &self,
21769        input: DeleteScheduledAuditRequest,
21770    ) -> Result<DeleteScheduledAuditResponse, RusotoError<DeleteScheduledAuditError>>;
21771
21772    /// <p>Deletes a Device Defender security profile.</p>
21773    async fn delete_security_profile(
21774        &self,
21775        input: DeleteSecurityProfileRequest,
21776    ) -> Result<DeleteSecurityProfileResponse, RusotoError<DeleteSecurityProfileError>>;
21777
21778    /// <p>Deletes a stream.</p>
21779    async fn delete_stream(
21780        &self,
21781        input: DeleteStreamRequest,
21782    ) -> Result<DeleteStreamResponse, RusotoError<DeleteStreamError>>;
21783
21784    /// <p>Deletes the specified thing. Returns successfully with no error if the deletion is successful or you specify a thing that doesn't exist.</p>
21785    async fn delete_thing(
21786        &self,
21787        input: DeleteThingRequest,
21788    ) -> Result<DeleteThingResponse, RusotoError<DeleteThingError>>;
21789
21790    /// <p>Deletes a thing group.</p>
21791    async fn delete_thing_group(
21792        &self,
21793        input: DeleteThingGroupRequest,
21794    ) -> Result<DeleteThingGroupResponse, RusotoError<DeleteThingGroupError>>;
21795
21796    /// <p>Deletes the specified thing type. You cannot delete a thing type if it has things associated with it. To delete a thing type, first mark it as deprecated by calling <a>DeprecateThingType</a>, then remove any associated things by calling <a>UpdateThing</a> to change the thing type on any associated thing, and finally use <a>DeleteThingType</a> to delete the thing type.</p>
21797    async fn delete_thing_type(
21798        &self,
21799        input: DeleteThingTypeRequest,
21800    ) -> Result<DeleteThingTypeResponse, RusotoError<DeleteThingTypeError>>;
21801
21802    /// <p>Deletes the rule.</p>
21803    async fn delete_topic_rule(
21804        &self,
21805        input: DeleteTopicRuleRequest,
21806    ) -> Result<(), RusotoError<DeleteTopicRuleError>>;
21807
21808    /// <p>Deletes a topic rule destination.</p>
21809    async fn delete_topic_rule_destination(
21810        &self,
21811        input: DeleteTopicRuleDestinationRequest,
21812    ) -> Result<DeleteTopicRuleDestinationResponse, RusotoError<DeleteTopicRuleDestinationError>>;
21813
21814    /// <p>Deletes a logging level.</p>
21815    async fn delete_v2_logging_level(
21816        &self,
21817        input: DeleteV2LoggingLevelRequest,
21818    ) -> Result<(), RusotoError<DeleteV2LoggingLevelError>>;
21819
21820    /// <p>Deprecates a thing type. You can not associate new things with deprecated thing type.</p>
21821    async fn deprecate_thing_type(
21822        &self,
21823        input: DeprecateThingTypeRequest,
21824    ) -> Result<DeprecateThingTypeResponse, RusotoError<DeprecateThingTypeError>>;
21825
21826    /// <p>Gets information about the Device Defender audit settings for this account. Settings include how audit notifications are sent and which audit checks are enabled or disabled.</p>
21827    async fn describe_account_audit_configuration(
21828        &self,
21829    ) -> Result<
21830        DescribeAccountAuditConfigurationResponse,
21831        RusotoError<DescribeAccountAuditConfigurationError>,
21832    >;
21833
21834    /// <p>Gets information about a single audit finding. Properties include the reason for noncompliance, the severity of the issue, and when the audit that returned the finding was started.</p>
21835    async fn describe_audit_finding(
21836        &self,
21837        input: DescribeAuditFindingRequest,
21838    ) -> Result<DescribeAuditFindingResponse, RusotoError<DescribeAuditFindingError>>;
21839
21840    /// <p>Gets information about an audit mitigation task that is used to apply mitigation actions to a set of audit findings. Properties include the actions being applied, the audit checks to which they're being applied, the task status, and aggregated task statistics.</p>
21841    async fn describe_audit_mitigation_actions_task(
21842        &self,
21843        input: DescribeAuditMitigationActionsTaskRequest,
21844    ) -> Result<
21845        DescribeAuditMitigationActionsTaskResponse,
21846        RusotoError<DescribeAuditMitigationActionsTaskError>,
21847    >;
21848
21849    /// <p>Gets information about a Device Defender audit.</p>
21850    async fn describe_audit_task(
21851        &self,
21852        input: DescribeAuditTaskRequest,
21853    ) -> Result<DescribeAuditTaskResponse, RusotoError<DescribeAuditTaskError>>;
21854
21855    /// <p>Describes an authorizer.</p>
21856    async fn describe_authorizer(
21857        &self,
21858        input: DescribeAuthorizerRequest,
21859    ) -> Result<DescribeAuthorizerResponse, RusotoError<DescribeAuthorizerError>>;
21860
21861    /// <p>Returns information about a billing group.</p>
21862    async fn describe_billing_group(
21863        &self,
21864        input: DescribeBillingGroupRequest,
21865    ) -> Result<DescribeBillingGroupResponse, RusotoError<DescribeBillingGroupError>>;
21866
21867    /// <p>Describes a registered CA certificate.</p>
21868    async fn describe_ca_certificate(
21869        &self,
21870        input: DescribeCACertificateRequest,
21871    ) -> Result<DescribeCACertificateResponse, RusotoError<DescribeCACertificateError>>;
21872
21873    /// <p>Gets information about the specified certificate.</p>
21874    async fn describe_certificate(
21875        &self,
21876        input: DescribeCertificateRequest,
21877    ) -> Result<DescribeCertificateResponse, RusotoError<DescribeCertificateError>>;
21878
21879    /// <p>Describes the default authorizer.</p>
21880    async fn describe_default_authorizer(
21881        &self,
21882    ) -> Result<DescribeDefaultAuthorizerResponse, RusotoError<DescribeDefaultAuthorizerError>>;
21883
21884    /// <p>Provides details about a dimension that is defined in your AWS account.</p>
21885    async fn describe_dimension(
21886        &self,
21887        input: DescribeDimensionRequest,
21888    ) -> Result<DescribeDimensionResponse, RusotoError<DescribeDimensionError>>;
21889
21890    /// <p><p>Gets summary information about a domain configuration.</p> <note> <p>The domain configuration feature is in public preview and is subject to change.</p> </note></p>
21891    async fn describe_domain_configuration(
21892        &self,
21893        input: DescribeDomainConfigurationRequest,
21894    ) -> Result<DescribeDomainConfigurationResponse, RusotoError<DescribeDomainConfigurationError>>;
21895
21896    /// <p>Returns a unique endpoint specific to the AWS account making the call.</p>
21897    async fn describe_endpoint(
21898        &self,
21899        input: DescribeEndpointRequest,
21900    ) -> Result<DescribeEndpointResponse, RusotoError<DescribeEndpointError>>;
21901
21902    /// <p>Describes event configurations.</p>
21903    async fn describe_event_configurations(
21904        &self,
21905    ) -> Result<DescribeEventConfigurationsResponse, RusotoError<DescribeEventConfigurationsError>>;
21906
21907    /// <p>Describes a search index.</p>
21908    async fn describe_index(
21909        &self,
21910        input: DescribeIndexRequest,
21911    ) -> Result<DescribeIndexResponse, RusotoError<DescribeIndexError>>;
21912
21913    /// <p>Describes a job.</p>
21914    async fn describe_job(
21915        &self,
21916        input: DescribeJobRequest,
21917    ) -> Result<DescribeJobResponse, RusotoError<DescribeJobError>>;
21918
21919    /// <p>Describes a job execution.</p>
21920    async fn describe_job_execution(
21921        &self,
21922        input: DescribeJobExecutionRequest,
21923    ) -> Result<DescribeJobExecutionResponse, RusotoError<DescribeJobExecutionError>>;
21924
21925    /// <p>Gets information about a mitigation action.</p>
21926    async fn describe_mitigation_action(
21927        &self,
21928        input: DescribeMitigationActionRequest,
21929    ) -> Result<DescribeMitigationActionResponse, RusotoError<DescribeMitigationActionError>>;
21930
21931    /// <p>Returns information about a fleet provisioning template.</p>
21932    async fn describe_provisioning_template(
21933        &self,
21934        input: DescribeProvisioningTemplateRequest,
21935    ) -> Result<DescribeProvisioningTemplateResponse, RusotoError<DescribeProvisioningTemplateError>>;
21936
21937    /// <p>Returns information about a fleet provisioning template version.</p>
21938    async fn describe_provisioning_template_version(
21939        &self,
21940        input: DescribeProvisioningTemplateVersionRequest,
21941    ) -> Result<
21942        DescribeProvisioningTemplateVersionResponse,
21943        RusotoError<DescribeProvisioningTemplateVersionError>,
21944    >;
21945
21946    /// <p>Describes a role alias.</p>
21947    async fn describe_role_alias(
21948        &self,
21949        input: DescribeRoleAliasRequest,
21950    ) -> Result<DescribeRoleAliasResponse, RusotoError<DescribeRoleAliasError>>;
21951
21952    /// <p>Gets information about a scheduled audit.</p>
21953    async fn describe_scheduled_audit(
21954        &self,
21955        input: DescribeScheduledAuditRequest,
21956    ) -> Result<DescribeScheduledAuditResponse, RusotoError<DescribeScheduledAuditError>>;
21957
21958    /// <p>Gets information about a Device Defender security profile.</p>
21959    async fn describe_security_profile(
21960        &self,
21961        input: DescribeSecurityProfileRequest,
21962    ) -> Result<DescribeSecurityProfileResponse, RusotoError<DescribeSecurityProfileError>>;
21963
21964    /// <p>Gets information about a stream.</p>
21965    async fn describe_stream(
21966        &self,
21967        input: DescribeStreamRequest,
21968    ) -> Result<DescribeStreamResponse, RusotoError<DescribeStreamError>>;
21969
21970    /// <p>Gets information about the specified thing.</p>
21971    async fn describe_thing(
21972        &self,
21973        input: DescribeThingRequest,
21974    ) -> Result<DescribeThingResponse, RusotoError<DescribeThingError>>;
21975
21976    /// <p>Describe a thing group.</p>
21977    async fn describe_thing_group(
21978        &self,
21979        input: DescribeThingGroupRequest,
21980    ) -> Result<DescribeThingGroupResponse, RusotoError<DescribeThingGroupError>>;
21981
21982    /// <p>Describes a bulk thing provisioning task.</p>
21983    async fn describe_thing_registration_task(
21984        &self,
21985        input: DescribeThingRegistrationTaskRequest,
21986    ) -> Result<
21987        DescribeThingRegistrationTaskResponse,
21988        RusotoError<DescribeThingRegistrationTaskError>,
21989    >;
21990
21991    /// <p>Gets information about the specified thing type.</p>
21992    async fn describe_thing_type(
21993        &self,
21994        input: DescribeThingTypeRequest,
21995    ) -> Result<DescribeThingTypeResponse, RusotoError<DescribeThingTypeError>>;
21996
21997    /// <p>Detaches a policy from the specified target.</p>
21998    async fn detach_policy(
21999        &self,
22000        input: DetachPolicyRequest,
22001    ) -> Result<(), RusotoError<DetachPolicyError>>;
22002
22003    /// <p>Removes the specified policy from the specified certificate.</p> <p> <b>Note:</b> This API is deprecated. Please use <a>DetachPolicy</a> instead.</p>
22004    async fn detach_principal_policy(
22005        &self,
22006        input: DetachPrincipalPolicyRequest,
22007    ) -> Result<(), RusotoError<DetachPrincipalPolicyError>>;
22008
22009    /// <p>Disassociates a Device Defender security profile from a thing group or from this account.</p>
22010    async fn detach_security_profile(
22011        &self,
22012        input: DetachSecurityProfileRequest,
22013    ) -> Result<DetachSecurityProfileResponse, RusotoError<DetachSecurityProfileError>>;
22014
22015    /// <p><p>Detaches the specified principal from the specified thing. A principal can be X.509 certificates, IAM users, groups, and roles, Amazon Cognito identities or federated identities.</p> <note> <p>This call is asynchronous. It might take several seconds for the detachment to propagate.</p> </note></p>
22016    async fn detach_thing_principal(
22017        &self,
22018        input: DetachThingPrincipalRequest,
22019    ) -> Result<DetachThingPrincipalResponse, RusotoError<DetachThingPrincipalError>>;
22020
22021    /// <p>Disables the rule.</p>
22022    async fn disable_topic_rule(
22023        &self,
22024        input: DisableTopicRuleRequest,
22025    ) -> Result<(), RusotoError<DisableTopicRuleError>>;
22026
22027    /// <p>Enables the rule.</p>
22028    async fn enable_topic_rule(
22029        &self,
22030        input: EnableTopicRuleRequest,
22031    ) -> Result<(), RusotoError<EnableTopicRuleError>>;
22032
22033    /// <p>Returns the approximate count of unique values that match the query.</p>
22034    async fn get_cardinality(
22035        &self,
22036        input: GetCardinalityRequest,
22037    ) -> Result<GetCardinalityResponse, RusotoError<GetCardinalityError>>;
22038
22039    /// <p>Gets a list of the policies that have an effect on the authorization behavior of the specified device when it connects to the AWS IoT device gateway.</p>
22040    async fn get_effective_policies(
22041        &self,
22042        input: GetEffectivePoliciesRequest,
22043    ) -> Result<GetEffectivePoliciesResponse, RusotoError<GetEffectivePoliciesError>>;
22044
22045    /// <p>Gets the indexing configuration.</p>
22046    async fn get_indexing_configuration(
22047        &self,
22048    ) -> Result<GetIndexingConfigurationResponse, RusotoError<GetIndexingConfigurationError>>;
22049
22050    /// <p>Gets a job document.</p>
22051    async fn get_job_document(
22052        &self,
22053        input: GetJobDocumentRequest,
22054    ) -> Result<GetJobDocumentResponse, RusotoError<GetJobDocumentError>>;
22055
22056    /// <p>Gets the logging options.</p> <p>NOTE: use of this command is not recommended. Use <code>GetV2LoggingOptions</code> instead.</p>
22057    async fn get_logging_options(
22058        &self,
22059    ) -> Result<GetLoggingOptionsResponse, RusotoError<GetLoggingOptionsError>>;
22060
22061    /// <p>Gets an OTA update.</p>
22062    async fn get_ota_update(
22063        &self,
22064        input: GetOTAUpdateRequest,
22065    ) -> Result<GetOTAUpdateResponse, RusotoError<GetOTAUpdateError>>;
22066
22067    /// <p>Groups the aggregated values that match the query into percentile groupings. The default percentile groupings are: 1,5,25,50,75,95,99, although you can specify your own when you call <code>GetPercentiles</code>. This function returns a value for each percentile group specified (or the default percentile groupings). The percentile group "1" contains the aggregated field value that occurs in approximately one percent of the values that match the query. The percentile group "5" contains the aggregated field value that occurs in approximately five percent of the values that match the query, and so on. The result is an approximation, the more values that match the query, the more accurate the percentile values.</p>
22068    async fn get_percentiles(
22069        &self,
22070        input: GetPercentilesRequest,
22071    ) -> Result<GetPercentilesResponse, RusotoError<GetPercentilesError>>;
22072
22073    /// <p>Gets information about the specified policy with the policy document of the default version.</p>
22074    async fn get_policy(
22075        &self,
22076        input: GetPolicyRequest,
22077    ) -> Result<GetPolicyResponse, RusotoError<GetPolicyError>>;
22078
22079    /// <p>Gets information about the specified policy version.</p>
22080    async fn get_policy_version(
22081        &self,
22082        input: GetPolicyVersionRequest,
22083    ) -> Result<GetPolicyVersionResponse, RusotoError<GetPolicyVersionError>>;
22084
22085    /// <p>Gets a registration code used to register a CA certificate with AWS IoT.</p>
22086    async fn get_registration_code(
22087        &self,
22088    ) -> Result<GetRegistrationCodeResponse, RusotoError<GetRegistrationCodeError>>;
22089
22090    /// <p>Returns the count, average, sum, minimum, maximum, sum of squares, variance, and standard deviation for the specified aggregated field. If the aggregation field is of type <code>String</code>, only the count statistic is returned.</p>
22091    async fn get_statistics(
22092        &self,
22093        input: GetStatisticsRequest,
22094    ) -> Result<GetStatisticsResponse, RusotoError<GetStatisticsError>>;
22095
22096    /// <p>Gets information about the rule.</p>
22097    async fn get_topic_rule(
22098        &self,
22099        input: GetTopicRuleRequest,
22100    ) -> Result<GetTopicRuleResponse, RusotoError<GetTopicRuleError>>;
22101
22102    /// <p>Gets information about a topic rule destination.</p>
22103    async fn get_topic_rule_destination(
22104        &self,
22105        input: GetTopicRuleDestinationRequest,
22106    ) -> Result<GetTopicRuleDestinationResponse, RusotoError<GetTopicRuleDestinationError>>;
22107
22108    /// <p>Gets the fine grained logging options.</p>
22109    async fn get_v2_logging_options(
22110        &self,
22111    ) -> Result<GetV2LoggingOptionsResponse, RusotoError<GetV2LoggingOptionsError>>;
22112
22113    /// <p>Lists the active violations for a given Device Defender security profile.</p>
22114    async fn list_active_violations(
22115        &self,
22116        input: ListActiveViolationsRequest,
22117    ) -> Result<ListActiveViolationsResponse, RusotoError<ListActiveViolationsError>>;
22118
22119    /// <p>Lists the policies attached to the specified thing group.</p>
22120    async fn list_attached_policies(
22121        &self,
22122        input: ListAttachedPoliciesRequest,
22123    ) -> Result<ListAttachedPoliciesResponse, RusotoError<ListAttachedPoliciesError>>;
22124
22125    /// <p>Lists the findings (results) of a Device Defender audit or of the audits performed during a specified time period. (Findings are retained for 180 days.)</p>
22126    async fn list_audit_findings(
22127        &self,
22128        input: ListAuditFindingsRequest,
22129    ) -> Result<ListAuditFindingsResponse, RusotoError<ListAuditFindingsError>>;
22130
22131    /// <p>Gets the status of audit mitigation action tasks that were executed.</p>
22132    async fn list_audit_mitigation_actions_executions(
22133        &self,
22134        input: ListAuditMitigationActionsExecutionsRequest,
22135    ) -> Result<
22136        ListAuditMitigationActionsExecutionsResponse,
22137        RusotoError<ListAuditMitigationActionsExecutionsError>,
22138    >;
22139
22140    /// <p>Gets a list of audit mitigation action tasks that match the specified filters.</p>
22141    async fn list_audit_mitigation_actions_tasks(
22142        &self,
22143        input: ListAuditMitigationActionsTasksRequest,
22144    ) -> Result<
22145        ListAuditMitigationActionsTasksResponse,
22146        RusotoError<ListAuditMitigationActionsTasksError>,
22147    >;
22148
22149    /// <p>Lists the Device Defender audits that have been performed during a given time period.</p>
22150    async fn list_audit_tasks(
22151        &self,
22152        input: ListAuditTasksRequest,
22153    ) -> Result<ListAuditTasksResponse, RusotoError<ListAuditTasksError>>;
22154
22155    /// <p>Lists the authorizers registered in your account.</p>
22156    async fn list_authorizers(
22157        &self,
22158        input: ListAuthorizersRequest,
22159    ) -> Result<ListAuthorizersResponse, RusotoError<ListAuthorizersError>>;
22160
22161    /// <p>Lists the billing groups you have created.</p>
22162    async fn list_billing_groups(
22163        &self,
22164        input: ListBillingGroupsRequest,
22165    ) -> Result<ListBillingGroupsResponse, RusotoError<ListBillingGroupsError>>;
22166
22167    /// <p>Lists the CA certificates registered for your AWS account.</p> <p>The results are paginated with a default page size of 25. You can use the returned marker to retrieve additional results.</p>
22168    async fn list_ca_certificates(
22169        &self,
22170        input: ListCACertificatesRequest,
22171    ) -> Result<ListCACertificatesResponse, RusotoError<ListCACertificatesError>>;
22172
22173    /// <p>Lists the certificates registered in your AWS account.</p> <p>The results are paginated with a default page size of 25. You can use the returned marker to retrieve additional results.</p>
22174    async fn list_certificates(
22175        &self,
22176        input: ListCertificatesRequest,
22177    ) -> Result<ListCertificatesResponse, RusotoError<ListCertificatesError>>;
22178
22179    /// <p>List the device certificates signed by the specified CA certificate.</p>
22180    async fn list_certificates_by_ca(
22181        &self,
22182        input: ListCertificatesByCARequest,
22183    ) -> Result<ListCertificatesByCAResponse, RusotoError<ListCertificatesByCAError>>;
22184
22185    /// <p>List the set of dimensions that are defined for your AWS account.</p>
22186    async fn list_dimensions(
22187        &self,
22188        input: ListDimensionsRequest,
22189    ) -> Result<ListDimensionsResponse, RusotoError<ListDimensionsError>>;
22190
22191    /// <p><p>Gets a list of domain configurations for the user. This list is sorted alphabetically by domain configuration name.</p> <note> <p>The domain configuration feature is in public preview and is subject to change.</p> </note></p>
22192    async fn list_domain_configurations(
22193        &self,
22194        input: ListDomainConfigurationsRequest,
22195    ) -> Result<ListDomainConfigurationsResponse, RusotoError<ListDomainConfigurationsError>>;
22196
22197    /// <p>Lists the search indices.</p>
22198    async fn list_indices(
22199        &self,
22200        input: ListIndicesRequest,
22201    ) -> Result<ListIndicesResponse, RusotoError<ListIndicesError>>;
22202
22203    /// <p>Lists the job executions for a job.</p>
22204    async fn list_job_executions_for_job(
22205        &self,
22206        input: ListJobExecutionsForJobRequest,
22207    ) -> Result<ListJobExecutionsForJobResponse, RusotoError<ListJobExecutionsForJobError>>;
22208
22209    /// <p>Lists the job executions for the specified thing.</p>
22210    async fn list_job_executions_for_thing(
22211        &self,
22212        input: ListJobExecutionsForThingRequest,
22213    ) -> Result<ListJobExecutionsForThingResponse, RusotoError<ListJobExecutionsForThingError>>;
22214
22215    /// <p>Lists jobs.</p>
22216    async fn list_jobs(
22217        &self,
22218        input: ListJobsRequest,
22219    ) -> Result<ListJobsResponse, RusotoError<ListJobsError>>;
22220
22221    /// <p>Gets a list of all mitigation actions that match the specified filter criteria.</p>
22222    async fn list_mitigation_actions(
22223        &self,
22224        input: ListMitigationActionsRequest,
22225    ) -> Result<ListMitigationActionsResponse, RusotoError<ListMitigationActionsError>>;
22226
22227    /// <p>Lists OTA updates.</p>
22228    async fn list_ota_updates(
22229        &self,
22230        input: ListOTAUpdatesRequest,
22231    ) -> Result<ListOTAUpdatesResponse, RusotoError<ListOTAUpdatesError>>;
22232
22233    /// <p>Lists certificates that are being transferred but not yet accepted.</p>
22234    async fn list_outgoing_certificates(
22235        &self,
22236        input: ListOutgoingCertificatesRequest,
22237    ) -> Result<ListOutgoingCertificatesResponse, RusotoError<ListOutgoingCertificatesError>>;
22238
22239    /// <p>Lists your policies.</p>
22240    async fn list_policies(
22241        &self,
22242        input: ListPoliciesRequest,
22243    ) -> Result<ListPoliciesResponse, RusotoError<ListPoliciesError>>;
22244
22245    /// <p>Lists the principals associated with the specified policy.</p> <p> <b>Note:</b> This API is deprecated. Please use <a>ListTargetsForPolicy</a> instead.</p>
22246    async fn list_policy_principals(
22247        &self,
22248        input: ListPolicyPrincipalsRequest,
22249    ) -> Result<ListPolicyPrincipalsResponse, RusotoError<ListPolicyPrincipalsError>>;
22250
22251    /// <p>Lists the versions of the specified policy and identifies the default version.</p>
22252    async fn list_policy_versions(
22253        &self,
22254        input: ListPolicyVersionsRequest,
22255    ) -> Result<ListPolicyVersionsResponse, RusotoError<ListPolicyVersionsError>>;
22256
22257    /// <p>Lists the policies attached to the specified principal. If you use an Cognito identity, the ID must be in <a href="https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetCredentialsForIdentity.html#API_GetCredentialsForIdentity_RequestSyntax">AmazonCognito Identity format</a>.</p> <p> <b>Note:</b> This API is deprecated. Please use <a>ListAttachedPolicies</a> instead.</p>
22258    async fn list_principal_policies(
22259        &self,
22260        input: ListPrincipalPoliciesRequest,
22261    ) -> Result<ListPrincipalPoliciesResponse, RusotoError<ListPrincipalPoliciesError>>;
22262
22263    /// <p>Lists the things associated with the specified principal. A principal can be X.509 certificates, IAM users, groups, and roles, Amazon Cognito identities or federated identities. </p>
22264    async fn list_principal_things(
22265        &self,
22266        input: ListPrincipalThingsRequest,
22267    ) -> Result<ListPrincipalThingsResponse, RusotoError<ListPrincipalThingsError>>;
22268
22269    /// <p>A list of fleet provisioning template versions.</p>
22270    async fn list_provisioning_template_versions(
22271        &self,
22272        input: ListProvisioningTemplateVersionsRequest,
22273    ) -> Result<
22274        ListProvisioningTemplateVersionsResponse,
22275        RusotoError<ListProvisioningTemplateVersionsError>,
22276    >;
22277
22278    /// <p>Lists the fleet provisioning templates in your AWS account.</p>
22279    async fn list_provisioning_templates(
22280        &self,
22281        input: ListProvisioningTemplatesRequest,
22282    ) -> Result<ListProvisioningTemplatesResponse, RusotoError<ListProvisioningTemplatesError>>;
22283
22284    /// <p>Lists the role aliases registered in your account.</p>
22285    async fn list_role_aliases(
22286        &self,
22287        input: ListRoleAliasesRequest,
22288    ) -> Result<ListRoleAliasesResponse, RusotoError<ListRoleAliasesError>>;
22289
22290    /// <p>Lists all of your scheduled audits.</p>
22291    async fn list_scheduled_audits(
22292        &self,
22293        input: ListScheduledAuditsRequest,
22294    ) -> Result<ListScheduledAuditsResponse, RusotoError<ListScheduledAuditsError>>;
22295
22296    /// <p>Lists the Device Defender security profiles you have created. You can use filters to list only those security profiles associated with a thing group or only those associated with your account.</p>
22297    async fn list_security_profiles(
22298        &self,
22299        input: ListSecurityProfilesRequest,
22300    ) -> Result<ListSecurityProfilesResponse, RusotoError<ListSecurityProfilesError>>;
22301
22302    /// <p>Lists the Device Defender security profiles attached to a target (thing group).</p>
22303    async fn list_security_profiles_for_target(
22304        &self,
22305        input: ListSecurityProfilesForTargetRequest,
22306    ) -> Result<
22307        ListSecurityProfilesForTargetResponse,
22308        RusotoError<ListSecurityProfilesForTargetError>,
22309    >;
22310
22311    /// <p>Lists all of the streams in your AWS account.</p>
22312    async fn list_streams(
22313        &self,
22314        input: ListStreamsRequest,
22315    ) -> Result<ListStreamsResponse, RusotoError<ListStreamsError>>;
22316
22317    /// <p>Lists the tags (metadata) you have assigned to the resource.</p>
22318    async fn list_tags_for_resource(
22319        &self,
22320        input: ListTagsForResourceRequest,
22321    ) -> Result<ListTagsForResourceResponse, RusotoError<ListTagsForResourceError>>;
22322
22323    /// <p>List targets for the specified policy.</p>
22324    async fn list_targets_for_policy(
22325        &self,
22326        input: ListTargetsForPolicyRequest,
22327    ) -> Result<ListTargetsForPolicyResponse, RusotoError<ListTargetsForPolicyError>>;
22328
22329    /// <p>Lists the targets (thing groups) associated with a given Device Defender security profile.</p>
22330    async fn list_targets_for_security_profile(
22331        &self,
22332        input: ListTargetsForSecurityProfileRequest,
22333    ) -> Result<
22334        ListTargetsForSecurityProfileResponse,
22335        RusotoError<ListTargetsForSecurityProfileError>,
22336    >;
22337
22338    /// <p>List the thing groups in your account.</p>
22339    async fn list_thing_groups(
22340        &self,
22341        input: ListThingGroupsRequest,
22342    ) -> Result<ListThingGroupsResponse, RusotoError<ListThingGroupsError>>;
22343
22344    /// <p>List the thing groups to which the specified thing belongs.</p>
22345    async fn list_thing_groups_for_thing(
22346        &self,
22347        input: ListThingGroupsForThingRequest,
22348    ) -> Result<ListThingGroupsForThingResponse, RusotoError<ListThingGroupsForThingError>>;
22349
22350    /// <p>Lists the principals associated with the specified thing. A principal can be X.509 certificates, IAM users, groups, and roles, Amazon Cognito identities or federated identities.</p>
22351    async fn list_thing_principals(
22352        &self,
22353        input: ListThingPrincipalsRequest,
22354    ) -> Result<ListThingPrincipalsResponse, RusotoError<ListThingPrincipalsError>>;
22355
22356    /// <p>Information about the thing registration tasks.</p>
22357    async fn list_thing_registration_task_reports(
22358        &self,
22359        input: ListThingRegistrationTaskReportsRequest,
22360    ) -> Result<
22361        ListThingRegistrationTaskReportsResponse,
22362        RusotoError<ListThingRegistrationTaskReportsError>,
22363    >;
22364
22365    /// <p>List bulk thing provisioning tasks.</p>
22366    async fn list_thing_registration_tasks(
22367        &self,
22368        input: ListThingRegistrationTasksRequest,
22369    ) -> Result<ListThingRegistrationTasksResponse, RusotoError<ListThingRegistrationTasksError>>;
22370
22371    /// <p>Lists the existing thing types.</p>
22372    async fn list_thing_types(
22373        &self,
22374        input: ListThingTypesRequest,
22375    ) -> Result<ListThingTypesResponse, RusotoError<ListThingTypesError>>;
22376
22377    /// <p>Lists your things. Use the <b>attributeName</b> and <b>attributeValue</b> parameters to filter your things. For example, calling <code>ListThings</code> with attributeName=Color and attributeValue=Red retrieves all things in the registry that contain an attribute <b>Color</b> with the value <b>Red</b>. </p>
22378    async fn list_things(
22379        &self,
22380        input: ListThingsRequest,
22381    ) -> Result<ListThingsResponse, RusotoError<ListThingsError>>;
22382
22383    /// <p>Lists the things you have added to the given billing group.</p>
22384    async fn list_things_in_billing_group(
22385        &self,
22386        input: ListThingsInBillingGroupRequest,
22387    ) -> Result<ListThingsInBillingGroupResponse, RusotoError<ListThingsInBillingGroupError>>;
22388
22389    /// <p>Lists the things in the specified group.</p>
22390    async fn list_things_in_thing_group(
22391        &self,
22392        input: ListThingsInThingGroupRequest,
22393    ) -> Result<ListThingsInThingGroupResponse, RusotoError<ListThingsInThingGroupError>>;
22394
22395    /// <p>Lists all the topic rule destinations in your AWS account.</p>
22396    async fn list_topic_rule_destinations(
22397        &self,
22398        input: ListTopicRuleDestinationsRequest,
22399    ) -> Result<ListTopicRuleDestinationsResponse, RusotoError<ListTopicRuleDestinationsError>>;
22400
22401    /// <p>Lists the rules for the specific topic.</p>
22402    async fn list_topic_rules(
22403        &self,
22404        input: ListTopicRulesRequest,
22405    ) -> Result<ListTopicRulesResponse, RusotoError<ListTopicRulesError>>;
22406
22407    /// <p>Lists logging levels.</p>
22408    async fn list_v2_logging_levels(
22409        &self,
22410        input: ListV2LoggingLevelsRequest,
22411    ) -> Result<ListV2LoggingLevelsResponse, RusotoError<ListV2LoggingLevelsError>>;
22412
22413    /// <p>Lists the Device Defender security profile violations discovered during the given time period. You can use filters to limit the results to those alerts issued for a particular security profile, behavior, or thing (device).</p>
22414    async fn list_violation_events(
22415        &self,
22416        input: ListViolationEventsRequest,
22417    ) -> Result<ListViolationEventsResponse, RusotoError<ListViolationEventsError>>;
22418
22419    /// <p>Registers a CA certificate with AWS IoT. This CA certificate can then be used to sign device certificates, which can be then registered with AWS IoT. You can register up to 10 CA certificates per AWS account that have the same subject field. This enables you to have up to 10 certificate authorities sign your device certificates. If you have more than one CA certificate registered, make sure you pass the CA certificate when you register your device certificates with the RegisterCertificate API.</p>
22420    async fn register_ca_certificate(
22421        &self,
22422        input: RegisterCACertificateRequest,
22423    ) -> Result<RegisterCACertificateResponse, RusotoError<RegisterCACertificateError>>;
22424
22425    /// <p>Registers a device certificate with AWS IoT. If you have more than one CA certificate that has the same subject field, you must specify the CA certificate that was used to sign the device certificate being registered.</p>
22426    async fn register_certificate(
22427        &self,
22428        input: RegisterCertificateRequest,
22429    ) -> Result<RegisterCertificateResponse, RusotoError<RegisterCertificateError>>;
22430
22431    /// <p>Register a certificate that does not have a certificate authority (CA).</p>
22432    async fn register_certificate_without_ca(
22433        &self,
22434        input: RegisterCertificateWithoutCARequest,
22435    ) -> Result<RegisterCertificateWithoutCAResponse, RusotoError<RegisterCertificateWithoutCAError>>;
22436
22437    /// <p>Provisions a thing in the device registry. RegisterThing calls other AWS IoT control plane APIs. These calls might exceed your account level <a href="https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html#limits_iot"> AWS IoT Throttling Limits</a> and cause throttle errors. Please contact <a href="https://console.aws.amazon.com/support/home">AWS Customer Support</a> to raise your throttling limits if necessary.</p>
22438    async fn register_thing(
22439        &self,
22440        input: RegisterThingRequest,
22441    ) -> Result<RegisterThingResponse, RusotoError<RegisterThingError>>;
22442
22443    /// <p>Rejects a pending certificate transfer. After AWS IoT rejects a certificate transfer, the certificate status changes from <b>PENDING_TRANSFER</b> to <b>INACTIVE</b>.</p> <p>To check for pending certificate transfers, call <a>ListCertificates</a> to enumerate your certificates.</p> <p>This operation can only be called by the transfer destination. After it is called, the certificate will be returned to the source's account in the INACTIVE state.</p>
22444    async fn reject_certificate_transfer(
22445        &self,
22446        input: RejectCertificateTransferRequest,
22447    ) -> Result<(), RusotoError<RejectCertificateTransferError>>;
22448
22449    /// <p>Removes the given thing from the billing group.</p>
22450    async fn remove_thing_from_billing_group(
22451        &self,
22452        input: RemoveThingFromBillingGroupRequest,
22453    ) -> Result<RemoveThingFromBillingGroupResponse, RusotoError<RemoveThingFromBillingGroupError>>;
22454
22455    /// <p>Remove the specified thing from the specified group.</p> <p>You must specify either a <code>thingGroupArn</code> or a <code>thingGroupName</code> to identify the thing group and either a <code>thingArn</code> or a <code>thingName</code> to identify the thing to remove from the thing group. </p>
22456    async fn remove_thing_from_thing_group(
22457        &self,
22458        input: RemoveThingFromThingGroupRequest,
22459    ) -> Result<RemoveThingFromThingGroupResponse, RusotoError<RemoveThingFromThingGroupError>>;
22460
22461    /// <p>Replaces the rule. You must specify all parameters for the new rule. Creating rules is an administrator-level action. Any user who has permission to create rules will be able to access data processed by the rule.</p>
22462    async fn replace_topic_rule(
22463        &self,
22464        input: ReplaceTopicRuleRequest,
22465    ) -> Result<(), RusotoError<ReplaceTopicRuleError>>;
22466
22467    /// <p>The query search index.</p>
22468    async fn search_index(
22469        &self,
22470        input: SearchIndexRequest,
22471    ) -> Result<SearchIndexResponse, RusotoError<SearchIndexError>>;
22472
22473    /// <p>Sets the default authorizer. This will be used if a websocket connection is made without specifying an authorizer.</p>
22474    async fn set_default_authorizer(
22475        &self,
22476        input: SetDefaultAuthorizerRequest,
22477    ) -> Result<SetDefaultAuthorizerResponse, RusotoError<SetDefaultAuthorizerError>>;
22478
22479    /// <p>Sets the specified version of the specified policy as the policy's default (operative) version. This action affects all certificates to which the policy is attached. To list the principals the policy is attached to, use the ListPrincipalPolicy API.</p>
22480    async fn set_default_policy_version(
22481        &self,
22482        input: SetDefaultPolicyVersionRequest,
22483    ) -> Result<(), RusotoError<SetDefaultPolicyVersionError>>;
22484
22485    /// <p>Sets the logging options.</p> <p>NOTE: use of this command is not recommended. Use <code>SetV2LoggingOptions</code> instead.</p>
22486    async fn set_logging_options(
22487        &self,
22488        input: SetLoggingOptionsRequest,
22489    ) -> Result<(), RusotoError<SetLoggingOptionsError>>;
22490
22491    /// <p>Sets the logging level.</p>
22492    async fn set_v2_logging_level(
22493        &self,
22494        input: SetV2LoggingLevelRequest,
22495    ) -> Result<(), RusotoError<SetV2LoggingLevelError>>;
22496
22497    /// <p>Sets the logging options for the V2 logging service.</p>
22498    async fn set_v2_logging_options(
22499        &self,
22500        input: SetV2LoggingOptionsRequest,
22501    ) -> Result<(), RusotoError<SetV2LoggingOptionsError>>;
22502
22503    /// <p>Starts a task that applies a set of mitigation actions to the specified target.</p>
22504    async fn start_audit_mitigation_actions_task(
22505        &self,
22506        input: StartAuditMitigationActionsTaskRequest,
22507    ) -> Result<
22508        StartAuditMitigationActionsTaskResponse,
22509        RusotoError<StartAuditMitigationActionsTaskError>,
22510    >;
22511
22512    /// <p>Starts an on-demand Device Defender audit.</p>
22513    async fn start_on_demand_audit_task(
22514        &self,
22515        input: StartOnDemandAuditTaskRequest,
22516    ) -> Result<StartOnDemandAuditTaskResponse, RusotoError<StartOnDemandAuditTaskError>>;
22517
22518    /// <p>Creates a bulk thing provisioning task.</p>
22519    async fn start_thing_registration_task(
22520        &self,
22521        input: StartThingRegistrationTaskRequest,
22522    ) -> Result<StartThingRegistrationTaskResponse, RusotoError<StartThingRegistrationTaskError>>;
22523
22524    /// <p>Cancels a bulk thing provisioning task.</p>
22525    async fn stop_thing_registration_task(
22526        &self,
22527        input: StopThingRegistrationTaskRequest,
22528    ) -> Result<StopThingRegistrationTaskResponse, RusotoError<StopThingRegistrationTaskError>>;
22529
22530    /// <p>Adds to or modifies the tags of the given resource. Tags are metadata which can be used to manage a resource.</p>
22531    async fn tag_resource(
22532        &self,
22533        input: TagResourceRequest,
22534    ) -> Result<TagResourceResponse, RusotoError<TagResourceError>>;
22535
22536    /// <p>Tests if a specified principal is authorized to perform an AWS IoT action on a specified resource. Use this to test and debug the authorization behavior of devices that connect to the AWS IoT device gateway.</p>
22537    async fn test_authorization(
22538        &self,
22539        input: TestAuthorizationRequest,
22540    ) -> Result<TestAuthorizationResponse, RusotoError<TestAuthorizationError>>;
22541
22542    /// <p>Tests a custom authorization behavior by invoking a specified custom authorizer. Use this to test and debug the custom authorization behavior of devices that connect to the AWS IoT device gateway.</p>
22543    async fn test_invoke_authorizer(
22544        &self,
22545        input: TestInvokeAuthorizerRequest,
22546    ) -> Result<TestInvokeAuthorizerResponse, RusotoError<TestInvokeAuthorizerError>>;
22547
22548    /// <p>Transfers the specified certificate to the specified AWS account.</p> <p>You can cancel the transfer until it is acknowledged by the recipient.</p> <p>No notification is sent to the transfer destination's account. It is up to the caller to notify the transfer target.</p> <p>The certificate being transferred must not be in the ACTIVE state. You can use the UpdateCertificate API to deactivate it.</p> <p>The certificate must not have any policies attached to it. You can use the DetachPrincipalPolicy API to detach them.</p>
22549    async fn transfer_certificate(
22550        &self,
22551        input: TransferCertificateRequest,
22552    ) -> Result<TransferCertificateResponse, RusotoError<TransferCertificateError>>;
22553
22554    /// <p>Removes the given tags (metadata) from the resource.</p>
22555    async fn untag_resource(
22556        &self,
22557        input: UntagResourceRequest,
22558    ) -> Result<UntagResourceResponse, RusotoError<UntagResourceError>>;
22559
22560    /// <p>Configures or reconfigures the Device Defender audit settings for this account. Settings include how audit notifications are sent and which audit checks are enabled or disabled.</p>
22561    async fn update_account_audit_configuration(
22562        &self,
22563        input: UpdateAccountAuditConfigurationRequest,
22564    ) -> Result<
22565        UpdateAccountAuditConfigurationResponse,
22566        RusotoError<UpdateAccountAuditConfigurationError>,
22567    >;
22568
22569    /// <p>Updates an authorizer.</p>
22570    async fn update_authorizer(
22571        &self,
22572        input: UpdateAuthorizerRequest,
22573    ) -> Result<UpdateAuthorizerResponse, RusotoError<UpdateAuthorizerError>>;
22574
22575    /// <p>Updates information about the billing group.</p>
22576    async fn update_billing_group(
22577        &self,
22578        input: UpdateBillingGroupRequest,
22579    ) -> Result<UpdateBillingGroupResponse, RusotoError<UpdateBillingGroupError>>;
22580
22581    /// <p>Updates a registered CA certificate.</p>
22582    async fn update_ca_certificate(
22583        &self,
22584        input: UpdateCACertificateRequest,
22585    ) -> Result<(), RusotoError<UpdateCACertificateError>>;
22586
22587    /// <p>Updates the status of the specified certificate. This operation is idempotent.</p> <p>Moving a certificate from the ACTIVE state (including REVOKED) will not disconnect currently connected devices, but these devices will be unable to reconnect.</p> <p>The ACTIVE state is required to authenticate devices connecting to AWS IoT using a certificate.</p>
22588    async fn update_certificate(
22589        &self,
22590        input: UpdateCertificateRequest,
22591    ) -> Result<(), RusotoError<UpdateCertificateError>>;
22592
22593    /// <p>Updates the definition for a dimension. You cannot change the type of a dimension after it is created (you can delete it and re-create it).</p>
22594    async fn update_dimension(
22595        &self,
22596        input: UpdateDimensionRequest,
22597    ) -> Result<UpdateDimensionResponse, RusotoError<UpdateDimensionError>>;
22598
22599    /// <p><p>Updates values stored in the domain configuration. Domain configurations for default endpoints can&#39;t be updated.</p> <note> <p>The domain configuration feature is in public preview and is subject to change.</p> </note></p>
22600    async fn update_domain_configuration(
22601        &self,
22602        input: UpdateDomainConfigurationRequest,
22603    ) -> Result<UpdateDomainConfigurationResponse, RusotoError<UpdateDomainConfigurationError>>;
22604
22605    /// <p>Updates a dynamic thing group.</p>
22606    async fn update_dynamic_thing_group(
22607        &self,
22608        input: UpdateDynamicThingGroupRequest,
22609    ) -> Result<UpdateDynamicThingGroupResponse, RusotoError<UpdateDynamicThingGroupError>>;
22610
22611    /// <p>Updates the event configurations.</p>
22612    async fn update_event_configurations(
22613        &self,
22614        input: UpdateEventConfigurationsRequest,
22615    ) -> Result<UpdateEventConfigurationsResponse, RusotoError<UpdateEventConfigurationsError>>;
22616
22617    /// <p>Updates the search configuration.</p>
22618    async fn update_indexing_configuration(
22619        &self,
22620        input: UpdateIndexingConfigurationRequest,
22621    ) -> Result<UpdateIndexingConfigurationResponse, RusotoError<UpdateIndexingConfigurationError>>;
22622
22623    /// <p>Updates supported fields of the specified job.</p>
22624    async fn update_job(&self, input: UpdateJobRequest) -> Result<(), RusotoError<UpdateJobError>>;
22625
22626    /// <p>Updates the definition for the specified mitigation action.</p>
22627    async fn update_mitigation_action(
22628        &self,
22629        input: UpdateMitigationActionRequest,
22630    ) -> Result<UpdateMitigationActionResponse, RusotoError<UpdateMitigationActionError>>;
22631
22632    /// <p>Updates a fleet provisioning template.</p>
22633    async fn update_provisioning_template(
22634        &self,
22635        input: UpdateProvisioningTemplateRequest,
22636    ) -> Result<UpdateProvisioningTemplateResponse, RusotoError<UpdateProvisioningTemplateError>>;
22637
22638    /// <p>Updates a role alias.</p>
22639    async fn update_role_alias(
22640        &self,
22641        input: UpdateRoleAliasRequest,
22642    ) -> Result<UpdateRoleAliasResponse, RusotoError<UpdateRoleAliasError>>;
22643
22644    /// <p>Updates a scheduled audit, including which checks are performed and how often the audit takes place.</p>
22645    async fn update_scheduled_audit(
22646        &self,
22647        input: UpdateScheduledAuditRequest,
22648    ) -> Result<UpdateScheduledAuditResponse, RusotoError<UpdateScheduledAuditError>>;
22649
22650    /// <p>Updates a Device Defender security profile.</p>
22651    async fn update_security_profile(
22652        &self,
22653        input: UpdateSecurityProfileRequest,
22654    ) -> Result<UpdateSecurityProfileResponse, RusotoError<UpdateSecurityProfileError>>;
22655
22656    /// <p>Updates an existing stream. The stream version will be incremented by one.</p>
22657    async fn update_stream(
22658        &self,
22659        input: UpdateStreamRequest,
22660    ) -> Result<UpdateStreamResponse, RusotoError<UpdateStreamError>>;
22661
22662    /// <p>Updates the data for a thing.</p>
22663    async fn update_thing(
22664        &self,
22665        input: UpdateThingRequest,
22666    ) -> Result<UpdateThingResponse, RusotoError<UpdateThingError>>;
22667
22668    /// <p>Update a thing group.</p>
22669    async fn update_thing_group(
22670        &self,
22671        input: UpdateThingGroupRequest,
22672    ) -> Result<UpdateThingGroupResponse, RusotoError<UpdateThingGroupError>>;
22673
22674    /// <p>Updates the groups to which the thing belongs.</p>
22675    async fn update_thing_groups_for_thing(
22676        &self,
22677        input: UpdateThingGroupsForThingRequest,
22678    ) -> Result<UpdateThingGroupsForThingResponse, RusotoError<UpdateThingGroupsForThingError>>;
22679
22680    /// <p>Updates a topic rule destination. You use this to change the status, endpoint URL, or confirmation URL of the destination.</p>
22681    async fn update_topic_rule_destination(
22682        &self,
22683        input: UpdateTopicRuleDestinationRequest,
22684    ) -> Result<UpdateTopicRuleDestinationResponse, RusotoError<UpdateTopicRuleDestinationError>>;
22685
22686    /// <p>Validates a Device Defender security profile behaviors specification.</p>
22687    async fn validate_security_profile_behaviors(
22688        &self,
22689        input: ValidateSecurityProfileBehaviorsRequest,
22690    ) -> Result<
22691        ValidateSecurityProfileBehaviorsResponse,
22692        RusotoError<ValidateSecurityProfileBehaviorsError>,
22693    >;
22694}
22695/// A client for the AWS IoT API.
22696#[derive(Clone)]
22697pub struct IotClient {
22698    client: Client,
22699    region: region::Region,
22700}
22701
22702impl IotClient {
22703    /// Creates a client backed by the default tokio event loop.
22704    ///
22705    /// The client will use the default credentials provider and tls client.
22706    pub fn new(region: region::Region) -> IotClient {
22707        IotClient {
22708            client: Client::shared(),
22709            region,
22710        }
22711    }
22712
22713    pub fn new_with<P, D>(
22714        request_dispatcher: D,
22715        credentials_provider: P,
22716        region: region::Region,
22717    ) -> IotClient
22718    where
22719        P: ProvideAwsCredentials + Send + Sync + 'static,
22720        D: DispatchSignedRequest + Send + Sync + 'static,
22721    {
22722        IotClient {
22723            client: Client::new_with(credentials_provider, request_dispatcher),
22724            region,
22725        }
22726    }
22727
22728    pub fn new_with_client(client: Client, region: region::Region) -> IotClient {
22729        IotClient { client, region }
22730    }
22731}
22732
22733#[async_trait]
22734impl Iot for IotClient {
22735    /// <p>Accepts a pending certificate transfer. The default state of the certificate is INACTIVE.</p> <p>To check for pending certificate transfers, call <a>ListCertificates</a> to enumerate your certificates.</p>
22736    #[allow(unused_mut)]
22737    async fn accept_certificate_transfer(
22738        &self,
22739        input: AcceptCertificateTransferRequest,
22740    ) -> Result<(), RusotoError<AcceptCertificateTransferError>> {
22741        let request_uri = format!(
22742            "/accept-certificate-transfer/{certificate_id}",
22743            certificate_id = input.certificate_id
22744        );
22745
22746        let mut request = SignedRequest::new("PATCH", "execute-api", &self.region, &request_uri);
22747        request.set_content_type("application/x-amz-json-1.1".to_owned());
22748
22749        request.set_endpoint_prefix("iot".to_string());
22750
22751        let mut params = Params::new();
22752        if let Some(ref x) = input.set_as_active {
22753            params.put("setAsActive", x);
22754        }
22755        request.set_params(params);
22756
22757        let mut response = self
22758            .client
22759            .sign_and_dispatch(request)
22760            .await
22761            .map_err(RusotoError::from)?;
22762        if response.status.is_success() {
22763            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
22764            let result = ::std::mem::drop(response);
22765
22766            Ok(result)
22767        } else {
22768            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
22769            Err(AcceptCertificateTransferError::from_response(response))
22770        }
22771    }
22772
22773    /// <p>Adds a thing to a billing group.</p>
22774    #[allow(unused_mut)]
22775    async fn add_thing_to_billing_group(
22776        &self,
22777        input: AddThingToBillingGroupRequest,
22778    ) -> Result<AddThingToBillingGroupResponse, RusotoError<AddThingToBillingGroupError>> {
22779        let request_uri = "/billing-groups/addThingToBillingGroup";
22780
22781        let mut request = SignedRequest::new("PUT", "execute-api", &self.region, &request_uri);
22782        request.set_content_type("application/x-amz-json-1.1".to_owned());
22783
22784        request.set_endpoint_prefix("iot".to_string());
22785        let encoded = Some(serde_json::to_vec(&input).unwrap());
22786        request.set_payload(encoded);
22787
22788        let mut response = self
22789            .client
22790            .sign_and_dispatch(request)
22791            .await
22792            .map_err(RusotoError::from)?;
22793        if response.status.is_success() {
22794            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
22795            let result = proto::json::ResponsePayload::new(&response)
22796                .deserialize::<AddThingToBillingGroupResponse, _>()?;
22797
22798            Ok(result)
22799        } else {
22800            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
22801            Err(AddThingToBillingGroupError::from_response(response))
22802        }
22803    }
22804
22805    /// <p>Adds a thing to a thing group.</p>
22806    #[allow(unused_mut)]
22807    async fn add_thing_to_thing_group(
22808        &self,
22809        input: AddThingToThingGroupRequest,
22810    ) -> Result<AddThingToThingGroupResponse, RusotoError<AddThingToThingGroupError>> {
22811        let request_uri = "/thing-groups/addThingToThingGroup";
22812
22813        let mut request = SignedRequest::new("PUT", "execute-api", &self.region, &request_uri);
22814        request.set_content_type("application/x-amz-json-1.1".to_owned());
22815
22816        request.set_endpoint_prefix("iot".to_string());
22817        let encoded = Some(serde_json::to_vec(&input).unwrap());
22818        request.set_payload(encoded);
22819
22820        let mut response = self
22821            .client
22822            .sign_and_dispatch(request)
22823            .await
22824            .map_err(RusotoError::from)?;
22825        if response.status.is_success() {
22826            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
22827            let result = proto::json::ResponsePayload::new(&response)
22828                .deserialize::<AddThingToThingGroupResponse, _>()?;
22829
22830            Ok(result)
22831        } else {
22832            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
22833            Err(AddThingToThingGroupError::from_response(response))
22834        }
22835    }
22836
22837    /// <p><p>Associates a group with a continuous job. The following criteria must be met: </p> <ul> <li> <p>The job must have been created with the <code>targetSelection</code> field set to &quot;CONTINUOUS&quot;.</p> </li> <li> <p>The job status must currently be &quot;IN_PROGRESS&quot;.</p> </li> <li> <p>The total number of targets associated with a job must not exceed 100.</p> </li> </ul></p>
22838    #[allow(unused_mut)]
22839    async fn associate_targets_with_job(
22840        &self,
22841        input: AssociateTargetsWithJobRequest,
22842    ) -> Result<AssociateTargetsWithJobResponse, RusotoError<AssociateTargetsWithJobError>> {
22843        let request_uri = format!("/jobs/{job_id}/targets", job_id = input.job_id);
22844
22845        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
22846        request.set_content_type("application/x-amz-json-1.1".to_owned());
22847
22848        request.set_endpoint_prefix("iot".to_string());
22849        let encoded = Some(serde_json::to_vec(&input).unwrap());
22850        request.set_payload(encoded);
22851
22852        let mut response = self
22853            .client
22854            .sign_and_dispatch(request)
22855            .await
22856            .map_err(RusotoError::from)?;
22857        if response.status.is_success() {
22858            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
22859            let result = proto::json::ResponsePayload::new(&response)
22860                .deserialize::<AssociateTargetsWithJobResponse, _>()?;
22861
22862            Ok(result)
22863        } else {
22864            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
22865            Err(AssociateTargetsWithJobError::from_response(response))
22866        }
22867    }
22868
22869    /// <p>Attaches a policy to the specified target.</p>
22870    #[allow(unused_mut)]
22871    async fn attach_policy(
22872        &self,
22873        input: AttachPolicyRequest,
22874    ) -> Result<(), RusotoError<AttachPolicyError>> {
22875        let request_uri = format!(
22876            "/target-policies/{policy_name}",
22877            policy_name = input.policy_name
22878        );
22879
22880        let mut request = SignedRequest::new("PUT", "execute-api", &self.region, &request_uri);
22881        request.set_content_type("application/x-amz-json-1.1".to_owned());
22882
22883        request.set_endpoint_prefix("iot".to_string());
22884        let encoded = Some(serde_json::to_vec(&input).unwrap());
22885        request.set_payload(encoded);
22886
22887        let mut response = self
22888            .client
22889            .sign_and_dispatch(request)
22890            .await
22891            .map_err(RusotoError::from)?;
22892        if response.status.is_success() {
22893            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
22894            let result = ::std::mem::drop(response);
22895
22896            Ok(result)
22897        } else {
22898            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
22899            Err(AttachPolicyError::from_response(response))
22900        }
22901    }
22902
22903    /// <p>Attaches the specified policy to the specified principal (certificate or other credential).</p> <p> <b>Note:</b> This API is deprecated. Please use <a>AttachPolicy</a> instead.</p>
22904    #[allow(unused_mut)]
22905    async fn attach_principal_policy(
22906        &self,
22907        input: AttachPrincipalPolicyRequest,
22908    ) -> Result<(), RusotoError<AttachPrincipalPolicyError>> {
22909        let request_uri = format!(
22910            "/principal-policies/{policy_name}",
22911            policy_name = input.policy_name
22912        );
22913
22914        let mut request = SignedRequest::new("PUT", "execute-api", &self.region, &request_uri);
22915        request.set_content_type("application/x-amz-json-1.1".to_owned());
22916
22917        request.set_endpoint_prefix("iot".to_string());
22918
22919        request.add_header("x-amzn-iot-principal", &input.principal.to_string());
22920
22921        let mut response = self
22922            .client
22923            .sign_and_dispatch(request)
22924            .await
22925            .map_err(RusotoError::from)?;
22926        if response.status.is_success() {
22927            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
22928            let result = ::std::mem::drop(response);
22929
22930            Ok(result)
22931        } else {
22932            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
22933            Err(AttachPrincipalPolicyError::from_response(response))
22934        }
22935    }
22936
22937    /// <p>Associates a Device Defender security profile with a thing group or this account. Each thing group or account can have up to five security profiles associated with it.</p>
22938    #[allow(unused_mut)]
22939    async fn attach_security_profile(
22940        &self,
22941        input: AttachSecurityProfileRequest,
22942    ) -> Result<AttachSecurityProfileResponse, RusotoError<AttachSecurityProfileError>> {
22943        let request_uri = format!(
22944            "/security-profiles/{security_profile_name}/targets",
22945            security_profile_name = input.security_profile_name
22946        );
22947
22948        let mut request = SignedRequest::new("PUT", "execute-api", &self.region, &request_uri);
22949        request.set_content_type("application/x-amz-json-1.1".to_owned());
22950
22951        request.set_endpoint_prefix("iot".to_string());
22952
22953        let mut params = Params::new();
22954        params.put(
22955            "securityProfileTargetArn",
22956            &input.security_profile_target_arn,
22957        );
22958        request.set_params(params);
22959
22960        let mut response = self
22961            .client
22962            .sign_and_dispatch(request)
22963            .await
22964            .map_err(RusotoError::from)?;
22965        if response.status.is_success() {
22966            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
22967            let result = proto::json::ResponsePayload::new(&response)
22968                .deserialize::<AttachSecurityProfileResponse, _>()?;
22969
22970            Ok(result)
22971        } else {
22972            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
22973            Err(AttachSecurityProfileError::from_response(response))
22974        }
22975    }
22976
22977    /// <p>Attaches the specified principal to the specified thing. A principal can be X.509 certificates, IAM users, groups, and roles, Amazon Cognito identities or federated identities.</p>
22978    #[allow(unused_mut)]
22979    async fn attach_thing_principal(
22980        &self,
22981        input: AttachThingPrincipalRequest,
22982    ) -> Result<AttachThingPrincipalResponse, RusotoError<AttachThingPrincipalError>> {
22983        let request_uri = format!(
22984            "/things/{thing_name}/principals",
22985            thing_name = input.thing_name
22986        );
22987
22988        let mut request = SignedRequest::new("PUT", "execute-api", &self.region, &request_uri);
22989        request.set_content_type("application/x-amz-json-1.1".to_owned());
22990
22991        request.set_endpoint_prefix("iot".to_string());
22992
22993        request.add_header("x-amzn-principal", &input.principal.to_string());
22994
22995        let mut response = self
22996            .client
22997            .sign_and_dispatch(request)
22998            .await
22999            .map_err(RusotoError::from)?;
23000        if response.status.is_success() {
23001            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23002            let result = proto::json::ResponsePayload::new(&response)
23003                .deserialize::<AttachThingPrincipalResponse, _>()?;
23004
23005            Ok(result)
23006        } else {
23007            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23008            Err(AttachThingPrincipalError::from_response(response))
23009        }
23010    }
23011
23012    /// <p>Cancels a mitigation action task that is in progress. If the task is not in progress, an InvalidRequestException occurs.</p>
23013    #[allow(unused_mut)]
23014    async fn cancel_audit_mitigation_actions_task(
23015        &self,
23016        input: CancelAuditMitigationActionsTaskRequest,
23017    ) -> Result<
23018        CancelAuditMitigationActionsTaskResponse,
23019        RusotoError<CancelAuditMitigationActionsTaskError>,
23020    > {
23021        let request_uri = format!(
23022            "/audit/mitigationactions/tasks/{task_id}/cancel",
23023            task_id = input.task_id
23024        );
23025
23026        let mut request = SignedRequest::new("PUT", "execute-api", &self.region, &request_uri);
23027        request.set_content_type("application/x-amz-json-1.1".to_owned());
23028
23029        request.set_endpoint_prefix("iot".to_string());
23030
23031        let mut response = self
23032            .client
23033            .sign_and_dispatch(request)
23034            .await
23035            .map_err(RusotoError::from)?;
23036        if response.status.is_success() {
23037            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23038            let result = proto::json::ResponsePayload::new(&response)
23039                .deserialize::<CancelAuditMitigationActionsTaskResponse, _>()?;
23040
23041            Ok(result)
23042        } else {
23043            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23044            Err(CancelAuditMitigationActionsTaskError::from_response(
23045                response,
23046            ))
23047        }
23048    }
23049
23050    /// <p>Cancels an audit that is in progress. The audit can be either scheduled or on-demand. If the audit is not in progress, an "InvalidRequestException" occurs.</p>
23051    #[allow(unused_mut)]
23052    async fn cancel_audit_task(
23053        &self,
23054        input: CancelAuditTaskRequest,
23055    ) -> Result<CancelAuditTaskResponse, RusotoError<CancelAuditTaskError>> {
23056        let request_uri = format!("/audit/tasks/{task_id}/cancel", task_id = input.task_id);
23057
23058        let mut request = SignedRequest::new("PUT", "execute-api", &self.region, &request_uri);
23059        request.set_content_type("application/x-amz-json-1.1".to_owned());
23060
23061        request.set_endpoint_prefix("iot".to_string());
23062
23063        let mut response = self
23064            .client
23065            .sign_and_dispatch(request)
23066            .await
23067            .map_err(RusotoError::from)?;
23068        if response.status.is_success() {
23069            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23070            let result = proto::json::ResponsePayload::new(&response)
23071                .deserialize::<CancelAuditTaskResponse, _>()?;
23072
23073            Ok(result)
23074        } else {
23075            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23076            Err(CancelAuditTaskError::from_response(response))
23077        }
23078    }
23079
23080    /// <p>Cancels a pending transfer for the specified certificate.</p> <p> <b>Note</b> Only the transfer source account can use this operation to cancel a transfer. (Transfer destinations can use <a>RejectCertificateTransfer</a> instead.) After transfer, AWS IoT returns the certificate to the source account in the INACTIVE state. After the destination account has accepted the transfer, the transfer cannot be cancelled.</p> <p>After a certificate transfer is cancelled, the status of the certificate changes from PENDING_TRANSFER to INACTIVE.</p>
23081    #[allow(unused_mut)]
23082    async fn cancel_certificate_transfer(
23083        &self,
23084        input: CancelCertificateTransferRequest,
23085    ) -> Result<(), RusotoError<CancelCertificateTransferError>> {
23086        let request_uri = format!(
23087            "/cancel-certificate-transfer/{certificate_id}",
23088            certificate_id = input.certificate_id
23089        );
23090
23091        let mut request = SignedRequest::new("PATCH", "execute-api", &self.region, &request_uri);
23092        request.set_content_type("application/x-amz-json-1.1".to_owned());
23093
23094        request.set_endpoint_prefix("iot".to_string());
23095
23096        let mut response = self
23097            .client
23098            .sign_and_dispatch(request)
23099            .await
23100            .map_err(RusotoError::from)?;
23101        if response.status.is_success() {
23102            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23103            let result = ::std::mem::drop(response);
23104
23105            Ok(result)
23106        } else {
23107            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23108            Err(CancelCertificateTransferError::from_response(response))
23109        }
23110    }
23111
23112    /// <p>Cancels a job.</p>
23113    #[allow(unused_mut)]
23114    async fn cancel_job(
23115        &self,
23116        input: CancelJobRequest,
23117    ) -> Result<CancelJobResponse, RusotoError<CancelJobError>> {
23118        let request_uri = format!("/jobs/{job_id}/cancel", job_id = input.job_id);
23119
23120        let mut request = SignedRequest::new("PUT", "execute-api", &self.region, &request_uri);
23121        request.set_content_type("application/x-amz-json-1.1".to_owned());
23122
23123        request.set_endpoint_prefix("iot".to_string());
23124        let encoded = Some(serde_json::to_vec(&input).unwrap());
23125        request.set_payload(encoded);
23126
23127        let mut params = Params::new();
23128        if let Some(ref x) = input.force {
23129            params.put("force", x);
23130        }
23131        request.set_params(params);
23132
23133        let mut response = self
23134            .client
23135            .sign_and_dispatch(request)
23136            .await
23137            .map_err(RusotoError::from)?;
23138        if response.status.is_success() {
23139            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23140            let result = proto::json::ResponsePayload::new(&response)
23141                .deserialize::<CancelJobResponse, _>()?;
23142
23143            Ok(result)
23144        } else {
23145            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23146            Err(CancelJobError::from_response(response))
23147        }
23148    }
23149
23150    /// <p>Cancels the execution of a job for a given thing.</p>
23151    #[allow(unused_mut)]
23152    async fn cancel_job_execution(
23153        &self,
23154        input: CancelJobExecutionRequest,
23155    ) -> Result<(), RusotoError<CancelJobExecutionError>> {
23156        let request_uri = format!(
23157            "/things/{thing_name}/jobs/{job_id}/cancel",
23158            job_id = input.job_id,
23159            thing_name = input.thing_name
23160        );
23161
23162        let mut request = SignedRequest::new("PUT", "execute-api", &self.region, &request_uri);
23163        request.set_content_type("application/x-amz-json-1.1".to_owned());
23164
23165        request.set_endpoint_prefix("iot".to_string());
23166        let encoded = Some(serde_json::to_vec(&input).unwrap());
23167        request.set_payload(encoded);
23168
23169        let mut params = Params::new();
23170        if let Some(ref x) = input.force {
23171            params.put("force", x);
23172        }
23173        request.set_params(params);
23174
23175        let mut response = self
23176            .client
23177            .sign_and_dispatch(request)
23178            .await
23179            .map_err(RusotoError::from)?;
23180        if response.status.is_success() {
23181            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23182            let result = ::std::mem::drop(response);
23183
23184            Ok(result)
23185        } else {
23186            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23187            Err(CancelJobExecutionError::from_response(response))
23188        }
23189    }
23190
23191    /// <p>Clears the default authorizer.</p>
23192    #[allow(unused_mut)]
23193    async fn clear_default_authorizer(
23194        &self,
23195    ) -> Result<ClearDefaultAuthorizerResponse, RusotoError<ClearDefaultAuthorizerError>> {
23196        let request_uri = "/default-authorizer";
23197
23198        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
23199        request.set_content_type("application/x-amz-json-1.1".to_owned());
23200
23201        request.set_endpoint_prefix("iot".to_string());
23202
23203        let mut response = self
23204            .client
23205            .sign_and_dispatch(request)
23206            .await
23207            .map_err(RusotoError::from)?;
23208        if response.status.is_success() {
23209            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23210            let result = proto::json::ResponsePayload::new(&response)
23211                .deserialize::<ClearDefaultAuthorizerResponse, _>()?;
23212
23213            Ok(result)
23214        } else {
23215            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23216            Err(ClearDefaultAuthorizerError::from_response(response))
23217        }
23218    }
23219
23220    /// <p>Confirms a topic rule destination. When you create a rule requiring a destination, AWS IoT sends a confirmation message to the endpoint or base address you specify. The message includes a token which you pass back when calling <code>ConfirmTopicRuleDestination</code> to confirm that you own or have access to the endpoint.</p>
23221    #[allow(unused_mut)]
23222    async fn confirm_topic_rule_destination(
23223        &self,
23224        input: ConfirmTopicRuleDestinationRequest,
23225    ) -> Result<ConfirmTopicRuleDestinationResponse, RusotoError<ConfirmTopicRuleDestinationError>>
23226    {
23227        let request_uri = format!(
23228            "/confirmdestination/{confirmation_token}",
23229            confirmation_token = input.confirmation_token
23230        );
23231
23232        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
23233        request.set_content_type("application/x-amz-json-1.1".to_owned());
23234
23235        request.set_endpoint_prefix("iot".to_string());
23236
23237        let mut response = self
23238            .client
23239            .sign_and_dispatch(request)
23240            .await
23241            .map_err(RusotoError::from)?;
23242        if response.status.is_success() {
23243            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23244            let result = proto::json::ResponsePayload::new(&response)
23245                .deserialize::<ConfirmTopicRuleDestinationResponse, _>()?;
23246
23247            Ok(result)
23248        } else {
23249            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23250            Err(ConfirmTopicRuleDestinationError::from_response(response))
23251        }
23252    }
23253
23254    /// <p>Creates an authorizer.</p>
23255    #[allow(unused_mut)]
23256    async fn create_authorizer(
23257        &self,
23258        input: CreateAuthorizerRequest,
23259    ) -> Result<CreateAuthorizerResponse, RusotoError<CreateAuthorizerError>> {
23260        let request_uri = format!(
23261            "/authorizer/{authorizer_name}",
23262            authorizer_name = input.authorizer_name
23263        );
23264
23265        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
23266        request.set_content_type("application/x-amz-json-1.1".to_owned());
23267
23268        request.set_endpoint_prefix("iot".to_string());
23269        let encoded = Some(serde_json::to_vec(&input).unwrap());
23270        request.set_payload(encoded);
23271
23272        let mut response = self
23273            .client
23274            .sign_and_dispatch(request)
23275            .await
23276            .map_err(RusotoError::from)?;
23277        if response.status.is_success() {
23278            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23279            let result = proto::json::ResponsePayload::new(&response)
23280                .deserialize::<CreateAuthorizerResponse, _>()?;
23281
23282            Ok(result)
23283        } else {
23284            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23285            Err(CreateAuthorizerError::from_response(response))
23286        }
23287    }
23288
23289    /// <p>Creates a billing group.</p>
23290    #[allow(unused_mut)]
23291    async fn create_billing_group(
23292        &self,
23293        input: CreateBillingGroupRequest,
23294    ) -> Result<CreateBillingGroupResponse, RusotoError<CreateBillingGroupError>> {
23295        let request_uri = format!(
23296            "/billing-groups/{billing_group_name}",
23297            billing_group_name = input.billing_group_name
23298        );
23299
23300        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
23301        request.set_content_type("application/x-amz-json-1.1".to_owned());
23302
23303        request.set_endpoint_prefix("iot".to_string());
23304        let encoded = Some(serde_json::to_vec(&input).unwrap());
23305        request.set_payload(encoded);
23306
23307        let mut response = self
23308            .client
23309            .sign_and_dispatch(request)
23310            .await
23311            .map_err(RusotoError::from)?;
23312        if response.status.is_success() {
23313            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23314            let result = proto::json::ResponsePayload::new(&response)
23315                .deserialize::<CreateBillingGroupResponse, _>()?;
23316
23317            Ok(result)
23318        } else {
23319            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23320            Err(CreateBillingGroupError::from_response(response))
23321        }
23322    }
23323
23324    /// <p>Creates an X.509 certificate using the specified certificate signing request.</p> <p> <b>Note:</b> The CSR must include a public key that is either an RSA key with a length of at least 2048 bits or an ECC key from NIST P-256 or NIST P-384 curves. </p> <p> <b>Note:</b> Reusing the same certificate signing request (CSR) results in a distinct certificate.</p> <p>You can create multiple certificates in a batch by creating a directory, copying multiple .csr files into that directory, and then specifying that directory on the command line. The following commands show how to create a batch of certificates given a batch of CSRs.</p> <p>Assuming a set of CSRs are located inside of the directory my-csr-directory:</p> <p>On Linux and OS X, the command is:</p> <p>$ ls my-csr-directory/ | xargs -I {} aws iot create-certificate-from-csr --certificate-signing-request file://my-csr-directory/{}</p> <p>This command lists all of the CSRs in my-csr-directory and pipes each CSR file name to the aws iot create-certificate-from-csr AWS CLI command to create a certificate for the corresponding CSR.</p> <p>The aws iot create-certificate-from-csr part of the command can also be run in parallel to speed up the certificate creation process:</p> <p>$ ls my-csr-directory/ | xargs -P 10 -I {} aws iot create-certificate-from-csr --certificate-signing-request file://my-csr-directory/{}</p> <p>On Windows PowerShell, the command to create certificates for all CSRs in my-csr-directory is:</p> <p>&gt; ls -Name my-csr-directory | %{aws iot create-certificate-from-csr --certificate-signing-request file://my-csr-directory/$_}</p> <p>On a Windows command prompt, the command to create certificates for all CSRs in my-csr-directory is:</p> <p>&gt; forfiles /p my-csr-directory /c "cmd /c aws iot create-certificate-from-csr --certificate-signing-request file://@path"</p>
23325    #[allow(unused_mut)]
23326    async fn create_certificate_from_csr(
23327        &self,
23328        input: CreateCertificateFromCsrRequest,
23329    ) -> Result<CreateCertificateFromCsrResponse, RusotoError<CreateCertificateFromCsrError>> {
23330        let request_uri = "/certificates";
23331
23332        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
23333        request.set_content_type("application/x-amz-json-1.1".to_owned());
23334
23335        request.set_endpoint_prefix("iot".to_string());
23336        let encoded = Some(serde_json::to_vec(&input).unwrap());
23337        request.set_payload(encoded);
23338
23339        let mut params = Params::new();
23340        if let Some(ref x) = input.set_as_active {
23341            params.put("setAsActive", x);
23342        }
23343        request.set_params(params);
23344
23345        let mut response = self
23346            .client
23347            .sign_and_dispatch(request)
23348            .await
23349            .map_err(RusotoError::from)?;
23350        if response.status.is_success() {
23351            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23352            let result = proto::json::ResponsePayload::new(&response)
23353                .deserialize::<CreateCertificateFromCsrResponse, _>()?;
23354
23355            Ok(result)
23356        } else {
23357            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23358            Err(CreateCertificateFromCsrError::from_response(response))
23359        }
23360    }
23361
23362    /// <p>Create a dimension that you can use to limit the scope of a metric used in a security profile for AWS IoT Device Defender. For example, using a <code>TOPIC_FILTER</code> dimension, you can narrow down the scope of the metric only to MQTT topics whose name match the pattern specified in the dimension.</p>
23363    #[allow(unused_mut)]
23364    async fn create_dimension(
23365        &self,
23366        input: CreateDimensionRequest,
23367    ) -> Result<CreateDimensionResponse, RusotoError<CreateDimensionError>> {
23368        let request_uri = format!("/dimensions/{name}", name = input.name);
23369
23370        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
23371        request.set_content_type("application/x-amz-json-1.1".to_owned());
23372
23373        request.set_endpoint_prefix("iot".to_string());
23374        let encoded = Some(serde_json::to_vec(&input).unwrap());
23375        request.set_payload(encoded);
23376
23377        let mut response = self
23378            .client
23379            .sign_and_dispatch(request)
23380            .await
23381            .map_err(RusotoError::from)?;
23382        if response.status.is_success() {
23383            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23384            let result = proto::json::ResponsePayload::new(&response)
23385                .deserialize::<CreateDimensionResponse, _>()?;
23386
23387            Ok(result)
23388        } else {
23389            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23390            Err(CreateDimensionError::from_response(response))
23391        }
23392    }
23393
23394    /// <p><p>Creates a domain configuration.</p> <note> <p>The domain configuration feature is in public preview and is subject to change.</p> </note></p>
23395    #[allow(unused_mut)]
23396    async fn create_domain_configuration(
23397        &self,
23398        input: CreateDomainConfigurationRequest,
23399    ) -> Result<CreateDomainConfigurationResponse, RusotoError<CreateDomainConfigurationError>>
23400    {
23401        let request_uri = format!(
23402            "/domainConfigurations/{domain_configuration_name}",
23403            domain_configuration_name = input.domain_configuration_name
23404        );
23405
23406        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
23407        request.set_content_type("application/x-amz-json-1.1".to_owned());
23408
23409        request.set_endpoint_prefix("iot".to_string());
23410        let encoded = Some(serde_json::to_vec(&input).unwrap());
23411        request.set_payload(encoded);
23412
23413        let mut response = self
23414            .client
23415            .sign_and_dispatch(request)
23416            .await
23417            .map_err(RusotoError::from)?;
23418        if response.status.is_success() {
23419            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23420            let result = proto::json::ResponsePayload::new(&response)
23421                .deserialize::<CreateDomainConfigurationResponse, _>()?;
23422
23423            Ok(result)
23424        } else {
23425            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23426            Err(CreateDomainConfigurationError::from_response(response))
23427        }
23428    }
23429
23430    /// <p>Creates a dynamic thing group.</p>
23431    #[allow(unused_mut)]
23432    async fn create_dynamic_thing_group(
23433        &self,
23434        input: CreateDynamicThingGroupRequest,
23435    ) -> Result<CreateDynamicThingGroupResponse, RusotoError<CreateDynamicThingGroupError>> {
23436        let request_uri = format!(
23437            "/dynamic-thing-groups/{thing_group_name}",
23438            thing_group_name = input.thing_group_name
23439        );
23440
23441        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
23442        request.set_content_type("application/x-amz-json-1.1".to_owned());
23443
23444        request.set_endpoint_prefix("iot".to_string());
23445        let encoded = Some(serde_json::to_vec(&input).unwrap());
23446        request.set_payload(encoded);
23447
23448        let mut response = self
23449            .client
23450            .sign_and_dispatch(request)
23451            .await
23452            .map_err(RusotoError::from)?;
23453        if response.status.is_success() {
23454            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23455            let result = proto::json::ResponsePayload::new(&response)
23456                .deserialize::<CreateDynamicThingGroupResponse, _>()?;
23457
23458            Ok(result)
23459        } else {
23460            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23461            Err(CreateDynamicThingGroupError::from_response(response))
23462        }
23463    }
23464
23465    /// <p>Creates a job.</p>
23466    #[allow(unused_mut)]
23467    async fn create_job(
23468        &self,
23469        input: CreateJobRequest,
23470    ) -> Result<CreateJobResponse, RusotoError<CreateJobError>> {
23471        let request_uri = format!("/jobs/{job_id}", job_id = input.job_id);
23472
23473        let mut request = SignedRequest::new("PUT", "execute-api", &self.region, &request_uri);
23474        request.set_content_type("application/x-amz-json-1.1".to_owned());
23475
23476        request.set_endpoint_prefix("iot".to_string());
23477        let encoded = Some(serde_json::to_vec(&input).unwrap());
23478        request.set_payload(encoded);
23479
23480        let mut response = self
23481            .client
23482            .sign_and_dispatch(request)
23483            .await
23484            .map_err(RusotoError::from)?;
23485        if response.status.is_success() {
23486            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23487            let result = proto::json::ResponsePayload::new(&response)
23488                .deserialize::<CreateJobResponse, _>()?;
23489
23490            Ok(result)
23491        } else {
23492            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23493            Err(CreateJobError::from_response(response))
23494        }
23495    }
23496
23497    /// <p>Creates a 2048-bit RSA key pair and issues an X.509 certificate using the issued public key. You can also call <code>CreateKeysAndCertificate</code> over MQTT from a device, for more information, see <a href="https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html#provision-mqtt-api">Provisioning MQTT API</a>.</p> <p> <b>Note</b> This is the only time AWS IoT issues the private key for this certificate, so it is important to keep it in a secure location.</p>
23498    #[allow(unused_mut)]
23499    async fn create_keys_and_certificate(
23500        &self,
23501        input: CreateKeysAndCertificateRequest,
23502    ) -> Result<CreateKeysAndCertificateResponse, RusotoError<CreateKeysAndCertificateError>> {
23503        let request_uri = "/keys-and-certificate";
23504
23505        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
23506        request.set_content_type("application/x-amz-json-1.1".to_owned());
23507
23508        request.set_endpoint_prefix("iot".to_string());
23509
23510        let mut params = Params::new();
23511        if let Some(ref x) = input.set_as_active {
23512            params.put("setAsActive", x);
23513        }
23514        request.set_params(params);
23515
23516        let mut response = self
23517            .client
23518            .sign_and_dispatch(request)
23519            .await
23520            .map_err(RusotoError::from)?;
23521        if response.status.is_success() {
23522            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23523            let result = proto::json::ResponsePayload::new(&response)
23524                .deserialize::<CreateKeysAndCertificateResponse, _>()?;
23525
23526            Ok(result)
23527        } else {
23528            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23529            Err(CreateKeysAndCertificateError::from_response(response))
23530        }
23531    }
23532
23533    /// <p>Defines an action that can be applied to audit findings by using StartAuditMitigationActionsTask. Each mitigation action can apply only one type of change.</p>
23534    #[allow(unused_mut)]
23535    async fn create_mitigation_action(
23536        &self,
23537        input: CreateMitigationActionRequest,
23538    ) -> Result<CreateMitigationActionResponse, RusotoError<CreateMitigationActionError>> {
23539        let request_uri = format!(
23540            "/mitigationactions/actions/{action_name}",
23541            action_name = input.action_name
23542        );
23543
23544        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
23545        request.set_content_type("application/x-amz-json-1.1".to_owned());
23546
23547        request.set_endpoint_prefix("iot".to_string());
23548        let encoded = Some(serde_json::to_vec(&input).unwrap());
23549        request.set_payload(encoded);
23550
23551        let mut response = self
23552            .client
23553            .sign_and_dispatch(request)
23554            .await
23555            .map_err(RusotoError::from)?;
23556        if response.status.is_success() {
23557            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23558            let result = proto::json::ResponsePayload::new(&response)
23559                .deserialize::<CreateMitigationActionResponse, _>()?;
23560
23561            Ok(result)
23562        } else {
23563            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23564            Err(CreateMitigationActionError::from_response(response))
23565        }
23566    }
23567
23568    /// <p>Creates an AWS IoT OTAUpdate on a target group of things or groups.</p>
23569    #[allow(unused_mut)]
23570    async fn create_ota_update(
23571        &self,
23572        input: CreateOTAUpdateRequest,
23573    ) -> Result<CreateOTAUpdateResponse, RusotoError<CreateOTAUpdateError>> {
23574        let request_uri = format!(
23575            "/otaUpdates/{ota_update_id}",
23576            ota_update_id = input.ota_update_id
23577        );
23578
23579        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
23580        request.set_content_type("application/x-amz-json-1.1".to_owned());
23581
23582        request.set_endpoint_prefix("iot".to_string());
23583        let encoded = Some(serde_json::to_vec(&input).unwrap());
23584        request.set_payload(encoded);
23585
23586        let mut response = self
23587            .client
23588            .sign_and_dispatch(request)
23589            .await
23590            .map_err(RusotoError::from)?;
23591        if response.status.is_success() {
23592            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23593            let result = proto::json::ResponsePayload::new(&response)
23594                .deserialize::<CreateOTAUpdateResponse, _>()?;
23595
23596            Ok(result)
23597        } else {
23598            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23599            Err(CreateOTAUpdateError::from_response(response))
23600        }
23601    }
23602
23603    /// <p>Creates an AWS IoT policy.</p> <p>The created policy is the default version for the policy. This operation creates a policy version with a version identifier of <b>1</b> and sets <b>1</b> as the policy's default version.</p>
23604    #[allow(unused_mut)]
23605    async fn create_policy(
23606        &self,
23607        input: CreatePolicyRequest,
23608    ) -> Result<CreatePolicyResponse, RusotoError<CreatePolicyError>> {
23609        let request_uri = format!("/policies/{policy_name}", policy_name = input.policy_name);
23610
23611        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
23612        request.set_content_type("application/x-amz-json-1.1".to_owned());
23613
23614        request.set_endpoint_prefix("iot".to_string());
23615        let encoded = Some(serde_json::to_vec(&input).unwrap());
23616        request.set_payload(encoded);
23617
23618        let mut response = self
23619            .client
23620            .sign_and_dispatch(request)
23621            .await
23622            .map_err(RusotoError::from)?;
23623        if response.status.is_success() {
23624            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23625            let result = proto::json::ResponsePayload::new(&response)
23626                .deserialize::<CreatePolicyResponse, _>()?;
23627
23628            Ok(result)
23629        } else {
23630            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23631            Err(CreatePolicyError::from_response(response))
23632        }
23633    }
23634
23635    /// <p>Creates a new version of the specified AWS IoT policy. To update a policy, create a new policy version. A managed policy can have up to five versions. If the policy has five versions, you must use <a>DeletePolicyVersion</a> to delete an existing version before you create a new one.</p> <p>Optionally, you can set the new version as the policy's default version. The default version is the operative version (that is, the version that is in effect for the certificates to which the policy is attached).</p>
23636    #[allow(unused_mut)]
23637    async fn create_policy_version(
23638        &self,
23639        input: CreatePolicyVersionRequest,
23640    ) -> Result<CreatePolicyVersionResponse, RusotoError<CreatePolicyVersionError>> {
23641        let request_uri = format!(
23642            "/policies/{policy_name}/version",
23643            policy_name = input.policy_name
23644        );
23645
23646        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
23647        request.set_content_type("application/x-amz-json-1.1".to_owned());
23648
23649        request.set_endpoint_prefix("iot".to_string());
23650        let encoded = Some(serde_json::to_vec(&input).unwrap());
23651        request.set_payload(encoded);
23652
23653        let mut params = Params::new();
23654        if let Some(ref x) = input.set_as_default {
23655            params.put("setAsDefault", x);
23656        }
23657        request.set_params(params);
23658
23659        let mut response = self
23660            .client
23661            .sign_and_dispatch(request)
23662            .await
23663            .map_err(RusotoError::from)?;
23664        if response.status.is_success() {
23665            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23666            let result = proto::json::ResponsePayload::new(&response)
23667                .deserialize::<CreatePolicyVersionResponse, _>()?;
23668
23669            Ok(result)
23670        } else {
23671            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23672            Err(CreatePolicyVersionError::from_response(response))
23673        }
23674    }
23675
23676    /// <p>Creates a provisioning claim.</p>
23677    #[allow(unused_mut)]
23678    async fn create_provisioning_claim(
23679        &self,
23680        input: CreateProvisioningClaimRequest,
23681    ) -> Result<CreateProvisioningClaimResponse, RusotoError<CreateProvisioningClaimError>> {
23682        let request_uri = format!(
23683            "/provisioning-templates/{template_name}/provisioning-claim",
23684            template_name = input.template_name
23685        );
23686
23687        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
23688        request.set_content_type("application/x-amz-json-1.1".to_owned());
23689
23690        request.set_endpoint_prefix("iot".to_string());
23691
23692        let mut response = self
23693            .client
23694            .sign_and_dispatch(request)
23695            .await
23696            .map_err(RusotoError::from)?;
23697        if response.status.is_success() {
23698            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23699            let result = proto::json::ResponsePayload::new(&response)
23700                .deserialize::<CreateProvisioningClaimResponse, _>()?;
23701
23702            Ok(result)
23703        } else {
23704            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23705            Err(CreateProvisioningClaimError::from_response(response))
23706        }
23707    }
23708
23709    /// <p>Creates a fleet provisioning template.</p>
23710    #[allow(unused_mut)]
23711    async fn create_provisioning_template(
23712        &self,
23713        input: CreateProvisioningTemplateRequest,
23714    ) -> Result<CreateProvisioningTemplateResponse, RusotoError<CreateProvisioningTemplateError>>
23715    {
23716        let request_uri = "/provisioning-templates";
23717
23718        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
23719        request.set_content_type("application/x-amz-json-1.1".to_owned());
23720
23721        request.set_endpoint_prefix("iot".to_string());
23722        let encoded = Some(serde_json::to_vec(&input).unwrap());
23723        request.set_payload(encoded);
23724
23725        let mut response = self
23726            .client
23727            .sign_and_dispatch(request)
23728            .await
23729            .map_err(RusotoError::from)?;
23730        if response.status.is_success() {
23731            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23732            let result = proto::json::ResponsePayload::new(&response)
23733                .deserialize::<CreateProvisioningTemplateResponse, _>()?;
23734
23735            Ok(result)
23736        } else {
23737            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23738            Err(CreateProvisioningTemplateError::from_response(response))
23739        }
23740    }
23741
23742    /// <p>Creates a new version of a fleet provisioning template.</p>
23743    #[allow(unused_mut)]
23744    async fn create_provisioning_template_version(
23745        &self,
23746        input: CreateProvisioningTemplateVersionRequest,
23747    ) -> Result<
23748        CreateProvisioningTemplateVersionResponse,
23749        RusotoError<CreateProvisioningTemplateVersionError>,
23750    > {
23751        let request_uri = format!(
23752            "/provisioning-templates/{template_name}/versions",
23753            template_name = input.template_name
23754        );
23755
23756        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
23757        request.set_content_type("application/x-amz-json-1.1".to_owned());
23758
23759        request.set_endpoint_prefix("iot".to_string());
23760        let encoded = Some(serde_json::to_vec(&input).unwrap());
23761        request.set_payload(encoded);
23762
23763        let mut params = Params::new();
23764        if let Some(ref x) = input.set_as_default {
23765            params.put("setAsDefault", x);
23766        }
23767        request.set_params(params);
23768
23769        let mut response = self
23770            .client
23771            .sign_and_dispatch(request)
23772            .await
23773            .map_err(RusotoError::from)?;
23774        if response.status.is_success() {
23775            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23776            let result = proto::json::ResponsePayload::new(&response)
23777                .deserialize::<CreateProvisioningTemplateVersionResponse, _>()?;
23778
23779            Ok(result)
23780        } else {
23781            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23782            Err(CreateProvisioningTemplateVersionError::from_response(
23783                response,
23784            ))
23785        }
23786    }
23787
23788    /// <p>Creates a role alias.</p>
23789    #[allow(unused_mut)]
23790    async fn create_role_alias(
23791        &self,
23792        input: CreateRoleAliasRequest,
23793    ) -> Result<CreateRoleAliasResponse, RusotoError<CreateRoleAliasError>> {
23794        let request_uri = format!("/role-aliases/{role_alias}", role_alias = input.role_alias);
23795
23796        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
23797        request.set_content_type("application/x-amz-json-1.1".to_owned());
23798
23799        request.set_endpoint_prefix("iot".to_string());
23800        let encoded = Some(serde_json::to_vec(&input).unwrap());
23801        request.set_payload(encoded);
23802
23803        let mut response = self
23804            .client
23805            .sign_and_dispatch(request)
23806            .await
23807            .map_err(RusotoError::from)?;
23808        if response.status.is_success() {
23809            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23810            let result = proto::json::ResponsePayload::new(&response)
23811                .deserialize::<CreateRoleAliasResponse, _>()?;
23812
23813            Ok(result)
23814        } else {
23815            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23816            Err(CreateRoleAliasError::from_response(response))
23817        }
23818    }
23819
23820    /// <p>Creates a scheduled audit that is run at a specified time interval.</p>
23821    #[allow(unused_mut)]
23822    async fn create_scheduled_audit(
23823        &self,
23824        input: CreateScheduledAuditRequest,
23825    ) -> Result<CreateScheduledAuditResponse, RusotoError<CreateScheduledAuditError>> {
23826        let request_uri = format!(
23827            "/audit/scheduledaudits/{scheduled_audit_name}",
23828            scheduled_audit_name = input.scheduled_audit_name
23829        );
23830
23831        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
23832        request.set_content_type("application/x-amz-json-1.1".to_owned());
23833
23834        request.set_endpoint_prefix("iot".to_string());
23835        let encoded = Some(serde_json::to_vec(&input).unwrap());
23836        request.set_payload(encoded);
23837
23838        let mut response = self
23839            .client
23840            .sign_and_dispatch(request)
23841            .await
23842            .map_err(RusotoError::from)?;
23843        if response.status.is_success() {
23844            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23845            let result = proto::json::ResponsePayload::new(&response)
23846                .deserialize::<CreateScheduledAuditResponse, _>()?;
23847
23848            Ok(result)
23849        } else {
23850            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23851            Err(CreateScheduledAuditError::from_response(response))
23852        }
23853    }
23854
23855    /// <p>Creates a Device Defender security profile.</p>
23856    #[allow(unused_mut)]
23857    async fn create_security_profile(
23858        &self,
23859        input: CreateSecurityProfileRequest,
23860    ) -> Result<CreateSecurityProfileResponse, RusotoError<CreateSecurityProfileError>> {
23861        let request_uri = format!(
23862            "/security-profiles/{security_profile_name}",
23863            security_profile_name = input.security_profile_name
23864        );
23865
23866        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
23867        request.set_content_type("application/x-amz-json-1.1".to_owned());
23868
23869        request.set_endpoint_prefix("iot".to_string());
23870        let encoded = Some(serde_json::to_vec(&input).unwrap());
23871        request.set_payload(encoded);
23872
23873        let mut response = self
23874            .client
23875            .sign_and_dispatch(request)
23876            .await
23877            .map_err(RusotoError::from)?;
23878        if response.status.is_success() {
23879            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23880            let result = proto::json::ResponsePayload::new(&response)
23881                .deserialize::<CreateSecurityProfileResponse, _>()?;
23882
23883            Ok(result)
23884        } else {
23885            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23886            Err(CreateSecurityProfileError::from_response(response))
23887        }
23888    }
23889
23890    /// <p>Creates a stream for delivering one or more large files in chunks over MQTT. A stream transports data bytes in chunks or blocks packaged as MQTT messages from a source like S3. You can have one or more files associated with a stream.</p>
23891    #[allow(unused_mut)]
23892    async fn create_stream(
23893        &self,
23894        input: CreateStreamRequest,
23895    ) -> Result<CreateStreamResponse, RusotoError<CreateStreamError>> {
23896        let request_uri = format!("/streams/{stream_id}", stream_id = input.stream_id);
23897
23898        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
23899        request.set_content_type("application/x-amz-json-1.1".to_owned());
23900
23901        request.set_endpoint_prefix("iot".to_string());
23902        let encoded = Some(serde_json::to_vec(&input).unwrap());
23903        request.set_payload(encoded);
23904
23905        let mut response = self
23906            .client
23907            .sign_and_dispatch(request)
23908            .await
23909            .map_err(RusotoError::from)?;
23910        if response.status.is_success() {
23911            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23912            let result = proto::json::ResponsePayload::new(&response)
23913                .deserialize::<CreateStreamResponse, _>()?;
23914
23915            Ok(result)
23916        } else {
23917            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23918            Err(CreateStreamError::from_response(response))
23919        }
23920    }
23921
23922    /// <p><p>Creates a thing record in the registry. If this call is made multiple times using the same thing name and configuration, the call will succeed. If this call is made with the same thing name but different configuration a <code>ResourceAlreadyExistsException</code> is thrown.</p> <note> <p>This is a control plane operation. See <a href="https://docs.aws.amazon.com/iot/latest/developerguide/iot-authorization.html">Authorization</a> for information about authorizing control plane actions.</p> </note></p>
23923    #[allow(unused_mut)]
23924    async fn create_thing(
23925        &self,
23926        input: CreateThingRequest,
23927    ) -> Result<CreateThingResponse, RusotoError<CreateThingError>> {
23928        let request_uri = format!("/things/{thing_name}", thing_name = input.thing_name);
23929
23930        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
23931        request.set_content_type("application/x-amz-json-1.1".to_owned());
23932
23933        request.set_endpoint_prefix("iot".to_string());
23934        let encoded = Some(serde_json::to_vec(&input).unwrap());
23935        request.set_payload(encoded);
23936
23937        let mut response = self
23938            .client
23939            .sign_and_dispatch(request)
23940            .await
23941            .map_err(RusotoError::from)?;
23942        if response.status.is_success() {
23943            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23944            let result = proto::json::ResponsePayload::new(&response)
23945                .deserialize::<CreateThingResponse, _>()?;
23946
23947            Ok(result)
23948        } else {
23949            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23950            Err(CreateThingError::from_response(response))
23951        }
23952    }
23953
23954    /// <p><p>Create a thing group.</p> <note> <p>This is a control plane operation. See <a href="https://docs.aws.amazon.com/iot/latest/developerguide/iot-authorization.html">Authorization</a> for information about authorizing control plane actions.</p> </note></p>
23955    #[allow(unused_mut)]
23956    async fn create_thing_group(
23957        &self,
23958        input: CreateThingGroupRequest,
23959    ) -> Result<CreateThingGroupResponse, RusotoError<CreateThingGroupError>> {
23960        let request_uri = format!(
23961            "/thing-groups/{thing_group_name}",
23962            thing_group_name = input.thing_group_name
23963        );
23964
23965        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
23966        request.set_content_type("application/x-amz-json-1.1".to_owned());
23967
23968        request.set_endpoint_prefix("iot".to_string());
23969        let encoded = Some(serde_json::to_vec(&input).unwrap());
23970        request.set_payload(encoded);
23971
23972        let mut response = self
23973            .client
23974            .sign_and_dispatch(request)
23975            .await
23976            .map_err(RusotoError::from)?;
23977        if response.status.is_success() {
23978            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23979            let result = proto::json::ResponsePayload::new(&response)
23980                .deserialize::<CreateThingGroupResponse, _>()?;
23981
23982            Ok(result)
23983        } else {
23984            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
23985            Err(CreateThingGroupError::from_response(response))
23986        }
23987    }
23988
23989    /// <p>Creates a new thing type.</p>
23990    #[allow(unused_mut)]
23991    async fn create_thing_type(
23992        &self,
23993        input: CreateThingTypeRequest,
23994    ) -> Result<CreateThingTypeResponse, RusotoError<CreateThingTypeError>> {
23995        let request_uri = format!(
23996            "/thing-types/{thing_type_name}",
23997            thing_type_name = input.thing_type_name
23998        );
23999
24000        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
24001        request.set_content_type("application/x-amz-json-1.1".to_owned());
24002
24003        request.set_endpoint_prefix("iot".to_string());
24004        let encoded = Some(serde_json::to_vec(&input).unwrap());
24005        request.set_payload(encoded);
24006
24007        let mut response = self
24008            .client
24009            .sign_and_dispatch(request)
24010            .await
24011            .map_err(RusotoError::from)?;
24012        if response.status.is_success() {
24013            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24014            let result = proto::json::ResponsePayload::new(&response)
24015                .deserialize::<CreateThingTypeResponse, _>()?;
24016
24017            Ok(result)
24018        } else {
24019            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24020            Err(CreateThingTypeError::from_response(response))
24021        }
24022    }
24023
24024    /// <p>Creates a rule. Creating rules is an administrator-level action. Any user who has permission to create rules will be able to access data processed by the rule.</p>
24025    #[allow(unused_mut)]
24026    async fn create_topic_rule(
24027        &self,
24028        input: CreateTopicRuleRequest,
24029    ) -> Result<(), RusotoError<CreateTopicRuleError>> {
24030        let request_uri = format!("/rules/{rule_name}", rule_name = input.rule_name);
24031
24032        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
24033        request.set_content_type("application/x-amz-json-1.1".to_owned());
24034
24035        request.set_endpoint_prefix("iot".to_string());
24036        let encoded = Some(serde_json::to_vec(&input.topic_rule_payload).unwrap());
24037        request.set_payload(encoded);
24038        request.add_optional_header("x-amz-tagging", input.tags.as_ref());
24039
24040        let mut response = self
24041            .client
24042            .sign_and_dispatch(request)
24043            .await
24044            .map_err(RusotoError::from)?;
24045        if response.status.is_success() {
24046            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24047            let result = ::std::mem::drop(response);
24048
24049            Ok(result)
24050        } else {
24051            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24052            Err(CreateTopicRuleError::from_response(response))
24053        }
24054    }
24055
24056    /// <p>Creates a topic rule destination. The destination must be confirmed prior to use.</p>
24057    #[allow(unused_mut)]
24058    async fn create_topic_rule_destination(
24059        &self,
24060        input: CreateTopicRuleDestinationRequest,
24061    ) -> Result<CreateTopicRuleDestinationResponse, RusotoError<CreateTopicRuleDestinationError>>
24062    {
24063        let request_uri = "/destinations";
24064
24065        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
24066        request.set_content_type("application/x-amz-json-1.1".to_owned());
24067
24068        request.set_endpoint_prefix("iot".to_string());
24069        let encoded = Some(serde_json::to_vec(&input).unwrap());
24070        request.set_payload(encoded);
24071
24072        let mut response = self
24073            .client
24074            .sign_and_dispatch(request)
24075            .await
24076            .map_err(RusotoError::from)?;
24077        if response.status.is_success() {
24078            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24079            let result = proto::json::ResponsePayload::new(&response)
24080                .deserialize::<CreateTopicRuleDestinationResponse, _>()?;
24081
24082            Ok(result)
24083        } else {
24084            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24085            Err(CreateTopicRuleDestinationError::from_response(response))
24086        }
24087    }
24088
24089    /// <p>Restores the default settings for Device Defender audits for this account. Any configuration data you entered is deleted and all audit checks are reset to disabled. </p>
24090    #[allow(unused_mut)]
24091    async fn delete_account_audit_configuration(
24092        &self,
24093        input: DeleteAccountAuditConfigurationRequest,
24094    ) -> Result<
24095        DeleteAccountAuditConfigurationResponse,
24096        RusotoError<DeleteAccountAuditConfigurationError>,
24097    > {
24098        let request_uri = "/audit/configuration";
24099
24100        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
24101        request.set_content_type("application/x-amz-json-1.1".to_owned());
24102
24103        request.set_endpoint_prefix("iot".to_string());
24104
24105        let mut params = Params::new();
24106        if let Some(ref x) = input.delete_scheduled_audits {
24107            params.put("deleteScheduledAudits", x);
24108        }
24109        request.set_params(params);
24110
24111        let mut response = self
24112            .client
24113            .sign_and_dispatch(request)
24114            .await
24115            .map_err(RusotoError::from)?;
24116        if response.status.is_success() {
24117            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24118            let result = proto::json::ResponsePayload::new(&response)
24119                .deserialize::<DeleteAccountAuditConfigurationResponse, _>()?;
24120
24121            Ok(result)
24122        } else {
24123            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24124            Err(DeleteAccountAuditConfigurationError::from_response(
24125                response,
24126            ))
24127        }
24128    }
24129
24130    /// <p>Deletes an authorizer.</p>
24131    #[allow(unused_mut)]
24132    async fn delete_authorizer(
24133        &self,
24134        input: DeleteAuthorizerRequest,
24135    ) -> Result<DeleteAuthorizerResponse, RusotoError<DeleteAuthorizerError>> {
24136        let request_uri = format!(
24137            "/authorizer/{authorizer_name}",
24138            authorizer_name = input.authorizer_name
24139        );
24140
24141        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
24142        request.set_content_type("application/x-amz-json-1.1".to_owned());
24143
24144        request.set_endpoint_prefix("iot".to_string());
24145
24146        let mut response = self
24147            .client
24148            .sign_and_dispatch(request)
24149            .await
24150            .map_err(RusotoError::from)?;
24151        if response.status.is_success() {
24152            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24153            let result = proto::json::ResponsePayload::new(&response)
24154                .deserialize::<DeleteAuthorizerResponse, _>()?;
24155
24156            Ok(result)
24157        } else {
24158            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24159            Err(DeleteAuthorizerError::from_response(response))
24160        }
24161    }
24162
24163    /// <p>Deletes the billing group.</p>
24164    #[allow(unused_mut)]
24165    async fn delete_billing_group(
24166        &self,
24167        input: DeleteBillingGroupRequest,
24168    ) -> Result<DeleteBillingGroupResponse, RusotoError<DeleteBillingGroupError>> {
24169        let request_uri = format!(
24170            "/billing-groups/{billing_group_name}",
24171            billing_group_name = input.billing_group_name
24172        );
24173
24174        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
24175        request.set_content_type("application/x-amz-json-1.1".to_owned());
24176
24177        request.set_endpoint_prefix("iot".to_string());
24178
24179        let mut params = Params::new();
24180        if let Some(ref x) = input.expected_version {
24181            params.put("expectedVersion", x);
24182        }
24183        request.set_params(params);
24184
24185        let mut response = self
24186            .client
24187            .sign_and_dispatch(request)
24188            .await
24189            .map_err(RusotoError::from)?;
24190        if response.status.is_success() {
24191            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24192            let result = proto::json::ResponsePayload::new(&response)
24193                .deserialize::<DeleteBillingGroupResponse, _>()?;
24194
24195            Ok(result)
24196        } else {
24197            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24198            Err(DeleteBillingGroupError::from_response(response))
24199        }
24200    }
24201
24202    /// <p>Deletes a registered CA certificate.</p>
24203    #[allow(unused_mut)]
24204    async fn delete_ca_certificate(
24205        &self,
24206        input: DeleteCACertificateRequest,
24207    ) -> Result<DeleteCACertificateResponse, RusotoError<DeleteCACertificateError>> {
24208        let request_uri = format!(
24209            "/cacertificate/{ca_certificate_id}",
24210            ca_certificate_id = input.certificate_id
24211        );
24212
24213        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
24214        request.set_content_type("application/x-amz-json-1.1".to_owned());
24215
24216        request.set_endpoint_prefix("iot".to_string());
24217
24218        let mut response = self
24219            .client
24220            .sign_and_dispatch(request)
24221            .await
24222            .map_err(RusotoError::from)?;
24223        if response.status.is_success() {
24224            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24225            let result = proto::json::ResponsePayload::new(&response)
24226                .deserialize::<DeleteCACertificateResponse, _>()?;
24227
24228            Ok(result)
24229        } else {
24230            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24231            Err(DeleteCACertificateError::from_response(response))
24232        }
24233    }
24234
24235    /// <p>Deletes the specified certificate.</p> <p>A certificate cannot be deleted if it has a policy or IoT thing attached to it or if its status is set to ACTIVE. To delete a certificate, first use the <a>DetachPrincipalPolicy</a> API to detach all policies. Next, use the <a>UpdateCertificate</a> API to set the certificate to the INACTIVE status.</p>
24236    #[allow(unused_mut)]
24237    async fn delete_certificate(
24238        &self,
24239        input: DeleteCertificateRequest,
24240    ) -> Result<(), RusotoError<DeleteCertificateError>> {
24241        let request_uri = format!(
24242            "/certificates/{certificate_id}",
24243            certificate_id = input.certificate_id
24244        );
24245
24246        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
24247        request.set_content_type("application/x-amz-json-1.1".to_owned());
24248
24249        request.set_endpoint_prefix("iot".to_string());
24250
24251        let mut params = Params::new();
24252        if let Some(ref x) = input.force_delete {
24253            params.put("forceDelete", x);
24254        }
24255        request.set_params(params);
24256
24257        let mut response = self
24258            .client
24259            .sign_and_dispatch(request)
24260            .await
24261            .map_err(RusotoError::from)?;
24262        if response.status.is_success() {
24263            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24264            let result = ::std::mem::drop(response);
24265
24266            Ok(result)
24267        } else {
24268            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24269            Err(DeleteCertificateError::from_response(response))
24270        }
24271    }
24272
24273    /// <p>Removes the specified dimension from your AWS account.</p>
24274    #[allow(unused_mut)]
24275    async fn delete_dimension(
24276        &self,
24277        input: DeleteDimensionRequest,
24278    ) -> Result<DeleteDimensionResponse, RusotoError<DeleteDimensionError>> {
24279        let request_uri = format!("/dimensions/{name}", name = input.name);
24280
24281        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
24282        request.set_content_type("application/x-amz-json-1.1".to_owned());
24283
24284        request.set_endpoint_prefix("iot".to_string());
24285
24286        let mut response = self
24287            .client
24288            .sign_and_dispatch(request)
24289            .await
24290            .map_err(RusotoError::from)?;
24291        if response.status.is_success() {
24292            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24293            let result = proto::json::ResponsePayload::new(&response)
24294                .deserialize::<DeleteDimensionResponse, _>()?;
24295
24296            Ok(result)
24297        } else {
24298            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24299            Err(DeleteDimensionError::from_response(response))
24300        }
24301    }
24302
24303    /// <p><p>Deletes the specified domain configuration.</p> <note> <p>The domain configuration feature is in public preview and is subject to change.</p> </note></p>
24304    #[allow(unused_mut)]
24305    async fn delete_domain_configuration(
24306        &self,
24307        input: DeleteDomainConfigurationRequest,
24308    ) -> Result<DeleteDomainConfigurationResponse, RusotoError<DeleteDomainConfigurationError>>
24309    {
24310        let request_uri = format!(
24311            "/domainConfigurations/{domain_configuration_name}",
24312            domain_configuration_name = input.domain_configuration_name
24313        );
24314
24315        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
24316        request.set_content_type("application/x-amz-json-1.1".to_owned());
24317
24318        request.set_endpoint_prefix("iot".to_string());
24319
24320        let mut response = self
24321            .client
24322            .sign_and_dispatch(request)
24323            .await
24324            .map_err(RusotoError::from)?;
24325        if response.status.is_success() {
24326            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24327            let result = proto::json::ResponsePayload::new(&response)
24328                .deserialize::<DeleteDomainConfigurationResponse, _>()?;
24329
24330            Ok(result)
24331        } else {
24332            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24333            Err(DeleteDomainConfigurationError::from_response(response))
24334        }
24335    }
24336
24337    /// <p>Deletes a dynamic thing group.</p>
24338    #[allow(unused_mut)]
24339    async fn delete_dynamic_thing_group(
24340        &self,
24341        input: DeleteDynamicThingGroupRequest,
24342    ) -> Result<DeleteDynamicThingGroupResponse, RusotoError<DeleteDynamicThingGroupError>> {
24343        let request_uri = format!(
24344            "/dynamic-thing-groups/{thing_group_name}",
24345            thing_group_name = input.thing_group_name
24346        );
24347
24348        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
24349        request.set_content_type("application/x-amz-json-1.1".to_owned());
24350
24351        request.set_endpoint_prefix("iot".to_string());
24352
24353        let mut params = Params::new();
24354        if let Some(ref x) = input.expected_version {
24355            params.put("expectedVersion", x);
24356        }
24357        request.set_params(params);
24358
24359        let mut response = self
24360            .client
24361            .sign_and_dispatch(request)
24362            .await
24363            .map_err(RusotoError::from)?;
24364        if response.status.is_success() {
24365            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24366            let result = proto::json::ResponsePayload::new(&response)
24367                .deserialize::<DeleteDynamicThingGroupResponse, _>()?;
24368
24369            Ok(result)
24370        } else {
24371            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24372            Err(DeleteDynamicThingGroupError::from_response(response))
24373        }
24374    }
24375
24376    /// <p>Deletes a job and its related job executions.</p> <p>Deleting a job may take time, depending on the number of job executions created for the job and various other factors. While the job is being deleted, the status of the job will be shown as "DELETION_IN_PROGRESS". Attempting to delete or cancel a job whose status is already "DELETION_IN_PROGRESS" will result in an error.</p> <p>Only 10 jobs may have status "DELETION_IN_PROGRESS" at the same time, or a LimitExceededException will occur.</p>
24377    #[allow(unused_mut)]
24378    async fn delete_job(&self, input: DeleteJobRequest) -> Result<(), RusotoError<DeleteJobError>> {
24379        let request_uri = format!("/jobs/{job_id}", job_id = input.job_id);
24380
24381        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
24382        request.set_content_type("application/x-amz-json-1.1".to_owned());
24383
24384        request.set_endpoint_prefix("iot".to_string());
24385
24386        let mut params = Params::new();
24387        if let Some(ref x) = input.force {
24388            params.put("force", x);
24389        }
24390        request.set_params(params);
24391
24392        let mut response = self
24393            .client
24394            .sign_and_dispatch(request)
24395            .await
24396            .map_err(RusotoError::from)?;
24397        if response.status.is_success() {
24398            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24399            let result = ::std::mem::drop(response);
24400
24401            Ok(result)
24402        } else {
24403            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24404            Err(DeleteJobError::from_response(response))
24405        }
24406    }
24407
24408    /// <p>Deletes a job execution.</p>
24409    #[allow(unused_mut)]
24410    async fn delete_job_execution(
24411        &self,
24412        input: DeleteJobExecutionRequest,
24413    ) -> Result<(), RusotoError<DeleteJobExecutionError>> {
24414        let request_uri = format!(
24415            "/things/{thing_name}/jobs/{job_id}/executionNumber/{execution_number}",
24416            execution_number = input.execution_number,
24417            job_id = input.job_id,
24418            thing_name = input.thing_name
24419        );
24420
24421        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
24422        request.set_content_type("application/x-amz-json-1.1".to_owned());
24423
24424        request.set_endpoint_prefix("iot".to_string());
24425
24426        let mut params = Params::new();
24427        if let Some(ref x) = input.force {
24428            params.put("force", x);
24429        }
24430        request.set_params(params);
24431
24432        let mut response = self
24433            .client
24434            .sign_and_dispatch(request)
24435            .await
24436            .map_err(RusotoError::from)?;
24437        if response.status.is_success() {
24438            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24439            let result = ::std::mem::drop(response);
24440
24441            Ok(result)
24442        } else {
24443            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24444            Err(DeleteJobExecutionError::from_response(response))
24445        }
24446    }
24447
24448    /// <p>Deletes a defined mitigation action from your AWS account.</p>
24449    #[allow(unused_mut)]
24450    async fn delete_mitigation_action(
24451        &self,
24452        input: DeleteMitigationActionRequest,
24453    ) -> Result<DeleteMitigationActionResponse, RusotoError<DeleteMitigationActionError>> {
24454        let request_uri = format!(
24455            "/mitigationactions/actions/{action_name}",
24456            action_name = input.action_name
24457        );
24458
24459        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
24460        request.set_content_type("application/x-amz-json-1.1".to_owned());
24461
24462        request.set_endpoint_prefix("iot".to_string());
24463
24464        let mut response = self
24465            .client
24466            .sign_and_dispatch(request)
24467            .await
24468            .map_err(RusotoError::from)?;
24469        if response.status.is_success() {
24470            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24471            let result = proto::json::ResponsePayload::new(&response)
24472                .deserialize::<DeleteMitigationActionResponse, _>()?;
24473
24474            Ok(result)
24475        } else {
24476            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24477            Err(DeleteMitigationActionError::from_response(response))
24478        }
24479    }
24480
24481    /// <p>Delete an OTA update.</p>
24482    #[allow(unused_mut)]
24483    async fn delete_ota_update(
24484        &self,
24485        input: DeleteOTAUpdateRequest,
24486    ) -> Result<DeleteOTAUpdateResponse, RusotoError<DeleteOTAUpdateError>> {
24487        let request_uri = format!(
24488            "/otaUpdates/{ota_update_id}",
24489            ota_update_id = input.ota_update_id
24490        );
24491
24492        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
24493        request.set_content_type("application/x-amz-json-1.1".to_owned());
24494
24495        request.set_endpoint_prefix("iot".to_string());
24496
24497        let mut params = Params::new();
24498        if let Some(ref x) = input.delete_stream {
24499            params.put("deleteStream", x);
24500        }
24501        if let Some(ref x) = input.force_delete_aws_job {
24502            params.put("forceDeleteAWSJob", x);
24503        }
24504        request.set_params(params);
24505
24506        let mut response = self
24507            .client
24508            .sign_and_dispatch(request)
24509            .await
24510            .map_err(RusotoError::from)?;
24511        if response.status.is_success() {
24512            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24513            let result = proto::json::ResponsePayload::new(&response)
24514                .deserialize::<DeleteOTAUpdateResponse, _>()?;
24515
24516            Ok(result)
24517        } else {
24518            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24519            Err(DeleteOTAUpdateError::from_response(response))
24520        }
24521    }
24522
24523    /// <p>Deletes the specified policy.</p> <p>A policy cannot be deleted if it has non-default versions or it is attached to any certificate.</p> <p>To delete a policy, use the DeletePolicyVersion API to delete all non-default versions of the policy; use the DetachPrincipalPolicy API to detach the policy from any certificate; and then use the DeletePolicy API to delete the policy.</p> <p>When a policy is deleted using DeletePolicy, its default version is deleted with it.</p>
24524    #[allow(unused_mut)]
24525    async fn delete_policy(
24526        &self,
24527        input: DeletePolicyRequest,
24528    ) -> Result<(), RusotoError<DeletePolicyError>> {
24529        let request_uri = format!("/policies/{policy_name}", policy_name = input.policy_name);
24530
24531        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
24532        request.set_content_type("application/x-amz-json-1.1".to_owned());
24533
24534        request.set_endpoint_prefix("iot".to_string());
24535
24536        let mut response = self
24537            .client
24538            .sign_and_dispatch(request)
24539            .await
24540            .map_err(RusotoError::from)?;
24541        if response.status.is_success() {
24542            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24543            let result = ::std::mem::drop(response);
24544
24545            Ok(result)
24546        } else {
24547            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24548            Err(DeletePolicyError::from_response(response))
24549        }
24550    }
24551
24552    /// <p>Deletes the specified version of the specified policy. You cannot delete the default version of a policy using this API. To delete the default version of a policy, use <a>DeletePolicy</a>. To find out which version of a policy is marked as the default version, use ListPolicyVersions.</p>
24553    #[allow(unused_mut)]
24554    async fn delete_policy_version(
24555        &self,
24556        input: DeletePolicyVersionRequest,
24557    ) -> Result<(), RusotoError<DeletePolicyVersionError>> {
24558        let request_uri = format!(
24559            "/policies/{policy_name}/version/{policy_version_id}",
24560            policy_name = input.policy_name,
24561            policy_version_id = input.policy_version_id
24562        );
24563
24564        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
24565        request.set_content_type("application/x-amz-json-1.1".to_owned());
24566
24567        request.set_endpoint_prefix("iot".to_string());
24568
24569        let mut response = self
24570            .client
24571            .sign_and_dispatch(request)
24572            .await
24573            .map_err(RusotoError::from)?;
24574        if response.status.is_success() {
24575            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24576            let result = ::std::mem::drop(response);
24577
24578            Ok(result)
24579        } else {
24580            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24581            Err(DeletePolicyVersionError::from_response(response))
24582        }
24583    }
24584
24585    /// <p>Deletes a fleet provisioning template.</p>
24586    #[allow(unused_mut)]
24587    async fn delete_provisioning_template(
24588        &self,
24589        input: DeleteProvisioningTemplateRequest,
24590    ) -> Result<DeleteProvisioningTemplateResponse, RusotoError<DeleteProvisioningTemplateError>>
24591    {
24592        let request_uri = format!(
24593            "/provisioning-templates/{template_name}",
24594            template_name = input.template_name
24595        );
24596
24597        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
24598        request.set_content_type("application/x-amz-json-1.1".to_owned());
24599
24600        request.set_endpoint_prefix("iot".to_string());
24601
24602        let mut response = self
24603            .client
24604            .sign_and_dispatch(request)
24605            .await
24606            .map_err(RusotoError::from)?;
24607        if response.status.is_success() {
24608            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24609            let result = proto::json::ResponsePayload::new(&response)
24610                .deserialize::<DeleteProvisioningTemplateResponse, _>()?;
24611
24612            Ok(result)
24613        } else {
24614            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24615            Err(DeleteProvisioningTemplateError::from_response(response))
24616        }
24617    }
24618
24619    /// <p>Deletes a fleet provisioning template version.</p>
24620    #[allow(unused_mut)]
24621    async fn delete_provisioning_template_version(
24622        &self,
24623        input: DeleteProvisioningTemplateVersionRequest,
24624    ) -> Result<
24625        DeleteProvisioningTemplateVersionResponse,
24626        RusotoError<DeleteProvisioningTemplateVersionError>,
24627    > {
24628        let request_uri = format!(
24629            "/provisioning-templates/{template_name}/versions/{version_id}",
24630            template_name = input.template_name,
24631            version_id = input.version_id
24632        );
24633
24634        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
24635        request.set_content_type("application/x-amz-json-1.1".to_owned());
24636
24637        request.set_endpoint_prefix("iot".to_string());
24638
24639        let mut response = self
24640            .client
24641            .sign_and_dispatch(request)
24642            .await
24643            .map_err(RusotoError::from)?;
24644        if response.status.is_success() {
24645            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24646            let result = proto::json::ResponsePayload::new(&response)
24647                .deserialize::<DeleteProvisioningTemplateVersionResponse, _>()?;
24648
24649            Ok(result)
24650        } else {
24651            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24652            Err(DeleteProvisioningTemplateVersionError::from_response(
24653                response,
24654            ))
24655        }
24656    }
24657
24658    /// <p>Deletes a CA certificate registration code.</p>
24659    #[allow(unused_mut)]
24660    async fn delete_registration_code(
24661        &self,
24662    ) -> Result<DeleteRegistrationCodeResponse, RusotoError<DeleteRegistrationCodeError>> {
24663        let request_uri = "/registrationcode";
24664
24665        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
24666        request.set_content_type("application/x-amz-json-1.1".to_owned());
24667
24668        request.set_endpoint_prefix("iot".to_string());
24669
24670        let mut response = self
24671            .client
24672            .sign_and_dispatch(request)
24673            .await
24674            .map_err(RusotoError::from)?;
24675        if response.status.is_success() {
24676            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24677            let result = proto::json::ResponsePayload::new(&response)
24678                .deserialize::<DeleteRegistrationCodeResponse, _>()?;
24679
24680            Ok(result)
24681        } else {
24682            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24683            Err(DeleteRegistrationCodeError::from_response(response))
24684        }
24685    }
24686
24687    /// <p>Deletes a role alias</p>
24688    #[allow(unused_mut)]
24689    async fn delete_role_alias(
24690        &self,
24691        input: DeleteRoleAliasRequest,
24692    ) -> Result<DeleteRoleAliasResponse, RusotoError<DeleteRoleAliasError>> {
24693        let request_uri = format!("/role-aliases/{role_alias}", role_alias = input.role_alias);
24694
24695        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
24696        request.set_content_type("application/x-amz-json-1.1".to_owned());
24697
24698        request.set_endpoint_prefix("iot".to_string());
24699
24700        let mut response = self
24701            .client
24702            .sign_and_dispatch(request)
24703            .await
24704            .map_err(RusotoError::from)?;
24705        if response.status.is_success() {
24706            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24707            let result = proto::json::ResponsePayload::new(&response)
24708                .deserialize::<DeleteRoleAliasResponse, _>()?;
24709
24710            Ok(result)
24711        } else {
24712            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24713            Err(DeleteRoleAliasError::from_response(response))
24714        }
24715    }
24716
24717    /// <p>Deletes a scheduled audit.</p>
24718    #[allow(unused_mut)]
24719    async fn delete_scheduled_audit(
24720        &self,
24721        input: DeleteScheduledAuditRequest,
24722    ) -> Result<DeleteScheduledAuditResponse, RusotoError<DeleteScheduledAuditError>> {
24723        let request_uri = format!(
24724            "/audit/scheduledaudits/{scheduled_audit_name}",
24725            scheduled_audit_name = input.scheduled_audit_name
24726        );
24727
24728        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
24729        request.set_content_type("application/x-amz-json-1.1".to_owned());
24730
24731        request.set_endpoint_prefix("iot".to_string());
24732
24733        let mut response = self
24734            .client
24735            .sign_and_dispatch(request)
24736            .await
24737            .map_err(RusotoError::from)?;
24738        if response.status.is_success() {
24739            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24740            let result = proto::json::ResponsePayload::new(&response)
24741                .deserialize::<DeleteScheduledAuditResponse, _>()?;
24742
24743            Ok(result)
24744        } else {
24745            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24746            Err(DeleteScheduledAuditError::from_response(response))
24747        }
24748    }
24749
24750    /// <p>Deletes a Device Defender security profile.</p>
24751    #[allow(unused_mut)]
24752    async fn delete_security_profile(
24753        &self,
24754        input: DeleteSecurityProfileRequest,
24755    ) -> Result<DeleteSecurityProfileResponse, RusotoError<DeleteSecurityProfileError>> {
24756        let request_uri = format!(
24757            "/security-profiles/{security_profile_name}",
24758            security_profile_name = input.security_profile_name
24759        );
24760
24761        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
24762        request.set_content_type("application/x-amz-json-1.1".to_owned());
24763
24764        request.set_endpoint_prefix("iot".to_string());
24765
24766        let mut params = Params::new();
24767        if let Some(ref x) = input.expected_version {
24768            params.put("expectedVersion", x);
24769        }
24770        request.set_params(params);
24771
24772        let mut response = self
24773            .client
24774            .sign_and_dispatch(request)
24775            .await
24776            .map_err(RusotoError::from)?;
24777        if response.status.is_success() {
24778            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24779            let result = proto::json::ResponsePayload::new(&response)
24780                .deserialize::<DeleteSecurityProfileResponse, _>()?;
24781
24782            Ok(result)
24783        } else {
24784            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24785            Err(DeleteSecurityProfileError::from_response(response))
24786        }
24787    }
24788
24789    /// <p>Deletes a stream.</p>
24790    #[allow(unused_mut)]
24791    async fn delete_stream(
24792        &self,
24793        input: DeleteStreamRequest,
24794    ) -> Result<DeleteStreamResponse, RusotoError<DeleteStreamError>> {
24795        let request_uri = format!("/streams/{stream_id}", stream_id = input.stream_id);
24796
24797        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
24798        request.set_content_type("application/x-amz-json-1.1".to_owned());
24799
24800        request.set_endpoint_prefix("iot".to_string());
24801
24802        let mut response = self
24803            .client
24804            .sign_and_dispatch(request)
24805            .await
24806            .map_err(RusotoError::from)?;
24807        if response.status.is_success() {
24808            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24809            let result = proto::json::ResponsePayload::new(&response)
24810                .deserialize::<DeleteStreamResponse, _>()?;
24811
24812            Ok(result)
24813        } else {
24814            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24815            Err(DeleteStreamError::from_response(response))
24816        }
24817    }
24818
24819    /// <p>Deletes the specified thing. Returns successfully with no error if the deletion is successful or you specify a thing that doesn't exist.</p>
24820    #[allow(unused_mut)]
24821    async fn delete_thing(
24822        &self,
24823        input: DeleteThingRequest,
24824    ) -> Result<DeleteThingResponse, RusotoError<DeleteThingError>> {
24825        let request_uri = format!("/things/{thing_name}", thing_name = input.thing_name);
24826
24827        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
24828        request.set_content_type("application/x-amz-json-1.1".to_owned());
24829
24830        request.set_endpoint_prefix("iot".to_string());
24831
24832        let mut params = Params::new();
24833        if let Some(ref x) = input.expected_version {
24834            params.put("expectedVersion", x);
24835        }
24836        request.set_params(params);
24837
24838        let mut response = self
24839            .client
24840            .sign_and_dispatch(request)
24841            .await
24842            .map_err(RusotoError::from)?;
24843        if response.status.is_success() {
24844            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24845            let result = proto::json::ResponsePayload::new(&response)
24846                .deserialize::<DeleteThingResponse, _>()?;
24847
24848            Ok(result)
24849        } else {
24850            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24851            Err(DeleteThingError::from_response(response))
24852        }
24853    }
24854
24855    /// <p>Deletes a thing group.</p>
24856    #[allow(unused_mut)]
24857    async fn delete_thing_group(
24858        &self,
24859        input: DeleteThingGroupRequest,
24860    ) -> Result<DeleteThingGroupResponse, RusotoError<DeleteThingGroupError>> {
24861        let request_uri = format!(
24862            "/thing-groups/{thing_group_name}",
24863            thing_group_name = input.thing_group_name
24864        );
24865
24866        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
24867        request.set_content_type("application/x-amz-json-1.1".to_owned());
24868
24869        request.set_endpoint_prefix("iot".to_string());
24870
24871        let mut params = Params::new();
24872        if let Some(ref x) = input.expected_version {
24873            params.put("expectedVersion", x);
24874        }
24875        request.set_params(params);
24876
24877        let mut response = self
24878            .client
24879            .sign_and_dispatch(request)
24880            .await
24881            .map_err(RusotoError::from)?;
24882        if response.status.is_success() {
24883            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24884            let result = proto::json::ResponsePayload::new(&response)
24885                .deserialize::<DeleteThingGroupResponse, _>()?;
24886
24887            Ok(result)
24888        } else {
24889            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24890            Err(DeleteThingGroupError::from_response(response))
24891        }
24892    }
24893
24894    /// <p>Deletes the specified thing type. You cannot delete a thing type if it has things associated with it. To delete a thing type, first mark it as deprecated by calling <a>DeprecateThingType</a>, then remove any associated things by calling <a>UpdateThing</a> to change the thing type on any associated thing, and finally use <a>DeleteThingType</a> to delete the thing type.</p>
24895    #[allow(unused_mut)]
24896    async fn delete_thing_type(
24897        &self,
24898        input: DeleteThingTypeRequest,
24899    ) -> Result<DeleteThingTypeResponse, RusotoError<DeleteThingTypeError>> {
24900        let request_uri = format!(
24901            "/thing-types/{thing_type_name}",
24902            thing_type_name = input.thing_type_name
24903        );
24904
24905        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
24906        request.set_content_type("application/x-amz-json-1.1".to_owned());
24907
24908        request.set_endpoint_prefix("iot".to_string());
24909
24910        let mut response = self
24911            .client
24912            .sign_and_dispatch(request)
24913            .await
24914            .map_err(RusotoError::from)?;
24915        if response.status.is_success() {
24916            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24917            let result = proto::json::ResponsePayload::new(&response)
24918                .deserialize::<DeleteThingTypeResponse, _>()?;
24919
24920            Ok(result)
24921        } else {
24922            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24923            Err(DeleteThingTypeError::from_response(response))
24924        }
24925    }
24926
24927    /// <p>Deletes the rule.</p>
24928    #[allow(unused_mut)]
24929    async fn delete_topic_rule(
24930        &self,
24931        input: DeleteTopicRuleRequest,
24932    ) -> Result<(), RusotoError<DeleteTopicRuleError>> {
24933        let request_uri = format!("/rules/{rule_name}", rule_name = input.rule_name);
24934
24935        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
24936        request.set_content_type("application/x-amz-json-1.1".to_owned());
24937
24938        request.set_endpoint_prefix("iot".to_string());
24939
24940        let mut response = self
24941            .client
24942            .sign_and_dispatch(request)
24943            .await
24944            .map_err(RusotoError::from)?;
24945        if response.status.is_success() {
24946            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24947            let result = ::std::mem::drop(response);
24948
24949            Ok(result)
24950        } else {
24951            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24952            Err(DeleteTopicRuleError::from_response(response))
24953        }
24954    }
24955
24956    /// <p>Deletes a topic rule destination.</p>
24957    #[allow(unused_mut)]
24958    async fn delete_topic_rule_destination(
24959        &self,
24960        input: DeleteTopicRuleDestinationRequest,
24961    ) -> Result<DeleteTopicRuleDestinationResponse, RusotoError<DeleteTopicRuleDestinationError>>
24962    {
24963        let request_uri = format!("/destinations/{arn}", arn = input.arn);
24964
24965        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
24966        request.set_content_type("application/x-amz-json-1.1".to_owned());
24967
24968        request.set_endpoint_prefix("iot".to_string());
24969
24970        let mut response = self
24971            .client
24972            .sign_and_dispatch(request)
24973            .await
24974            .map_err(RusotoError::from)?;
24975        if response.status.is_success() {
24976            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24977            let result = proto::json::ResponsePayload::new(&response)
24978                .deserialize::<DeleteTopicRuleDestinationResponse, _>()?;
24979
24980            Ok(result)
24981        } else {
24982            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
24983            Err(DeleteTopicRuleDestinationError::from_response(response))
24984        }
24985    }
24986
24987    /// <p>Deletes a logging level.</p>
24988    #[allow(unused_mut)]
24989    async fn delete_v2_logging_level(
24990        &self,
24991        input: DeleteV2LoggingLevelRequest,
24992    ) -> Result<(), RusotoError<DeleteV2LoggingLevelError>> {
24993        let request_uri = "/v2LoggingLevel";
24994
24995        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
24996        request.set_content_type("application/x-amz-json-1.1".to_owned());
24997
24998        request.set_endpoint_prefix("iot".to_string());
24999
25000        let mut params = Params::new();
25001        params.put("targetName", &input.target_name);
25002        params.put("targetType", &input.target_type);
25003        request.set_params(params);
25004
25005        let mut response = self
25006            .client
25007            .sign_and_dispatch(request)
25008            .await
25009            .map_err(RusotoError::from)?;
25010        if response.status.is_success() {
25011            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25012            let result = ::std::mem::drop(response);
25013
25014            Ok(result)
25015        } else {
25016            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25017            Err(DeleteV2LoggingLevelError::from_response(response))
25018        }
25019    }
25020
25021    /// <p>Deprecates a thing type. You can not associate new things with deprecated thing type.</p>
25022    #[allow(unused_mut)]
25023    async fn deprecate_thing_type(
25024        &self,
25025        input: DeprecateThingTypeRequest,
25026    ) -> Result<DeprecateThingTypeResponse, RusotoError<DeprecateThingTypeError>> {
25027        let request_uri = format!(
25028            "/thing-types/{thing_type_name}/deprecate",
25029            thing_type_name = input.thing_type_name
25030        );
25031
25032        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
25033        request.set_content_type("application/x-amz-json-1.1".to_owned());
25034
25035        request.set_endpoint_prefix("iot".to_string());
25036        let encoded = Some(serde_json::to_vec(&input).unwrap());
25037        request.set_payload(encoded);
25038
25039        let mut response = self
25040            .client
25041            .sign_and_dispatch(request)
25042            .await
25043            .map_err(RusotoError::from)?;
25044        if response.status.is_success() {
25045            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25046            let result = proto::json::ResponsePayload::new(&response)
25047                .deserialize::<DeprecateThingTypeResponse, _>()?;
25048
25049            Ok(result)
25050        } else {
25051            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25052            Err(DeprecateThingTypeError::from_response(response))
25053        }
25054    }
25055
25056    /// <p>Gets information about the Device Defender audit settings for this account. Settings include how audit notifications are sent and which audit checks are enabled or disabled.</p>
25057    #[allow(unused_mut)]
25058    async fn describe_account_audit_configuration(
25059        &self,
25060    ) -> Result<
25061        DescribeAccountAuditConfigurationResponse,
25062        RusotoError<DescribeAccountAuditConfigurationError>,
25063    > {
25064        let request_uri = "/audit/configuration";
25065
25066        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
25067        request.set_content_type("application/x-amz-json-1.1".to_owned());
25068
25069        request.set_endpoint_prefix("iot".to_string());
25070
25071        let mut response = self
25072            .client
25073            .sign_and_dispatch(request)
25074            .await
25075            .map_err(RusotoError::from)?;
25076        if response.status.is_success() {
25077            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25078            let result = proto::json::ResponsePayload::new(&response)
25079                .deserialize::<DescribeAccountAuditConfigurationResponse, _>()?;
25080
25081            Ok(result)
25082        } else {
25083            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25084            Err(DescribeAccountAuditConfigurationError::from_response(
25085                response,
25086            ))
25087        }
25088    }
25089
25090    /// <p>Gets information about a single audit finding. Properties include the reason for noncompliance, the severity of the issue, and when the audit that returned the finding was started.</p>
25091    #[allow(unused_mut)]
25092    async fn describe_audit_finding(
25093        &self,
25094        input: DescribeAuditFindingRequest,
25095    ) -> Result<DescribeAuditFindingResponse, RusotoError<DescribeAuditFindingError>> {
25096        let request_uri = format!(
25097            "/audit/findings/{finding_id}",
25098            finding_id = input.finding_id
25099        );
25100
25101        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
25102        request.set_content_type("application/x-amz-json-1.1".to_owned());
25103
25104        request.set_endpoint_prefix("iot".to_string());
25105
25106        let mut response = self
25107            .client
25108            .sign_and_dispatch(request)
25109            .await
25110            .map_err(RusotoError::from)?;
25111        if response.status.is_success() {
25112            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25113            let result = proto::json::ResponsePayload::new(&response)
25114                .deserialize::<DescribeAuditFindingResponse, _>()?;
25115
25116            Ok(result)
25117        } else {
25118            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25119            Err(DescribeAuditFindingError::from_response(response))
25120        }
25121    }
25122
25123    /// <p>Gets information about an audit mitigation task that is used to apply mitigation actions to a set of audit findings. Properties include the actions being applied, the audit checks to which they're being applied, the task status, and aggregated task statistics.</p>
25124    #[allow(unused_mut)]
25125    async fn describe_audit_mitigation_actions_task(
25126        &self,
25127        input: DescribeAuditMitigationActionsTaskRequest,
25128    ) -> Result<
25129        DescribeAuditMitigationActionsTaskResponse,
25130        RusotoError<DescribeAuditMitigationActionsTaskError>,
25131    > {
25132        let request_uri = format!(
25133            "/audit/mitigationactions/tasks/{task_id}",
25134            task_id = input.task_id
25135        );
25136
25137        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
25138        request.set_content_type("application/x-amz-json-1.1".to_owned());
25139
25140        request.set_endpoint_prefix("iot".to_string());
25141
25142        let mut response = self
25143            .client
25144            .sign_and_dispatch(request)
25145            .await
25146            .map_err(RusotoError::from)?;
25147        if response.status.is_success() {
25148            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25149            let result = proto::json::ResponsePayload::new(&response)
25150                .deserialize::<DescribeAuditMitigationActionsTaskResponse, _>()?;
25151
25152            Ok(result)
25153        } else {
25154            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25155            Err(DescribeAuditMitigationActionsTaskError::from_response(
25156                response,
25157            ))
25158        }
25159    }
25160
25161    /// <p>Gets information about a Device Defender audit.</p>
25162    #[allow(unused_mut)]
25163    async fn describe_audit_task(
25164        &self,
25165        input: DescribeAuditTaskRequest,
25166    ) -> Result<DescribeAuditTaskResponse, RusotoError<DescribeAuditTaskError>> {
25167        let request_uri = format!("/audit/tasks/{task_id}", task_id = input.task_id);
25168
25169        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
25170        request.set_content_type("application/x-amz-json-1.1".to_owned());
25171
25172        request.set_endpoint_prefix("iot".to_string());
25173
25174        let mut response = self
25175            .client
25176            .sign_and_dispatch(request)
25177            .await
25178            .map_err(RusotoError::from)?;
25179        if response.status.is_success() {
25180            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25181            let result = proto::json::ResponsePayload::new(&response)
25182                .deserialize::<DescribeAuditTaskResponse, _>()?;
25183
25184            Ok(result)
25185        } else {
25186            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25187            Err(DescribeAuditTaskError::from_response(response))
25188        }
25189    }
25190
25191    /// <p>Describes an authorizer.</p>
25192    #[allow(unused_mut)]
25193    async fn describe_authorizer(
25194        &self,
25195        input: DescribeAuthorizerRequest,
25196    ) -> Result<DescribeAuthorizerResponse, RusotoError<DescribeAuthorizerError>> {
25197        let request_uri = format!(
25198            "/authorizer/{authorizer_name}",
25199            authorizer_name = input.authorizer_name
25200        );
25201
25202        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
25203        request.set_content_type("application/x-amz-json-1.1".to_owned());
25204
25205        request.set_endpoint_prefix("iot".to_string());
25206
25207        let mut response = self
25208            .client
25209            .sign_and_dispatch(request)
25210            .await
25211            .map_err(RusotoError::from)?;
25212        if response.status.is_success() {
25213            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25214            let result = proto::json::ResponsePayload::new(&response)
25215                .deserialize::<DescribeAuthorizerResponse, _>()?;
25216
25217            Ok(result)
25218        } else {
25219            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25220            Err(DescribeAuthorizerError::from_response(response))
25221        }
25222    }
25223
25224    /// <p>Returns information about a billing group.</p>
25225    #[allow(unused_mut)]
25226    async fn describe_billing_group(
25227        &self,
25228        input: DescribeBillingGroupRequest,
25229    ) -> Result<DescribeBillingGroupResponse, RusotoError<DescribeBillingGroupError>> {
25230        let request_uri = format!(
25231            "/billing-groups/{billing_group_name}",
25232            billing_group_name = input.billing_group_name
25233        );
25234
25235        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
25236        request.set_content_type("application/x-amz-json-1.1".to_owned());
25237
25238        request.set_endpoint_prefix("iot".to_string());
25239
25240        let mut response = self
25241            .client
25242            .sign_and_dispatch(request)
25243            .await
25244            .map_err(RusotoError::from)?;
25245        if response.status.is_success() {
25246            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25247            let result = proto::json::ResponsePayload::new(&response)
25248                .deserialize::<DescribeBillingGroupResponse, _>()?;
25249
25250            Ok(result)
25251        } else {
25252            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25253            Err(DescribeBillingGroupError::from_response(response))
25254        }
25255    }
25256
25257    /// <p>Describes a registered CA certificate.</p>
25258    #[allow(unused_mut)]
25259    async fn describe_ca_certificate(
25260        &self,
25261        input: DescribeCACertificateRequest,
25262    ) -> Result<DescribeCACertificateResponse, RusotoError<DescribeCACertificateError>> {
25263        let request_uri = format!(
25264            "/cacertificate/{ca_certificate_id}",
25265            ca_certificate_id = input.certificate_id
25266        );
25267
25268        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
25269        request.set_content_type("application/x-amz-json-1.1".to_owned());
25270
25271        request.set_endpoint_prefix("iot".to_string());
25272
25273        let mut response = self
25274            .client
25275            .sign_and_dispatch(request)
25276            .await
25277            .map_err(RusotoError::from)?;
25278        if response.status.is_success() {
25279            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25280            let result = proto::json::ResponsePayload::new(&response)
25281                .deserialize::<DescribeCACertificateResponse, _>()?;
25282
25283            Ok(result)
25284        } else {
25285            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25286            Err(DescribeCACertificateError::from_response(response))
25287        }
25288    }
25289
25290    /// <p>Gets information about the specified certificate.</p>
25291    #[allow(unused_mut)]
25292    async fn describe_certificate(
25293        &self,
25294        input: DescribeCertificateRequest,
25295    ) -> Result<DescribeCertificateResponse, RusotoError<DescribeCertificateError>> {
25296        let request_uri = format!(
25297            "/certificates/{certificate_id}",
25298            certificate_id = input.certificate_id
25299        );
25300
25301        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
25302        request.set_content_type("application/x-amz-json-1.1".to_owned());
25303
25304        request.set_endpoint_prefix("iot".to_string());
25305
25306        let mut response = self
25307            .client
25308            .sign_and_dispatch(request)
25309            .await
25310            .map_err(RusotoError::from)?;
25311        if response.status.is_success() {
25312            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25313            let result = proto::json::ResponsePayload::new(&response)
25314                .deserialize::<DescribeCertificateResponse, _>()?;
25315
25316            Ok(result)
25317        } else {
25318            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25319            Err(DescribeCertificateError::from_response(response))
25320        }
25321    }
25322
25323    /// <p>Describes the default authorizer.</p>
25324    #[allow(unused_mut)]
25325    async fn describe_default_authorizer(
25326        &self,
25327    ) -> Result<DescribeDefaultAuthorizerResponse, RusotoError<DescribeDefaultAuthorizerError>>
25328    {
25329        let request_uri = "/default-authorizer";
25330
25331        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
25332        request.set_content_type("application/x-amz-json-1.1".to_owned());
25333
25334        request.set_endpoint_prefix("iot".to_string());
25335
25336        let mut response = self
25337            .client
25338            .sign_and_dispatch(request)
25339            .await
25340            .map_err(RusotoError::from)?;
25341        if response.status.is_success() {
25342            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25343            let result = proto::json::ResponsePayload::new(&response)
25344                .deserialize::<DescribeDefaultAuthorizerResponse, _>()?;
25345
25346            Ok(result)
25347        } else {
25348            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25349            Err(DescribeDefaultAuthorizerError::from_response(response))
25350        }
25351    }
25352
25353    /// <p>Provides details about a dimension that is defined in your AWS account.</p>
25354    #[allow(unused_mut)]
25355    async fn describe_dimension(
25356        &self,
25357        input: DescribeDimensionRequest,
25358    ) -> Result<DescribeDimensionResponse, RusotoError<DescribeDimensionError>> {
25359        let request_uri = format!("/dimensions/{name}", name = input.name);
25360
25361        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
25362        request.set_content_type("application/x-amz-json-1.1".to_owned());
25363
25364        request.set_endpoint_prefix("iot".to_string());
25365
25366        let mut response = self
25367            .client
25368            .sign_and_dispatch(request)
25369            .await
25370            .map_err(RusotoError::from)?;
25371        if response.status.is_success() {
25372            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25373            let result = proto::json::ResponsePayload::new(&response)
25374                .deserialize::<DescribeDimensionResponse, _>()?;
25375
25376            Ok(result)
25377        } else {
25378            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25379            Err(DescribeDimensionError::from_response(response))
25380        }
25381    }
25382
25383    /// <p><p>Gets summary information about a domain configuration.</p> <note> <p>The domain configuration feature is in public preview and is subject to change.</p> </note></p>
25384    #[allow(unused_mut)]
25385    async fn describe_domain_configuration(
25386        &self,
25387        input: DescribeDomainConfigurationRequest,
25388    ) -> Result<DescribeDomainConfigurationResponse, RusotoError<DescribeDomainConfigurationError>>
25389    {
25390        let request_uri = format!(
25391            "/domainConfigurations/{domain_configuration_name}",
25392            domain_configuration_name = input.domain_configuration_name
25393        );
25394
25395        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
25396        request.set_content_type("application/x-amz-json-1.1".to_owned());
25397
25398        request.set_endpoint_prefix("iot".to_string());
25399
25400        let mut response = self
25401            .client
25402            .sign_and_dispatch(request)
25403            .await
25404            .map_err(RusotoError::from)?;
25405        if response.status.is_success() {
25406            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25407            let result = proto::json::ResponsePayload::new(&response)
25408                .deserialize::<DescribeDomainConfigurationResponse, _>()?;
25409
25410            Ok(result)
25411        } else {
25412            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25413            Err(DescribeDomainConfigurationError::from_response(response))
25414        }
25415    }
25416
25417    /// <p>Returns a unique endpoint specific to the AWS account making the call.</p>
25418    #[allow(unused_mut)]
25419    async fn describe_endpoint(
25420        &self,
25421        input: DescribeEndpointRequest,
25422    ) -> Result<DescribeEndpointResponse, RusotoError<DescribeEndpointError>> {
25423        let request_uri = "/endpoint";
25424
25425        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
25426        request.set_content_type("application/x-amz-json-1.1".to_owned());
25427
25428        request.set_endpoint_prefix("iot".to_string());
25429
25430        let mut params = Params::new();
25431        if let Some(ref x) = input.endpoint_type {
25432            params.put("endpointType", x);
25433        }
25434        request.set_params(params);
25435
25436        let mut response = self
25437            .client
25438            .sign_and_dispatch(request)
25439            .await
25440            .map_err(RusotoError::from)?;
25441        if response.status.is_success() {
25442            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25443            let result = proto::json::ResponsePayload::new(&response)
25444                .deserialize::<DescribeEndpointResponse, _>()?;
25445
25446            Ok(result)
25447        } else {
25448            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25449            Err(DescribeEndpointError::from_response(response))
25450        }
25451    }
25452
25453    /// <p>Describes event configurations.</p>
25454    #[allow(unused_mut)]
25455    async fn describe_event_configurations(
25456        &self,
25457    ) -> Result<DescribeEventConfigurationsResponse, RusotoError<DescribeEventConfigurationsError>>
25458    {
25459        let request_uri = "/event-configurations";
25460
25461        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
25462        request.set_content_type("application/x-amz-json-1.1".to_owned());
25463
25464        request.set_endpoint_prefix("iot".to_string());
25465
25466        let mut response = self
25467            .client
25468            .sign_and_dispatch(request)
25469            .await
25470            .map_err(RusotoError::from)?;
25471        if response.status.is_success() {
25472            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25473            let result = proto::json::ResponsePayload::new(&response)
25474                .deserialize::<DescribeEventConfigurationsResponse, _>()?;
25475
25476            Ok(result)
25477        } else {
25478            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25479            Err(DescribeEventConfigurationsError::from_response(response))
25480        }
25481    }
25482
25483    /// <p>Describes a search index.</p>
25484    #[allow(unused_mut)]
25485    async fn describe_index(
25486        &self,
25487        input: DescribeIndexRequest,
25488    ) -> Result<DescribeIndexResponse, RusotoError<DescribeIndexError>> {
25489        let request_uri = format!("/indices/{index_name}", index_name = input.index_name);
25490
25491        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
25492        request.set_content_type("application/x-amz-json-1.1".to_owned());
25493
25494        request.set_endpoint_prefix("iot".to_string());
25495
25496        let mut response = self
25497            .client
25498            .sign_and_dispatch(request)
25499            .await
25500            .map_err(RusotoError::from)?;
25501        if response.status.is_success() {
25502            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25503            let result = proto::json::ResponsePayload::new(&response)
25504                .deserialize::<DescribeIndexResponse, _>()?;
25505
25506            Ok(result)
25507        } else {
25508            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25509            Err(DescribeIndexError::from_response(response))
25510        }
25511    }
25512
25513    /// <p>Describes a job.</p>
25514    #[allow(unused_mut)]
25515    async fn describe_job(
25516        &self,
25517        input: DescribeJobRequest,
25518    ) -> Result<DescribeJobResponse, RusotoError<DescribeJobError>> {
25519        let request_uri = format!("/jobs/{job_id}", job_id = input.job_id);
25520
25521        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
25522        request.set_content_type("application/x-amz-json-1.1".to_owned());
25523
25524        request.set_endpoint_prefix("iot".to_string());
25525
25526        let mut response = self
25527            .client
25528            .sign_and_dispatch(request)
25529            .await
25530            .map_err(RusotoError::from)?;
25531        if response.status.is_success() {
25532            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25533            let result = proto::json::ResponsePayload::new(&response)
25534                .deserialize::<DescribeJobResponse, _>()?;
25535
25536            Ok(result)
25537        } else {
25538            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25539            Err(DescribeJobError::from_response(response))
25540        }
25541    }
25542
25543    /// <p>Describes a job execution.</p>
25544    #[allow(unused_mut)]
25545    async fn describe_job_execution(
25546        &self,
25547        input: DescribeJobExecutionRequest,
25548    ) -> Result<DescribeJobExecutionResponse, RusotoError<DescribeJobExecutionError>> {
25549        let request_uri = format!(
25550            "/things/{thing_name}/jobs/{job_id}",
25551            job_id = input.job_id,
25552            thing_name = input.thing_name
25553        );
25554
25555        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
25556        request.set_content_type("application/x-amz-json-1.1".to_owned());
25557
25558        request.set_endpoint_prefix("iot".to_string());
25559
25560        let mut params = Params::new();
25561        if let Some(ref x) = input.execution_number {
25562            params.put("executionNumber", x);
25563        }
25564        request.set_params(params);
25565
25566        let mut response = self
25567            .client
25568            .sign_and_dispatch(request)
25569            .await
25570            .map_err(RusotoError::from)?;
25571        if response.status.is_success() {
25572            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25573            let result = proto::json::ResponsePayload::new(&response)
25574                .deserialize::<DescribeJobExecutionResponse, _>()?;
25575
25576            Ok(result)
25577        } else {
25578            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25579            Err(DescribeJobExecutionError::from_response(response))
25580        }
25581    }
25582
25583    /// <p>Gets information about a mitigation action.</p>
25584    #[allow(unused_mut)]
25585    async fn describe_mitigation_action(
25586        &self,
25587        input: DescribeMitigationActionRequest,
25588    ) -> Result<DescribeMitigationActionResponse, RusotoError<DescribeMitigationActionError>> {
25589        let request_uri = format!(
25590            "/mitigationactions/actions/{action_name}",
25591            action_name = input.action_name
25592        );
25593
25594        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
25595        request.set_content_type("application/x-amz-json-1.1".to_owned());
25596
25597        request.set_endpoint_prefix("iot".to_string());
25598
25599        let mut response = self
25600            .client
25601            .sign_and_dispatch(request)
25602            .await
25603            .map_err(RusotoError::from)?;
25604        if response.status.is_success() {
25605            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25606            let result = proto::json::ResponsePayload::new(&response)
25607                .deserialize::<DescribeMitigationActionResponse, _>()?;
25608
25609            Ok(result)
25610        } else {
25611            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25612            Err(DescribeMitigationActionError::from_response(response))
25613        }
25614    }
25615
25616    /// <p>Returns information about a fleet provisioning template.</p>
25617    #[allow(unused_mut)]
25618    async fn describe_provisioning_template(
25619        &self,
25620        input: DescribeProvisioningTemplateRequest,
25621    ) -> Result<DescribeProvisioningTemplateResponse, RusotoError<DescribeProvisioningTemplateError>>
25622    {
25623        let request_uri = format!(
25624            "/provisioning-templates/{template_name}",
25625            template_name = input.template_name
25626        );
25627
25628        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
25629        request.set_content_type("application/x-amz-json-1.1".to_owned());
25630
25631        request.set_endpoint_prefix("iot".to_string());
25632
25633        let mut response = self
25634            .client
25635            .sign_and_dispatch(request)
25636            .await
25637            .map_err(RusotoError::from)?;
25638        if response.status.is_success() {
25639            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25640            let result = proto::json::ResponsePayload::new(&response)
25641                .deserialize::<DescribeProvisioningTemplateResponse, _>()?;
25642
25643            Ok(result)
25644        } else {
25645            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25646            Err(DescribeProvisioningTemplateError::from_response(response))
25647        }
25648    }
25649
25650    /// <p>Returns information about a fleet provisioning template version.</p>
25651    #[allow(unused_mut)]
25652    async fn describe_provisioning_template_version(
25653        &self,
25654        input: DescribeProvisioningTemplateVersionRequest,
25655    ) -> Result<
25656        DescribeProvisioningTemplateVersionResponse,
25657        RusotoError<DescribeProvisioningTemplateVersionError>,
25658    > {
25659        let request_uri = format!(
25660            "/provisioning-templates/{template_name}/versions/{version_id}",
25661            template_name = input.template_name,
25662            version_id = input.version_id
25663        );
25664
25665        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
25666        request.set_content_type("application/x-amz-json-1.1".to_owned());
25667
25668        request.set_endpoint_prefix("iot".to_string());
25669
25670        let mut response = self
25671            .client
25672            .sign_and_dispatch(request)
25673            .await
25674            .map_err(RusotoError::from)?;
25675        if response.status.is_success() {
25676            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25677            let result = proto::json::ResponsePayload::new(&response)
25678                .deserialize::<DescribeProvisioningTemplateVersionResponse, _>()?;
25679
25680            Ok(result)
25681        } else {
25682            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25683            Err(DescribeProvisioningTemplateVersionError::from_response(
25684                response,
25685            ))
25686        }
25687    }
25688
25689    /// <p>Describes a role alias.</p>
25690    #[allow(unused_mut)]
25691    async fn describe_role_alias(
25692        &self,
25693        input: DescribeRoleAliasRequest,
25694    ) -> Result<DescribeRoleAliasResponse, RusotoError<DescribeRoleAliasError>> {
25695        let request_uri = format!("/role-aliases/{role_alias}", role_alias = input.role_alias);
25696
25697        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
25698        request.set_content_type("application/x-amz-json-1.1".to_owned());
25699
25700        request.set_endpoint_prefix("iot".to_string());
25701
25702        let mut response = self
25703            .client
25704            .sign_and_dispatch(request)
25705            .await
25706            .map_err(RusotoError::from)?;
25707        if response.status.is_success() {
25708            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25709            let result = proto::json::ResponsePayload::new(&response)
25710                .deserialize::<DescribeRoleAliasResponse, _>()?;
25711
25712            Ok(result)
25713        } else {
25714            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25715            Err(DescribeRoleAliasError::from_response(response))
25716        }
25717    }
25718
25719    /// <p>Gets information about a scheduled audit.</p>
25720    #[allow(unused_mut)]
25721    async fn describe_scheduled_audit(
25722        &self,
25723        input: DescribeScheduledAuditRequest,
25724    ) -> Result<DescribeScheduledAuditResponse, RusotoError<DescribeScheduledAuditError>> {
25725        let request_uri = format!(
25726            "/audit/scheduledaudits/{scheduled_audit_name}",
25727            scheduled_audit_name = input.scheduled_audit_name
25728        );
25729
25730        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
25731        request.set_content_type("application/x-amz-json-1.1".to_owned());
25732
25733        request.set_endpoint_prefix("iot".to_string());
25734
25735        let mut response = self
25736            .client
25737            .sign_and_dispatch(request)
25738            .await
25739            .map_err(RusotoError::from)?;
25740        if response.status.is_success() {
25741            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25742            let result = proto::json::ResponsePayload::new(&response)
25743                .deserialize::<DescribeScheduledAuditResponse, _>()?;
25744
25745            Ok(result)
25746        } else {
25747            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25748            Err(DescribeScheduledAuditError::from_response(response))
25749        }
25750    }
25751
25752    /// <p>Gets information about a Device Defender security profile.</p>
25753    #[allow(unused_mut)]
25754    async fn describe_security_profile(
25755        &self,
25756        input: DescribeSecurityProfileRequest,
25757    ) -> Result<DescribeSecurityProfileResponse, RusotoError<DescribeSecurityProfileError>> {
25758        let request_uri = format!(
25759            "/security-profiles/{security_profile_name}",
25760            security_profile_name = input.security_profile_name
25761        );
25762
25763        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
25764        request.set_content_type("application/x-amz-json-1.1".to_owned());
25765
25766        request.set_endpoint_prefix("iot".to_string());
25767
25768        let mut response = self
25769            .client
25770            .sign_and_dispatch(request)
25771            .await
25772            .map_err(RusotoError::from)?;
25773        if response.status.is_success() {
25774            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25775            let result = proto::json::ResponsePayload::new(&response)
25776                .deserialize::<DescribeSecurityProfileResponse, _>()?;
25777
25778            Ok(result)
25779        } else {
25780            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25781            Err(DescribeSecurityProfileError::from_response(response))
25782        }
25783    }
25784
25785    /// <p>Gets information about a stream.</p>
25786    #[allow(unused_mut)]
25787    async fn describe_stream(
25788        &self,
25789        input: DescribeStreamRequest,
25790    ) -> Result<DescribeStreamResponse, RusotoError<DescribeStreamError>> {
25791        let request_uri = format!("/streams/{stream_id}", stream_id = input.stream_id);
25792
25793        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
25794        request.set_content_type("application/x-amz-json-1.1".to_owned());
25795
25796        request.set_endpoint_prefix("iot".to_string());
25797
25798        let mut response = self
25799            .client
25800            .sign_and_dispatch(request)
25801            .await
25802            .map_err(RusotoError::from)?;
25803        if response.status.is_success() {
25804            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25805            let result = proto::json::ResponsePayload::new(&response)
25806                .deserialize::<DescribeStreamResponse, _>()?;
25807
25808            Ok(result)
25809        } else {
25810            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25811            Err(DescribeStreamError::from_response(response))
25812        }
25813    }
25814
25815    /// <p>Gets information about the specified thing.</p>
25816    #[allow(unused_mut)]
25817    async fn describe_thing(
25818        &self,
25819        input: DescribeThingRequest,
25820    ) -> Result<DescribeThingResponse, RusotoError<DescribeThingError>> {
25821        let request_uri = format!("/things/{thing_name}", thing_name = input.thing_name);
25822
25823        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
25824        request.set_content_type("application/x-amz-json-1.1".to_owned());
25825
25826        request.set_endpoint_prefix("iot".to_string());
25827
25828        let mut response = self
25829            .client
25830            .sign_and_dispatch(request)
25831            .await
25832            .map_err(RusotoError::from)?;
25833        if response.status.is_success() {
25834            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25835            let result = proto::json::ResponsePayload::new(&response)
25836                .deserialize::<DescribeThingResponse, _>()?;
25837
25838            Ok(result)
25839        } else {
25840            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25841            Err(DescribeThingError::from_response(response))
25842        }
25843    }
25844
25845    /// <p>Describe a thing group.</p>
25846    #[allow(unused_mut)]
25847    async fn describe_thing_group(
25848        &self,
25849        input: DescribeThingGroupRequest,
25850    ) -> Result<DescribeThingGroupResponse, RusotoError<DescribeThingGroupError>> {
25851        let request_uri = format!(
25852            "/thing-groups/{thing_group_name}",
25853            thing_group_name = input.thing_group_name
25854        );
25855
25856        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
25857        request.set_content_type("application/x-amz-json-1.1".to_owned());
25858
25859        request.set_endpoint_prefix("iot".to_string());
25860
25861        let mut response = self
25862            .client
25863            .sign_and_dispatch(request)
25864            .await
25865            .map_err(RusotoError::from)?;
25866        if response.status.is_success() {
25867            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25868            let result = proto::json::ResponsePayload::new(&response)
25869                .deserialize::<DescribeThingGroupResponse, _>()?;
25870
25871            Ok(result)
25872        } else {
25873            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25874            Err(DescribeThingGroupError::from_response(response))
25875        }
25876    }
25877
25878    /// <p>Describes a bulk thing provisioning task.</p>
25879    #[allow(unused_mut)]
25880    async fn describe_thing_registration_task(
25881        &self,
25882        input: DescribeThingRegistrationTaskRequest,
25883    ) -> Result<
25884        DescribeThingRegistrationTaskResponse,
25885        RusotoError<DescribeThingRegistrationTaskError>,
25886    > {
25887        let request_uri = format!(
25888            "/thing-registration-tasks/{task_id}",
25889            task_id = input.task_id
25890        );
25891
25892        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
25893        request.set_content_type("application/x-amz-json-1.1".to_owned());
25894
25895        request.set_endpoint_prefix("iot".to_string());
25896
25897        let mut response = self
25898            .client
25899            .sign_and_dispatch(request)
25900            .await
25901            .map_err(RusotoError::from)?;
25902        if response.status.is_success() {
25903            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25904            let result = proto::json::ResponsePayload::new(&response)
25905                .deserialize::<DescribeThingRegistrationTaskResponse, _>()?;
25906
25907            Ok(result)
25908        } else {
25909            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25910            Err(DescribeThingRegistrationTaskError::from_response(response))
25911        }
25912    }
25913
25914    /// <p>Gets information about the specified thing type.</p>
25915    #[allow(unused_mut)]
25916    async fn describe_thing_type(
25917        &self,
25918        input: DescribeThingTypeRequest,
25919    ) -> Result<DescribeThingTypeResponse, RusotoError<DescribeThingTypeError>> {
25920        let request_uri = format!(
25921            "/thing-types/{thing_type_name}",
25922            thing_type_name = input.thing_type_name
25923        );
25924
25925        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
25926        request.set_content_type("application/x-amz-json-1.1".to_owned());
25927
25928        request.set_endpoint_prefix("iot".to_string());
25929
25930        let mut response = self
25931            .client
25932            .sign_and_dispatch(request)
25933            .await
25934            .map_err(RusotoError::from)?;
25935        if response.status.is_success() {
25936            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25937            let result = proto::json::ResponsePayload::new(&response)
25938                .deserialize::<DescribeThingTypeResponse, _>()?;
25939
25940            Ok(result)
25941        } else {
25942            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25943            Err(DescribeThingTypeError::from_response(response))
25944        }
25945    }
25946
25947    /// <p>Detaches a policy from the specified target.</p>
25948    #[allow(unused_mut)]
25949    async fn detach_policy(
25950        &self,
25951        input: DetachPolicyRequest,
25952    ) -> Result<(), RusotoError<DetachPolicyError>> {
25953        let request_uri = format!(
25954            "/target-policies/{policy_name}",
25955            policy_name = input.policy_name
25956        );
25957
25958        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
25959        request.set_content_type("application/x-amz-json-1.1".to_owned());
25960
25961        request.set_endpoint_prefix("iot".to_string());
25962        let encoded = Some(serde_json::to_vec(&input).unwrap());
25963        request.set_payload(encoded);
25964
25965        let mut response = self
25966            .client
25967            .sign_and_dispatch(request)
25968            .await
25969            .map_err(RusotoError::from)?;
25970        if response.status.is_success() {
25971            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25972            let result = ::std::mem::drop(response);
25973
25974            Ok(result)
25975        } else {
25976            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
25977            Err(DetachPolicyError::from_response(response))
25978        }
25979    }
25980
25981    /// <p>Removes the specified policy from the specified certificate.</p> <p> <b>Note:</b> This API is deprecated. Please use <a>DetachPolicy</a> instead.</p>
25982    #[allow(unused_mut)]
25983    async fn detach_principal_policy(
25984        &self,
25985        input: DetachPrincipalPolicyRequest,
25986    ) -> Result<(), RusotoError<DetachPrincipalPolicyError>> {
25987        let request_uri = format!(
25988            "/principal-policies/{policy_name}",
25989            policy_name = input.policy_name
25990        );
25991
25992        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
25993        request.set_content_type("application/x-amz-json-1.1".to_owned());
25994
25995        request.set_endpoint_prefix("iot".to_string());
25996
25997        request.add_header("x-amzn-iot-principal", &input.principal.to_string());
25998
25999        let mut response = self
26000            .client
26001            .sign_and_dispatch(request)
26002            .await
26003            .map_err(RusotoError::from)?;
26004        if response.status.is_success() {
26005            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26006            let result = ::std::mem::drop(response);
26007
26008            Ok(result)
26009        } else {
26010            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26011            Err(DetachPrincipalPolicyError::from_response(response))
26012        }
26013    }
26014
26015    /// <p>Disassociates a Device Defender security profile from a thing group or from this account.</p>
26016    #[allow(unused_mut)]
26017    async fn detach_security_profile(
26018        &self,
26019        input: DetachSecurityProfileRequest,
26020    ) -> Result<DetachSecurityProfileResponse, RusotoError<DetachSecurityProfileError>> {
26021        let request_uri = format!(
26022            "/security-profiles/{security_profile_name}/targets",
26023            security_profile_name = input.security_profile_name
26024        );
26025
26026        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
26027        request.set_content_type("application/x-amz-json-1.1".to_owned());
26028
26029        request.set_endpoint_prefix("iot".to_string());
26030
26031        let mut params = Params::new();
26032        params.put(
26033            "securityProfileTargetArn",
26034            &input.security_profile_target_arn,
26035        );
26036        request.set_params(params);
26037
26038        let mut response = self
26039            .client
26040            .sign_and_dispatch(request)
26041            .await
26042            .map_err(RusotoError::from)?;
26043        if response.status.is_success() {
26044            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26045            let result = proto::json::ResponsePayload::new(&response)
26046                .deserialize::<DetachSecurityProfileResponse, _>()?;
26047
26048            Ok(result)
26049        } else {
26050            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26051            Err(DetachSecurityProfileError::from_response(response))
26052        }
26053    }
26054
26055    /// <p><p>Detaches the specified principal from the specified thing. A principal can be X.509 certificates, IAM users, groups, and roles, Amazon Cognito identities or federated identities.</p> <note> <p>This call is asynchronous. It might take several seconds for the detachment to propagate.</p> </note></p>
26056    #[allow(unused_mut)]
26057    async fn detach_thing_principal(
26058        &self,
26059        input: DetachThingPrincipalRequest,
26060    ) -> Result<DetachThingPrincipalResponse, RusotoError<DetachThingPrincipalError>> {
26061        let request_uri = format!(
26062            "/things/{thing_name}/principals",
26063            thing_name = input.thing_name
26064        );
26065
26066        let mut request = SignedRequest::new("DELETE", "execute-api", &self.region, &request_uri);
26067        request.set_content_type("application/x-amz-json-1.1".to_owned());
26068
26069        request.set_endpoint_prefix("iot".to_string());
26070
26071        request.add_header("x-amzn-principal", &input.principal.to_string());
26072
26073        let mut response = self
26074            .client
26075            .sign_and_dispatch(request)
26076            .await
26077            .map_err(RusotoError::from)?;
26078        if response.status.is_success() {
26079            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26080            let result = proto::json::ResponsePayload::new(&response)
26081                .deserialize::<DetachThingPrincipalResponse, _>()?;
26082
26083            Ok(result)
26084        } else {
26085            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26086            Err(DetachThingPrincipalError::from_response(response))
26087        }
26088    }
26089
26090    /// <p>Disables the rule.</p>
26091    #[allow(unused_mut)]
26092    async fn disable_topic_rule(
26093        &self,
26094        input: DisableTopicRuleRequest,
26095    ) -> Result<(), RusotoError<DisableTopicRuleError>> {
26096        let request_uri = format!("/rules/{rule_name}/disable", rule_name = input.rule_name);
26097
26098        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
26099        request.set_content_type("application/x-amz-json-1.1".to_owned());
26100
26101        request.set_endpoint_prefix("iot".to_string());
26102
26103        let mut response = self
26104            .client
26105            .sign_and_dispatch(request)
26106            .await
26107            .map_err(RusotoError::from)?;
26108        if response.status.is_success() {
26109            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26110            let result = ::std::mem::drop(response);
26111
26112            Ok(result)
26113        } else {
26114            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26115            Err(DisableTopicRuleError::from_response(response))
26116        }
26117    }
26118
26119    /// <p>Enables the rule.</p>
26120    #[allow(unused_mut)]
26121    async fn enable_topic_rule(
26122        &self,
26123        input: EnableTopicRuleRequest,
26124    ) -> Result<(), RusotoError<EnableTopicRuleError>> {
26125        let request_uri = format!("/rules/{rule_name}/enable", rule_name = input.rule_name);
26126
26127        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
26128        request.set_content_type("application/x-amz-json-1.1".to_owned());
26129
26130        request.set_endpoint_prefix("iot".to_string());
26131
26132        let mut response = self
26133            .client
26134            .sign_and_dispatch(request)
26135            .await
26136            .map_err(RusotoError::from)?;
26137        if response.status.is_success() {
26138            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26139            let result = ::std::mem::drop(response);
26140
26141            Ok(result)
26142        } else {
26143            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26144            Err(EnableTopicRuleError::from_response(response))
26145        }
26146    }
26147
26148    /// <p>Returns the approximate count of unique values that match the query.</p>
26149    #[allow(unused_mut)]
26150    async fn get_cardinality(
26151        &self,
26152        input: GetCardinalityRequest,
26153    ) -> Result<GetCardinalityResponse, RusotoError<GetCardinalityError>> {
26154        let request_uri = "/indices/cardinality";
26155
26156        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
26157        request.set_content_type("application/x-amz-json-1.1".to_owned());
26158
26159        request.set_endpoint_prefix("iot".to_string());
26160        let encoded = Some(serde_json::to_vec(&input).unwrap());
26161        request.set_payload(encoded);
26162
26163        let mut response = self
26164            .client
26165            .sign_and_dispatch(request)
26166            .await
26167            .map_err(RusotoError::from)?;
26168        if response.status.is_success() {
26169            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26170            let result = proto::json::ResponsePayload::new(&response)
26171                .deserialize::<GetCardinalityResponse, _>()?;
26172
26173            Ok(result)
26174        } else {
26175            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26176            Err(GetCardinalityError::from_response(response))
26177        }
26178    }
26179
26180    /// <p>Gets a list of the policies that have an effect on the authorization behavior of the specified device when it connects to the AWS IoT device gateway.</p>
26181    #[allow(unused_mut)]
26182    async fn get_effective_policies(
26183        &self,
26184        input: GetEffectivePoliciesRequest,
26185    ) -> Result<GetEffectivePoliciesResponse, RusotoError<GetEffectivePoliciesError>> {
26186        let request_uri = "/effective-policies";
26187
26188        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
26189        request.set_content_type("application/x-amz-json-1.1".to_owned());
26190
26191        request.set_endpoint_prefix("iot".to_string());
26192        let encoded = Some(serde_json::to_vec(&input).unwrap());
26193        request.set_payload(encoded);
26194
26195        let mut params = Params::new();
26196        if let Some(ref x) = input.thing_name {
26197            params.put("thingName", x);
26198        }
26199        request.set_params(params);
26200
26201        let mut response = self
26202            .client
26203            .sign_and_dispatch(request)
26204            .await
26205            .map_err(RusotoError::from)?;
26206        if response.status.is_success() {
26207            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26208            let result = proto::json::ResponsePayload::new(&response)
26209                .deserialize::<GetEffectivePoliciesResponse, _>()?;
26210
26211            Ok(result)
26212        } else {
26213            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26214            Err(GetEffectivePoliciesError::from_response(response))
26215        }
26216    }
26217
26218    /// <p>Gets the indexing configuration.</p>
26219    #[allow(unused_mut)]
26220    async fn get_indexing_configuration(
26221        &self,
26222    ) -> Result<GetIndexingConfigurationResponse, RusotoError<GetIndexingConfigurationError>> {
26223        let request_uri = "/indexing/config";
26224
26225        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
26226        request.set_content_type("application/x-amz-json-1.1".to_owned());
26227
26228        request.set_endpoint_prefix("iot".to_string());
26229
26230        let mut response = self
26231            .client
26232            .sign_and_dispatch(request)
26233            .await
26234            .map_err(RusotoError::from)?;
26235        if response.status.is_success() {
26236            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26237            let result = proto::json::ResponsePayload::new(&response)
26238                .deserialize::<GetIndexingConfigurationResponse, _>()?;
26239
26240            Ok(result)
26241        } else {
26242            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26243            Err(GetIndexingConfigurationError::from_response(response))
26244        }
26245    }
26246
26247    /// <p>Gets a job document.</p>
26248    #[allow(unused_mut)]
26249    async fn get_job_document(
26250        &self,
26251        input: GetJobDocumentRequest,
26252    ) -> Result<GetJobDocumentResponse, RusotoError<GetJobDocumentError>> {
26253        let request_uri = format!("/jobs/{job_id}/job-document", job_id = input.job_id);
26254
26255        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
26256        request.set_content_type("application/x-amz-json-1.1".to_owned());
26257
26258        request.set_endpoint_prefix("iot".to_string());
26259
26260        let mut response = self
26261            .client
26262            .sign_and_dispatch(request)
26263            .await
26264            .map_err(RusotoError::from)?;
26265        if response.status.is_success() {
26266            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26267            let result = proto::json::ResponsePayload::new(&response)
26268                .deserialize::<GetJobDocumentResponse, _>()?;
26269
26270            Ok(result)
26271        } else {
26272            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26273            Err(GetJobDocumentError::from_response(response))
26274        }
26275    }
26276
26277    /// <p>Gets the logging options.</p> <p>NOTE: use of this command is not recommended. Use <code>GetV2LoggingOptions</code> instead.</p>
26278    #[allow(unused_mut)]
26279    async fn get_logging_options(
26280        &self,
26281    ) -> Result<GetLoggingOptionsResponse, RusotoError<GetLoggingOptionsError>> {
26282        let request_uri = "/loggingOptions";
26283
26284        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
26285        request.set_content_type("application/x-amz-json-1.1".to_owned());
26286
26287        request.set_endpoint_prefix("iot".to_string());
26288
26289        let mut response = self
26290            .client
26291            .sign_and_dispatch(request)
26292            .await
26293            .map_err(RusotoError::from)?;
26294        if response.status.is_success() {
26295            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26296            let result = proto::json::ResponsePayload::new(&response)
26297                .deserialize::<GetLoggingOptionsResponse, _>()?;
26298
26299            Ok(result)
26300        } else {
26301            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26302            Err(GetLoggingOptionsError::from_response(response))
26303        }
26304    }
26305
26306    /// <p>Gets an OTA update.</p>
26307    #[allow(unused_mut)]
26308    async fn get_ota_update(
26309        &self,
26310        input: GetOTAUpdateRequest,
26311    ) -> Result<GetOTAUpdateResponse, RusotoError<GetOTAUpdateError>> {
26312        let request_uri = format!(
26313            "/otaUpdates/{ota_update_id}",
26314            ota_update_id = input.ota_update_id
26315        );
26316
26317        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
26318        request.set_content_type("application/x-amz-json-1.1".to_owned());
26319
26320        request.set_endpoint_prefix("iot".to_string());
26321
26322        let mut response = self
26323            .client
26324            .sign_and_dispatch(request)
26325            .await
26326            .map_err(RusotoError::from)?;
26327        if response.status.is_success() {
26328            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26329            let result = proto::json::ResponsePayload::new(&response)
26330                .deserialize::<GetOTAUpdateResponse, _>()?;
26331
26332            Ok(result)
26333        } else {
26334            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26335            Err(GetOTAUpdateError::from_response(response))
26336        }
26337    }
26338
26339    /// <p>Groups the aggregated values that match the query into percentile groupings. The default percentile groupings are: 1,5,25,50,75,95,99, although you can specify your own when you call <code>GetPercentiles</code>. This function returns a value for each percentile group specified (or the default percentile groupings). The percentile group "1" contains the aggregated field value that occurs in approximately one percent of the values that match the query. The percentile group "5" contains the aggregated field value that occurs in approximately five percent of the values that match the query, and so on. The result is an approximation, the more values that match the query, the more accurate the percentile values.</p>
26340    #[allow(unused_mut)]
26341    async fn get_percentiles(
26342        &self,
26343        input: GetPercentilesRequest,
26344    ) -> Result<GetPercentilesResponse, RusotoError<GetPercentilesError>> {
26345        let request_uri = "/indices/percentiles";
26346
26347        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
26348        request.set_content_type("application/x-amz-json-1.1".to_owned());
26349
26350        request.set_endpoint_prefix("iot".to_string());
26351        let encoded = Some(serde_json::to_vec(&input).unwrap());
26352        request.set_payload(encoded);
26353
26354        let mut response = self
26355            .client
26356            .sign_and_dispatch(request)
26357            .await
26358            .map_err(RusotoError::from)?;
26359        if response.status.is_success() {
26360            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26361            let result = proto::json::ResponsePayload::new(&response)
26362                .deserialize::<GetPercentilesResponse, _>()?;
26363
26364            Ok(result)
26365        } else {
26366            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26367            Err(GetPercentilesError::from_response(response))
26368        }
26369    }
26370
26371    /// <p>Gets information about the specified policy with the policy document of the default version.</p>
26372    #[allow(unused_mut)]
26373    async fn get_policy(
26374        &self,
26375        input: GetPolicyRequest,
26376    ) -> Result<GetPolicyResponse, RusotoError<GetPolicyError>> {
26377        let request_uri = format!("/policies/{policy_name}", policy_name = input.policy_name);
26378
26379        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
26380        request.set_content_type("application/x-amz-json-1.1".to_owned());
26381
26382        request.set_endpoint_prefix("iot".to_string());
26383
26384        let mut response = self
26385            .client
26386            .sign_and_dispatch(request)
26387            .await
26388            .map_err(RusotoError::from)?;
26389        if response.status.is_success() {
26390            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26391            let result = proto::json::ResponsePayload::new(&response)
26392                .deserialize::<GetPolicyResponse, _>()?;
26393
26394            Ok(result)
26395        } else {
26396            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26397            Err(GetPolicyError::from_response(response))
26398        }
26399    }
26400
26401    /// <p>Gets information about the specified policy version.</p>
26402    #[allow(unused_mut)]
26403    async fn get_policy_version(
26404        &self,
26405        input: GetPolicyVersionRequest,
26406    ) -> Result<GetPolicyVersionResponse, RusotoError<GetPolicyVersionError>> {
26407        let request_uri = format!(
26408            "/policies/{policy_name}/version/{policy_version_id}",
26409            policy_name = input.policy_name,
26410            policy_version_id = input.policy_version_id
26411        );
26412
26413        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
26414        request.set_content_type("application/x-amz-json-1.1".to_owned());
26415
26416        request.set_endpoint_prefix("iot".to_string());
26417
26418        let mut response = self
26419            .client
26420            .sign_and_dispatch(request)
26421            .await
26422            .map_err(RusotoError::from)?;
26423        if response.status.is_success() {
26424            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26425            let result = proto::json::ResponsePayload::new(&response)
26426                .deserialize::<GetPolicyVersionResponse, _>()?;
26427
26428            Ok(result)
26429        } else {
26430            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26431            Err(GetPolicyVersionError::from_response(response))
26432        }
26433    }
26434
26435    /// <p>Gets a registration code used to register a CA certificate with AWS IoT.</p>
26436    #[allow(unused_mut)]
26437    async fn get_registration_code(
26438        &self,
26439    ) -> Result<GetRegistrationCodeResponse, RusotoError<GetRegistrationCodeError>> {
26440        let request_uri = "/registrationcode";
26441
26442        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
26443        request.set_content_type("application/x-amz-json-1.1".to_owned());
26444
26445        request.set_endpoint_prefix("iot".to_string());
26446
26447        let mut response = self
26448            .client
26449            .sign_and_dispatch(request)
26450            .await
26451            .map_err(RusotoError::from)?;
26452        if response.status.is_success() {
26453            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26454            let result = proto::json::ResponsePayload::new(&response)
26455                .deserialize::<GetRegistrationCodeResponse, _>()?;
26456
26457            Ok(result)
26458        } else {
26459            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26460            Err(GetRegistrationCodeError::from_response(response))
26461        }
26462    }
26463
26464    /// <p>Returns the count, average, sum, minimum, maximum, sum of squares, variance, and standard deviation for the specified aggregated field. If the aggregation field is of type <code>String</code>, only the count statistic is returned.</p>
26465    #[allow(unused_mut)]
26466    async fn get_statistics(
26467        &self,
26468        input: GetStatisticsRequest,
26469    ) -> Result<GetStatisticsResponse, RusotoError<GetStatisticsError>> {
26470        let request_uri = "/indices/statistics";
26471
26472        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
26473        request.set_content_type("application/x-amz-json-1.1".to_owned());
26474
26475        request.set_endpoint_prefix("iot".to_string());
26476        let encoded = Some(serde_json::to_vec(&input).unwrap());
26477        request.set_payload(encoded);
26478
26479        let mut response = self
26480            .client
26481            .sign_and_dispatch(request)
26482            .await
26483            .map_err(RusotoError::from)?;
26484        if response.status.is_success() {
26485            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26486            let result = proto::json::ResponsePayload::new(&response)
26487                .deserialize::<GetStatisticsResponse, _>()?;
26488
26489            Ok(result)
26490        } else {
26491            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26492            Err(GetStatisticsError::from_response(response))
26493        }
26494    }
26495
26496    /// <p>Gets information about the rule.</p>
26497    #[allow(unused_mut)]
26498    async fn get_topic_rule(
26499        &self,
26500        input: GetTopicRuleRequest,
26501    ) -> Result<GetTopicRuleResponse, RusotoError<GetTopicRuleError>> {
26502        let request_uri = format!("/rules/{rule_name}", rule_name = input.rule_name);
26503
26504        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
26505        request.set_content_type("application/x-amz-json-1.1".to_owned());
26506
26507        request.set_endpoint_prefix("iot".to_string());
26508
26509        let mut response = self
26510            .client
26511            .sign_and_dispatch(request)
26512            .await
26513            .map_err(RusotoError::from)?;
26514        if response.status.is_success() {
26515            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26516            let result = proto::json::ResponsePayload::new(&response)
26517                .deserialize::<GetTopicRuleResponse, _>()?;
26518
26519            Ok(result)
26520        } else {
26521            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26522            Err(GetTopicRuleError::from_response(response))
26523        }
26524    }
26525
26526    /// <p>Gets information about a topic rule destination.</p>
26527    #[allow(unused_mut)]
26528    async fn get_topic_rule_destination(
26529        &self,
26530        input: GetTopicRuleDestinationRequest,
26531    ) -> Result<GetTopicRuleDestinationResponse, RusotoError<GetTopicRuleDestinationError>> {
26532        let request_uri = format!("/destinations/{arn}", arn = input.arn);
26533
26534        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
26535        request.set_content_type("application/x-amz-json-1.1".to_owned());
26536
26537        request.set_endpoint_prefix("iot".to_string());
26538
26539        let mut response = self
26540            .client
26541            .sign_and_dispatch(request)
26542            .await
26543            .map_err(RusotoError::from)?;
26544        if response.status.is_success() {
26545            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26546            let result = proto::json::ResponsePayload::new(&response)
26547                .deserialize::<GetTopicRuleDestinationResponse, _>()?;
26548
26549            Ok(result)
26550        } else {
26551            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26552            Err(GetTopicRuleDestinationError::from_response(response))
26553        }
26554    }
26555
26556    /// <p>Gets the fine grained logging options.</p>
26557    #[allow(unused_mut)]
26558    async fn get_v2_logging_options(
26559        &self,
26560    ) -> Result<GetV2LoggingOptionsResponse, RusotoError<GetV2LoggingOptionsError>> {
26561        let request_uri = "/v2LoggingOptions";
26562
26563        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
26564        request.set_content_type("application/x-amz-json-1.1".to_owned());
26565
26566        request.set_endpoint_prefix("iot".to_string());
26567
26568        let mut response = self
26569            .client
26570            .sign_and_dispatch(request)
26571            .await
26572            .map_err(RusotoError::from)?;
26573        if response.status.is_success() {
26574            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26575            let result = proto::json::ResponsePayload::new(&response)
26576                .deserialize::<GetV2LoggingOptionsResponse, _>()?;
26577
26578            Ok(result)
26579        } else {
26580            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26581            Err(GetV2LoggingOptionsError::from_response(response))
26582        }
26583    }
26584
26585    /// <p>Lists the active violations for a given Device Defender security profile.</p>
26586    #[allow(unused_mut)]
26587    async fn list_active_violations(
26588        &self,
26589        input: ListActiveViolationsRequest,
26590    ) -> Result<ListActiveViolationsResponse, RusotoError<ListActiveViolationsError>> {
26591        let request_uri = "/active-violations";
26592
26593        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
26594        request.set_content_type("application/x-amz-json-1.1".to_owned());
26595
26596        request.set_endpoint_prefix("iot".to_string());
26597
26598        let mut params = Params::new();
26599        if let Some(ref x) = input.max_results {
26600            params.put("maxResults", x);
26601        }
26602        if let Some(ref x) = input.next_token {
26603            params.put("nextToken", x);
26604        }
26605        if let Some(ref x) = input.security_profile_name {
26606            params.put("securityProfileName", x);
26607        }
26608        if let Some(ref x) = input.thing_name {
26609            params.put("thingName", x);
26610        }
26611        request.set_params(params);
26612
26613        let mut response = self
26614            .client
26615            .sign_and_dispatch(request)
26616            .await
26617            .map_err(RusotoError::from)?;
26618        if response.status.is_success() {
26619            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26620            let result = proto::json::ResponsePayload::new(&response)
26621                .deserialize::<ListActiveViolationsResponse, _>()?;
26622
26623            Ok(result)
26624        } else {
26625            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26626            Err(ListActiveViolationsError::from_response(response))
26627        }
26628    }
26629
26630    /// <p>Lists the policies attached to the specified thing group.</p>
26631    #[allow(unused_mut)]
26632    async fn list_attached_policies(
26633        &self,
26634        input: ListAttachedPoliciesRequest,
26635    ) -> Result<ListAttachedPoliciesResponse, RusotoError<ListAttachedPoliciesError>> {
26636        let request_uri = format!("/attached-policies/{target}", target = input.target);
26637
26638        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
26639        request.set_content_type("application/x-amz-json-1.1".to_owned());
26640
26641        request.set_endpoint_prefix("iot".to_string());
26642
26643        let mut params = Params::new();
26644        if let Some(ref x) = input.marker {
26645            params.put("marker", x);
26646        }
26647        if let Some(ref x) = input.page_size {
26648            params.put("pageSize", x);
26649        }
26650        if let Some(ref x) = input.recursive {
26651            params.put("recursive", x);
26652        }
26653        request.set_params(params);
26654
26655        let mut response = self
26656            .client
26657            .sign_and_dispatch(request)
26658            .await
26659            .map_err(RusotoError::from)?;
26660        if response.status.is_success() {
26661            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26662            let result = proto::json::ResponsePayload::new(&response)
26663                .deserialize::<ListAttachedPoliciesResponse, _>()?;
26664
26665            Ok(result)
26666        } else {
26667            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26668            Err(ListAttachedPoliciesError::from_response(response))
26669        }
26670    }
26671
26672    /// <p>Lists the findings (results) of a Device Defender audit or of the audits performed during a specified time period. (Findings are retained for 180 days.)</p>
26673    #[allow(unused_mut)]
26674    async fn list_audit_findings(
26675        &self,
26676        input: ListAuditFindingsRequest,
26677    ) -> Result<ListAuditFindingsResponse, RusotoError<ListAuditFindingsError>> {
26678        let request_uri = "/audit/findings";
26679
26680        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
26681        request.set_content_type("application/x-amz-json-1.1".to_owned());
26682
26683        request.set_endpoint_prefix("iot".to_string());
26684        let encoded = Some(serde_json::to_vec(&input).unwrap());
26685        request.set_payload(encoded);
26686
26687        let mut response = self
26688            .client
26689            .sign_and_dispatch(request)
26690            .await
26691            .map_err(RusotoError::from)?;
26692        if response.status.is_success() {
26693            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26694            let result = proto::json::ResponsePayload::new(&response)
26695                .deserialize::<ListAuditFindingsResponse, _>()?;
26696
26697            Ok(result)
26698        } else {
26699            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26700            Err(ListAuditFindingsError::from_response(response))
26701        }
26702    }
26703
26704    /// <p>Gets the status of audit mitigation action tasks that were executed.</p>
26705    #[allow(unused_mut)]
26706    async fn list_audit_mitigation_actions_executions(
26707        &self,
26708        input: ListAuditMitigationActionsExecutionsRequest,
26709    ) -> Result<
26710        ListAuditMitigationActionsExecutionsResponse,
26711        RusotoError<ListAuditMitigationActionsExecutionsError>,
26712    > {
26713        let request_uri = "/audit/mitigationactions/executions";
26714
26715        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
26716        request.set_content_type("application/x-amz-json-1.1".to_owned());
26717
26718        request.set_endpoint_prefix("iot".to_string());
26719
26720        let mut params = Params::new();
26721        if let Some(ref x) = input.action_status {
26722            params.put("actionStatus", x);
26723        }
26724        params.put("findingId", &input.finding_id);
26725        if let Some(ref x) = input.max_results {
26726            params.put("maxResults", x);
26727        }
26728        if let Some(ref x) = input.next_token {
26729            params.put("nextToken", x);
26730        }
26731        params.put("taskId", &input.task_id);
26732        request.set_params(params);
26733
26734        let mut response = self
26735            .client
26736            .sign_and_dispatch(request)
26737            .await
26738            .map_err(RusotoError::from)?;
26739        if response.status.is_success() {
26740            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26741            let result = proto::json::ResponsePayload::new(&response)
26742                .deserialize::<ListAuditMitigationActionsExecutionsResponse, _>()?;
26743
26744            Ok(result)
26745        } else {
26746            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26747            Err(ListAuditMitigationActionsExecutionsError::from_response(
26748                response,
26749            ))
26750        }
26751    }
26752
26753    /// <p>Gets a list of audit mitigation action tasks that match the specified filters.</p>
26754    #[allow(unused_mut)]
26755    async fn list_audit_mitigation_actions_tasks(
26756        &self,
26757        input: ListAuditMitigationActionsTasksRequest,
26758    ) -> Result<
26759        ListAuditMitigationActionsTasksResponse,
26760        RusotoError<ListAuditMitigationActionsTasksError>,
26761    > {
26762        let request_uri = "/audit/mitigationactions/tasks";
26763
26764        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
26765        request.set_content_type("application/x-amz-json-1.1".to_owned());
26766
26767        request.set_endpoint_prefix("iot".to_string());
26768
26769        let mut params = Params::new();
26770        if let Some(ref x) = input.audit_task_id {
26771            params.put("auditTaskId", x);
26772        }
26773        params.put("endTime", &input.end_time);
26774        if let Some(ref x) = input.finding_id {
26775            params.put("findingId", x);
26776        }
26777        if let Some(ref x) = input.max_results {
26778            params.put("maxResults", x);
26779        }
26780        if let Some(ref x) = input.next_token {
26781            params.put("nextToken", x);
26782        }
26783        params.put("startTime", &input.start_time);
26784        if let Some(ref x) = input.task_status {
26785            params.put("taskStatus", x);
26786        }
26787        request.set_params(params);
26788
26789        let mut response = self
26790            .client
26791            .sign_and_dispatch(request)
26792            .await
26793            .map_err(RusotoError::from)?;
26794        if response.status.is_success() {
26795            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26796            let result = proto::json::ResponsePayload::new(&response)
26797                .deserialize::<ListAuditMitigationActionsTasksResponse, _>()?;
26798
26799            Ok(result)
26800        } else {
26801            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26802            Err(ListAuditMitigationActionsTasksError::from_response(
26803                response,
26804            ))
26805        }
26806    }
26807
26808    /// <p>Lists the Device Defender audits that have been performed during a given time period.</p>
26809    #[allow(unused_mut)]
26810    async fn list_audit_tasks(
26811        &self,
26812        input: ListAuditTasksRequest,
26813    ) -> Result<ListAuditTasksResponse, RusotoError<ListAuditTasksError>> {
26814        let request_uri = "/audit/tasks";
26815
26816        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
26817        request.set_content_type("application/x-amz-json-1.1".to_owned());
26818
26819        request.set_endpoint_prefix("iot".to_string());
26820
26821        let mut params = Params::new();
26822        params.put("endTime", &input.end_time);
26823        if let Some(ref x) = input.max_results {
26824            params.put("maxResults", x);
26825        }
26826        if let Some(ref x) = input.next_token {
26827            params.put("nextToken", x);
26828        }
26829        params.put("startTime", &input.start_time);
26830        if let Some(ref x) = input.task_status {
26831            params.put("taskStatus", x);
26832        }
26833        if let Some(ref x) = input.task_type {
26834            params.put("taskType", x);
26835        }
26836        request.set_params(params);
26837
26838        let mut response = self
26839            .client
26840            .sign_and_dispatch(request)
26841            .await
26842            .map_err(RusotoError::from)?;
26843        if response.status.is_success() {
26844            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26845            let result = proto::json::ResponsePayload::new(&response)
26846                .deserialize::<ListAuditTasksResponse, _>()?;
26847
26848            Ok(result)
26849        } else {
26850            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26851            Err(ListAuditTasksError::from_response(response))
26852        }
26853    }
26854
26855    /// <p>Lists the authorizers registered in your account.</p>
26856    #[allow(unused_mut)]
26857    async fn list_authorizers(
26858        &self,
26859        input: ListAuthorizersRequest,
26860    ) -> Result<ListAuthorizersResponse, RusotoError<ListAuthorizersError>> {
26861        let request_uri = "/authorizers/";
26862
26863        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
26864        request.set_content_type("application/x-amz-json-1.1".to_owned());
26865
26866        request.set_endpoint_prefix("iot".to_string());
26867
26868        let mut params = Params::new();
26869        if let Some(ref x) = input.ascending_order {
26870            params.put("isAscendingOrder", x);
26871        }
26872        if let Some(ref x) = input.marker {
26873            params.put("marker", x);
26874        }
26875        if let Some(ref x) = input.page_size {
26876            params.put("pageSize", x);
26877        }
26878        if let Some(ref x) = input.status {
26879            params.put("status", x);
26880        }
26881        request.set_params(params);
26882
26883        let mut response = self
26884            .client
26885            .sign_and_dispatch(request)
26886            .await
26887            .map_err(RusotoError::from)?;
26888        if response.status.is_success() {
26889            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26890            let result = proto::json::ResponsePayload::new(&response)
26891                .deserialize::<ListAuthorizersResponse, _>()?;
26892
26893            Ok(result)
26894        } else {
26895            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26896            Err(ListAuthorizersError::from_response(response))
26897        }
26898    }
26899
26900    /// <p>Lists the billing groups you have created.</p>
26901    #[allow(unused_mut)]
26902    async fn list_billing_groups(
26903        &self,
26904        input: ListBillingGroupsRequest,
26905    ) -> Result<ListBillingGroupsResponse, RusotoError<ListBillingGroupsError>> {
26906        let request_uri = "/billing-groups";
26907
26908        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
26909        request.set_content_type("application/x-amz-json-1.1".to_owned());
26910
26911        request.set_endpoint_prefix("iot".to_string());
26912
26913        let mut params = Params::new();
26914        if let Some(ref x) = input.max_results {
26915            params.put("maxResults", x);
26916        }
26917        if let Some(ref x) = input.name_prefix_filter {
26918            params.put("namePrefixFilter", x);
26919        }
26920        if let Some(ref x) = input.next_token {
26921            params.put("nextToken", x);
26922        }
26923        request.set_params(params);
26924
26925        let mut response = self
26926            .client
26927            .sign_and_dispatch(request)
26928            .await
26929            .map_err(RusotoError::from)?;
26930        if response.status.is_success() {
26931            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26932            let result = proto::json::ResponsePayload::new(&response)
26933                .deserialize::<ListBillingGroupsResponse, _>()?;
26934
26935            Ok(result)
26936        } else {
26937            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26938            Err(ListBillingGroupsError::from_response(response))
26939        }
26940    }
26941
26942    /// <p>Lists the CA certificates registered for your AWS account.</p> <p>The results are paginated with a default page size of 25. You can use the returned marker to retrieve additional results.</p>
26943    #[allow(unused_mut)]
26944    async fn list_ca_certificates(
26945        &self,
26946        input: ListCACertificatesRequest,
26947    ) -> Result<ListCACertificatesResponse, RusotoError<ListCACertificatesError>> {
26948        let request_uri = "/cacertificates";
26949
26950        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
26951        request.set_content_type("application/x-amz-json-1.1".to_owned());
26952
26953        request.set_endpoint_prefix("iot".to_string());
26954
26955        let mut params = Params::new();
26956        if let Some(ref x) = input.ascending_order {
26957            params.put("isAscendingOrder", x);
26958        }
26959        if let Some(ref x) = input.marker {
26960            params.put("marker", x);
26961        }
26962        if let Some(ref x) = input.page_size {
26963            params.put("pageSize", x);
26964        }
26965        request.set_params(params);
26966
26967        let mut response = self
26968            .client
26969            .sign_and_dispatch(request)
26970            .await
26971            .map_err(RusotoError::from)?;
26972        if response.status.is_success() {
26973            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26974            let result = proto::json::ResponsePayload::new(&response)
26975                .deserialize::<ListCACertificatesResponse, _>()?;
26976
26977            Ok(result)
26978        } else {
26979            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
26980            Err(ListCACertificatesError::from_response(response))
26981        }
26982    }
26983
26984    /// <p>Lists the certificates registered in your AWS account.</p> <p>The results are paginated with a default page size of 25. You can use the returned marker to retrieve additional results.</p>
26985    #[allow(unused_mut)]
26986    async fn list_certificates(
26987        &self,
26988        input: ListCertificatesRequest,
26989    ) -> Result<ListCertificatesResponse, RusotoError<ListCertificatesError>> {
26990        let request_uri = "/certificates";
26991
26992        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
26993        request.set_content_type("application/x-amz-json-1.1".to_owned());
26994
26995        request.set_endpoint_prefix("iot".to_string());
26996
26997        let mut params = Params::new();
26998        if let Some(ref x) = input.ascending_order {
26999            params.put("isAscendingOrder", x);
27000        }
27001        if let Some(ref x) = input.marker {
27002            params.put("marker", x);
27003        }
27004        if let Some(ref x) = input.page_size {
27005            params.put("pageSize", x);
27006        }
27007        request.set_params(params);
27008
27009        let mut response = self
27010            .client
27011            .sign_and_dispatch(request)
27012            .await
27013            .map_err(RusotoError::from)?;
27014        if response.status.is_success() {
27015            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27016            let result = proto::json::ResponsePayload::new(&response)
27017                .deserialize::<ListCertificatesResponse, _>()?;
27018
27019            Ok(result)
27020        } else {
27021            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27022            Err(ListCertificatesError::from_response(response))
27023        }
27024    }
27025
27026    /// <p>List the device certificates signed by the specified CA certificate.</p>
27027    #[allow(unused_mut)]
27028    async fn list_certificates_by_ca(
27029        &self,
27030        input: ListCertificatesByCARequest,
27031    ) -> Result<ListCertificatesByCAResponse, RusotoError<ListCertificatesByCAError>> {
27032        let request_uri = format!(
27033            "/certificates-by-ca/{ca_certificate_id}",
27034            ca_certificate_id = input.ca_certificate_id
27035        );
27036
27037        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
27038        request.set_content_type("application/x-amz-json-1.1".to_owned());
27039
27040        request.set_endpoint_prefix("iot".to_string());
27041
27042        let mut params = Params::new();
27043        if let Some(ref x) = input.ascending_order {
27044            params.put("isAscendingOrder", x);
27045        }
27046        if let Some(ref x) = input.marker {
27047            params.put("marker", x);
27048        }
27049        if let Some(ref x) = input.page_size {
27050            params.put("pageSize", x);
27051        }
27052        request.set_params(params);
27053
27054        let mut response = self
27055            .client
27056            .sign_and_dispatch(request)
27057            .await
27058            .map_err(RusotoError::from)?;
27059        if response.status.is_success() {
27060            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27061            let result = proto::json::ResponsePayload::new(&response)
27062                .deserialize::<ListCertificatesByCAResponse, _>()?;
27063
27064            Ok(result)
27065        } else {
27066            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27067            Err(ListCertificatesByCAError::from_response(response))
27068        }
27069    }
27070
27071    /// <p>List the set of dimensions that are defined for your AWS account.</p>
27072    #[allow(unused_mut)]
27073    async fn list_dimensions(
27074        &self,
27075        input: ListDimensionsRequest,
27076    ) -> Result<ListDimensionsResponse, RusotoError<ListDimensionsError>> {
27077        let request_uri = "/dimensions";
27078
27079        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
27080        request.set_content_type("application/x-amz-json-1.1".to_owned());
27081
27082        request.set_endpoint_prefix("iot".to_string());
27083
27084        let mut params = Params::new();
27085        if let Some(ref x) = input.max_results {
27086            params.put("maxResults", x);
27087        }
27088        if let Some(ref x) = input.next_token {
27089            params.put("nextToken", x);
27090        }
27091        request.set_params(params);
27092
27093        let mut response = self
27094            .client
27095            .sign_and_dispatch(request)
27096            .await
27097            .map_err(RusotoError::from)?;
27098        if response.status.is_success() {
27099            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27100            let result = proto::json::ResponsePayload::new(&response)
27101                .deserialize::<ListDimensionsResponse, _>()?;
27102
27103            Ok(result)
27104        } else {
27105            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27106            Err(ListDimensionsError::from_response(response))
27107        }
27108    }
27109
27110    /// <p><p>Gets a list of domain configurations for the user. This list is sorted alphabetically by domain configuration name.</p> <note> <p>The domain configuration feature is in public preview and is subject to change.</p> </note></p>
27111    #[allow(unused_mut)]
27112    async fn list_domain_configurations(
27113        &self,
27114        input: ListDomainConfigurationsRequest,
27115    ) -> Result<ListDomainConfigurationsResponse, RusotoError<ListDomainConfigurationsError>> {
27116        let request_uri = "/domainConfigurations";
27117
27118        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
27119        request.set_content_type("application/x-amz-json-1.1".to_owned());
27120
27121        request.set_endpoint_prefix("iot".to_string());
27122
27123        let mut params = Params::new();
27124        if let Some(ref x) = input.marker {
27125            params.put("marker", x);
27126        }
27127        if let Some(ref x) = input.page_size {
27128            params.put("pageSize", x);
27129        }
27130        if let Some(ref x) = input.service_type {
27131            params.put("serviceType", x);
27132        }
27133        request.set_params(params);
27134
27135        let mut response = self
27136            .client
27137            .sign_and_dispatch(request)
27138            .await
27139            .map_err(RusotoError::from)?;
27140        if response.status.is_success() {
27141            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27142            let result = proto::json::ResponsePayload::new(&response)
27143                .deserialize::<ListDomainConfigurationsResponse, _>()?;
27144
27145            Ok(result)
27146        } else {
27147            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27148            Err(ListDomainConfigurationsError::from_response(response))
27149        }
27150    }
27151
27152    /// <p>Lists the search indices.</p>
27153    #[allow(unused_mut)]
27154    async fn list_indices(
27155        &self,
27156        input: ListIndicesRequest,
27157    ) -> Result<ListIndicesResponse, RusotoError<ListIndicesError>> {
27158        let request_uri = "/indices";
27159
27160        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
27161        request.set_content_type("application/x-amz-json-1.1".to_owned());
27162
27163        request.set_endpoint_prefix("iot".to_string());
27164
27165        let mut params = Params::new();
27166        if let Some(ref x) = input.max_results {
27167            params.put("maxResults", x);
27168        }
27169        if let Some(ref x) = input.next_token {
27170            params.put("nextToken", x);
27171        }
27172        request.set_params(params);
27173
27174        let mut response = self
27175            .client
27176            .sign_and_dispatch(request)
27177            .await
27178            .map_err(RusotoError::from)?;
27179        if response.status.is_success() {
27180            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27181            let result = proto::json::ResponsePayload::new(&response)
27182                .deserialize::<ListIndicesResponse, _>()?;
27183
27184            Ok(result)
27185        } else {
27186            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27187            Err(ListIndicesError::from_response(response))
27188        }
27189    }
27190
27191    /// <p>Lists the job executions for a job.</p>
27192    #[allow(unused_mut)]
27193    async fn list_job_executions_for_job(
27194        &self,
27195        input: ListJobExecutionsForJobRequest,
27196    ) -> Result<ListJobExecutionsForJobResponse, RusotoError<ListJobExecutionsForJobError>> {
27197        let request_uri = format!("/jobs/{job_id}/things", job_id = input.job_id);
27198
27199        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
27200        request.set_content_type("application/x-amz-json-1.1".to_owned());
27201
27202        request.set_endpoint_prefix("iot".to_string());
27203
27204        let mut params = Params::new();
27205        if let Some(ref x) = input.max_results {
27206            params.put("maxResults", x);
27207        }
27208        if let Some(ref x) = input.next_token {
27209            params.put("nextToken", x);
27210        }
27211        if let Some(ref x) = input.status {
27212            params.put("status", x);
27213        }
27214        request.set_params(params);
27215
27216        let mut response = self
27217            .client
27218            .sign_and_dispatch(request)
27219            .await
27220            .map_err(RusotoError::from)?;
27221        if response.status.is_success() {
27222            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27223            let result = proto::json::ResponsePayload::new(&response)
27224                .deserialize::<ListJobExecutionsForJobResponse, _>()?;
27225
27226            Ok(result)
27227        } else {
27228            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27229            Err(ListJobExecutionsForJobError::from_response(response))
27230        }
27231    }
27232
27233    /// <p>Lists the job executions for the specified thing.</p>
27234    #[allow(unused_mut)]
27235    async fn list_job_executions_for_thing(
27236        &self,
27237        input: ListJobExecutionsForThingRequest,
27238    ) -> Result<ListJobExecutionsForThingResponse, RusotoError<ListJobExecutionsForThingError>>
27239    {
27240        let request_uri = format!("/things/{thing_name}/jobs", thing_name = input.thing_name);
27241
27242        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
27243        request.set_content_type("application/x-amz-json-1.1".to_owned());
27244
27245        request.set_endpoint_prefix("iot".to_string());
27246
27247        let mut params = Params::new();
27248        if let Some(ref x) = input.max_results {
27249            params.put("maxResults", x);
27250        }
27251        if let Some(ref x) = input.next_token {
27252            params.put("nextToken", x);
27253        }
27254        if let Some(ref x) = input.status {
27255            params.put("status", x);
27256        }
27257        request.set_params(params);
27258
27259        let mut response = self
27260            .client
27261            .sign_and_dispatch(request)
27262            .await
27263            .map_err(RusotoError::from)?;
27264        if response.status.is_success() {
27265            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27266            let result = proto::json::ResponsePayload::new(&response)
27267                .deserialize::<ListJobExecutionsForThingResponse, _>()?;
27268
27269            Ok(result)
27270        } else {
27271            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27272            Err(ListJobExecutionsForThingError::from_response(response))
27273        }
27274    }
27275
27276    /// <p>Lists jobs.</p>
27277    #[allow(unused_mut)]
27278    async fn list_jobs(
27279        &self,
27280        input: ListJobsRequest,
27281    ) -> Result<ListJobsResponse, RusotoError<ListJobsError>> {
27282        let request_uri = "/jobs";
27283
27284        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
27285        request.set_content_type("application/x-amz-json-1.1".to_owned());
27286
27287        request.set_endpoint_prefix("iot".to_string());
27288
27289        let mut params = Params::new();
27290        if let Some(ref x) = input.max_results {
27291            params.put("maxResults", x);
27292        }
27293        if let Some(ref x) = input.next_token {
27294            params.put("nextToken", x);
27295        }
27296        if let Some(ref x) = input.status {
27297            params.put("status", x);
27298        }
27299        if let Some(ref x) = input.target_selection {
27300            params.put("targetSelection", x);
27301        }
27302        if let Some(ref x) = input.thing_group_id {
27303            params.put("thingGroupId", x);
27304        }
27305        if let Some(ref x) = input.thing_group_name {
27306            params.put("thingGroupName", x);
27307        }
27308        request.set_params(params);
27309
27310        let mut response = self
27311            .client
27312            .sign_and_dispatch(request)
27313            .await
27314            .map_err(RusotoError::from)?;
27315        if response.status.is_success() {
27316            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27317            let result = proto::json::ResponsePayload::new(&response)
27318                .deserialize::<ListJobsResponse, _>()?;
27319
27320            Ok(result)
27321        } else {
27322            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27323            Err(ListJobsError::from_response(response))
27324        }
27325    }
27326
27327    /// <p>Gets a list of all mitigation actions that match the specified filter criteria.</p>
27328    #[allow(unused_mut)]
27329    async fn list_mitigation_actions(
27330        &self,
27331        input: ListMitigationActionsRequest,
27332    ) -> Result<ListMitigationActionsResponse, RusotoError<ListMitigationActionsError>> {
27333        let request_uri = "/mitigationactions/actions";
27334
27335        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
27336        request.set_content_type("application/x-amz-json-1.1".to_owned());
27337
27338        request.set_endpoint_prefix("iot".to_string());
27339
27340        let mut params = Params::new();
27341        if let Some(ref x) = input.action_type {
27342            params.put("actionType", x);
27343        }
27344        if let Some(ref x) = input.max_results {
27345            params.put("maxResults", x);
27346        }
27347        if let Some(ref x) = input.next_token {
27348            params.put("nextToken", x);
27349        }
27350        request.set_params(params);
27351
27352        let mut response = self
27353            .client
27354            .sign_and_dispatch(request)
27355            .await
27356            .map_err(RusotoError::from)?;
27357        if response.status.is_success() {
27358            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27359            let result = proto::json::ResponsePayload::new(&response)
27360                .deserialize::<ListMitigationActionsResponse, _>()?;
27361
27362            Ok(result)
27363        } else {
27364            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27365            Err(ListMitigationActionsError::from_response(response))
27366        }
27367    }
27368
27369    /// <p>Lists OTA updates.</p>
27370    #[allow(unused_mut)]
27371    async fn list_ota_updates(
27372        &self,
27373        input: ListOTAUpdatesRequest,
27374    ) -> Result<ListOTAUpdatesResponse, RusotoError<ListOTAUpdatesError>> {
27375        let request_uri = "/otaUpdates";
27376
27377        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
27378        request.set_content_type("application/x-amz-json-1.1".to_owned());
27379
27380        request.set_endpoint_prefix("iot".to_string());
27381
27382        let mut params = Params::new();
27383        if let Some(ref x) = input.max_results {
27384            params.put("maxResults", x);
27385        }
27386        if let Some(ref x) = input.next_token {
27387            params.put("nextToken", x);
27388        }
27389        if let Some(ref x) = input.ota_update_status {
27390            params.put("otaUpdateStatus", x);
27391        }
27392        request.set_params(params);
27393
27394        let mut response = self
27395            .client
27396            .sign_and_dispatch(request)
27397            .await
27398            .map_err(RusotoError::from)?;
27399        if response.status.is_success() {
27400            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27401            let result = proto::json::ResponsePayload::new(&response)
27402                .deserialize::<ListOTAUpdatesResponse, _>()?;
27403
27404            Ok(result)
27405        } else {
27406            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27407            Err(ListOTAUpdatesError::from_response(response))
27408        }
27409    }
27410
27411    /// <p>Lists certificates that are being transferred but not yet accepted.</p>
27412    #[allow(unused_mut)]
27413    async fn list_outgoing_certificates(
27414        &self,
27415        input: ListOutgoingCertificatesRequest,
27416    ) -> Result<ListOutgoingCertificatesResponse, RusotoError<ListOutgoingCertificatesError>> {
27417        let request_uri = "/certificates-out-going";
27418
27419        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
27420        request.set_content_type("application/x-amz-json-1.1".to_owned());
27421
27422        request.set_endpoint_prefix("iot".to_string());
27423
27424        let mut params = Params::new();
27425        if let Some(ref x) = input.ascending_order {
27426            params.put("isAscendingOrder", x);
27427        }
27428        if let Some(ref x) = input.marker {
27429            params.put("marker", x);
27430        }
27431        if let Some(ref x) = input.page_size {
27432            params.put("pageSize", x);
27433        }
27434        request.set_params(params);
27435
27436        let mut response = self
27437            .client
27438            .sign_and_dispatch(request)
27439            .await
27440            .map_err(RusotoError::from)?;
27441        if response.status.is_success() {
27442            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27443            let result = proto::json::ResponsePayload::new(&response)
27444                .deserialize::<ListOutgoingCertificatesResponse, _>()?;
27445
27446            Ok(result)
27447        } else {
27448            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27449            Err(ListOutgoingCertificatesError::from_response(response))
27450        }
27451    }
27452
27453    /// <p>Lists your policies.</p>
27454    #[allow(unused_mut)]
27455    async fn list_policies(
27456        &self,
27457        input: ListPoliciesRequest,
27458    ) -> Result<ListPoliciesResponse, RusotoError<ListPoliciesError>> {
27459        let request_uri = "/policies";
27460
27461        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
27462        request.set_content_type("application/x-amz-json-1.1".to_owned());
27463
27464        request.set_endpoint_prefix("iot".to_string());
27465
27466        let mut params = Params::new();
27467        if let Some(ref x) = input.ascending_order {
27468            params.put("isAscendingOrder", x);
27469        }
27470        if let Some(ref x) = input.marker {
27471            params.put("marker", x);
27472        }
27473        if let Some(ref x) = input.page_size {
27474            params.put("pageSize", x);
27475        }
27476        request.set_params(params);
27477
27478        let mut response = self
27479            .client
27480            .sign_and_dispatch(request)
27481            .await
27482            .map_err(RusotoError::from)?;
27483        if response.status.is_success() {
27484            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27485            let result = proto::json::ResponsePayload::new(&response)
27486                .deserialize::<ListPoliciesResponse, _>()?;
27487
27488            Ok(result)
27489        } else {
27490            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27491            Err(ListPoliciesError::from_response(response))
27492        }
27493    }
27494
27495    /// <p>Lists the principals associated with the specified policy.</p> <p> <b>Note:</b> This API is deprecated. Please use <a>ListTargetsForPolicy</a> instead.</p>
27496    #[allow(unused_mut)]
27497    async fn list_policy_principals(
27498        &self,
27499        input: ListPolicyPrincipalsRequest,
27500    ) -> Result<ListPolicyPrincipalsResponse, RusotoError<ListPolicyPrincipalsError>> {
27501        let request_uri = "/policy-principals";
27502
27503        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
27504        request.set_content_type("application/x-amz-json-1.1".to_owned());
27505
27506        request.set_endpoint_prefix("iot".to_string());
27507
27508        request.add_header("x-amzn-iot-policy", &input.policy_name.to_string());
27509        let mut params = Params::new();
27510        if let Some(ref x) = input.ascending_order {
27511            params.put("isAscendingOrder", x);
27512        }
27513        if let Some(ref x) = input.marker {
27514            params.put("marker", x);
27515        }
27516        if let Some(ref x) = input.page_size {
27517            params.put("pageSize", x);
27518        }
27519        request.set_params(params);
27520
27521        let mut response = self
27522            .client
27523            .sign_and_dispatch(request)
27524            .await
27525            .map_err(RusotoError::from)?;
27526        if response.status.is_success() {
27527            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27528            let result = proto::json::ResponsePayload::new(&response)
27529                .deserialize::<ListPolicyPrincipalsResponse, _>()?;
27530
27531            Ok(result)
27532        } else {
27533            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27534            Err(ListPolicyPrincipalsError::from_response(response))
27535        }
27536    }
27537
27538    /// <p>Lists the versions of the specified policy and identifies the default version.</p>
27539    #[allow(unused_mut)]
27540    async fn list_policy_versions(
27541        &self,
27542        input: ListPolicyVersionsRequest,
27543    ) -> Result<ListPolicyVersionsResponse, RusotoError<ListPolicyVersionsError>> {
27544        let request_uri = format!(
27545            "/policies/{policy_name}/version",
27546            policy_name = input.policy_name
27547        );
27548
27549        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
27550        request.set_content_type("application/x-amz-json-1.1".to_owned());
27551
27552        request.set_endpoint_prefix("iot".to_string());
27553
27554        let mut response = self
27555            .client
27556            .sign_and_dispatch(request)
27557            .await
27558            .map_err(RusotoError::from)?;
27559        if response.status.is_success() {
27560            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27561            let result = proto::json::ResponsePayload::new(&response)
27562                .deserialize::<ListPolicyVersionsResponse, _>()?;
27563
27564            Ok(result)
27565        } else {
27566            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27567            Err(ListPolicyVersionsError::from_response(response))
27568        }
27569    }
27570
27571    /// <p>Lists the policies attached to the specified principal. If you use an Cognito identity, the ID must be in <a href="https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetCredentialsForIdentity.html#API_GetCredentialsForIdentity_RequestSyntax">AmazonCognito Identity format</a>.</p> <p> <b>Note:</b> This API is deprecated. Please use <a>ListAttachedPolicies</a> instead.</p>
27572    #[allow(unused_mut)]
27573    async fn list_principal_policies(
27574        &self,
27575        input: ListPrincipalPoliciesRequest,
27576    ) -> Result<ListPrincipalPoliciesResponse, RusotoError<ListPrincipalPoliciesError>> {
27577        let request_uri = "/principal-policies";
27578
27579        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
27580        request.set_content_type("application/x-amz-json-1.1".to_owned());
27581
27582        request.set_endpoint_prefix("iot".to_string());
27583
27584        request.add_header("x-amzn-iot-principal", &input.principal.to_string());
27585        let mut params = Params::new();
27586        if let Some(ref x) = input.ascending_order {
27587            params.put("isAscendingOrder", x);
27588        }
27589        if let Some(ref x) = input.marker {
27590            params.put("marker", x);
27591        }
27592        if let Some(ref x) = input.page_size {
27593            params.put("pageSize", x);
27594        }
27595        request.set_params(params);
27596
27597        let mut response = self
27598            .client
27599            .sign_and_dispatch(request)
27600            .await
27601            .map_err(RusotoError::from)?;
27602        if response.status.is_success() {
27603            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27604            let result = proto::json::ResponsePayload::new(&response)
27605                .deserialize::<ListPrincipalPoliciesResponse, _>()?;
27606
27607            Ok(result)
27608        } else {
27609            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27610            Err(ListPrincipalPoliciesError::from_response(response))
27611        }
27612    }
27613
27614    /// <p>Lists the things associated with the specified principal. A principal can be X.509 certificates, IAM users, groups, and roles, Amazon Cognito identities or federated identities. </p>
27615    #[allow(unused_mut)]
27616    async fn list_principal_things(
27617        &self,
27618        input: ListPrincipalThingsRequest,
27619    ) -> Result<ListPrincipalThingsResponse, RusotoError<ListPrincipalThingsError>> {
27620        let request_uri = "/principals/things";
27621
27622        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
27623        request.set_content_type("application/x-amz-json-1.1".to_owned());
27624
27625        request.set_endpoint_prefix("iot".to_string());
27626
27627        request.add_header("x-amzn-principal", &input.principal.to_string());
27628        let mut params = Params::new();
27629        if let Some(ref x) = input.max_results {
27630            params.put("maxResults", x);
27631        }
27632        if let Some(ref x) = input.next_token {
27633            params.put("nextToken", x);
27634        }
27635        request.set_params(params);
27636
27637        let mut response = self
27638            .client
27639            .sign_and_dispatch(request)
27640            .await
27641            .map_err(RusotoError::from)?;
27642        if response.status.is_success() {
27643            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27644            let result = proto::json::ResponsePayload::new(&response)
27645                .deserialize::<ListPrincipalThingsResponse, _>()?;
27646
27647            Ok(result)
27648        } else {
27649            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27650            Err(ListPrincipalThingsError::from_response(response))
27651        }
27652    }
27653
27654    /// <p>A list of fleet provisioning template versions.</p>
27655    #[allow(unused_mut)]
27656    async fn list_provisioning_template_versions(
27657        &self,
27658        input: ListProvisioningTemplateVersionsRequest,
27659    ) -> Result<
27660        ListProvisioningTemplateVersionsResponse,
27661        RusotoError<ListProvisioningTemplateVersionsError>,
27662    > {
27663        let request_uri = format!(
27664            "/provisioning-templates/{template_name}/versions",
27665            template_name = input.template_name
27666        );
27667
27668        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
27669        request.set_content_type("application/x-amz-json-1.1".to_owned());
27670
27671        request.set_endpoint_prefix("iot".to_string());
27672
27673        let mut params = Params::new();
27674        if let Some(ref x) = input.max_results {
27675            params.put("maxResults", x);
27676        }
27677        if let Some(ref x) = input.next_token {
27678            params.put("nextToken", x);
27679        }
27680        request.set_params(params);
27681
27682        let mut response = self
27683            .client
27684            .sign_and_dispatch(request)
27685            .await
27686            .map_err(RusotoError::from)?;
27687        if response.status.is_success() {
27688            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27689            let result = proto::json::ResponsePayload::new(&response)
27690                .deserialize::<ListProvisioningTemplateVersionsResponse, _>()?;
27691
27692            Ok(result)
27693        } else {
27694            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27695            Err(ListProvisioningTemplateVersionsError::from_response(
27696                response,
27697            ))
27698        }
27699    }
27700
27701    /// <p>Lists the fleet provisioning templates in your AWS account.</p>
27702    #[allow(unused_mut)]
27703    async fn list_provisioning_templates(
27704        &self,
27705        input: ListProvisioningTemplatesRequest,
27706    ) -> Result<ListProvisioningTemplatesResponse, RusotoError<ListProvisioningTemplatesError>>
27707    {
27708        let request_uri = "/provisioning-templates";
27709
27710        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
27711        request.set_content_type("application/x-amz-json-1.1".to_owned());
27712
27713        request.set_endpoint_prefix("iot".to_string());
27714
27715        let mut params = Params::new();
27716        if let Some(ref x) = input.max_results {
27717            params.put("maxResults", x);
27718        }
27719        if let Some(ref x) = input.next_token {
27720            params.put("nextToken", x);
27721        }
27722        request.set_params(params);
27723
27724        let mut response = self
27725            .client
27726            .sign_and_dispatch(request)
27727            .await
27728            .map_err(RusotoError::from)?;
27729        if response.status.is_success() {
27730            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27731            let result = proto::json::ResponsePayload::new(&response)
27732                .deserialize::<ListProvisioningTemplatesResponse, _>()?;
27733
27734            Ok(result)
27735        } else {
27736            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27737            Err(ListProvisioningTemplatesError::from_response(response))
27738        }
27739    }
27740
27741    /// <p>Lists the role aliases registered in your account.</p>
27742    #[allow(unused_mut)]
27743    async fn list_role_aliases(
27744        &self,
27745        input: ListRoleAliasesRequest,
27746    ) -> Result<ListRoleAliasesResponse, RusotoError<ListRoleAliasesError>> {
27747        let request_uri = "/role-aliases";
27748
27749        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
27750        request.set_content_type("application/x-amz-json-1.1".to_owned());
27751
27752        request.set_endpoint_prefix("iot".to_string());
27753
27754        let mut params = Params::new();
27755        if let Some(ref x) = input.ascending_order {
27756            params.put("isAscendingOrder", x);
27757        }
27758        if let Some(ref x) = input.marker {
27759            params.put("marker", x);
27760        }
27761        if let Some(ref x) = input.page_size {
27762            params.put("pageSize", x);
27763        }
27764        request.set_params(params);
27765
27766        let mut response = self
27767            .client
27768            .sign_and_dispatch(request)
27769            .await
27770            .map_err(RusotoError::from)?;
27771        if response.status.is_success() {
27772            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27773            let result = proto::json::ResponsePayload::new(&response)
27774                .deserialize::<ListRoleAliasesResponse, _>()?;
27775
27776            Ok(result)
27777        } else {
27778            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27779            Err(ListRoleAliasesError::from_response(response))
27780        }
27781    }
27782
27783    /// <p>Lists all of your scheduled audits.</p>
27784    #[allow(unused_mut)]
27785    async fn list_scheduled_audits(
27786        &self,
27787        input: ListScheduledAuditsRequest,
27788    ) -> Result<ListScheduledAuditsResponse, RusotoError<ListScheduledAuditsError>> {
27789        let request_uri = "/audit/scheduledaudits";
27790
27791        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
27792        request.set_content_type("application/x-amz-json-1.1".to_owned());
27793
27794        request.set_endpoint_prefix("iot".to_string());
27795
27796        let mut params = Params::new();
27797        if let Some(ref x) = input.max_results {
27798            params.put("maxResults", x);
27799        }
27800        if let Some(ref x) = input.next_token {
27801            params.put("nextToken", x);
27802        }
27803        request.set_params(params);
27804
27805        let mut response = self
27806            .client
27807            .sign_and_dispatch(request)
27808            .await
27809            .map_err(RusotoError::from)?;
27810        if response.status.is_success() {
27811            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27812            let result = proto::json::ResponsePayload::new(&response)
27813                .deserialize::<ListScheduledAuditsResponse, _>()?;
27814
27815            Ok(result)
27816        } else {
27817            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27818            Err(ListScheduledAuditsError::from_response(response))
27819        }
27820    }
27821
27822    /// <p>Lists the Device Defender security profiles you have created. You can use filters to list only those security profiles associated with a thing group or only those associated with your account.</p>
27823    #[allow(unused_mut)]
27824    async fn list_security_profiles(
27825        &self,
27826        input: ListSecurityProfilesRequest,
27827    ) -> Result<ListSecurityProfilesResponse, RusotoError<ListSecurityProfilesError>> {
27828        let request_uri = "/security-profiles";
27829
27830        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
27831        request.set_content_type("application/x-amz-json-1.1".to_owned());
27832
27833        request.set_endpoint_prefix("iot".to_string());
27834
27835        let mut params = Params::new();
27836        if let Some(ref x) = input.dimension_name {
27837            params.put("dimensionName", x);
27838        }
27839        if let Some(ref x) = input.max_results {
27840            params.put("maxResults", x);
27841        }
27842        if let Some(ref x) = input.next_token {
27843            params.put("nextToken", x);
27844        }
27845        request.set_params(params);
27846
27847        let mut response = self
27848            .client
27849            .sign_and_dispatch(request)
27850            .await
27851            .map_err(RusotoError::from)?;
27852        if response.status.is_success() {
27853            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27854            let result = proto::json::ResponsePayload::new(&response)
27855                .deserialize::<ListSecurityProfilesResponse, _>()?;
27856
27857            Ok(result)
27858        } else {
27859            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27860            Err(ListSecurityProfilesError::from_response(response))
27861        }
27862    }
27863
27864    /// <p>Lists the Device Defender security profiles attached to a target (thing group).</p>
27865    #[allow(unused_mut)]
27866    async fn list_security_profiles_for_target(
27867        &self,
27868        input: ListSecurityProfilesForTargetRequest,
27869    ) -> Result<
27870        ListSecurityProfilesForTargetResponse,
27871        RusotoError<ListSecurityProfilesForTargetError>,
27872    > {
27873        let request_uri = "/security-profiles-for-target";
27874
27875        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
27876        request.set_content_type("application/x-amz-json-1.1".to_owned());
27877
27878        request.set_endpoint_prefix("iot".to_string());
27879
27880        let mut params = Params::new();
27881        if let Some(ref x) = input.max_results {
27882            params.put("maxResults", x);
27883        }
27884        if let Some(ref x) = input.next_token {
27885            params.put("nextToken", x);
27886        }
27887        if let Some(ref x) = input.recursive {
27888            params.put("recursive", x);
27889        }
27890        params.put(
27891            "securityProfileTargetArn",
27892            &input.security_profile_target_arn,
27893        );
27894        request.set_params(params);
27895
27896        let mut response = self
27897            .client
27898            .sign_and_dispatch(request)
27899            .await
27900            .map_err(RusotoError::from)?;
27901        if response.status.is_success() {
27902            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27903            let result = proto::json::ResponsePayload::new(&response)
27904                .deserialize::<ListSecurityProfilesForTargetResponse, _>()?;
27905
27906            Ok(result)
27907        } else {
27908            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27909            Err(ListSecurityProfilesForTargetError::from_response(response))
27910        }
27911    }
27912
27913    /// <p>Lists all of the streams in your AWS account.</p>
27914    #[allow(unused_mut)]
27915    async fn list_streams(
27916        &self,
27917        input: ListStreamsRequest,
27918    ) -> Result<ListStreamsResponse, RusotoError<ListStreamsError>> {
27919        let request_uri = "/streams";
27920
27921        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
27922        request.set_content_type("application/x-amz-json-1.1".to_owned());
27923
27924        request.set_endpoint_prefix("iot".to_string());
27925
27926        let mut params = Params::new();
27927        if let Some(ref x) = input.ascending_order {
27928            params.put("isAscendingOrder", x);
27929        }
27930        if let Some(ref x) = input.max_results {
27931            params.put("maxResults", x);
27932        }
27933        if let Some(ref x) = input.next_token {
27934            params.put("nextToken", x);
27935        }
27936        request.set_params(params);
27937
27938        let mut response = self
27939            .client
27940            .sign_and_dispatch(request)
27941            .await
27942            .map_err(RusotoError::from)?;
27943        if response.status.is_success() {
27944            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27945            let result = proto::json::ResponsePayload::new(&response)
27946                .deserialize::<ListStreamsResponse, _>()?;
27947
27948            Ok(result)
27949        } else {
27950            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27951            Err(ListStreamsError::from_response(response))
27952        }
27953    }
27954
27955    /// <p>Lists the tags (metadata) you have assigned to the resource.</p>
27956    #[allow(unused_mut)]
27957    async fn list_tags_for_resource(
27958        &self,
27959        input: ListTagsForResourceRequest,
27960    ) -> Result<ListTagsForResourceResponse, RusotoError<ListTagsForResourceError>> {
27961        let request_uri = "/tags";
27962
27963        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
27964        request.set_content_type("application/x-amz-json-1.1".to_owned());
27965
27966        request.set_endpoint_prefix("iot".to_string());
27967
27968        let mut params = Params::new();
27969        if let Some(ref x) = input.next_token {
27970            params.put("nextToken", x);
27971        }
27972        params.put("resourceArn", &input.resource_arn);
27973        request.set_params(params);
27974
27975        let mut response = self
27976            .client
27977            .sign_and_dispatch(request)
27978            .await
27979            .map_err(RusotoError::from)?;
27980        if response.status.is_success() {
27981            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27982            let result = proto::json::ResponsePayload::new(&response)
27983                .deserialize::<ListTagsForResourceResponse, _>()?;
27984
27985            Ok(result)
27986        } else {
27987            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
27988            Err(ListTagsForResourceError::from_response(response))
27989        }
27990    }
27991
27992    /// <p>List targets for the specified policy.</p>
27993    #[allow(unused_mut)]
27994    async fn list_targets_for_policy(
27995        &self,
27996        input: ListTargetsForPolicyRequest,
27997    ) -> Result<ListTargetsForPolicyResponse, RusotoError<ListTargetsForPolicyError>> {
27998        let request_uri = format!(
27999            "/policy-targets/{policy_name}",
28000            policy_name = input.policy_name
28001        );
28002
28003        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
28004        request.set_content_type("application/x-amz-json-1.1".to_owned());
28005
28006        request.set_endpoint_prefix("iot".to_string());
28007
28008        let mut params = Params::new();
28009        if let Some(ref x) = input.marker {
28010            params.put("marker", x);
28011        }
28012        if let Some(ref x) = input.page_size {
28013            params.put("pageSize", x);
28014        }
28015        request.set_params(params);
28016
28017        let mut response = self
28018            .client
28019            .sign_and_dispatch(request)
28020            .await
28021            .map_err(RusotoError::from)?;
28022        if response.status.is_success() {
28023            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28024            let result = proto::json::ResponsePayload::new(&response)
28025                .deserialize::<ListTargetsForPolicyResponse, _>()?;
28026
28027            Ok(result)
28028        } else {
28029            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28030            Err(ListTargetsForPolicyError::from_response(response))
28031        }
28032    }
28033
28034    /// <p>Lists the targets (thing groups) associated with a given Device Defender security profile.</p>
28035    #[allow(unused_mut)]
28036    async fn list_targets_for_security_profile(
28037        &self,
28038        input: ListTargetsForSecurityProfileRequest,
28039    ) -> Result<
28040        ListTargetsForSecurityProfileResponse,
28041        RusotoError<ListTargetsForSecurityProfileError>,
28042    > {
28043        let request_uri = format!(
28044            "/security-profiles/{security_profile_name}/targets",
28045            security_profile_name = input.security_profile_name
28046        );
28047
28048        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
28049        request.set_content_type("application/x-amz-json-1.1".to_owned());
28050
28051        request.set_endpoint_prefix("iot".to_string());
28052
28053        let mut params = Params::new();
28054        if let Some(ref x) = input.max_results {
28055            params.put("maxResults", x);
28056        }
28057        if let Some(ref x) = input.next_token {
28058            params.put("nextToken", x);
28059        }
28060        request.set_params(params);
28061
28062        let mut response = self
28063            .client
28064            .sign_and_dispatch(request)
28065            .await
28066            .map_err(RusotoError::from)?;
28067        if response.status.is_success() {
28068            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28069            let result = proto::json::ResponsePayload::new(&response)
28070                .deserialize::<ListTargetsForSecurityProfileResponse, _>()?;
28071
28072            Ok(result)
28073        } else {
28074            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28075            Err(ListTargetsForSecurityProfileError::from_response(response))
28076        }
28077    }
28078
28079    /// <p>List the thing groups in your account.</p>
28080    #[allow(unused_mut)]
28081    async fn list_thing_groups(
28082        &self,
28083        input: ListThingGroupsRequest,
28084    ) -> Result<ListThingGroupsResponse, RusotoError<ListThingGroupsError>> {
28085        let request_uri = "/thing-groups";
28086
28087        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
28088        request.set_content_type("application/x-amz-json-1.1".to_owned());
28089
28090        request.set_endpoint_prefix("iot".to_string());
28091
28092        let mut params = Params::new();
28093        if let Some(ref x) = input.max_results {
28094            params.put("maxResults", x);
28095        }
28096        if let Some(ref x) = input.name_prefix_filter {
28097            params.put("namePrefixFilter", x);
28098        }
28099        if let Some(ref x) = input.next_token {
28100            params.put("nextToken", x);
28101        }
28102        if let Some(ref x) = input.parent_group {
28103            params.put("parentGroup", x);
28104        }
28105        if let Some(ref x) = input.recursive {
28106            params.put("recursive", x);
28107        }
28108        request.set_params(params);
28109
28110        let mut response = self
28111            .client
28112            .sign_and_dispatch(request)
28113            .await
28114            .map_err(RusotoError::from)?;
28115        if response.status.is_success() {
28116            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28117            let result = proto::json::ResponsePayload::new(&response)
28118                .deserialize::<ListThingGroupsResponse, _>()?;
28119
28120            Ok(result)
28121        } else {
28122            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28123            Err(ListThingGroupsError::from_response(response))
28124        }
28125    }
28126
28127    /// <p>List the thing groups to which the specified thing belongs.</p>
28128    #[allow(unused_mut)]
28129    async fn list_thing_groups_for_thing(
28130        &self,
28131        input: ListThingGroupsForThingRequest,
28132    ) -> Result<ListThingGroupsForThingResponse, RusotoError<ListThingGroupsForThingError>> {
28133        let request_uri = format!(
28134            "/things/{thing_name}/thing-groups",
28135            thing_name = input.thing_name
28136        );
28137
28138        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
28139        request.set_content_type("application/x-amz-json-1.1".to_owned());
28140
28141        request.set_endpoint_prefix("iot".to_string());
28142
28143        let mut params = Params::new();
28144        if let Some(ref x) = input.max_results {
28145            params.put("maxResults", x);
28146        }
28147        if let Some(ref x) = input.next_token {
28148            params.put("nextToken", x);
28149        }
28150        request.set_params(params);
28151
28152        let mut response = self
28153            .client
28154            .sign_and_dispatch(request)
28155            .await
28156            .map_err(RusotoError::from)?;
28157        if response.status.is_success() {
28158            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28159            let result = proto::json::ResponsePayload::new(&response)
28160                .deserialize::<ListThingGroupsForThingResponse, _>()?;
28161
28162            Ok(result)
28163        } else {
28164            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28165            Err(ListThingGroupsForThingError::from_response(response))
28166        }
28167    }
28168
28169    /// <p>Lists the principals associated with the specified thing. A principal can be X.509 certificates, IAM users, groups, and roles, Amazon Cognito identities or federated identities.</p>
28170    #[allow(unused_mut)]
28171    async fn list_thing_principals(
28172        &self,
28173        input: ListThingPrincipalsRequest,
28174    ) -> Result<ListThingPrincipalsResponse, RusotoError<ListThingPrincipalsError>> {
28175        let request_uri = format!(
28176            "/things/{thing_name}/principals",
28177            thing_name = input.thing_name
28178        );
28179
28180        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
28181        request.set_content_type("application/x-amz-json-1.1".to_owned());
28182
28183        request.set_endpoint_prefix("iot".to_string());
28184
28185        let mut response = self
28186            .client
28187            .sign_and_dispatch(request)
28188            .await
28189            .map_err(RusotoError::from)?;
28190        if response.status.is_success() {
28191            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28192            let result = proto::json::ResponsePayload::new(&response)
28193                .deserialize::<ListThingPrincipalsResponse, _>()?;
28194
28195            Ok(result)
28196        } else {
28197            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28198            Err(ListThingPrincipalsError::from_response(response))
28199        }
28200    }
28201
28202    /// <p>Information about the thing registration tasks.</p>
28203    #[allow(unused_mut)]
28204    async fn list_thing_registration_task_reports(
28205        &self,
28206        input: ListThingRegistrationTaskReportsRequest,
28207    ) -> Result<
28208        ListThingRegistrationTaskReportsResponse,
28209        RusotoError<ListThingRegistrationTaskReportsError>,
28210    > {
28211        let request_uri = format!(
28212            "/thing-registration-tasks/{task_id}/reports",
28213            task_id = input.task_id
28214        );
28215
28216        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
28217        request.set_content_type("application/x-amz-json-1.1".to_owned());
28218
28219        request.set_endpoint_prefix("iot".to_string());
28220
28221        let mut params = Params::new();
28222        if let Some(ref x) = input.max_results {
28223            params.put("maxResults", x);
28224        }
28225        if let Some(ref x) = input.next_token {
28226            params.put("nextToken", x);
28227        }
28228        params.put("reportType", &input.report_type);
28229        request.set_params(params);
28230
28231        let mut response = self
28232            .client
28233            .sign_and_dispatch(request)
28234            .await
28235            .map_err(RusotoError::from)?;
28236        if response.status.is_success() {
28237            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28238            let result = proto::json::ResponsePayload::new(&response)
28239                .deserialize::<ListThingRegistrationTaskReportsResponse, _>()?;
28240
28241            Ok(result)
28242        } else {
28243            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28244            Err(ListThingRegistrationTaskReportsError::from_response(
28245                response,
28246            ))
28247        }
28248    }
28249
28250    /// <p>List bulk thing provisioning tasks.</p>
28251    #[allow(unused_mut)]
28252    async fn list_thing_registration_tasks(
28253        &self,
28254        input: ListThingRegistrationTasksRequest,
28255    ) -> Result<ListThingRegistrationTasksResponse, RusotoError<ListThingRegistrationTasksError>>
28256    {
28257        let request_uri = "/thing-registration-tasks";
28258
28259        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
28260        request.set_content_type("application/x-amz-json-1.1".to_owned());
28261
28262        request.set_endpoint_prefix("iot".to_string());
28263
28264        let mut params = Params::new();
28265        if let Some(ref x) = input.max_results {
28266            params.put("maxResults", x);
28267        }
28268        if let Some(ref x) = input.next_token {
28269            params.put("nextToken", x);
28270        }
28271        if let Some(ref x) = input.status {
28272            params.put("status", x);
28273        }
28274        request.set_params(params);
28275
28276        let mut response = self
28277            .client
28278            .sign_and_dispatch(request)
28279            .await
28280            .map_err(RusotoError::from)?;
28281        if response.status.is_success() {
28282            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28283            let result = proto::json::ResponsePayload::new(&response)
28284                .deserialize::<ListThingRegistrationTasksResponse, _>()?;
28285
28286            Ok(result)
28287        } else {
28288            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28289            Err(ListThingRegistrationTasksError::from_response(response))
28290        }
28291    }
28292
28293    /// <p>Lists the existing thing types.</p>
28294    #[allow(unused_mut)]
28295    async fn list_thing_types(
28296        &self,
28297        input: ListThingTypesRequest,
28298    ) -> Result<ListThingTypesResponse, RusotoError<ListThingTypesError>> {
28299        let request_uri = "/thing-types";
28300
28301        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
28302        request.set_content_type("application/x-amz-json-1.1".to_owned());
28303
28304        request.set_endpoint_prefix("iot".to_string());
28305
28306        let mut params = Params::new();
28307        if let Some(ref x) = input.max_results {
28308            params.put("maxResults", x);
28309        }
28310        if let Some(ref x) = input.next_token {
28311            params.put("nextToken", x);
28312        }
28313        if let Some(ref x) = input.thing_type_name {
28314            params.put("thingTypeName", x);
28315        }
28316        request.set_params(params);
28317
28318        let mut response = self
28319            .client
28320            .sign_and_dispatch(request)
28321            .await
28322            .map_err(RusotoError::from)?;
28323        if response.status.is_success() {
28324            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28325            let result = proto::json::ResponsePayload::new(&response)
28326                .deserialize::<ListThingTypesResponse, _>()?;
28327
28328            Ok(result)
28329        } else {
28330            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28331            Err(ListThingTypesError::from_response(response))
28332        }
28333    }
28334
28335    /// <p>Lists your things. Use the <b>attributeName</b> and <b>attributeValue</b> parameters to filter your things. For example, calling <code>ListThings</code> with attributeName=Color and attributeValue=Red retrieves all things in the registry that contain an attribute <b>Color</b> with the value <b>Red</b>. </p>
28336    #[allow(unused_mut)]
28337    async fn list_things(
28338        &self,
28339        input: ListThingsRequest,
28340    ) -> Result<ListThingsResponse, RusotoError<ListThingsError>> {
28341        let request_uri = "/things";
28342
28343        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
28344        request.set_content_type("application/x-amz-json-1.1".to_owned());
28345
28346        request.set_endpoint_prefix("iot".to_string());
28347
28348        let mut params = Params::new();
28349        if let Some(ref x) = input.attribute_name {
28350            params.put("attributeName", x);
28351        }
28352        if let Some(ref x) = input.attribute_value {
28353            params.put("attributeValue", x);
28354        }
28355        if let Some(ref x) = input.max_results {
28356            params.put("maxResults", x);
28357        }
28358        if let Some(ref x) = input.next_token {
28359            params.put("nextToken", x);
28360        }
28361        if let Some(ref x) = input.thing_type_name {
28362            params.put("thingTypeName", x);
28363        }
28364        request.set_params(params);
28365
28366        let mut response = self
28367            .client
28368            .sign_and_dispatch(request)
28369            .await
28370            .map_err(RusotoError::from)?;
28371        if response.status.is_success() {
28372            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28373            let result = proto::json::ResponsePayload::new(&response)
28374                .deserialize::<ListThingsResponse, _>()?;
28375
28376            Ok(result)
28377        } else {
28378            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28379            Err(ListThingsError::from_response(response))
28380        }
28381    }
28382
28383    /// <p>Lists the things you have added to the given billing group.</p>
28384    #[allow(unused_mut)]
28385    async fn list_things_in_billing_group(
28386        &self,
28387        input: ListThingsInBillingGroupRequest,
28388    ) -> Result<ListThingsInBillingGroupResponse, RusotoError<ListThingsInBillingGroupError>> {
28389        let request_uri = format!(
28390            "/billing-groups/{billing_group_name}/things",
28391            billing_group_name = input.billing_group_name
28392        );
28393
28394        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
28395        request.set_content_type("application/x-amz-json-1.1".to_owned());
28396
28397        request.set_endpoint_prefix("iot".to_string());
28398
28399        let mut params = Params::new();
28400        if let Some(ref x) = input.max_results {
28401            params.put("maxResults", x);
28402        }
28403        if let Some(ref x) = input.next_token {
28404            params.put("nextToken", x);
28405        }
28406        request.set_params(params);
28407
28408        let mut response = self
28409            .client
28410            .sign_and_dispatch(request)
28411            .await
28412            .map_err(RusotoError::from)?;
28413        if response.status.is_success() {
28414            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28415            let result = proto::json::ResponsePayload::new(&response)
28416                .deserialize::<ListThingsInBillingGroupResponse, _>()?;
28417
28418            Ok(result)
28419        } else {
28420            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28421            Err(ListThingsInBillingGroupError::from_response(response))
28422        }
28423    }
28424
28425    /// <p>Lists the things in the specified group.</p>
28426    #[allow(unused_mut)]
28427    async fn list_things_in_thing_group(
28428        &self,
28429        input: ListThingsInThingGroupRequest,
28430    ) -> Result<ListThingsInThingGroupResponse, RusotoError<ListThingsInThingGroupError>> {
28431        let request_uri = format!(
28432            "/thing-groups/{thing_group_name}/things",
28433            thing_group_name = input.thing_group_name
28434        );
28435
28436        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
28437        request.set_content_type("application/x-amz-json-1.1".to_owned());
28438
28439        request.set_endpoint_prefix("iot".to_string());
28440
28441        let mut params = Params::new();
28442        if let Some(ref x) = input.max_results {
28443            params.put("maxResults", x);
28444        }
28445        if let Some(ref x) = input.next_token {
28446            params.put("nextToken", x);
28447        }
28448        if let Some(ref x) = input.recursive {
28449            params.put("recursive", x);
28450        }
28451        request.set_params(params);
28452
28453        let mut response = self
28454            .client
28455            .sign_and_dispatch(request)
28456            .await
28457            .map_err(RusotoError::from)?;
28458        if response.status.is_success() {
28459            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28460            let result = proto::json::ResponsePayload::new(&response)
28461                .deserialize::<ListThingsInThingGroupResponse, _>()?;
28462
28463            Ok(result)
28464        } else {
28465            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28466            Err(ListThingsInThingGroupError::from_response(response))
28467        }
28468    }
28469
28470    /// <p>Lists all the topic rule destinations in your AWS account.</p>
28471    #[allow(unused_mut)]
28472    async fn list_topic_rule_destinations(
28473        &self,
28474        input: ListTopicRuleDestinationsRequest,
28475    ) -> Result<ListTopicRuleDestinationsResponse, RusotoError<ListTopicRuleDestinationsError>>
28476    {
28477        let request_uri = "/destinations";
28478
28479        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
28480        request.set_content_type("application/x-amz-json-1.1".to_owned());
28481
28482        request.set_endpoint_prefix("iot".to_string());
28483
28484        let mut params = Params::new();
28485        if let Some(ref x) = input.max_results {
28486            params.put("maxResults", x);
28487        }
28488        if let Some(ref x) = input.next_token {
28489            params.put("nextToken", x);
28490        }
28491        request.set_params(params);
28492
28493        let mut response = self
28494            .client
28495            .sign_and_dispatch(request)
28496            .await
28497            .map_err(RusotoError::from)?;
28498        if response.status.is_success() {
28499            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28500            let result = proto::json::ResponsePayload::new(&response)
28501                .deserialize::<ListTopicRuleDestinationsResponse, _>()?;
28502
28503            Ok(result)
28504        } else {
28505            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28506            Err(ListTopicRuleDestinationsError::from_response(response))
28507        }
28508    }
28509
28510    /// <p>Lists the rules for the specific topic.</p>
28511    #[allow(unused_mut)]
28512    async fn list_topic_rules(
28513        &self,
28514        input: ListTopicRulesRequest,
28515    ) -> Result<ListTopicRulesResponse, RusotoError<ListTopicRulesError>> {
28516        let request_uri = "/rules";
28517
28518        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
28519        request.set_content_type("application/x-amz-json-1.1".to_owned());
28520
28521        request.set_endpoint_prefix("iot".to_string());
28522
28523        let mut params = Params::new();
28524        if let Some(ref x) = input.max_results {
28525            params.put("maxResults", x);
28526        }
28527        if let Some(ref x) = input.next_token {
28528            params.put("nextToken", x);
28529        }
28530        if let Some(ref x) = input.rule_disabled {
28531            params.put("ruleDisabled", x);
28532        }
28533        if let Some(ref x) = input.topic {
28534            params.put("topic", x);
28535        }
28536        request.set_params(params);
28537
28538        let mut response = self
28539            .client
28540            .sign_and_dispatch(request)
28541            .await
28542            .map_err(RusotoError::from)?;
28543        if response.status.is_success() {
28544            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28545            let result = proto::json::ResponsePayload::new(&response)
28546                .deserialize::<ListTopicRulesResponse, _>()?;
28547
28548            Ok(result)
28549        } else {
28550            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28551            Err(ListTopicRulesError::from_response(response))
28552        }
28553    }
28554
28555    /// <p>Lists logging levels.</p>
28556    #[allow(unused_mut)]
28557    async fn list_v2_logging_levels(
28558        &self,
28559        input: ListV2LoggingLevelsRequest,
28560    ) -> Result<ListV2LoggingLevelsResponse, RusotoError<ListV2LoggingLevelsError>> {
28561        let request_uri = "/v2LoggingLevel";
28562
28563        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
28564        request.set_content_type("application/x-amz-json-1.1".to_owned());
28565
28566        request.set_endpoint_prefix("iot".to_string());
28567
28568        let mut params = Params::new();
28569        if let Some(ref x) = input.max_results {
28570            params.put("maxResults", x);
28571        }
28572        if let Some(ref x) = input.next_token {
28573            params.put("nextToken", x);
28574        }
28575        if let Some(ref x) = input.target_type {
28576            params.put("targetType", x);
28577        }
28578        request.set_params(params);
28579
28580        let mut response = self
28581            .client
28582            .sign_and_dispatch(request)
28583            .await
28584            .map_err(RusotoError::from)?;
28585        if response.status.is_success() {
28586            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28587            let result = proto::json::ResponsePayload::new(&response)
28588                .deserialize::<ListV2LoggingLevelsResponse, _>()?;
28589
28590            Ok(result)
28591        } else {
28592            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28593            Err(ListV2LoggingLevelsError::from_response(response))
28594        }
28595    }
28596
28597    /// <p>Lists the Device Defender security profile violations discovered during the given time period. You can use filters to limit the results to those alerts issued for a particular security profile, behavior, or thing (device).</p>
28598    #[allow(unused_mut)]
28599    async fn list_violation_events(
28600        &self,
28601        input: ListViolationEventsRequest,
28602    ) -> Result<ListViolationEventsResponse, RusotoError<ListViolationEventsError>> {
28603        let request_uri = "/violation-events";
28604
28605        let mut request = SignedRequest::new("GET", "execute-api", &self.region, &request_uri);
28606        request.set_content_type("application/x-amz-json-1.1".to_owned());
28607
28608        request.set_endpoint_prefix("iot".to_string());
28609
28610        let mut params = Params::new();
28611        params.put("endTime", &input.end_time);
28612        if let Some(ref x) = input.max_results {
28613            params.put("maxResults", x);
28614        }
28615        if let Some(ref x) = input.next_token {
28616            params.put("nextToken", x);
28617        }
28618        if let Some(ref x) = input.security_profile_name {
28619            params.put("securityProfileName", x);
28620        }
28621        params.put("startTime", &input.start_time);
28622        if let Some(ref x) = input.thing_name {
28623            params.put("thingName", x);
28624        }
28625        request.set_params(params);
28626
28627        let mut response = self
28628            .client
28629            .sign_and_dispatch(request)
28630            .await
28631            .map_err(RusotoError::from)?;
28632        if response.status.is_success() {
28633            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28634            let result = proto::json::ResponsePayload::new(&response)
28635                .deserialize::<ListViolationEventsResponse, _>()?;
28636
28637            Ok(result)
28638        } else {
28639            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28640            Err(ListViolationEventsError::from_response(response))
28641        }
28642    }
28643
28644    /// <p>Registers a CA certificate with AWS IoT. This CA certificate can then be used to sign device certificates, which can be then registered with AWS IoT. You can register up to 10 CA certificates per AWS account that have the same subject field. This enables you to have up to 10 certificate authorities sign your device certificates. If you have more than one CA certificate registered, make sure you pass the CA certificate when you register your device certificates with the RegisterCertificate API.</p>
28645    #[allow(unused_mut)]
28646    async fn register_ca_certificate(
28647        &self,
28648        input: RegisterCACertificateRequest,
28649    ) -> Result<RegisterCACertificateResponse, RusotoError<RegisterCACertificateError>> {
28650        let request_uri = "/cacertificate";
28651
28652        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
28653        request.set_content_type("application/x-amz-json-1.1".to_owned());
28654
28655        request.set_endpoint_prefix("iot".to_string());
28656        let encoded = Some(serde_json::to_vec(&input).unwrap());
28657        request.set_payload(encoded);
28658
28659        let mut params = Params::new();
28660        if let Some(ref x) = input.allow_auto_registration {
28661            params.put("allowAutoRegistration", x);
28662        }
28663        if let Some(ref x) = input.set_as_active {
28664            params.put("setAsActive", x);
28665        }
28666        request.set_params(params);
28667
28668        let mut response = self
28669            .client
28670            .sign_and_dispatch(request)
28671            .await
28672            .map_err(RusotoError::from)?;
28673        if response.status.is_success() {
28674            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28675            let result = proto::json::ResponsePayload::new(&response)
28676                .deserialize::<RegisterCACertificateResponse, _>()?;
28677
28678            Ok(result)
28679        } else {
28680            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28681            Err(RegisterCACertificateError::from_response(response))
28682        }
28683    }
28684
28685    /// <p>Registers a device certificate with AWS IoT. If you have more than one CA certificate that has the same subject field, you must specify the CA certificate that was used to sign the device certificate being registered.</p>
28686    #[allow(unused_mut)]
28687    async fn register_certificate(
28688        &self,
28689        input: RegisterCertificateRequest,
28690    ) -> Result<RegisterCertificateResponse, RusotoError<RegisterCertificateError>> {
28691        let request_uri = "/certificate/register";
28692
28693        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
28694        request.set_content_type("application/x-amz-json-1.1".to_owned());
28695
28696        request.set_endpoint_prefix("iot".to_string());
28697        let encoded = Some(serde_json::to_vec(&input).unwrap());
28698        request.set_payload(encoded);
28699
28700        let mut response = self
28701            .client
28702            .sign_and_dispatch(request)
28703            .await
28704            .map_err(RusotoError::from)?;
28705        if response.status.is_success() {
28706            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28707            let result = proto::json::ResponsePayload::new(&response)
28708                .deserialize::<RegisterCertificateResponse, _>()?;
28709
28710            Ok(result)
28711        } else {
28712            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28713            Err(RegisterCertificateError::from_response(response))
28714        }
28715    }
28716
28717    /// <p>Register a certificate that does not have a certificate authority (CA).</p>
28718    #[allow(unused_mut)]
28719    async fn register_certificate_without_ca(
28720        &self,
28721        input: RegisterCertificateWithoutCARequest,
28722    ) -> Result<RegisterCertificateWithoutCAResponse, RusotoError<RegisterCertificateWithoutCAError>>
28723    {
28724        let request_uri = "/certificate/register-no-ca";
28725
28726        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
28727        request.set_content_type("application/x-amz-json-1.1".to_owned());
28728
28729        request.set_endpoint_prefix("iot".to_string());
28730        let encoded = Some(serde_json::to_vec(&input).unwrap());
28731        request.set_payload(encoded);
28732
28733        let mut response = self
28734            .client
28735            .sign_and_dispatch(request)
28736            .await
28737            .map_err(RusotoError::from)?;
28738        if response.status.is_success() {
28739            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28740            let result = proto::json::ResponsePayload::new(&response)
28741                .deserialize::<RegisterCertificateWithoutCAResponse, _>()?;
28742
28743            Ok(result)
28744        } else {
28745            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28746            Err(RegisterCertificateWithoutCAError::from_response(response))
28747        }
28748    }
28749
28750    /// <p>Provisions a thing in the device registry. RegisterThing calls other AWS IoT control plane APIs. These calls might exceed your account level <a href="https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html#limits_iot"> AWS IoT Throttling Limits</a> and cause throttle errors. Please contact <a href="https://console.aws.amazon.com/support/home">AWS Customer Support</a> to raise your throttling limits if necessary.</p>
28751    #[allow(unused_mut)]
28752    async fn register_thing(
28753        &self,
28754        input: RegisterThingRequest,
28755    ) -> Result<RegisterThingResponse, RusotoError<RegisterThingError>> {
28756        let request_uri = "/things";
28757
28758        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
28759        request.set_content_type("application/x-amz-json-1.1".to_owned());
28760
28761        request.set_endpoint_prefix("iot".to_string());
28762        let encoded = Some(serde_json::to_vec(&input).unwrap());
28763        request.set_payload(encoded);
28764
28765        let mut response = self
28766            .client
28767            .sign_and_dispatch(request)
28768            .await
28769            .map_err(RusotoError::from)?;
28770        if response.status.is_success() {
28771            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28772            let result = proto::json::ResponsePayload::new(&response)
28773                .deserialize::<RegisterThingResponse, _>()?;
28774
28775            Ok(result)
28776        } else {
28777            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28778            Err(RegisterThingError::from_response(response))
28779        }
28780    }
28781
28782    /// <p>Rejects a pending certificate transfer. After AWS IoT rejects a certificate transfer, the certificate status changes from <b>PENDING_TRANSFER</b> to <b>INACTIVE</b>.</p> <p>To check for pending certificate transfers, call <a>ListCertificates</a> to enumerate your certificates.</p> <p>This operation can only be called by the transfer destination. After it is called, the certificate will be returned to the source's account in the INACTIVE state.</p>
28783    #[allow(unused_mut)]
28784    async fn reject_certificate_transfer(
28785        &self,
28786        input: RejectCertificateTransferRequest,
28787    ) -> Result<(), RusotoError<RejectCertificateTransferError>> {
28788        let request_uri = format!(
28789            "/reject-certificate-transfer/{certificate_id}",
28790            certificate_id = input.certificate_id
28791        );
28792
28793        let mut request = SignedRequest::new("PATCH", "execute-api", &self.region, &request_uri);
28794        request.set_content_type("application/x-amz-json-1.1".to_owned());
28795
28796        request.set_endpoint_prefix("iot".to_string());
28797        let encoded = Some(serde_json::to_vec(&input).unwrap());
28798        request.set_payload(encoded);
28799
28800        let mut response = self
28801            .client
28802            .sign_and_dispatch(request)
28803            .await
28804            .map_err(RusotoError::from)?;
28805        if response.status.is_success() {
28806            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28807            let result = ::std::mem::drop(response);
28808
28809            Ok(result)
28810        } else {
28811            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28812            Err(RejectCertificateTransferError::from_response(response))
28813        }
28814    }
28815
28816    /// <p>Removes the given thing from the billing group.</p>
28817    #[allow(unused_mut)]
28818    async fn remove_thing_from_billing_group(
28819        &self,
28820        input: RemoveThingFromBillingGroupRequest,
28821    ) -> Result<RemoveThingFromBillingGroupResponse, RusotoError<RemoveThingFromBillingGroupError>>
28822    {
28823        let request_uri = "/billing-groups/removeThingFromBillingGroup";
28824
28825        let mut request = SignedRequest::new("PUT", "execute-api", &self.region, &request_uri);
28826        request.set_content_type("application/x-amz-json-1.1".to_owned());
28827
28828        request.set_endpoint_prefix("iot".to_string());
28829        let encoded = Some(serde_json::to_vec(&input).unwrap());
28830        request.set_payload(encoded);
28831
28832        let mut response = self
28833            .client
28834            .sign_and_dispatch(request)
28835            .await
28836            .map_err(RusotoError::from)?;
28837        if response.status.is_success() {
28838            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28839            let result = proto::json::ResponsePayload::new(&response)
28840                .deserialize::<RemoveThingFromBillingGroupResponse, _>()?;
28841
28842            Ok(result)
28843        } else {
28844            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28845            Err(RemoveThingFromBillingGroupError::from_response(response))
28846        }
28847    }
28848
28849    /// <p>Remove the specified thing from the specified group.</p> <p>You must specify either a <code>thingGroupArn</code> or a <code>thingGroupName</code> to identify the thing group and either a <code>thingArn</code> or a <code>thingName</code> to identify the thing to remove from the thing group. </p>
28850    #[allow(unused_mut)]
28851    async fn remove_thing_from_thing_group(
28852        &self,
28853        input: RemoveThingFromThingGroupRequest,
28854    ) -> Result<RemoveThingFromThingGroupResponse, RusotoError<RemoveThingFromThingGroupError>>
28855    {
28856        let request_uri = "/thing-groups/removeThingFromThingGroup";
28857
28858        let mut request = SignedRequest::new("PUT", "execute-api", &self.region, &request_uri);
28859        request.set_content_type("application/x-amz-json-1.1".to_owned());
28860
28861        request.set_endpoint_prefix("iot".to_string());
28862        let encoded = Some(serde_json::to_vec(&input).unwrap());
28863        request.set_payload(encoded);
28864
28865        let mut response = self
28866            .client
28867            .sign_and_dispatch(request)
28868            .await
28869            .map_err(RusotoError::from)?;
28870        if response.status.is_success() {
28871            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28872            let result = proto::json::ResponsePayload::new(&response)
28873                .deserialize::<RemoveThingFromThingGroupResponse, _>()?;
28874
28875            Ok(result)
28876        } else {
28877            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28878            Err(RemoveThingFromThingGroupError::from_response(response))
28879        }
28880    }
28881
28882    /// <p>Replaces the rule. You must specify all parameters for the new rule. Creating rules is an administrator-level action. Any user who has permission to create rules will be able to access data processed by the rule.</p>
28883    #[allow(unused_mut)]
28884    async fn replace_topic_rule(
28885        &self,
28886        input: ReplaceTopicRuleRequest,
28887    ) -> Result<(), RusotoError<ReplaceTopicRuleError>> {
28888        let request_uri = format!("/rules/{rule_name}", rule_name = input.rule_name);
28889
28890        let mut request = SignedRequest::new("PATCH", "execute-api", &self.region, &request_uri);
28891        request.set_content_type("application/x-amz-json-1.1".to_owned());
28892
28893        request.set_endpoint_prefix("iot".to_string());
28894        let encoded = Some(serde_json::to_vec(&input.topic_rule_payload).unwrap());
28895        request.set_payload(encoded);
28896
28897        let mut response = self
28898            .client
28899            .sign_and_dispatch(request)
28900            .await
28901            .map_err(RusotoError::from)?;
28902        if response.status.is_success() {
28903            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28904            let result = ::std::mem::drop(response);
28905
28906            Ok(result)
28907        } else {
28908            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28909            Err(ReplaceTopicRuleError::from_response(response))
28910        }
28911    }
28912
28913    /// <p>The query search index.</p>
28914    #[allow(unused_mut)]
28915    async fn search_index(
28916        &self,
28917        input: SearchIndexRequest,
28918    ) -> Result<SearchIndexResponse, RusotoError<SearchIndexError>> {
28919        let request_uri = "/indices/search";
28920
28921        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
28922        request.set_content_type("application/x-amz-json-1.1".to_owned());
28923
28924        request.set_endpoint_prefix("iot".to_string());
28925        let encoded = Some(serde_json::to_vec(&input).unwrap());
28926        request.set_payload(encoded);
28927
28928        let mut response = self
28929            .client
28930            .sign_and_dispatch(request)
28931            .await
28932            .map_err(RusotoError::from)?;
28933        if response.status.is_success() {
28934            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28935            let result = proto::json::ResponsePayload::new(&response)
28936                .deserialize::<SearchIndexResponse, _>()?;
28937
28938            Ok(result)
28939        } else {
28940            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28941            Err(SearchIndexError::from_response(response))
28942        }
28943    }
28944
28945    /// <p>Sets the default authorizer. This will be used if a websocket connection is made without specifying an authorizer.</p>
28946    #[allow(unused_mut)]
28947    async fn set_default_authorizer(
28948        &self,
28949        input: SetDefaultAuthorizerRequest,
28950    ) -> Result<SetDefaultAuthorizerResponse, RusotoError<SetDefaultAuthorizerError>> {
28951        let request_uri = "/default-authorizer";
28952
28953        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
28954        request.set_content_type("application/x-amz-json-1.1".to_owned());
28955
28956        request.set_endpoint_prefix("iot".to_string());
28957        let encoded = Some(serde_json::to_vec(&input).unwrap());
28958        request.set_payload(encoded);
28959
28960        let mut response = self
28961            .client
28962            .sign_and_dispatch(request)
28963            .await
28964            .map_err(RusotoError::from)?;
28965        if response.status.is_success() {
28966            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28967            let result = proto::json::ResponsePayload::new(&response)
28968                .deserialize::<SetDefaultAuthorizerResponse, _>()?;
28969
28970            Ok(result)
28971        } else {
28972            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
28973            Err(SetDefaultAuthorizerError::from_response(response))
28974        }
28975    }
28976
28977    /// <p>Sets the specified version of the specified policy as the policy's default (operative) version. This action affects all certificates to which the policy is attached. To list the principals the policy is attached to, use the ListPrincipalPolicy API.</p>
28978    #[allow(unused_mut)]
28979    async fn set_default_policy_version(
28980        &self,
28981        input: SetDefaultPolicyVersionRequest,
28982    ) -> Result<(), RusotoError<SetDefaultPolicyVersionError>> {
28983        let request_uri = format!(
28984            "/policies/{policy_name}/version/{policy_version_id}",
28985            policy_name = input.policy_name,
28986            policy_version_id = input.policy_version_id
28987        );
28988
28989        let mut request = SignedRequest::new("PATCH", "execute-api", &self.region, &request_uri);
28990        request.set_content_type("application/x-amz-json-1.1".to_owned());
28991
28992        request.set_endpoint_prefix("iot".to_string());
28993
28994        let mut response = self
28995            .client
28996            .sign_and_dispatch(request)
28997            .await
28998            .map_err(RusotoError::from)?;
28999        if response.status.is_success() {
29000            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29001            let result = ::std::mem::drop(response);
29002
29003            Ok(result)
29004        } else {
29005            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29006            Err(SetDefaultPolicyVersionError::from_response(response))
29007        }
29008    }
29009
29010    /// <p>Sets the logging options.</p> <p>NOTE: use of this command is not recommended. Use <code>SetV2LoggingOptions</code> instead.</p>
29011    #[allow(unused_mut)]
29012    async fn set_logging_options(
29013        &self,
29014        input: SetLoggingOptionsRequest,
29015    ) -> Result<(), RusotoError<SetLoggingOptionsError>> {
29016        let request_uri = "/loggingOptions";
29017
29018        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
29019        request.set_content_type("application/x-amz-json-1.1".to_owned());
29020
29021        request.set_endpoint_prefix("iot".to_string());
29022        let encoded = Some(serde_json::to_vec(&input.logging_options_payload).unwrap());
29023        request.set_payload(encoded);
29024
29025        let mut response = self
29026            .client
29027            .sign_and_dispatch(request)
29028            .await
29029            .map_err(RusotoError::from)?;
29030        if response.status.is_success() {
29031            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29032            let result = ::std::mem::drop(response);
29033
29034            Ok(result)
29035        } else {
29036            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29037            Err(SetLoggingOptionsError::from_response(response))
29038        }
29039    }
29040
29041    /// <p>Sets the logging level.</p>
29042    #[allow(unused_mut)]
29043    async fn set_v2_logging_level(
29044        &self,
29045        input: SetV2LoggingLevelRequest,
29046    ) -> Result<(), RusotoError<SetV2LoggingLevelError>> {
29047        let request_uri = "/v2LoggingLevel";
29048
29049        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
29050        request.set_content_type("application/x-amz-json-1.1".to_owned());
29051
29052        request.set_endpoint_prefix("iot".to_string());
29053        let encoded = Some(serde_json::to_vec(&input).unwrap());
29054        request.set_payload(encoded);
29055
29056        let mut response = self
29057            .client
29058            .sign_and_dispatch(request)
29059            .await
29060            .map_err(RusotoError::from)?;
29061        if response.status.is_success() {
29062            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29063            let result = ::std::mem::drop(response);
29064
29065            Ok(result)
29066        } else {
29067            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29068            Err(SetV2LoggingLevelError::from_response(response))
29069        }
29070    }
29071
29072    /// <p>Sets the logging options for the V2 logging service.</p>
29073    #[allow(unused_mut)]
29074    async fn set_v2_logging_options(
29075        &self,
29076        input: SetV2LoggingOptionsRequest,
29077    ) -> Result<(), RusotoError<SetV2LoggingOptionsError>> {
29078        let request_uri = "/v2LoggingOptions";
29079
29080        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
29081        request.set_content_type("application/x-amz-json-1.1".to_owned());
29082
29083        request.set_endpoint_prefix("iot".to_string());
29084        let encoded = Some(serde_json::to_vec(&input).unwrap());
29085        request.set_payload(encoded);
29086
29087        let mut response = self
29088            .client
29089            .sign_and_dispatch(request)
29090            .await
29091            .map_err(RusotoError::from)?;
29092        if response.status.is_success() {
29093            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29094            let result = ::std::mem::drop(response);
29095
29096            Ok(result)
29097        } else {
29098            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29099            Err(SetV2LoggingOptionsError::from_response(response))
29100        }
29101    }
29102
29103    /// <p>Starts a task that applies a set of mitigation actions to the specified target.</p>
29104    #[allow(unused_mut)]
29105    async fn start_audit_mitigation_actions_task(
29106        &self,
29107        input: StartAuditMitigationActionsTaskRequest,
29108    ) -> Result<
29109        StartAuditMitigationActionsTaskResponse,
29110        RusotoError<StartAuditMitigationActionsTaskError>,
29111    > {
29112        let request_uri = format!(
29113            "/audit/mitigationactions/tasks/{task_id}",
29114            task_id = input.task_id
29115        );
29116
29117        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
29118        request.set_content_type("application/x-amz-json-1.1".to_owned());
29119
29120        request.set_endpoint_prefix("iot".to_string());
29121        let encoded = Some(serde_json::to_vec(&input).unwrap());
29122        request.set_payload(encoded);
29123
29124        let mut response = self
29125            .client
29126            .sign_and_dispatch(request)
29127            .await
29128            .map_err(RusotoError::from)?;
29129        if response.status.is_success() {
29130            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29131            let result = proto::json::ResponsePayload::new(&response)
29132                .deserialize::<StartAuditMitigationActionsTaskResponse, _>()?;
29133
29134            Ok(result)
29135        } else {
29136            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29137            Err(StartAuditMitigationActionsTaskError::from_response(
29138                response,
29139            ))
29140        }
29141    }
29142
29143    /// <p>Starts an on-demand Device Defender audit.</p>
29144    #[allow(unused_mut)]
29145    async fn start_on_demand_audit_task(
29146        &self,
29147        input: StartOnDemandAuditTaskRequest,
29148    ) -> Result<StartOnDemandAuditTaskResponse, RusotoError<StartOnDemandAuditTaskError>> {
29149        let request_uri = "/audit/tasks";
29150
29151        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
29152        request.set_content_type("application/x-amz-json-1.1".to_owned());
29153
29154        request.set_endpoint_prefix("iot".to_string());
29155        let encoded = Some(serde_json::to_vec(&input).unwrap());
29156        request.set_payload(encoded);
29157
29158        let mut response = self
29159            .client
29160            .sign_and_dispatch(request)
29161            .await
29162            .map_err(RusotoError::from)?;
29163        if response.status.is_success() {
29164            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29165            let result = proto::json::ResponsePayload::new(&response)
29166                .deserialize::<StartOnDemandAuditTaskResponse, _>()?;
29167
29168            Ok(result)
29169        } else {
29170            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29171            Err(StartOnDemandAuditTaskError::from_response(response))
29172        }
29173    }
29174
29175    /// <p>Creates a bulk thing provisioning task.</p>
29176    #[allow(unused_mut)]
29177    async fn start_thing_registration_task(
29178        &self,
29179        input: StartThingRegistrationTaskRequest,
29180    ) -> Result<StartThingRegistrationTaskResponse, RusotoError<StartThingRegistrationTaskError>>
29181    {
29182        let request_uri = "/thing-registration-tasks";
29183
29184        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
29185        request.set_content_type("application/x-amz-json-1.1".to_owned());
29186
29187        request.set_endpoint_prefix("iot".to_string());
29188        let encoded = Some(serde_json::to_vec(&input).unwrap());
29189        request.set_payload(encoded);
29190
29191        let mut response = self
29192            .client
29193            .sign_and_dispatch(request)
29194            .await
29195            .map_err(RusotoError::from)?;
29196        if response.status.is_success() {
29197            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29198            let result = proto::json::ResponsePayload::new(&response)
29199                .deserialize::<StartThingRegistrationTaskResponse, _>()?;
29200
29201            Ok(result)
29202        } else {
29203            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29204            Err(StartThingRegistrationTaskError::from_response(response))
29205        }
29206    }
29207
29208    /// <p>Cancels a bulk thing provisioning task.</p>
29209    #[allow(unused_mut)]
29210    async fn stop_thing_registration_task(
29211        &self,
29212        input: StopThingRegistrationTaskRequest,
29213    ) -> Result<StopThingRegistrationTaskResponse, RusotoError<StopThingRegistrationTaskError>>
29214    {
29215        let request_uri = format!(
29216            "/thing-registration-tasks/{task_id}/cancel",
29217            task_id = input.task_id
29218        );
29219
29220        let mut request = SignedRequest::new("PUT", "execute-api", &self.region, &request_uri);
29221        request.set_content_type("application/x-amz-json-1.1".to_owned());
29222
29223        request.set_endpoint_prefix("iot".to_string());
29224
29225        let mut response = self
29226            .client
29227            .sign_and_dispatch(request)
29228            .await
29229            .map_err(RusotoError::from)?;
29230        if response.status.is_success() {
29231            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29232            let result = proto::json::ResponsePayload::new(&response)
29233                .deserialize::<StopThingRegistrationTaskResponse, _>()?;
29234
29235            Ok(result)
29236        } else {
29237            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29238            Err(StopThingRegistrationTaskError::from_response(response))
29239        }
29240    }
29241
29242    /// <p>Adds to or modifies the tags of the given resource. Tags are metadata which can be used to manage a resource.</p>
29243    #[allow(unused_mut)]
29244    async fn tag_resource(
29245        &self,
29246        input: TagResourceRequest,
29247    ) -> Result<TagResourceResponse, RusotoError<TagResourceError>> {
29248        let request_uri = "/tags";
29249
29250        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
29251        request.set_content_type("application/x-amz-json-1.1".to_owned());
29252
29253        request.set_endpoint_prefix("iot".to_string());
29254        let encoded = Some(serde_json::to_vec(&input).unwrap());
29255        request.set_payload(encoded);
29256
29257        let mut response = self
29258            .client
29259            .sign_and_dispatch(request)
29260            .await
29261            .map_err(RusotoError::from)?;
29262        if response.status.is_success() {
29263            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29264            let result = proto::json::ResponsePayload::new(&response)
29265                .deserialize::<TagResourceResponse, _>()?;
29266
29267            Ok(result)
29268        } else {
29269            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29270            Err(TagResourceError::from_response(response))
29271        }
29272    }
29273
29274    /// <p>Tests if a specified principal is authorized to perform an AWS IoT action on a specified resource. Use this to test and debug the authorization behavior of devices that connect to the AWS IoT device gateway.</p>
29275    #[allow(unused_mut)]
29276    async fn test_authorization(
29277        &self,
29278        input: TestAuthorizationRequest,
29279    ) -> Result<TestAuthorizationResponse, RusotoError<TestAuthorizationError>> {
29280        let request_uri = "/test-authorization";
29281
29282        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
29283        request.set_content_type("application/x-amz-json-1.1".to_owned());
29284
29285        request.set_endpoint_prefix("iot".to_string());
29286        let encoded = Some(serde_json::to_vec(&input).unwrap());
29287        request.set_payload(encoded);
29288
29289        let mut params = Params::new();
29290        if let Some(ref x) = input.client_id {
29291            params.put("clientId", x);
29292        }
29293        request.set_params(params);
29294
29295        let mut response = self
29296            .client
29297            .sign_and_dispatch(request)
29298            .await
29299            .map_err(RusotoError::from)?;
29300        if response.status.is_success() {
29301            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29302            let result = proto::json::ResponsePayload::new(&response)
29303                .deserialize::<TestAuthorizationResponse, _>()?;
29304
29305            Ok(result)
29306        } else {
29307            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29308            Err(TestAuthorizationError::from_response(response))
29309        }
29310    }
29311
29312    /// <p>Tests a custom authorization behavior by invoking a specified custom authorizer. Use this to test and debug the custom authorization behavior of devices that connect to the AWS IoT device gateway.</p>
29313    #[allow(unused_mut)]
29314    async fn test_invoke_authorizer(
29315        &self,
29316        input: TestInvokeAuthorizerRequest,
29317    ) -> Result<TestInvokeAuthorizerResponse, RusotoError<TestInvokeAuthorizerError>> {
29318        let request_uri = format!(
29319            "/authorizer/{authorizer_name}/test",
29320            authorizer_name = input.authorizer_name
29321        );
29322
29323        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
29324        request.set_content_type("application/x-amz-json-1.1".to_owned());
29325
29326        request.set_endpoint_prefix("iot".to_string());
29327        let encoded = Some(serde_json::to_vec(&input).unwrap());
29328        request.set_payload(encoded);
29329
29330        let mut response = self
29331            .client
29332            .sign_and_dispatch(request)
29333            .await
29334            .map_err(RusotoError::from)?;
29335        if response.status.is_success() {
29336            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29337            let result = proto::json::ResponsePayload::new(&response)
29338                .deserialize::<TestInvokeAuthorizerResponse, _>()?;
29339
29340            Ok(result)
29341        } else {
29342            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29343            Err(TestInvokeAuthorizerError::from_response(response))
29344        }
29345    }
29346
29347    /// <p>Transfers the specified certificate to the specified AWS account.</p> <p>You can cancel the transfer until it is acknowledged by the recipient.</p> <p>No notification is sent to the transfer destination's account. It is up to the caller to notify the transfer target.</p> <p>The certificate being transferred must not be in the ACTIVE state. You can use the UpdateCertificate API to deactivate it.</p> <p>The certificate must not have any policies attached to it. You can use the DetachPrincipalPolicy API to detach them.</p>
29348    #[allow(unused_mut)]
29349    async fn transfer_certificate(
29350        &self,
29351        input: TransferCertificateRequest,
29352    ) -> Result<TransferCertificateResponse, RusotoError<TransferCertificateError>> {
29353        let request_uri = format!(
29354            "/transfer-certificate/{certificate_id}",
29355            certificate_id = input.certificate_id
29356        );
29357
29358        let mut request = SignedRequest::new("PATCH", "execute-api", &self.region, &request_uri);
29359        request.set_content_type("application/x-amz-json-1.1".to_owned());
29360
29361        request.set_endpoint_prefix("iot".to_string());
29362        let encoded = Some(serde_json::to_vec(&input).unwrap());
29363        request.set_payload(encoded);
29364
29365        let mut params = Params::new();
29366        params.put("targetAwsAccount", &input.target_aws_account);
29367        request.set_params(params);
29368
29369        let mut response = self
29370            .client
29371            .sign_and_dispatch(request)
29372            .await
29373            .map_err(RusotoError::from)?;
29374        if response.status.is_success() {
29375            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29376            let result = proto::json::ResponsePayload::new(&response)
29377                .deserialize::<TransferCertificateResponse, _>()?;
29378
29379            Ok(result)
29380        } else {
29381            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29382            Err(TransferCertificateError::from_response(response))
29383        }
29384    }
29385
29386    /// <p>Removes the given tags (metadata) from the resource.</p>
29387    #[allow(unused_mut)]
29388    async fn untag_resource(
29389        &self,
29390        input: UntagResourceRequest,
29391    ) -> Result<UntagResourceResponse, RusotoError<UntagResourceError>> {
29392        let request_uri = "/untag";
29393
29394        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
29395        request.set_content_type("application/x-amz-json-1.1".to_owned());
29396
29397        request.set_endpoint_prefix("iot".to_string());
29398        let encoded = Some(serde_json::to_vec(&input).unwrap());
29399        request.set_payload(encoded);
29400
29401        let mut response = self
29402            .client
29403            .sign_and_dispatch(request)
29404            .await
29405            .map_err(RusotoError::from)?;
29406        if response.status.is_success() {
29407            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29408            let result = proto::json::ResponsePayload::new(&response)
29409                .deserialize::<UntagResourceResponse, _>()?;
29410
29411            Ok(result)
29412        } else {
29413            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29414            Err(UntagResourceError::from_response(response))
29415        }
29416    }
29417
29418    /// <p>Configures or reconfigures the Device Defender audit settings for this account. Settings include how audit notifications are sent and which audit checks are enabled or disabled.</p>
29419    #[allow(unused_mut)]
29420    async fn update_account_audit_configuration(
29421        &self,
29422        input: UpdateAccountAuditConfigurationRequest,
29423    ) -> Result<
29424        UpdateAccountAuditConfigurationResponse,
29425        RusotoError<UpdateAccountAuditConfigurationError>,
29426    > {
29427        let request_uri = "/audit/configuration";
29428
29429        let mut request = SignedRequest::new("PATCH", "execute-api", &self.region, &request_uri);
29430        request.set_content_type("application/x-amz-json-1.1".to_owned());
29431
29432        request.set_endpoint_prefix("iot".to_string());
29433        let encoded = Some(serde_json::to_vec(&input).unwrap());
29434        request.set_payload(encoded);
29435
29436        let mut response = self
29437            .client
29438            .sign_and_dispatch(request)
29439            .await
29440            .map_err(RusotoError::from)?;
29441        if response.status.is_success() {
29442            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29443            let result = proto::json::ResponsePayload::new(&response)
29444                .deserialize::<UpdateAccountAuditConfigurationResponse, _>()?;
29445
29446            Ok(result)
29447        } else {
29448            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29449            Err(UpdateAccountAuditConfigurationError::from_response(
29450                response,
29451            ))
29452        }
29453    }
29454
29455    /// <p>Updates an authorizer.</p>
29456    #[allow(unused_mut)]
29457    async fn update_authorizer(
29458        &self,
29459        input: UpdateAuthorizerRequest,
29460    ) -> Result<UpdateAuthorizerResponse, RusotoError<UpdateAuthorizerError>> {
29461        let request_uri = format!(
29462            "/authorizer/{authorizer_name}",
29463            authorizer_name = input.authorizer_name
29464        );
29465
29466        let mut request = SignedRequest::new("PUT", "execute-api", &self.region, &request_uri);
29467        request.set_content_type("application/x-amz-json-1.1".to_owned());
29468
29469        request.set_endpoint_prefix("iot".to_string());
29470        let encoded = Some(serde_json::to_vec(&input).unwrap());
29471        request.set_payload(encoded);
29472
29473        let mut response = self
29474            .client
29475            .sign_and_dispatch(request)
29476            .await
29477            .map_err(RusotoError::from)?;
29478        if response.status.is_success() {
29479            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29480            let result = proto::json::ResponsePayload::new(&response)
29481                .deserialize::<UpdateAuthorizerResponse, _>()?;
29482
29483            Ok(result)
29484        } else {
29485            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29486            Err(UpdateAuthorizerError::from_response(response))
29487        }
29488    }
29489
29490    /// <p>Updates information about the billing group.</p>
29491    #[allow(unused_mut)]
29492    async fn update_billing_group(
29493        &self,
29494        input: UpdateBillingGroupRequest,
29495    ) -> Result<UpdateBillingGroupResponse, RusotoError<UpdateBillingGroupError>> {
29496        let request_uri = format!(
29497            "/billing-groups/{billing_group_name}",
29498            billing_group_name = input.billing_group_name
29499        );
29500
29501        let mut request = SignedRequest::new("PATCH", "execute-api", &self.region, &request_uri);
29502        request.set_content_type("application/x-amz-json-1.1".to_owned());
29503
29504        request.set_endpoint_prefix("iot".to_string());
29505        let encoded = Some(serde_json::to_vec(&input).unwrap());
29506        request.set_payload(encoded);
29507
29508        let mut response = self
29509            .client
29510            .sign_and_dispatch(request)
29511            .await
29512            .map_err(RusotoError::from)?;
29513        if response.status.is_success() {
29514            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29515            let result = proto::json::ResponsePayload::new(&response)
29516                .deserialize::<UpdateBillingGroupResponse, _>()?;
29517
29518            Ok(result)
29519        } else {
29520            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29521            Err(UpdateBillingGroupError::from_response(response))
29522        }
29523    }
29524
29525    /// <p>Updates a registered CA certificate.</p>
29526    #[allow(unused_mut)]
29527    async fn update_ca_certificate(
29528        &self,
29529        input: UpdateCACertificateRequest,
29530    ) -> Result<(), RusotoError<UpdateCACertificateError>> {
29531        let request_uri = format!(
29532            "/cacertificate/{ca_certificate_id}",
29533            ca_certificate_id = input.certificate_id
29534        );
29535
29536        let mut request = SignedRequest::new("PUT", "execute-api", &self.region, &request_uri);
29537        request.set_content_type("application/x-amz-json-1.1".to_owned());
29538
29539        request.set_endpoint_prefix("iot".to_string());
29540        let encoded = Some(serde_json::to_vec(&input).unwrap());
29541        request.set_payload(encoded);
29542
29543        let mut params = Params::new();
29544        if let Some(ref x) = input.new_auto_registration_status {
29545            params.put("newAutoRegistrationStatus", x);
29546        }
29547        if let Some(ref x) = input.new_status {
29548            params.put("newStatus", x);
29549        }
29550        request.set_params(params);
29551
29552        let mut response = self
29553            .client
29554            .sign_and_dispatch(request)
29555            .await
29556            .map_err(RusotoError::from)?;
29557        if response.status.is_success() {
29558            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29559            let result = ::std::mem::drop(response);
29560
29561            Ok(result)
29562        } else {
29563            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29564            Err(UpdateCACertificateError::from_response(response))
29565        }
29566    }
29567
29568    /// <p>Updates the status of the specified certificate. This operation is idempotent.</p> <p>Moving a certificate from the ACTIVE state (including REVOKED) will not disconnect currently connected devices, but these devices will be unable to reconnect.</p> <p>The ACTIVE state is required to authenticate devices connecting to AWS IoT using a certificate.</p>
29569    #[allow(unused_mut)]
29570    async fn update_certificate(
29571        &self,
29572        input: UpdateCertificateRequest,
29573    ) -> Result<(), RusotoError<UpdateCertificateError>> {
29574        let request_uri = format!(
29575            "/certificates/{certificate_id}",
29576            certificate_id = input.certificate_id
29577        );
29578
29579        let mut request = SignedRequest::new("PUT", "execute-api", &self.region, &request_uri);
29580        request.set_content_type("application/x-amz-json-1.1".to_owned());
29581
29582        request.set_endpoint_prefix("iot".to_string());
29583
29584        let mut params = Params::new();
29585        params.put("newStatus", &input.new_status);
29586        request.set_params(params);
29587
29588        let mut response = self
29589            .client
29590            .sign_and_dispatch(request)
29591            .await
29592            .map_err(RusotoError::from)?;
29593        if response.status.is_success() {
29594            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29595            let result = ::std::mem::drop(response);
29596
29597            Ok(result)
29598        } else {
29599            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29600            Err(UpdateCertificateError::from_response(response))
29601        }
29602    }
29603
29604    /// <p>Updates the definition for a dimension. You cannot change the type of a dimension after it is created (you can delete it and re-create it).</p>
29605    #[allow(unused_mut)]
29606    async fn update_dimension(
29607        &self,
29608        input: UpdateDimensionRequest,
29609    ) -> Result<UpdateDimensionResponse, RusotoError<UpdateDimensionError>> {
29610        let request_uri = format!("/dimensions/{name}", name = input.name);
29611
29612        let mut request = SignedRequest::new("PATCH", "execute-api", &self.region, &request_uri);
29613        request.set_content_type("application/x-amz-json-1.1".to_owned());
29614
29615        request.set_endpoint_prefix("iot".to_string());
29616        let encoded = Some(serde_json::to_vec(&input).unwrap());
29617        request.set_payload(encoded);
29618
29619        let mut response = self
29620            .client
29621            .sign_and_dispatch(request)
29622            .await
29623            .map_err(RusotoError::from)?;
29624        if response.status.is_success() {
29625            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29626            let result = proto::json::ResponsePayload::new(&response)
29627                .deserialize::<UpdateDimensionResponse, _>()?;
29628
29629            Ok(result)
29630        } else {
29631            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29632            Err(UpdateDimensionError::from_response(response))
29633        }
29634    }
29635
29636    /// <p><p>Updates values stored in the domain configuration. Domain configurations for default endpoints can&#39;t be updated.</p> <note> <p>The domain configuration feature is in public preview and is subject to change.</p> </note></p>
29637    #[allow(unused_mut)]
29638    async fn update_domain_configuration(
29639        &self,
29640        input: UpdateDomainConfigurationRequest,
29641    ) -> Result<UpdateDomainConfigurationResponse, RusotoError<UpdateDomainConfigurationError>>
29642    {
29643        let request_uri = format!(
29644            "/domainConfigurations/{domain_configuration_name}",
29645            domain_configuration_name = input.domain_configuration_name
29646        );
29647
29648        let mut request = SignedRequest::new("PUT", "execute-api", &self.region, &request_uri);
29649        request.set_content_type("application/x-amz-json-1.1".to_owned());
29650
29651        request.set_endpoint_prefix("iot".to_string());
29652        let encoded = Some(serde_json::to_vec(&input).unwrap());
29653        request.set_payload(encoded);
29654
29655        let mut response = self
29656            .client
29657            .sign_and_dispatch(request)
29658            .await
29659            .map_err(RusotoError::from)?;
29660        if response.status.is_success() {
29661            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29662            let result = proto::json::ResponsePayload::new(&response)
29663                .deserialize::<UpdateDomainConfigurationResponse, _>()?;
29664
29665            Ok(result)
29666        } else {
29667            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29668            Err(UpdateDomainConfigurationError::from_response(response))
29669        }
29670    }
29671
29672    /// <p>Updates a dynamic thing group.</p>
29673    #[allow(unused_mut)]
29674    async fn update_dynamic_thing_group(
29675        &self,
29676        input: UpdateDynamicThingGroupRequest,
29677    ) -> Result<UpdateDynamicThingGroupResponse, RusotoError<UpdateDynamicThingGroupError>> {
29678        let request_uri = format!(
29679            "/dynamic-thing-groups/{thing_group_name}",
29680            thing_group_name = input.thing_group_name
29681        );
29682
29683        let mut request = SignedRequest::new("PATCH", "execute-api", &self.region, &request_uri);
29684        request.set_content_type("application/x-amz-json-1.1".to_owned());
29685
29686        request.set_endpoint_prefix("iot".to_string());
29687        let encoded = Some(serde_json::to_vec(&input).unwrap());
29688        request.set_payload(encoded);
29689
29690        let mut response = self
29691            .client
29692            .sign_and_dispatch(request)
29693            .await
29694            .map_err(RusotoError::from)?;
29695        if response.status.is_success() {
29696            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29697            let result = proto::json::ResponsePayload::new(&response)
29698                .deserialize::<UpdateDynamicThingGroupResponse, _>()?;
29699
29700            Ok(result)
29701        } else {
29702            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29703            Err(UpdateDynamicThingGroupError::from_response(response))
29704        }
29705    }
29706
29707    /// <p>Updates the event configurations.</p>
29708    #[allow(unused_mut)]
29709    async fn update_event_configurations(
29710        &self,
29711        input: UpdateEventConfigurationsRequest,
29712    ) -> Result<UpdateEventConfigurationsResponse, RusotoError<UpdateEventConfigurationsError>>
29713    {
29714        let request_uri = "/event-configurations";
29715
29716        let mut request = SignedRequest::new("PATCH", "execute-api", &self.region, &request_uri);
29717        request.set_content_type("application/x-amz-json-1.1".to_owned());
29718
29719        request.set_endpoint_prefix("iot".to_string());
29720        let encoded = Some(serde_json::to_vec(&input).unwrap());
29721        request.set_payload(encoded);
29722
29723        let mut response = self
29724            .client
29725            .sign_and_dispatch(request)
29726            .await
29727            .map_err(RusotoError::from)?;
29728        if response.status.is_success() {
29729            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29730            let result = proto::json::ResponsePayload::new(&response)
29731                .deserialize::<UpdateEventConfigurationsResponse, _>()?;
29732
29733            Ok(result)
29734        } else {
29735            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29736            Err(UpdateEventConfigurationsError::from_response(response))
29737        }
29738    }
29739
29740    /// <p>Updates the search configuration.</p>
29741    #[allow(unused_mut)]
29742    async fn update_indexing_configuration(
29743        &self,
29744        input: UpdateIndexingConfigurationRequest,
29745    ) -> Result<UpdateIndexingConfigurationResponse, RusotoError<UpdateIndexingConfigurationError>>
29746    {
29747        let request_uri = "/indexing/config";
29748
29749        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
29750        request.set_content_type("application/x-amz-json-1.1".to_owned());
29751
29752        request.set_endpoint_prefix("iot".to_string());
29753        let encoded = Some(serde_json::to_vec(&input).unwrap());
29754        request.set_payload(encoded);
29755
29756        let mut response = self
29757            .client
29758            .sign_and_dispatch(request)
29759            .await
29760            .map_err(RusotoError::from)?;
29761        if response.status.is_success() {
29762            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29763            let result = proto::json::ResponsePayload::new(&response)
29764                .deserialize::<UpdateIndexingConfigurationResponse, _>()?;
29765
29766            Ok(result)
29767        } else {
29768            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29769            Err(UpdateIndexingConfigurationError::from_response(response))
29770        }
29771    }
29772
29773    /// <p>Updates supported fields of the specified job.</p>
29774    #[allow(unused_mut)]
29775    async fn update_job(&self, input: UpdateJobRequest) -> Result<(), RusotoError<UpdateJobError>> {
29776        let request_uri = format!("/jobs/{job_id}", job_id = input.job_id);
29777
29778        let mut request = SignedRequest::new("PATCH", "execute-api", &self.region, &request_uri);
29779        request.set_content_type("application/x-amz-json-1.1".to_owned());
29780
29781        request.set_endpoint_prefix("iot".to_string());
29782        let encoded = Some(serde_json::to_vec(&input).unwrap());
29783        request.set_payload(encoded);
29784
29785        let mut response = self
29786            .client
29787            .sign_and_dispatch(request)
29788            .await
29789            .map_err(RusotoError::from)?;
29790        if response.status.is_success() {
29791            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29792            let result = ::std::mem::drop(response);
29793
29794            Ok(result)
29795        } else {
29796            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29797            Err(UpdateJobError::from_response(response))
29798        }
29799    }
29800
29801    /// <p>Updates the definition for the specified mitigation action.</p>
29802    #[allow(unused_mut)]
29803    async fn update_mitigation_action(
29804        &self,
29805        input: UpdateMitigationActionRequest,
29806    ) -> Result<UpdateMitigationActionResponse, RusotoError<UpdateMitigationActionError>> {
29807        let request_uri = format!(
29808            "/mitigationactions/actions/{action_name}",
29809            action_name = input.action_name
29810        );
29811
29812        let mut request = SignedRequest::new("PATCH", "execute-api", &self.region, &request_uri);
29813        request.set_content_type("application/x-amz-json-1.1".to_owned());
29814
29815        request.set_endpoint_prefix("iot".to_string());
29816        let encoded = Some(serde_json::to_vec(&input).unwrap());
29817        request.set_payload(encoded);
29818
29819        let mut response = self
29820            .client
29821            .sign_and_dispatch(request)
29822            .await
29823            .map_err(RusotoError::from)?;
29824        if response.status.is_success() {
29825            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29826            let result = proto::json::ResponsePayload::new(&response)
29827                .deserialize::<UpdateMitigationActionResponse, _>()?;
29828
29829            Ok(result)
29830        } else {
29831            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29832            Err(UpdateMitigationActionError::from_response(response))
29833        }
29834    }
29835
29836    /// <p>Updates a fleet provisioning template.</p>
29837    #[allow(unused_mut)]
29838    async fn update_provisioning_template(
29839        &self,
29840        input: UpdateProvisioningTemplateRequest,
29841    ) -> Result<UpdateProvisioningTemplateResponse, RusotoError<UpdateProvisioningTemplateError>>
29842    {
29843        let request_uri = format!(
29844            "/provisioning-templates/{template_name}",
29845            template_name = input.template_name
29846        );
29847
29848        let mut request = SignedRequest::new("PATCH", "execute-api", &self.region, &request_uri);
29849        request.set_content_type("application/x-amz-json-1.1".to_owned());
29850
29851        request.set_endpoint_prefix("iot".to_string());
29852        let encoded = Some(serde_json::to_vec(&input).unwrap());
29853        request.set_payload(encoded);
29854
29855        let mut response = self
29856            .client
29857            .sign_and_dispatch(request)
29858            .await
29859            .map_err(RusotoError::from)?;
29860        if response.status.is_success() {
29861            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29862            let result = proto::json::ResponsePayload::new(&response)
29863                .deserialize::<UpdateProvisioningTemplateResponse, _>()?;
29864
29865            Ok(result)
29866        } else {
29867            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29868            Err(UpdateProvisioningTemplateError::from_response(response))
29869        }
29870    }
29871
29872    /// <p>Updates a role alias.</p>
29873    #[allow(unused_mut)]
29874    async fn update_role_alias(
29875        &self,
29876        input: UpdateRoleAliasRequest,
29877    ) -> Result<UpdateRoleAliasResponse, RusotoError<UpdateRoleAliasError>> {
29878        let request_uri = format!("/role-aliases/{role_alias}", role_alias = input.role_alias);
29879
29880        let mut request = SignedRequest::new("PUT", "execute-api", &self.region, &request_uri);
29881        request.set_content_type("application/x-amz-json-1.1".to_owned());
29882
29883        request.set_endpoint_prefix("iot".to_string());
29884        let encoded = Some(serde_json::to_vec(&input).unwrap());
29885        request.set_payload(encoded);
29886
29887        let mut response = self
29888            .client
29889            .sign_and_dispatch(request)
29890            .await
29891            .map_err(RusotoError::from)?;
29892        if response.status.is_success() {
29893            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29894            let result = proto::json::ResponsePayload::new(&response)
29895                .deserialize::<UpdateRoleAliasResponse, _>()?;
29896
29897            Ok(result)
29898        } else {
29899            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29900            Err(UpdateRoleAliasError::from_response(response))
29901        }
29902    }
29903
29904    /// <p>Updates a scheduled audit, including which checks are performed and how often the audit takes place.</p>
29905    #[allow(unused_mut)]
29906    async fn update_scheduled_audit(
29907        &self,
29908        input: UpdateScheduledAuditRequest,
29909    ) -> Result<UpdateScheduledAuditResponse, RusotoError<UpdateScheduledAuditError>> {
29910        let request_uri = format!(
29911            "/audit/scheduledaudits/{scheduled_audit_name}",
29912            scheduled_audit_name = input.scheduled_audit_name
29913        );
29914
29915        let mut request = SignedRequest::new("PATCH", "execute-api", &self.region, &request_uri);
29916        request.set_content_type("application/x-amz-json-1.1".to_owned());
29917
29918        request.set_endpoint_prefix("iot".to_string());
29919        let encoded = Some(serde_json::to_vec(&input).unwrap());
29920        request.set_payload(encoded);
29921
29922        let mut response = self
29923            .client
29924            .sign_and_dispatch(request)
29925            .await
29926            .map_err(RusotoError::from)?;
29927        if response.status.is_success() {
29928            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29929            let result = proto::json::ResponsePayload::new(&response)
29930                .deserialize::<UpdateScheduledAuditResponse, _>()?;
29931
29932            Ok(result)
29933        } else {
29934            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29935            Err(UpdateScheduledAuditError::from_response(response))
29936        }
29937    }
29938
29939    /// <p>Updates a Device Defender security profile.</p>
29940    #[allow(unused_mut)]
29941    async fn update_security_profile(
29942        &self,
29943        input: UpdateSecurityProfileRequest,
29944    ) -> Result<UpdateSecurityProfileResponse, RusotoError<UpdateSecurityProfileError>> {
29945        let request_uri = format!(
29946            "/security-profiles/{security_profile_name}",
29947            security_profile_name = input.security_profile_name
29948        );
29949
29950        let mut request = SignedRequest::new("PATCH", "execute-api", &self.region, &request_uri);
29951        request.set_content_type("application/x-amz-json-1.1".to_owned());
29952
29953        request.set_endpoint_prefix("iot".to_string());
29954        let encoded = Some(serde_json::to_vec(&input).unwrap());
29955        request.set_payload(encoded);
29956
29957        let mut params = Params::new();
29958        if let Some(ref x) = input.expected_version {
29959            params.put("expectedVersion", x);
29960        }
29961        request.set_params(params);
29962
29963        let mut response = self
29964            .client
29965            .sign_and_dispatch(request)
29966            .await
29967            .map_err(RusotoError::from)?;
29968        if response.status.is_success() {
29969            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29970            let result = proto::json::ResponsePayload::new(&response)
29971                .deserialize::<UpdateSecurityProfileResponse, _>()?;
29972
29973            Ok(result)
29974        } else {
29975            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
29976            Err(UpdateSecurityProfileError::from_response(response))
29977        }
29978    }
29979
29980    /// <p>Updates an existing stream. The stream version will be incremented by one.</p>
29981    #[allow(unused_mut)]
29982    async fn update_stream(
29983        &self,
29984        input: UpdateStreamRequest,
29985    ) -> Result<UpdateStreamResponse, RusotoError<UpdateStreamError>> {
29986        let request_uri = format!("/streams/{stream_id}", stream_id = input.stream_id);
29987
29988        let mut request = SignedRequest::new("PUT", "execute-api", &self.region, &request_uri);
29989        request.set_content_type("application/x-amz-json-1.1".to_owned());
29990
29991        request.set_endpoint_prefix("iot".to_string());
29992        let encoded = Some(serde_json::to_vec(&input).unwrap());
29993        request.set_payload(encoded);
29994
29995        let mut response = self
29996            .client
29997            .sign_and_dispatch(request)
29998            .await
29999            .map_err(RusotoError::from)?;
30000        if response.status.is_success() {
30001            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
30002            let result = proto::json::ResponsePayload::new(&response)
30003                .deserialize::<UpdateStreamResponse, _>()?;
30004
30005            Ok(result)
30006        } else {
30007            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
30008            Err(UpdateStreamError::from_response(response))
30009        }
30010    }
30011
30012    /// <p>Updates the data for a thing.</p>
30013    #[allow(unused_mut)]
30014    async fn update_thing(
30015        &self,
30016        input: UpdateThingRequest,
30017    ) -> Result<UpdateThingResponse, RusotoError<UpdateThingError>> {
30018        let request_uri = format!("/things/{thing_name}", thing_name = input.thing_name);
30019
30020        let mut request = SignedRequest::new("PATCH", "execute-api", &self.region, &request_uri);
30021        request.set_content_type("application/x-amz-json-1.1".to_owned());
30022
30023        request.set_endpoint_prefix("iot".to_string());
30024        let encoded = Some(serde_json::to_vec(&input).unwrap());
30025        request.set_payload(encoded);
30026
30027        let mut response = self
30028            .client
30029            .sign_and_dispatch(request)
30030            .await
30031            .map_err(RusotoError::from)?;
30032        if response.status.is_success() {
30033            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
30034            let result = proto::json::ResponsePayload::new(&response)
30035                .deserialize::<UpdateThingResponse, _>()?;
30036
30037            Ok(result)
30038        } else {
30039            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
30040            Err(UpdateThingError::from_response(response))
30041        }
30042    }
30043
30044    /// <p>Update a thing group.</p>
30045    #[allow(unused_mut)]
30046    async fn update_thing_group(
30047        &self,
30048        input: UpdateThingGroupRequest,
30049    ) -> Result<UpdateThingGroupResponse, RusotoError<UpdateThingGroupError>> {
30050        let request_uri = format!(
30051            "/thing-groups/{thing_group_name}",
30052            thing_group_name = input.thing_group_name
30053        );
30054
30055        let mut request = SignedRequest::new("PATCH", "execute-api", &self.region, &request_uri);
30056        request.set_content_type("application/x-amz-json-1.1".to_owned());
30057
30058        request.set_endpoint_prefix("iot".to_string());
30059        let encoded = Some(serde_json::to_vec(&input).unwrap());
30060        request.set_payload(encoded);
30061
30062        let mut response = self
30063            .client
30064            .sign_and_dispatch(request)
30065            .await
30066            .map_err(RusotoError::from)?;
30067        if response.status.is_success() {
30068            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
30069            let result = proto::json::ResponsePayload::new(&response)
30070                .deserialize::<UpdateThingGroupResponse, _>()?;
30071
30072            Ok(result)
30073        } else {
30074            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
30075            Err(UpdateThingGroupError::from_response(response))
30076        }
30077    }
30078
30079    /// <p>Updates the groups to which the thing belongs.</p>
30080    #[allow(unused_mut)]
30081    async fn update_thing_groups_for_thing(
30082        &self,
30083        input: UpdateThingGroupsForThingRequest,
30084    ) -> Result<UpdateThingGroupsForThingResponse, RusotoError<UpdateThingGroupsForThingError>>
30085    {
30086        let request_uri = "/thing-groups/updateThingGroupsForThing";
30087
30088        let mut request = SignedRequest::new("PUT", "execute-api", &self.region, &request_uri);
30089        request.set_content_type("application/x-amz-json-1.1".to_owned());
30090
30091        request.set_endpoint_prefix("iot".to_string());
30092        let encoded = Some(serde_json::to_vec(&input).unwrap());
30093        request.set_payload(encoded);
30094
30095        let mut response = self
30096            .client
30097            .sign_and_dispatch(request)
30098            .await
30099            .map_err(RusotoError::from)?;
30100        if response.status.is_success() {
30101            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
30102            let result = proto::json::ResponsePayload::new(&response)
30103                .deserialize::<UpdateThingGroupsForThingResponse, _>()?;
30104
30105            Ok(result)
30106        } else {
30107            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
30108            Err(UpdateThingGroupsForThingError::from_response(response))
30109        }
30110    }
30111
30112    /// <p>Updates a topic rule destination. You use this to change the status, endpoint URL, or confirmation URL of the destination.</p>
30113    #[allow(unused_mut)]
30114    async fn update_topic_rule_destination(
30115        &self,
30116        input: UpdateTopicRuleDestinationRequest,
30117    ) -> Result<UpdateTopicRuleDestinationResponse, RusotoError<UpdateTopicRuleDestinationError>>
30118    {
30119        let request_uri = "/destinations";
30120
30121        let mut request = SignedRequest::new("PATCH", "execute-api", &self.region, &request_uri);
30122        request.set_content_type("application/x-amz-json-1.1".to_owned());
30123
30124        request.set_endpoint_prefix("iot".to_string());
30125        let encoded = Some(serde_json::to_vec(&input).unwrap());
30126        request.set_payload(encoded);
30127
30128        let mut response = self
30129            .client
30130            .sign_and_dispatch(request)
30131            .await
30132            .map_err(RusotoError::from)?;
30133        if response.status.is_success() {
30134            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
30135            let result = proto::json::ResponsePayload::new(&response)
30136                .deserialize::<UpdateTopicRuleDestinationResponse, _>()?;
30137
30138            Ok(result)
30139        } else {
30140            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
30141            Err(UpdateTopicRuleDestinationError::from_response(response))
30142        }
30143    }
30144
30145    /// <p>Validates a Device Defender security profile behaviors specification.</p>
30146    #[allow(unused_mut)]
30147    async fn validate_security_profile_behaviors(
30148        &self,
30149        input: ValidateSecurityProfileBehaviorsRequest,
30150    ) -> Result<
30151        ValidateSecurityProfileBehaviorsResponse,
30152        RusotoError<ValidateSecurityProfileBehaviorsError>,
30153    > {
30154        let request_uri = "/security-profile-behaviors/validate";
30155
30156        let mut request = SignedRequest::new("POST", "execute-api", &self.region, &request_uri);
30157        request.set_content_type("application/x-amz-json-1.1".to_owned());
30158
30159        request.set_endpoint_prefix("iot".to_string());
30160        let encoded = Some(serde_json::to_vec(&input).unwrap());
30161        request.set_payload(encoded);
30162
30163        let mut response = self
30164            .client
30165            .sign_and_dispatch(request)
30166            .await
30167            .map_err(RusotoError::from)?;
30168        if response.status.is_success() {
30169            let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
30170            let result = proto::json::ResponsePayload::new(&response)
30171                .deserialize::<ValidateSecurityProfileBehaviorsResponse, _>()?;
30172
30173            Ok(result)
30174        } else {
30175            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
30176            Err(ValidateSecurityProfileBehaviorsError::from_response(
30177                response,
30178            ))
30179        }
30180    }
30181}