rusoto_ssm/
generated.rs

1// =================================================================
2//
3//                           * WARNING *
4//
5//                    This file is generated!
6//
7//  Changes made to this file will be overwritten. If changes are
8//  required to the generated code, the service_crategen project
9//  must be updated to generate the changes.
10//
11// =================================================================
12
13use std::error::Error;
14use std::fmt;
15
16use async_trait::async_trait;
17use rusoto_core::credential::ProvideAwsCredentials;
18use rusoto_core::region;
19use rusoto_core::request::{BufferedHttpResponse, DispatchSignedRequest};
20use rusoto_core::{Client, RusotoError};
21
22use rusoto_core::proto;
23use rusoto_core::request::HttpResponse;
24use rusoto_core::signature::SignedRequest;
25#[allow(unused_imports)]
26use serde::{Deserialize, Serialize};
27
28impl SsmClient {
29    fn new_signed_request(&self, http_method: &str, request_uri: &str) -> SignedRequest {
30        let mut request = SignedRequest::new(http_method, "ssm", &self.region, request_uri);
31
32        request.set_content_type("application/x-amz-json-1.1".to_owned());
33
34        request
35    }
36
37    async fn sign_and_dispatch<E>(
38        &self,
39        request: SignedRequest,
40        from_response: fn(BufferedHttpResponse) -> RusotoError<E>,
41    ) -> Result<HttpResponse, RusotoError<E>> {
42        let mut response = self.client.sign_and_dispatch(request).await?;
43        if !response.status.is_success() {
44            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
45            return Err(from_response(response));
46        }
47
48        Ok(response)
49    }
50}
51
52use serde_json;
53/// <p>Information includes the AWS account ID where the current document is shared and the version shared with that account.</p>
54#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
55#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
56pub struct AccountSharingInfo {
57    /// <p>The AWS account ID where the current document is shared.</p>
58    #[serde(rename = "AccountId")]
59    #[serde(skip_serializing_if = "Option::is_none")]
60    pub account_id: Option<String>,
61    /// <p>The version of the current document shared with the account.</p>
62    #[serde(rename = "SharedDocumentVersion")]
63    #[serde(skip_serializing_if = "Option::is_none")]
64    pub shared_document_version: Option<String>,
65}
66
67/// <p>An activation registers one or more on-premises servers or virtual machines (VMs) with AWS so that you can configure those servers or VMs using Run Command. A server or VM that has been registered with AWS is called a managed instance.</p>
68#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
69#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
70pub struct Activation {
71    /// <p>The ID created by Systems Manager when you submitted the activation.</p>
72    #[serde(rename = "ActivationId")]
73    #[serde(skip_serializing_if = "Option::is_none")]
74    pub activation_id: Option<String>,
75    /// <p>The date the activation was created.</p>
76    #[serde(rename = "CreatedDate")]
77    #[serde(skip_serializing_if = "Option::is_none")]
78    pub created_date: Option<f64>,
79    /// <p>A name for the managed instance when it is created.</p>
80    #[serde(rename = "DefaultInstanceName")]
81    #[serde(skip_serializing_if = "Option::is_none")]
82    pub default_instance_name: Option<String>,
83    /// <p>A user defined description of the activation.</p>
84    #[serde(rename = "Description")]
85    #[serde(skip_serializing_if = "Option::is_none")]
86    pub description: Option<String>,
87    /// <p>The date when this activation can no longer be used to register managed instances.</p>
88    #[serde(rename = "ExpirationDate")]
89    #[serde(skip_serializing_if = "Option::is_none")]
90    pub expiration_date: Option<f64>,
91    /// <p>Whether or not the activation is expired.</p>
92    #[serde(rename = "Expired")]
93    #[serde(skip_serializing_if = "Option::is_none")]
94    pub expired: Option<bool>,
95    /// <p>The Amazon Identity and Access Management (IAM) role to assign to the managed instance.</p>
96    #[serde(rename = "IamRole")]
97    #[serde(skip_serializing_if = "Option::is_none")]
98    pub iam_role: Option<String>,
99    /// <p>The maximum number of managed instances that can be registered using this activation.</p>
100    #[serde(rename = "RegistrationLimit")]
101    #[serde(skip_serializing_if = "Option::is_none")]
102    pub registration_limit: Option<i64>,
103    /// <p>The number of managed instances already registered with this activation.</p>
104    #[serde(rename = "RegistrationsCount")]
105    #[serde(skip_serializing_if = "Option::is_none")]
106    pub registrations_count: Option<i64>,
107    /// <p>Tags assigned to the activation.</p>
108    #[serde(rename = "Tags")]
109    #[serde(skip_serializing_if = "Option::is_none")]
110    pub tags: Option<Vec<Tag>>,
111}
112
113#[derive(Clone, Debug, Default, PartialEq, Serialize)]
114#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
115pub struct AddTagsToResourceRequest {
116    /// <p><p>The resource ID you want to tag.</p> <p>Use the ID of the resource. Here are some examples:</p> <p>ManagedInstance: mi-012345abcde</p> <p>MaintenanceWindow: mw-012345abcde</p> <p>PatchBaseline: pb-012345abcde</p> <p>For the Document and Parameter values, use the name of the resource.</p> <note> <p>The ManagedInstance type for this API action is only for on-premises managed instances. You must specify the name of the managed instance in the following format: mi-ID_number. For example, mi-1a2b3c4d5e6f.</p> </note></p>
117    #[serde(rename = "ResourceId")]
118    pub resource_id: String,
119    /// <p><p>Specifies the type of resource you are tagging.</p> <note> <p>The ManagedInstance type for this API action is for on-premises managed instances. You must specify the name of the managed instance in the following format: mi-ID_number. For example, mi-1a2b3c4d5e6f.</p> </note></p>
120    #[serde(rename = "ResourceType")]
121    pub resource_type: String,
122    /// <p><p> One or more tags. The value parameter is required, but if you don&#39;t want the tag to have a value, specify the parameter with no value, and we set the value to an empty string. </p> <important> <p>Do not enter personally identifiable information in this field.</p> </important></p>
123    #[serde(rename = "Tags")]
124    pub tags: Vec<Tag>,
125}
126
127#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
128#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
129pub struct AddTagsToResourceResult {}
130
131/// <p>Describes an association of a Systems Manager document and an instance.</p>
132#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
133#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
134pub struct Association {
135    /// <p>The ID created by the system when you create an association. An association is a binding between a document and a set of targets with a schedule.</p>
136    #[serde(rename = "AssociationId")]
137    #[serde(skip_serializing_if = "Option::is_none")]
138    pub association_id: Option<String>,
139    /// <p>The association name.</p>
140    #[serde(rename = "AssociationName")]
141    #[serde(skip_serializing_if = "Option::is_none")]
142    pub association_name: Option<String>,
143    /// <p>The association version.</p>
144    #[serde(rename = "AssociationVersion")]
145    #[serde(skip_serializing_if = "Option::is_none")]
146    pub association_version: Option<String>,
147    /// <p>The version of the document used in the association.</p>
148    #[serde(rename = "DocumentVersion")]
149    #[serde(skip_serializing_if = "Option::is_none")]
150    pub document_version: Option<String>,
151    /// <p>The ID of the instance.</p>
152    #[serde(rename = "InstanceId")]
153    #[serde(skip_serializing_if = "Option::is_none")]
154    pub instance_id: Option<String>,
155    /// <p>The date on which the association was last run.</p>
156    #[serde(rename = "LastExecutionDate")]
157    #[serde(skip_serializing_if = "Option::is_none")]
158    pub last_execution_date: Option<f64>,
159    /// <p>The name of the Systems Manager document.</p>
160    #[serde(rename = "Name")]
161    #[serde(skip_serializing_if = "Option::is_none")]
162    pub name: Option<String>,
163    /// <p>Information about the association.</p>
164    #[serde(rename = "Overview")]
165    #[serde(skip_serializing_if = "Option::is_none")]
166    pub overview: Option<AssociationOverview>,
167    /// <p>A cron expression that specifies a schedule when the association runs.</p>
168    #[serde(rename = "ScheduleExpression")]
169    #[serde(skip_serializing_if = "Option::is_none")]
170    pub schedule_expression: Option<String>,
171    /// <p>The instances targeted by the request to create an association. </p>
172    #[serde(rename = "Targets")]
173    #[serde(skip_serializing_if = "Option::is_none")]
174    pub targets: Option<Vec<Target>>,
175}
176
177/// <p>Describes the parameters for a document.</p>
178#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
179#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
180pub struct AssociationDescription {
181    /// <p>By default, when you create a new associations, the system runs it immediately after it is created and then according to the schedule you specified. Specify this option if you don't want an association to run immediately after you create it.</p>
182    #[serde(rename = "ApplyOnlyAtCronInterval")]
183    #[serde(skip_serializing_if = "Option::is_none")]
184    pub apply_only_at_cron_interval: Option<bool>,
185    /// <p>The association ID.</p>
186    #[serde(rename = "AssociationId")]
187    #[serde(skip_serializing_if = "Option::is_none")]
188    pub association_id: Option<String>,
189    /// <p>The association name.</p>
190    #[serde(rename = "AssociationName")]
191    #[serde(skip_serializing_if = "Option::is_none")]
192    pub association_name: Option<String>,
193    /// <p>The association version.</p>
194    #[serde(rename = "AssociationVersion")]
195    #[serde(skip_serializing_if = "Option::is_none")]
196    pub association_version: Option<String>,
197    /// <p>Specify the target for the association. This target is required for associations that use an Automation document and target resources by using rate controls.</p>
198    #[serde(rename = "AutomationTargetParameterName")]
199    #[serde(skip_serializing_if = "Option::is_none")]
200    pub automation_target_parameter_name: Option<String>,
201    /// <p>The severity level that is assigned to the association.</p>
202    #[serde(rename = "ComplianceSeverity")]
203    #[serde(skip_serializing_if = "Option::is_none")]
204    pub compliance_severity: Option<String>,
205    /// <p>The date when the association was made.</p>
206    #[serde(rename = "Date")]
207    #[serde(skip_serializing_if = "Option::is_none")]
208    pub date: Option<f64>,
209    /// <p>The document version.</p>
210    #[serde(rename = "DocumentVersion")]
211    #[serde(skip_serializing_if = "Option::is_none")]
212    pub document_version: Option<String>,
213    /// <p>The ID of the instance.</p>
214    #[serde(rename = "InstanceId")]
215    #[serde(skip_serializing_if = "Option::is_none")]
216    pub instance_id: Option<String>,
217    /// <p>The date on which the association was last run.</p>
218    #[serde(rename = "LastExecutionDate")]
219    #[serde(skip_serializing_if = "Option::is_none")]
220    pub last_execution_date: Option<f64>,
221    /// <p>The last date on which the association was successfully run.</p>
222    #[serde(rename = "LastSuccessfulExecutionDate")]
223    #[serde(skip_serializing_if = "Option::is_none")]
224    pub last_successful_execution_date: Option<f64>,
225    /// <p>The date when the association was last updated.</p>
226    #[serde(rename = "LastUpdateAssociationDate")]
227    #[serde(skip_serializing_if = "Option::is_none")]
228    pub last_update_association_date: Option<f64>,
229    /// <p>The maximum number of targets allowed to run the association at the same time. You can specify a number, for example 10, or a percentage of the target set, for example 10%. The default value is 100%, which means all targets run the association at the same time.</p> <p>If a new instance starts and attempts to run an association while Systems Manager is running MaxConcurrency associations, the association is allowed to run. During the next association interval, the new instance will process its association within the limit specified for MaxConcurrency.</p>
230    #[serde(rename = "MaxConcurrency")]
231    #[serde(skip_serializing_if = "Option::is_none")]
232    pub max_concurrency: Option<String>,
233    /// <p>The number of errors that are allowed before the system stops sending requests to run the association on additional targets. You can specify either an absolute number of errors, for example 10, or a percentage of the target set, for example 10%. If you specify 3, for example, the system stops sending requests when the fourth error is received. If you specify 0, then the system stops sending requests after the first error is returned. If you run an association on 50 instances and set MaxError to 10%, then the system stops sending the request when the sixth error is received.</p> <p>Executions that are already running an association when MaxErrors is reached are allowed to complete, but some of these executions may fail as well. If you need to ensure that there won't be more than max-errors failed executions, set MaxConcurrency to 1 so that executions proceed one at a time.</p>
234    #[serde(rename = "MaxErrors")]
235    #[serde(skip_serializing_if = "Option::is_none")]
236    pub max_errors: Option<String>,
237    /// <p>The name of the Systems Manager document.</p>
238    #[serde(rename = "Name")]
239    #[serde(skip_serializing_if = "Option::is_none")]
240    pub name: Option<String>,
241    /// <p>An S3 bucket where you want to store the output details of the request.</p>
242    #[serde(rename = "OutputLocation")]
243    #[serde(skip_serializing_if = "Option::is_none")]
244    pub output_location: Option<InstanceAssociationOutputLocation>,
245    /// <p>Information about the association.</p>
246    #[serde(rename = "Overview")]
247    #[serde(skip_serializing_if = "Option::is_none")]
248    pub overview: Option<AssociationOverview>,
249    /// <p>A description of the parameters for a document. </p>
250    #[serde(rename = "Parameters")]
251    #[serde(skip_serializing_if = "Option::is_none")]
252    pub parameters: Option<::std::collections::HashMap<String, Vec<String>>>,
253    /// <p>A cron expression that specifies a schedule when the association runs.</p>
254    #[serde(rename = "ScheduleExpression")]
255    #[serde(skip_serializing_if = "Option::is_none")]
256    pub schedule_expression: Option<String>,
257    /// <p>The association status.</p>
258    #[serde(rename = "Status")]
259    #[serde(skip_serializing_if = "Option::is_none")]
260    pub status: Option<AssociationStatus>,
261    /// <p>The mode for generating association compliance. You can specify <code>AUTO</code> or <code>MANUAL</code>. In <code>AUTO</code> mode, the system uses the status of the association execution to determine the compliance status. If the association execution runs successfully, then the association is <code>COMPLIANT</code>. If the association execution doesn't run successfully, the association is <code>NON-COMPLIANT</code>.</p> <p>In <code>MANUAL</code> mode, you must specify the <code>AssociationId</code> as a parameter for the <a>PutComplianceItems</a> API action. In this case, compliance data is not managed by State Manager. It is managed by your direct call to the <a>PutComplianceItems</a> API action.</p> <p>By default, all associations use <code>AUTO</code> mode.</p>
262    #[serde(rename = "SyncCompliance")]
263    #[serde(skip_serializing_if = "Option::is_none")]
264    pub sync_compliance: Option<String>,
265    /// <p>The instances targeted by the request. </p>
266    #[serde(rename = "Targets")]
267    #[serde(skip_serializing_if = "Option::is_none")]
268    pub targets: Option<Vec<Target>>,
269}
270
271/// <p>Includes information about the specified association.</p>
272#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
273#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
274pub struct AssociationExecution {
275    /// <p>The association ID.</p>
276    #[serde(rename = "AssociationId")]
277    #[serde(skip_serializing_if = "Option::is_none")]
278    pub association_id: Option<String>,
279    /// <p>The association version.</p>
280    #[serde(rename = "AssociationVersion")]
281    #[serde(skip_serializing_if = "Option::is_none")]
282    pub association_version: Option<String>,
283    /// <p>The time the execution started.</p>
284    #[serde(rename = "CreatedTime")]
285    #[serde(skip_serializing_if = "Option::is_none")]
286    pub created_time: Option<f64>,
287    /// <p>Detailed status information about the execution.</p>
288    #[serde(rename = "DetailedStatus")]
289    #[serde(skip_serializing_if = "Option::is_none")]
290    pub detailed_status: Option<String>,
291    /// <p>The execution ID for the association.</p>
292    #[serde(rename = "ExecutionId")]
293    #[serde(skip_serializing_if = "Option::is_none")]
294    pub execution_id: Option<String>,
295    /// <p>The date of the last execution.</p>
296    #[serde(rename = "LastExecutionDate")]
297    #[serde(skip_serializing_if = "Option::is_none")]
298    pub last_execution_date: Option<f64>,
299    /// <p>An aggregate status of the resources in the execution based on the status type.</p>
300    #[serde(rename = "ResourceCountByStatus")]
301    #[serde(skip_serializing_if = "Option::is_none")]
302    pub resource_count_by_status: Option<String>,
303    /// <p>The status of the association execution.</p>
304    #[serde(rename = "Status")]
305    #[serde(skip_serializing_if = "Option::is_none")]
306    pub status: Option<String>,
307}
308
309/// <p>Filters used in the request.</p>
310#[derive(Clone, Debug, Default, PartialEq, Serialize)]
311#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
312pub struct AssociationExecutionFilter {
313    /// <p>The key value used in the request.</p>
314    #[serde(rename = "Key")]
315    pub key: String,
316    /// <p>The filter type specified in the request.</p>
317    #[serde(rename = "Type")]
318    pub type_: String,
319    /// <p>The value specified for the key.</p>
320    #[serde(rename = "Value")]
321    pub value: String,
322}
323
324/// <p>Includes information about the specified association execution.</p>
325#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
326#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
327pub struct AssociationExecutionTarget {
328    /// <p>The association ID.</p>
329    #[serde(rename = "AssociationId")]
330    #[serde(skip_serializing_if = "Option::is_none")]
331    pub association_id: Option<String>,
332    /// <p>The association version.</p>
333    #[serde(rename = "AssociationVersion")]
334    #[serde(skip_serializing_if = "Option::is_none")]
335    pub association_version: Option<String>,
336    /// <p>Detailed information about the execution status.</p>
337    #[serde(rename = "DetailedStatus")]
338    #[serde(skip_serializing_if = "Option::is_none")]
339    pub detailed_status: Option<String>,
340    /// <p>The execution ID.</p>
341    #[serde(rename = "ExecutionId")]
342    #[serde(skip_serializing_if = "Option::is_none")]
343    pub execution_id: Option<String>,
344    /// <p>The date of the last execution.</p>
345    #[serde(rename = "LastExecutionDate")]
346    #[serde(skip_serializing_if = "Option::is_none")]
347    pub last_execution_date: Option<f64>,
348    /// <p>The location where the association details are saved.</p>
349    #[serde(rename = "OutputSource")]
350    #[serde(skip_serializing_if = "Option::is_none")]
351    pub output_source: Option<OutputSource>,
352    /// <p>The resource ID, for example, the instance ID where the association ran.</p>
353    #[serde(rename = "ResourceId")]
354    #[serde(skip_serializing_if = "Option::is_none")]
355    pub resource_id: Option<String>,
356    /// <p>The resource type, for example, instance.</p>
357    #[serde(rename = "ResourceType")]
358    #[serde(skip_serializing_if = "Option::is_none")]
359    pub resource_type: Option<String>,
360    /// <p>The association execution status.</p>
361    #[serde(rename = "Status")]
362    #[serde(skip_serializing_if = "Option::is_none")]
363    pub status: Option<String>,
364}
365
366/// <p>Filters for the association execution.</p>
367#[derive(Clone, Debug, Default, PartialEq, Serialize)]
368#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
369pub struct AssociationExecutionTargetsFilter {
370    /// <p>The key value used in the request.</p>
371    #[serde(rename = "Key")]
372    pub key: String,
373    /// <p>The value specified for the key.</p>
374    #[serde(rename = "Value")]
375    pub value: String,
376}
377
378/// <p>Describes a filter.</p>
379#[derive(Clone, Debug, Default, PartialEq, Serialize)]
380#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
381pub struct AssociationFilter {
382    /// <p>The name of the filter.</p>
383    #[serde(rename = "key")]
384    pub key: String,
385    /// <p>The filter value.</p>
386    #[serde(rename = "value")]
387    pub value: String,
388}
389
390/// <p>Information about the association.</p>
391#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
392#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
393pub struct AssociationOverview {
394    /// <p>Returns the number of targets for the association status. For example, if you created an association with two instances, and one of them was successful, this would return the count of instances by status.</p>
395    #[serde(rename = "AssociationStatusAggregatedCount")]
396    #[serde(skip_serializing_if = "Option::is_none")]
397    pub association_status_aggregated_count: Option<::std::collections::HashMap<String, i64>>,
398    /// <p>A detailed status of the association.</p>
399    #[serde(rename = "DetailedStatus")]
400    #[serde(skip_serializing_if = "Option::is_none")]
401    pub detailed_status: Option<String>,
402    /// <p>The status of the association. Status can be: Pending, Success, or Failed.</p>
403    #[serde(rename = "Status")]
404    #[serde(skip_serializing_if = "Option::is_none")]
405    pub status: Option<String>,
406}
407
408/// <p>Describes an association status.</p>
409#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
410pub struct AssociationStatus {
411    /// <p>A user-defined string.</p>
412    #[serde(rename = "AdditionalInfo")]
413    #[serde(skip_serializing_if = "Option::is_none")]
414    pub additional_info: Option<String>,
415    /// <p>The date when the status changed.</p>
416    #[serde(rename = "Date")]
417    pub date: f64,
418    /// <p>The reason for the status.</p>
419    #[serde(rename = "Message")]
420    pub message: String,
421    /// <p>The status.</p>
422    #[serde(rename = "Name")]
423    pub name: String,
424}
425
426/// <p>Information about the association version.</p>
427#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
428#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
429pub struct AssociationVersionInfo {
430    /// <p>By default, when you create a new associations, the system runs it immediately after it is created and then according to the schedule you specified. Specify this option if you don't want an association to run immediately after you create it.</p>
431    #[serde(rename = "ApplyOnlyAtCronInterval")]
432    #[serde(skip_serializing_if = "Option::is_none")]
433    pub apply_only_at_cron_interval: Option<bool>,
434    /// <p>The ID created by the system when the association was created.</p>
435    #[serde(rename = "AssociationId")]
436    #[serde(skip_serializing_if = "Option::is_none")]
437    pub association_id: Option<String>,
438    /// <p>The name specified for the association version when the association version was created.</p>
439    #[serde(rename = "AssociationName")]
440    #[serde(skip_serializing_if = "Option::is_none")]
441    pub association_name: Option<String>,
442    /// <p>The association version.</p>
443    #[serde(rename = "AssociationVersion")]
444    #[serde(skip_serializing_if = "Option::is_none")]
445    pub association_version: Option<String>,
446    /// <p>The severity level that is assigned to the association.</p>
447    #[serde(rename = "ComplianceSeverity")]
448    #[serde(skip_serializing_if = "Option::is_none")]
449    pub compliance_severity: Option<String>,
450    /// <p>The date the association version was created.</p>
451    #[serde(rename = "CreatedDate")]
452    #[serde(skip_serializing_if = "Option::is_none")]
453    pub created_date: Option<f64>,
454    /// <p>The version of a Systems Manager document used when the association version was created.</p>
455    #[serde(rename = "DocumentVersion")]
456    #[serde(skip_serializing_if = "Option::is_none")]
457    pub document_version: Option<String>,
458    /// <p>The maximum number of targets allowed to run the association at the same time. You can specify a number, for example 10, or a percentage of the target set, for example 10%. The default value is 100%, which means all targets run the association at the same time.</p> <p>If a new instance starts and attempts to run an association while Systems Manager is running MaxConcurrency associations, the association is allowed to run. During the next association interval, the new instance will process its association within the limit specified for MaxConcurrency.</p>
459    #[serde(rename = "MaxConcurrency")]
460    #[serde(skip_serializing_if = "Option::is_none")]
461    pub max_concurrency: Option<String>,
462    /// <p>The number of errors that are allowed before the system stops sending requests to run the association on additional targets. You can specify either an absolute number of errors, for example 10, or a percentage of the target set, for example 10%. If you specify 3, for example, the system stops sending requests when the fourth error is received. If you specify 0, then the system stops sending requests after the first error is returned. If you run an association on 50 instances and set MaxError to 10%, then the system stops sending the request when the sixth error is received.</p> <p>Executions that are already running an association when MaxErrors is reached are allowed to complete, but some of these executions may fail as well. If you need to ensure that there won't be more than max-errors failed executions, set MaxConcurrency to 1 so that executions proceed one at a time.</p>
463    #[serde(rename = "MaxErrors")]
464    #[serde(skip_serializing_if = "Option::is_none")]
465    pub max_errors: Option<String>,
466    /// <p>The name specified when the association was created.</p>
467    #[serde(rename = "Name")]
468    #[serde(skip_serializing_if = "Option::is_none")]
469    pub name: Option<String>,
470    /// <p>The location in Amazon S3 specified for the association when the association version was created.</p>
471    #[serde(rename = "OutputLocation")]
472    #[serde(skip_serializing_if = "Option::is_none")]
473    pub output_location: Option<InstanceAssociationOutputLocation>,
474    /// <p>Parameters specified when the association version was created.</p>
475    #[serde(rename = "Parameters")]
476    #[serde(skip_serializing_if = "Option::is_none")]
477    pub parameters: Option<::std::collections::HashMap<String, Vec<String>>>,
478    /// <p>The cron or rate schedule specified for the association when the association version was created.</p>
479    #[serde(rename = "ScheduleExpression")]
480    #[serde(skip_serializing_if = "Option::is_none")]
481    pub schedule_expression: Option<String>,
482    /// <p>The mode for generating association compliance. You can specify <code>AUTO</code> or <code>MANUAL</code>. In <code>AUTO</code> mode, the system uses the status of the association execution to determine the compliance status. If the association execution runs successfully, then the association is <code>COMPLIANT</code>. If the association execution doesn't run successfully, the association is <code>NON-COMPLIANT</code>.</p> <p>In <code>MANUAL</code> mode, you must specify the <code>AssociationId</code> as a parameter for the <a>PutComplianceItems</a> API action. In this case, compliance data is not managed by State Manager. It is managed by your direct call to the <a>PutComplianceItems</a> API action.</p> <p>By default, all associations use <code>AUTO</code> mode.</p>
483    #[serde(rename = "SyncCompliance")]
484    #[serde(skip_serializing_if = "Option::is_none")]
485    pub sync_compliance: Option<String>,
486    /// <p>The targets specified for the association when the association version was created. </p>
487    #[serde(rename = "Targets")]
488    #[serde(skip_serializing_if = "Option::is_none")]
489    pub targets: Option<Vec<Target>>,
490}
491
492/// <p>A structure that includes attributes that describe a document attachment.</p>
493#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
494#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
495pub struct AttachmentContent {
496    /// <p>The cryptographic hash value of the document content.</p>
497    #[serde(rename = "Hash")]
498    #[serde(skip_serializing_if = "Option::is_none")]
499    pub hash: Option<String>,
500    /// <p>The hash algorithm used to calculate the hash value.</p>
501    #[serde(rename = "HashType")]
502    #[serde(skip_serializing_if = "Option::is_none")]
503    pub hash_type: Option<String>,
504    /// <p>The name of an attachment.</p>
505    #[serde(rename = "Name")]
506    #[serde(skip_serializing_if = "Option::is_none")]
507    pub name: Option<String>,
508    /// <p>The size of an attachment in bytes.</p>
509    #[serde(rename = "Size")]
510    #[serde(skip_serializing_if = "Option::is_none")]
511    pub size: Option<i64>,
512    /// <p>The URL location of the attachment content.</p>
513    #[serde(rename = "Url")]
514    #[serde(skip_serializing_if = "Option::is_none")]
515    pub url: Option<String>,
516}
517
518/// <p>An attribute of an attachment, such as the attachment name.</p>
519#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
520#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
521pub struct AttachmentInformation {
522    /// <p>The name of the attachment.</p>
523    #[serde(rename = "Name")]
524    #[serde(skip_serializing_if = "Option::is_none")]
525    pub name: Option<String>,
526}
527
528/// <p>Identifying information about a document attachment, including the file name and a key-value pair that identifies the location of an attachment to a document.</p>
529#[derive(Clone, Debug, Default, PartialEq, Serialize)]
530#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
531pub struct AttachmentsSource {
532    /// <p>The key of a key-value pair that identifies the location of an attachment to a document.</p>
533    #[serde(rename = "Key")]
534    #[serde(skip_serializing_if = "Option::is_none")]
535    pub key: Option<String>,
536    /// <p>The name of the document attachment file.</p>
537    #[serde(rename = "Name")]
538    #[serde(skip_serializing_if = "Option::is_none")]
539    pub name: Option<String>,
540    /// <p><p>The value of a key-value pair that identifies the location of an attachment to a document. The format for <b>Value</b> depends on the type of key you specify.</p> <ul> <li> <p>For the key <i>SourceUrl</i>, the value is an S3 bucket location. For example:</p> <p> <code>&quot;Values&quot;: [ &quot;s3://my-bucket/my-folder&quot; ]</code> </p> </li> <li> <p>For the key <i>S3FileUrl</i>, the value is a file in an S3 bucket. For example:</p> <p> <code>&quot;Values&quot;: [ &quot;s3://my-bucket/my-folder/my-file.py&quot; ]</code> </p> </li> <li> <p>For the key <i>AttachmentReference</i>, the value is constructed from the name of another SSM document in your account, a version number of that document, and a file attached to that document version that you want to reuse. For example:</p> <p> <code>&quot;Values&quot;: [ &quot;MyOtherDocument/3/my-other-file.py&quot; ]</code> </p> <p>However, if the SSM document is shared with you from another account, the full SSM document ARN must be specified instead of the document name only. For example:</p> <p> <code>&quot;Values&quot;: [ &quot;arn:aws:ssm:us-east-2:111122223333:document/OtherAccountDocument/3/their-file.py&quot; ]</code> </p> </li> </ul></p>
541    #[serde(rename = "Values")]
542    #[serde(skip_serializing_if = "Option::is_none")]
543    pub values: Option<Vec<String>>,
544}
545
546/// <p>Detailed information about the current state of an individual Automation execution.</p>
547#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
548#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
549pub struct AutomationExecution {
550    /// <p>The execution ID.</p>
551    #[serde(rename = "AutomationExecutionId")]
552    #[serde(skip_serializing_if = "Option::is_none")]
553    pub automation_execution_id: Option<String>,
554    /// <p>The execution status of the Automation.</p>
555    #[serde(rename = "AutomationExecutionStatus")]
556    #[serde(skip_serializing_if = "Option::is_none")]
557    pub automation_execution_status: Option<String>,
558    /// <p>The action of the step that is currently running.</p>
559    #[serde(rename = "CurrentAction")]
560    #[serde(skip_serializing_if = "Option::is_none")]
561    pub current_action: Option<String>,
562    /// <p>The name of the step that is currently running.</p>
563    #[serde(rename = "CurrentStepName")]
564    #[serde(skip_serializing_if = "Option::is_none")]
565    pub current_step_name: Option<String>,
566    /// <p>The name of the Automation document used during the execution.</p>
567    #[serde(rename = "DocumentName")]
568    #[serde(skip_serializing_if = "Option::is_none")]
569    pub document_name: Option<String>,
570    /// <p>The version of the document to use during execution.</p>
571    #[serde(rename = "DocumentVersion")]
572    #[serde(skip_serializing_if = "Option::is_none")]
573    pub document_version: Option<String>,
574    /// <p>The Amazon Resource Name (ARN) of the user who ran the automation.</p>
575    #[serde(rename = "ExecutedBy")]
576    #[serde(skip_serializing_if = "Option::is_none")]
577    pub executed_by: Option<String>,
578    /// <p>The time the execution finished.</p>
579    #[serde(rename = "ExecutionEndTime")]
580    #[serde(skip_serializing_if = "Option::is_none")]
581    pub execution_end_time: Option<f64>,
582    /// <p>The time the execution started.</p>
583    #[serde(rename = "ExecutionStartTime")]
584    #[serde(skip_serializing_if = "Option::is_none")]
585    pub execution_start_time: Option<f64>,
586    /// <p>A message describing why an execution has failed, if the status is set to Failed.</p>
587    #[serde(rename = "FailureMessage")]
588    #[serde(skip_serializing_if = "Option::is_none")]
589    pub failure_message: Option<String>,
590    /// <p>The MaxConcurrency value specified by the user when the execution started.</p>
591    #[serde(rename = "MaxConcurrency")]
592    #[serde(skip_serializing_if = "Option::is_none")]
593    pub max_concurrency: Option<String>,
594    /// <p>The MaxErrors value specified by the user when the execution started.</p>
595    #[serde(rename = "MaxErrors")]
596    #[serde(skip_serializing_if = "Option::is_none")]
597    pub max_errors: Option<String>,
598    /// <p>The automation execution mode.</p>
599    #[serde(rename = "Mode")]
600    #[serde(skip_serializing_if = "Option::is_none")]
601    pub mode: Option<String>,
602    /// <p>The list of execution outputs as defined in the automation document.</p>
603    #[serde(rename = "Outputs")]
604    #[serde(skip_serializing_if = "Option::is_none")]
605    pub outputs: Option<::std::collections::HashMap<String, Vec<String>>>,
606    /// <p>The key-value map of execution parameters, which were supplied when calling StartAutomationExecution.</p>
607    #[serde(rename = "Parameters")]
608    #[serde(skip_serializing_if = "Option::is_none")]
609    pub parameters: Option<::std::collections::HashMap<String, Vec<String>>>,
610    /// <p>The AutomationExecutionId of the parent automation.</p>
611    #[serde(rename = "ParentAutomationExecutionId")]
612    #[serde(skip_serializing_if = "Option::is_none")]
613    pub parent_automation_execution_id: Option<String>,
614    /// <p>An aggregate of step execution statuses displayed in the AWS Console for a multi-Region and multi-account Automation execution.</p>
615    #[serde(rename = "ProgressCounters")]
616    #[serde(skip_serializing_if = "Option::is_none")]
617    pub progress_counters: Option<ProgressCounters>,
618    /// <p>A list of resolved targets in the rate control execution.</p>
619    #[serde(rename = "ResolvedTargets")]
620    #[serde(skip_serializing_if = "Option::is_none")]
621    pub resolved_targets: Option<ResolvedTargets>,
622    /// <p>A list of details about the current state of all steps that comprise an execution. An Automation document contains a list of steps that are run in order.</p>
623    #[serde(rename = "StepExecutions")]
624    #[serde(skip_serializing_if = "Option::is_none")]
625    pub step_executions: Option<Vec<StepExecution>>,
626    /// <p>A boolean value that indicates if the response contains the full list of the Automation step executions. If true, use the DescribeAutomationStepExecutions API action to get the full list of step executions.</p>
627    #[serde(rename = "StepExecutionsTruncated")]
628    #[serde(skip_serializing_if = "Option::is_none")]
629    pub step_executions_truncated: Option<bool>,
630    /// <p>The target of the execution.</p>
631    #[serde(rename = "Target")]
632    #[serde(skip_serializing_if = "Option::is_none")]
633    pub target: Option<String>,
634    /// <p>The combination of AWS Regions and/or AWS accounts where you want to run the Automation.</p>
635    #[serde(rename = "TargetLocations")]
636    #[serde(skip_serializing_if = "Option::is_none")]
637    pub target_locations: Option<Vec<TargetLocation>>,
638    /// <p>The specified key-value mapping of document parameters to target resources.</p>
639    #[serde(rename = "TargetMaps")]
640    #[serde(skip_serializing_if = "Option::is_none")]
641    pub target_maps: Option<Vec<::std::collections::HashMap<String, Vec<String>>>>,
642    /// <p>The parameter name.</p>
643    #[serde(rename = "TargetParameterName")]
644    #[serde(skip_serializing_if = "Option::is_none")]
645    pub target_parameter_name: Option<String>,
646    /// <p>The specified targets.</p>
647    #[serde(rename = "Targets")]
648    #[serde(skip_serializing_if = "Option::is_none")]
649    pub targets: Option<Vec<Target>>,
650}
651
652/// <p>A filter used to match specific automation executions. This is used to limit the scope of Automation execution information returned.</p>
653#[derive(Clone, Debug, Default, PartialEq, Serialize)]
654#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
655pub struct AutomationExecutionFilter {
656    /// <p>One or more keys to limit the results. Valid filter keys include the following: DocumentNamePrefix, ExecutionStatus, ExecutionId, ParentExecutionId, CurrentAction, StartTimeBefore, StartTimeAfter.</p>
657    #[serde(rename = "Key")]
658    pub key: String,
659    /// <p>The values used to limit the execution information associated with the filter's key.</p>
660    #[serde(rename = "Values")]
661    pub values: Vec<String>,
662}
663
664/// <p>Details about a specific Automation execution.</p>
665#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
666#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
667pub struct AutomationExecutionMetadata {
668    /// <p>The execution ID.</p>
669    #[serde(rename = "AutomationExecutionId")]
670    #[serde(skip_serializing_if = "Option::is_none")]
671    pub automation_execution_id: Option<String>,
672    /// <p>The status of the execution.</p>
673    #[serde(rename = "AutomationExecutionStatus")]
674    #[serde(skip_serializing_if = "Option::is_none")]
675    pub automation_execution_status: Option<String>,
676    /// <p>Use this filter with <a>DescribeAutomationExecutions</a>. Specify either Local or CrossAccount. CrossAccount is an Automation that runs in multiple AWS Regions and accounts. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-automation-multiple-accounts-and-regions.html">Running Automation workflows in multiple AWS Regions and accounts</a> in the <i>AWS Systems Manager User Guide</i>. </p>
677    #[serde(rename = "AutomationType")]
678    #[serde(skip_serializing_if = "Option::is_none")]
679    pub automation_type: Option<String>,
680    /// <p>The action of the step that is currently running.</p>
681    #[serde(rename = "CurrentAction")]
682    #[serde(skip_serializing_if = "Option::is_none")]
683    pub current_action: Option<String>,
684    /// <p>The name of the step that is currently running.</p>
685    #[serde(rename = "CurrentStepName")]
686    #[serde(skip_serializing_if = "Option::is_none")]
687    pub current_step_name: Option<String>,
688    /// <p>The name of the Automation document used during execution.</p>
689    #[serde(rename = "DocumentName")]
690    #[serde(skip_serializing_if = "Option::is_none")]
691    pub document_name: Option<String>,
692    /// <p>The document version used during the execution.</p>
693    #[serde(rename = "DocumentVersion")]
694    #[serde(skip_serializing_if = "Option::is_none")]
695    pub document_version: Option<String>,
696    /// <p>The IAM role ARN of the user who ran the Automation.</p>
697    #[serde(rename = "ExecutedBy")]
698    #[serde(skip_serializing_if = "Option::is_none")]
699    pub executed_by: Option<String>,
700    /// <p>The time the execution finished. This is not populated if the execution is still in progress.</p>
701    #[serde(rename = "ExecutionEndTime")]
702    #[serde(skip_serializing_if = "Option::is_none")]
703    pub execution_end_time: Option<f64>,
704    /// <p>The time the execution started.</p>
705    #[serde(rename = "ExecutionStartTime")]
706    #[serde(skip_serializing_if = "Option::is_none")]
707    pub execution_start_time: Option<f64>,
708    /// <p>The list of execution outputs as defined in the Automation document.</p>
709    #[serde(rename = "FailureMessage")]
710    #[serde(skip_serializing_if = "Option::is_none")]
711    pub failure_message: Option<String>,
712    /// <p>An S3 bucket where execution information is stored.</p>
713    #[serde(rename = "LogFile")]
714    #[serde(skip_serializing_if = "Option::is_none")]
715    pub log_file: Option<String>,
716    /// <p>The MaxConcurrency value specified by the user when starting the Automation.</p>
717    #[serde(rename = "MaxConcurrency")]
718    #[serde(skip_serializing_if = "Option::is_none")]
719    pub max_concurrency: Option<String>,
720    /// <p>The MaxErrors value specified by the user when starting the Automation.</p>
721    #[serde(rename = "MaxErrors")]
722    #[serde(skip_serializing_if = "Option::is_none")]
723    pub max_errors: Option<String>,
724    /// <p>The Automation execution mode.</p>
725    #[serde(rename = "Mode")]
726    #[serde(skip_serializing_if = "Option::is_none")]
727    pub mode: Option<String>,
728    /// <p>The list of execution outputs as defined in the Automation document.</p>
729    #[serde(rename = "Outputs")]
730    #[serde(skip_serializing_if = "Option::is_none")]
731    pub outputs: Option<::std::collections::HashMap<String, Vec<String>>>,
732    /// <p>The ExecutionId of the parent Automation.</p>
733    #[serde(rename = "ParentAutomationExecutionId")]
734    #[serde(skip_serializing_if = "Option::is_none")]
735    pub parent_automation_execution_id: Option<String>,
736    /// <p>A list of targets that resolved during the execution.</p>
737    #[serde(rename = "ResolvedTargets")]
738    #[serde(skip_serializing_if = "Option::is_none")]
739    pub resolved_targets: Option<ResolvedTargets>,
740    /// <p>The list of execution outputs as defined in the Automation document.</p>
741    #[serde(rename = "Target")]
742    #[serde(skip_serializing_if = "Option::is_none")]
743    pub target: Option<String>,
744    /// <p>The specified key-value mapping of document parameters to target resources.</p>
745    #[serde(rename = "TargetMaps")]
746    #[serde(skip_serializing_if = "Option::is_none")]
747    pub target_maps: Option<Vec<::std::collections::HashMap<String, Vec<String>>>>,
748    /// <p>The list of execution outputs as defined in the Automation document.</p>
749    #[serde(rename = "TargetParameterName")]
750    #[serde(skip_serializing_if = "Option::is_none")]
751    pub target_parameter_name: Option<String>,
752    /// <p>The targets defined by the user when starting the Automation.</p>
753    #[serde(rename = "Targets")]
754    #[serde(skip_serializing_if = "Option::is_none")]
755    pub targets: Option<Vec<Target>>,
756}
757
758/// <p><p/></p>
759#[derive(Clone, Debug, Default, PartialEq, Serialize)]
760#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
761pub struct CancelCommandRequest {
762    /// <p>The ID of the command you want to cancel.</p>
763    #[serde(rename = "CommandId")]
764    pub command_id: String,
765    /// <p>(Optional) A list of instance IDs on which you want to cancel the command. If not provided, the command is canceled on every instance on which it was requested.</p>
766    #[serde(rename = "InstanceIds")]
767    #[serde(skip_serializing_if = "Option::is_none")]
768    pub instance_ids: Option<Vec<String>>,
769}
770
771/// <p>Whether or not the command was successfully canceled. There is no guarantee that a request can be canceled.</p>
772#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
773#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
774pub struct CancelCommandResult {}
775
776#[derive(Clone, Debug, Default, PartialEq, Serialize)]
777#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
778pub struct CancelMaintenanceWindowExecutionRequest {
779    /// <p>The ID of the maintenance window execution to stop.</p>
780    #[serde(rename = "WindowExecutionId")]
781    pub window_execution_id: String,
782}
783
784#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
785#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
786pub struct CancelMaintenanceWindowExecutionResult {
787    /// <p>The ID of the maintenance window execution that has been stopped.</p>
788    #[serde(rename = "WindowExecutionId")]
789    #[serde(skip_serializing_if = "Option::is_none")]
790    pub window_execution_id: Option<String>,
791}
792
793/// <p>Configuration options for sending command output to CloudWatch Logs.</p>
794#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
795pub struct CloudWatchOutputConfig {
796    /// <p>The name of the CloudWatch log group where you want to send command output. If you don't specify a group name, Systems Manager automatically creates a log group for you. The log group uses the following naming format: aws/ssm/<i>SystemsManagerDocumentName</i>.</p>
797    #[serde(rename = "CloudWatchLogGroupName")]
798    #[serde(skip_serializing_if = "Option::is_none")]
799    pub cloud_watch_log_group_name: Option<String>,
800    /// <p>Enables Systems Manager to send command output to CloudWatch Logs.</p>
801    #[serde(rename = "CloudWatchOutputEnabled")]
802    #[serde(skip_serializing_if = "Option::is_none")]
803    pub cloud_watch_output_enabled: Option<bool>,
804}
805
806/// <p>Describes a command request.</p>
807#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
808#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
809pub struct Command {
810    /// <p>CloudWatch Logs information where you want Systems Manager to send the command output.</p>
811    #[serde(rename = "CloudWatchOutputConfig")]
812    #[serde(skip_serializing_if = "Option::is_none")]
813    pub cloud_watch_output_config: Option<CloudWatchOutputConfig>,
814    /// <p>A unique identifier for this command.</p>
815    #[serde(rename = "CommandId")]
816    #[serde(skip_serializing_if = "Option::is_none")]
817    pub command_id: Option<String>,
818    /// <p>User-specified information about the command, such as a brief description of what the command should do.</p>
819    #[serde(rename = "Comment")]
820    #[serde(skip_serializing_if = "Option::is_none")]
821    pub comment: Option<String>,
822    /// <p>The number of targets for which the command invocation reached a terminal state. Terminal states include the following: Success, Failed, Execution Timed Out, Delivery Timed Out, Canceled, Terminated, or Undeliverable.</p>
823    #[serde(rename = "CompletedCount")]
824    #[serde(skip_serializing_if = "Option::is_none")]
825    pub completed_count: Option<i64>,
826    /// <p>The number of targets for which the status is Delivery Timed Out.</p>
827    #[serde(rename = "DeliveryTimedOutCount")]
828    #[serde(skip_serializing_if = "Option::is_none")]
829    pub delivery_timed_out_count: Option<i64>,
830    /// <p>The name of the document requested for execution.</p>
831    #[serde(rename = "DocumentName")]
832    #[serde(skip_serializing_if = "Option::is_none")]
833    pub document_name: Option<String>,
834    /// <p>The SSM document version.</p>
835    #[serde(rename = "DocumentVersion")]
836    #[serde(skip_serializing_if = "Option::is_none")]
837    pub document_version: Option<String>,
838    /// <p>The number of targets for which the status is Failed or Execution Timed Out.</p>
839    #[serde(rename = "ErrorCount")]
840    #[serde(skip_serializing_if = "Option::is_none")]
841    pub error_count: Option<i64>,
842    /// <p>If this time is reached and the command has not already started running, it will not run. Calculated based on the ExpiresAfter user input provided as part of the SendCommand API.</p>
843    #[serde(rename = "ExpiresAfter")]
844    #[serde(skip_serializing_if = "Option::is_none")]
845    pub expires_after: Option<f64>,
846    /// <p>The instance IDs against which this command was requested.</p>
847    #[serde(rename = "InstanceIds")]
848    #[serde(skip_serializing_if = "Option::is_none")]
849    pub instance_ids: Option<Vec<String>>,
850    /// <p>The maximum number of instances that are allowed to run the command at the same time. You can specify a number of instances, such as 10, or a percentage of instances, such as 10%. The default value is 50. For more information about how to use MaxConcurrency, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/run-command.html">Running commands using Systems Manager Run Command</a> in the <i>AWS Systems Manager User Guide</i>.</p>
851    #[serde(rename = "MaxConcurrency")]
852    #[serde(skip_serializing_if = "Option::is_none")]
853    pub max_concurrency: Option<String>,
854    /// <p>The maximum number of errors allowed before the system stops sending the command to additional targets. You can specify a number of errors, such as 10, or a percentage or errors, such as 10%. The default value is 0. For more information about how to use MaxErrors, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/run-command.html">Running commands using Systems Manager Run Command</a> in the <i>AWS Systems Manager User Guide</i>.</p>
855    #[serde(rename = "MaxErrors")]
856    #[serde(skip_serializing_if = "Option::is_none")]
857    pub max_errors: Option<String>,
858    /// <p>Configurations for sending notifications about command status changes. </p>
859    #[serde(rename = "NotificationConfig")]
860    #[serde(skip_serializing_if = "Option::is_none")]
861    pub notification_config: Option<NotificationConfig>,
862    /// <p>The S3 bucket where the responses to the command executions should be stored. This was requested when issuing the command.</p>
863    #[serde(rename = "OutputS3BucketName")]
864    #[serde(skip_serializing_if = "Option::is_none")]
865    pub output_s3_bucket_name: Option<String>,
866    /// <p>The S3 directory path inside the bucket where the responses to the command executions should be stored. This was requested when issuing the command.</p>
867    #[serde(rename = "OutputS3KeyPrefix")]
868    #[serde(skip_serializing_if = "Option::is_none")]
869    pub output_s3_key_prefix: Option<String>,
870    /// <p>(Deprecated) You can no longer specify this parameter. The system ignores it. Instead, Systems Manager automatically determines the Region of the S3 bucket.</p>
871    #[serde(rename = "OutputS3Region")]
872    #[serde(skip_serializing_if = "Option::is_none")]
873    pub output_s3_region: Option<String>,
874    /// <p>The parameter values to be inserted in the document when running the command.</p>
875    #[serde(rename = "Parameters")]
876    #[serde(skip_serializing_if = "Option::is_none")]
877    pub parameters: Option<::std::collections::HashMap<String, Vec<String>>>,
878    /// <p>The date and time the command was requested.</p>
879    #[serde(rename = "RequestedDateTime")]
880    #[serde(skip_serializing_if = "Option::is_none")]
881    pub requested_date_time: Option<f64>,
882    /// <p>The IAM service role that Run Command uses to act on your behalf when sending notifications about command status changes. </p>
883    #[serde(rename = "ServiceRole")]
884    #[serde(skip_serializing_if = "Option::is_none")]
885    pub service_role: Option<String>,
886    /// <p>The status of the command.</p>
887    #[serde(rename = "Status")]
888    #[serde(skip_serializing_if = "Option::is_none")]
889    pub status: Option<String>,
890    /// <p><p>A detailed status of the command execution. StatusDetails includes more information than Status because it includes states resulting from error and concurrency control parameters. StatusDetails can show different results than Status. For more information about these statuses, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/monitor-commands.html">Understanding command statuses</a> in the <i>AWS Systems Manager User Guide</i>. StatusDetails can be one of the following values:</p> <ul> <li> <p>Pending: The command has not been sent to any instances.</p> </li> <li> <p>In Progress: The command has been sent to at least one instance but has not reached a final state on all instances.</p> </li> <li> <p>Success: The command successfully ran on all invocations. This is a terminal state.</p> </li> <li> <p>Delivery Timed Out: The value of MaxErrors or more command invocations shows a status of Delivery Timed Out. This is a terminal state.</p> </li> <li> <p>Execution Timed Out: The value of MaxErrors or more command invocations shows a status of Execution Timed Out. This is a terminal state.</p> </li> <li> <p>Failed: The value of MaxErrors or more command invocations shows a status of Failed. This is a terminal state.</p> </li> <li> <p>Incomplete: The command was attempted on all instances and one or more invocations does not have a value of Success but not enough invocations failed for the status to be Failed. This is a terminal state.</p> </li> <li> <p>Canceled: The command was terminated before it was completed. This is a terminal state.</p> </li> <li> <p>Rate Exceeded: The number of instances targeted by the command exceeded the account limit for pending invocations. The system has canceled the command before running it on any instance. This is a terminal state.</p> </li> </ul></p>
891    #[serde(rename = "StatusDetails")]
892    #[serde(skip_serializing_if = "Option::is_none")]
893    pub status_details: Option<String>,
894    /// <p>The number of targets for the command.</p>
895    #[serde(rename = "TargetCount")]
896    #[serde(skip_serializing_if = "Option::is_none")]
897    pub target_count: Option<i64>,
898    /// <p>An array of search criteria that targets instances using a Key,Value combination that you specify. Targets is required if you don't provide one or more instance IDs in the call.</p>
899    #[serde(rename = "Targets")]
900    #[serde(skip_serializing_if = "Option::is_none")]
901    pub targets: Option<Vec<Target>>,
902    /// <p>The <code>TimeoutSeconds</code> value specified for a command.</p>
903    #[serde(rename = "TimeoutSeconds")]
904    #[serde(skip_serializing_if = "Option::is_none")]
905    pub timeout_seconds: Option<i64>,
906}
907
908/// <p>Describes a command filter.</p>
909#[derive(Clone, Debug, Default, PartialEq, Serialize)]
910#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
911pub struct CommandFilter {
912    /// <p>The name of the filter.</p>
913    #[serde(rename = "key")]
914    pub key: String,
915    /// <p><p>The filter value. Valid values for each filter key are as follows:</p> <ul> <li> <p> <b>InvokedAfter</b>: Specify a timestamp to limit your results. For example, specify <code>2018-07-07T00:00:00Z</code> to see a list of command executions occurring July 7, 2018, and later.</p> </li> <li> <p> <b>InvokedBefore</b>: Specify a timestamp to limit your results. For example, specify <code>2018-07-07T00:00:00Z</code> to see a list of command executions from before July 7, 2018.</p> </li> <li> <p> <b>Status</b>: Specify a valid command status to see a list of all command executions with that status. Status values you can specify include:</p> <ul> <li> <p> <code>Pending</code> </p> </li> <li> <p> <code>InProgress</code> </p> </li> <li> <p> <code>Success</code> </p> </li> <li> <p> <code>Cancelled</code> </p> </li> <li> <p> <code>Failed</code> </p> </li> <li> <p> <code>TimedOut</code> </p> </li> <li> <p> <code>Cancelling</code> </p> </li> </ul> </li> <li> <p> <b>DocumentName</b>: Specify name of the SSM document for which you want to see command execution results. For example, specify <code>AWS-RunPatchBaseline</code> to see command executions that used this SSM document to perform security patching operations on instances. </p> </li> <li> <p> <b>ExecutionStage</b>: Specify one of the following values:</p> <ul> <li> <p> <code>Executing</code>: Returns a list of command executions that are currently still running.</p> </li> <li> <p> <code>Complete</code>: Returns a list of command executions that have already completed. </p> </li> </ul> </li> </ul></p>
916    #[serde(rename = "value")]
917    pub value: String,
918}
919
920/// <p>An invocation is copy of a command sent to a specific instance. A command can apply to one or more instances. A command invocation applies to one instance. For example, if a user runs SendCommand against three instances, then a command invocation is created for each requested instance ID. A command invocation returns status and detail information about a command you ran. </p>
921#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
922#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
923pub struct CommandInvocation {
924    /// <p>CloudWatch Logs information where you want Systems Manager to send the command output.</p>
925    #[serde(rename = "CloudWatchOutputConfig")]
926    #[serde(skip_serializing_if = "Option::is_none")]
927    pub cloud_watch_output_config: Option<CloudWatchOutputConfig>,
928    /// <p>The command against which this invocation was requested.</p>
929    #[serde(rename = "CommandId")]
930    #[serde(skip_serializing_if = "Option::is_none")]
931    pub command_id: Option<String>,
932    #[serde(rename = "CommandPlugins")]
933    #[serde(skip_serializing_if = "Option::is_none")]
934    pub command_plugins: Option<Vec<CommandPlugin>>,
935    /// <p>User-specified information about the command, such as a brief description of what the command should do.</p>
936    #[serde(rename = "Comment")]
937    #[serde(skip_serializing_if = "Option::is_none")]
938    pub comment: Option<String>,
939    /// <p>The document name that was requested for execution.</p>
940    #[serde(rename = "DocumentName")]
941    #[serde(skip_serializing_if = "Option::is_none")]
942    pub document_name: Option<String>,
943    /// <p>The SSM document version.</p>
944    #[serde(rename = "DocumentVersion")]
945    #[serde(skip_serializing_if = "Option::is_none")]
946    pub document_version: Option<String>,
947    /// <p>The instance ID in which this invocation was requested.</p>
948    #[serde(rename = "InstanceId")]
949    #[serde(skip_serializing_if = "Option::is_none")]
950    pub instance_id: Option<String>,
951    /// <p>The name of the invocation target. For EC2 instances this is the value for the aws:Name tag. For on-premises instances, this is the name of the instance.</p>
952    #[serde(rename = "InstanceName")]
953    #[serde(skip_serializing_if = "Option::is_none")]
954    pub instance_name: Option<String>,
955    /// <p>Configurations for sending notifications about command status changes on a per instance basis.</p>
956    #[serde(rename = "NotificationConfig")]
957    #[serde(skip_serializing_if = "Option::is_none")]
958    pub notification_config: Option<NotificationConfig>,
959    /// <p>The time and date the request was sent to this instance.</p>
960    #[serde(rename = "RequestedDateTime")]
961    #[serde(skip_serializing_if = "Option::is_none")]
962    pub requested_date_time: Option<f64>,
963    /// <p>The IAM service role that Run Command uses to act on your behalf when sending notifications about command status changes on a per instance basis.</p>
964    #[serde(rename = "ServiceRole")]
965    #[serde(skip_serializing_if = "Option::is_none")]
966    pub service_role: Option<String>,
967    /// <p>The URL to the plugin's StdErr file in Amazon S3, if the S3 bucket was defined for the parent command. For an invocation, StandardErrorUrl is populated if there is just one plugin defined for the command, and the S3 bucket was defined for the command.</p>
968    #[serde(rename = "StandardErrorUrl")]
969    #[serde(skip_serializing_if = "Option::is_none")]
970    pub standard_error_url: Option<String>,
971    /// <p>The URL to the plugin's StdOut file in Amazon S3, if the S3 bucket was defined for the parent command. For an invocation, StandardOutputUrl is populated if there is just one plugin defined for the command, and the S3 bucket was defined for the command.</p>
972    #[serde(rename = "StandardOutputUrl")]
973    #[serde(skip_serializing_if = "Option::is_none")]
974    pub standard_output_url: Option<String>,
975    /// <p>Whether or not the invocation succeeded, failed, or is pending.</p>
976    #[serde(rename = "Status")]
977    #[serde(skip_serializing_if = "Option::is_none")]
978    pub status: Option<String>,
979    /// <p><p>A detailed status of the command execution for each invocation (each instance targeted by the command). StatusDetails includes more information than Status because it includes states resulting from error and concurrency control parameters. StatusDetails can show different results than Status. For more information about these statuses, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/monitor-commands.html">Understanding command statuses</a> in the <i>AWS Systems Manager User Guide</i>. StatusDetails can be one of the following values:</p> <ul> <li> <p>Pending: The command has not been sent to the instance.</p> </li> <li> <p>In Progress: The command has been sent to the instance but has not reached a terminal state.</p> </li> <li> <p>Success: The execution of the command or plugin was successfully completed. This is a terminal state.</p> </li> <li> <p>Delivery Timed Out: The command was not delivered to the instance before the delivery timeout expired. Delivery timeouts do not count against the parent command&#39;s MaxErrors limit, but they do contribute to whether the parent command status is Success or Incomplete. This is a terminal state.</p> </li> <li> <p>Execution Timed Out: Command execution started on the instance, but the execution was not complete before the execution timeout expired. Execution timeouts count against the MaxErrors limit of the parent command. This is a terminal state.</p> </li> <li> <p>Failed: The command was not successful on the instance. For a plugin, this indicates that the result code was not zero. For a command invocation, this indicates that the result code for one or more plugins was not zero. Invocation failures count against the MaxErrors limit of the parent command. This is a terminal state.</p> </li> <li> <p>Canceled: The command was terminated before it was completed. This is a terminal state.</p> </li> <li> <p>Undeliverable: The command can&#39;t be delivered to the instance. The instance might not exist or might not be responding. Undeliverable invocations don&#39;t count against the parent command&#39;s MaxErrors limit and don&#39;t contribute to whether the parent command status is Success or Incomplete. This is a terminal state.</p> </li> <li> <p>Terminated: The parent command exceeded its MaxErrors limit and subsequent command invocations were canceled by the system. This is a terminal state.</p> </li> </ul></p>
980    #[serde(rename = "StatusDetails")]
981    #[serde(skip_serializing_if = "Option::is_none")]
982    pub status_details: Option<String>,
983    /// <p> Gets the trace output sent by the agent. </p>
984    #[serde(rename = "TraceOutput")]
985    #[serde(skip_serializing_if = "Option::is_none")]
986    pub trace_output: Option<String>,
987}
988
989/// <p>Describes plugin details.</p>
990#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
991#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
992pub struct CommandPlugin {
993    /// <p>The name of the plugin. Must be one of the following: aws:updateAgent, aws:domainjoin, aws:applications, aws:runPowerShellScript, aws:psmodule, aws:cloudWatch, aws:runShellScript, or aws:updateSSMAgent. </p>
994    #[serde(rename = "Name")]
995    #[serde(skip_serializing_if = "Option::is_none")]
996    pub name: Option<String>,
997    /// <p>Output of the plugin execution.</p>
998    #[serde(rename = "Output")]
999    #[serde(skip_serializing_if = "Option::is_none")]
1000    pub output: Option<String>,
1001    /// <p>The S3 bucket where the responses to the command executions should be stored. This was requested when issuing the command. For example, in the following response:</p> <p> test_folder/ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix/i-1234567876543/awsrunShellScript </p> <p>test_folder is the name of the S3 bucket;</p> <p>ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix is the name of the S3 prefix;</p> <p>i-1234567876543 is the instance ID;</p> <p>awsrunShellScript is the name of the plugin.</p>
1002    #[serde(rename = "OutputS3BucketName")]
1003    #[serde(skip_serializing_if = "Option::is_none")]
1004    pub output_s3_bucket_name: Option<String>,
1005    /// <p>The S3 directory path inside the bucket where the responses to the command executions should be stored. This was requested when issuing the command. For example, in the following response:</p> <p> test_folder/ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix/i-1234567876543/awsrunShellScript </p> <p>test_folder is the name of the S3 bucket;</p> <p>ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix is the name of the S3 prefix;</p> <p>i-1234567876543 is the instance ID;</p> <p>awsrunShellScript is the name of the plugin.</p>
1006    #[serde(rename = "OutputS3KeyPrefix")]
1007    #[serde(skip_serializing_if = "Option::is_none")]
1008    pub output_s3_key_prefix: Option<String>,
1009    /// <p>(Deprecated) You can no longer specify this parameter. The system ignores it. Instead, Systems Manager automatically determines the S3 bucket region.</p>
1010    #[serde(rename = "OutputS3Region")]
1011    #[serde(skip_serializing_if = "Option::is_none")]
1012    pub output_s3_region: Option<String>,
1013    /// <p>A numeric response code generated after running the plugin. </p>
1014    #[serde(rename = "ResponseCode")]
1015    #[serde(skip_serializing_if = "Option::is_none")]
1016    pub response_code: Option<i64>,
1017    /// <p>The time the plugin stopped running. Could stop prematurely if, for example, a cancel command was sent. </p>
1018    #[serde(rename = "ResponseFinishDateTime")]
1019    #[serde(skip_serializing_if = "Option::is_none")]
1020    pub response_finish_date_time: Option<f64>,
1021    /// <p>The time the plugin started running. </p>
1022    #[serde(rename = "ResponseStartDateTime")]
1023    #[serde(skip_serializing_if = "Option::is_none")]
1024    pub response_start_date_time: Option<f64>,
1025    /// <p>The URL for the complete text written by the plugin to stderr. If execution is not yet complete, then this string is empty.</p>
1026    #[serde(rename = "StandardErrorUrl")]
1027    #[serde(skip_serializing_if = "Option::is_none")]
1028    pub standard_error_url: Option<String>,
1029    /// <p>The URL for the complete text written by the plugin to stdout in Amazon S3. If the S3 bucket for the command was not specified, then this string is empty.</p>
1030    #[serde(rename = "StandardOutputUrl")]
1031    #[serde(skip_serializing_if = "Option::is_none")]
1032    pub standard_output_url: Option<String>,
1033    /// <p>The status of this plugin. You can run a document with multiple plugins.</p>
1034    #[serde(rename = "Status")]
1035    #[serde(skip_serializing_if = "Option::is_none")]
1036    pub status: Option<String>,
1037    /// <p><p>A detailed status of the plugin execution. StatusDetails includes more information than Status because it includes states resulting from error and concurrency control parameters. StatusDetails can show different results than Status. For more information about these statuses, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/monitor-commands.html">Understanding command statuses</a> in the <i>AWS Systems Manager User Guide</i>. StatusDetails can be one of the following values:</p> <ul> <li> <p>Pending: The command has not been sent to the instance.</p> </li> <li> <p>In Progress: The command has been sent to the instance but has not reached a terminal state.</p> </li> <li> <p>Success: The execution of the command or plugin was successfully completed. This is a terminal state.</p> </li> <li> <p>Delivery Timed Out: The command was not delivered to the instance before the delivery timeout expired. Delivery timeouts do not count against the parent command&#39;s MaxErrors limit, but they do contribute to whether the parent command status is Success or Incomplete. This is a terminal state.</p> </li> <li> <p>Execution Timed Out: Command execution started on the instance, but the execution was not complete before the execution timeout expired. Execution timeouts count against the MaxErrors limit of the parent command. This is a terminal state.</p> </li> <li> <p>Failed: The command was not successful on the instance. For a plugin, this indicates that the result code was not zero. For a command invocation, this indicates that the result code for one or more plugins was not zero. Invocation failures count against the MaxErrors limit of the parent command. This is a terminal state.</p> </li> <li> <p>Canceled: The command was terminated before it was completed. This is a terminal state.</p> </li> <li> <p>Undeliverable: The command can&#39;t be delivered to the instance. The instance might not exist, or it might not be responding. Undeliverable invocations don&#39;t count against the parent command&#39;s MaxErrors limit, and they don&#39;t contribute to whether the parent command status is Success or Incomplete. This is a terminal state.</p> </li> <li> <p>Terminated: The parent command exceeded its MaxErrors limit and subsequent command invocations were canceled by the system. This is a terminal state.</p> </li> </ul></p>
1038    #[serde(rename = "StatusDetails")]
1039    #[serde(skip_serializing_if = "Option::is_none")]
1040    pub status_details: Option<String>,
1041}
1042
1043/// <p>A summary of the call execution that includes an execution ID, the type of execution (for example, <code>Command</code>), and the date/time of the execution using a datetime object that is saved in the following format: yyyy-MM-dd'T'HH:mm:ss'Z'.</p>
1044#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1045pub struct ComplianceExecutionSummary {
1046    /// <p>An ID created by the system when <code>PutComplianceItems</code> was called. For example, <code>CommandID</code> is a valid execution ID. You can use this ID in subsequent calls.</p>
1047    #[serde(rename = "ExecutionId")]
1048    #[serde(skip_serializing_if = "Option::is_none")]
1049    pub execution_id: Option<String>,
1050    /// <p>The time the execution ran as a datetime object that is saved in the following format: yyyy-MM-dd'T'HH:mm:ss'Z'.</p>
1051    #[serde(rename = "ExecutionTime")]
1052    pub execution_time: f64,
1053    /// <p>The type of execution. For example, <code>Command</code> is a valid execution type.</p>
1054    #[serde(rename = "ExecutionType")]
1055    #[serde(skip_serializing_if = "Option::is_none")]
1056    pub execution_type: Option<String>,
1057}
1058
1059/// <p>Information about the compliance as defined by the resource type. For example, for a patch resource type, <code>Items</code> includes information about the PatchSeverity, Classification, and so on.</p>
1060#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1061#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1062pub struct ComplianceItem {
1063    /// <p>The compliance type. For example, Association (for a State Manager association), Patch, or Custom:<code>string</code> are all valid compliance types.</p>
1064    #[serde(rename = "ComplianceType")]
1065    #[serde(skip_serializing_if = "Option::is_none")]
1066    pub compliance_type: Option<String>,
1067    /// <p>A "Key": "Value" tag combination for the compliance item.</p>
1068    #[serde(rename = "Details")]
1069    #[serde(skip_serializing_if = "Option::is_none")]
1070    pub details: Option<::std::collections::HashMap<String, String>>,
1071    /// <p>A summary for the compliance item. The summary includes an execution ID, the execution type (for example, command), and the execution time.</p>
1072    #[serde(rename = "ExecutionSummary")]
1073    #[serde(skip_serializing_if = "Option::is_none")]
1074    pub execution_summary: Option<ComplianceExecutionSummary>,
1075    /// <p>An ID for the compliance item. For example, if the compliance item is a Windows patch, the ID could be the number of the KB article; for example: KB4010320.</p>
1076    #[serde(rename = "Id")]
1077    #[serde(skip_serializing_if = "Option::is_none")]
1078    pub id: Option<String>,
1079    /// <p>An ID for the resource. For a managed instance, this is the instance ID.</p>
1080    #[serde(rename = "ResourceId")]
1081    #[serde(skip_serializing_if = "Option::is_none")]
1082    pub resource_id: Option<String>,
1083    /// <p>The type of resource. <code>ManagedInstance</code> is currently the only supported resource type.</p>
1084    #[serde(rename = "ResourceType")]
1085    #[serde(skip_serializing_if = "Option::is_none")]
1086    pub resource_type: Option<String>,
1087    /// <p>The severity of the compliance status. Severity can be one of the following: Critical, High, Medium, Low, Informational, Unspecified.</p>
1088    #[serde(rename = "Severity")]
1089    #[serde(skip_serializing_if = "Option::is_none")]
1090    pub severity: Option<String>,
1091    /// <p>The status of the compliance item. An item is either COMPLIANT or NON_COMPLIANT.</p>
1092    #[serde(rename = "Status")]
1093    #[serde(skip_serializing_if = "Option::is_none")]
1094    pub status: Option<String>,
1095    /// <p>A title for the compliance item. For example, if the compliance item is a Windows patch, the title could be the title of the KB article for the patch; for example: Security Update for Active Directory Federation Services.</p>
1096    #[serde(rename = "Title")]
1097    #[serde(skip_serializing_if = "Option::is_none")]
1098    pub title: Option<String>,
1099}
1100
1101/// <p>Information about a compliance item.</p>
1102#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1103#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1104pub struct ComplianceItemEntry {
1105    /// <p>A "Key": "Value" tag combination for the compliance item.</p>
1106    #[serde(rename = "Details")]
1107    #[serde(skip_serializing_if = "Option::is_none")]
1108    pub details: Option<::std::collections::HashMap<String, String>>,
1109    /// <p>The compliance item ID. For example, if the compliance item is a Windows patch, the ID could be the number of the KB article.</p>
1110    #[serde(rename = "Id")]
1111    #[serde(skip_serializing_if = "Option::is_none")]
1112    pub id: Option<String>,
1113    /// <p>The severity of the compliance status. Severity can be one of the following: Critical, High, Medium, Low, Informational, Unspecified.</p>
1114    #[serde(rename = "Severity")]
1115    pub severity: String,
1116    /// <p>The status of the compliance item. An item is either COMPLIANT or NON_COMPLIANT.</p>
1117    #[serde(rename = "Status")]
1118    pub status: String,
1119    /// <p>The title of the compliance item. For example, if the compliance item is a Windows patch, the title could be the title of the KB article for the patch; for example: Security Update for Active Directory Federation Services. </p>
1120    #[serde(rename = "Title")]
1121    #[serde(skip_serializing_if = "Option::is_none")]
1122    pub title: Option<String>,
1123}
1124
1125/// <p>One or more filters. Use a filter to return a more specific list of results.</p>
1126#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1127#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1128pub struct ComplianceStringFilter {
1129    /// <p>The name of the filter.</p>
1130    #[serde(rename = "Key")]
1131    #[serde(skip_serializing_if = "Option::is_none")]
1132    pub key: Option<String>,
1133    /// <p>The type of comparison that should be performed for the value: Equal, NotEqual, BeginWith, LessThan, or GreaterThan.</p>
1134    #[serde(rename = "Type")]
1135    #[serde(skip_serializing_if = "Option::is_none")]
1136    pub type_: Option<String>,
1137    /// <p>The value for which to search.</p>
1138    #[serde(rename = "Values")]
1139    #[serde(skip_serializing_if = "Option::is_none")]
1140    pub values: Option<Vec<String>>,
1141}
1142
1143/// <p>A summary of compliance information by compliance type.</p>
1144#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1145#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1146pub struct ComplianceSummaryItem {
1147    /// <p>The type of compliance item. For example, the compliance type can be Association, Patch, or Custom:string.</p>
1148    #[serde(rename = "ComplianceType")]
1149    #[serde(skip_serializing_if = "Option::is_none")]
1150    pub compliance_type: Option<String>,
1151    /// <p>A list of COMPLIANT items for the specified compliance type.</p>
1152    #[serde(rename = "CompliantSummary")]
1153    #[serde(skip_serializing_if = "Option::is_none")]
1154    pub compliant_summary: Option<CompliantSummary>,
1155    /// <p>A list of NON_COMPLIANT items for the specified compliance type.</p>
1156    #[serde(rename = "NonCompliantSummary")]
1157    #[serde(skip_serializing_if = "Option::is_none")]
1158    pub non_compliant_summary: Option<NonCompliantSummary>,
1159}
1160
1161/// <p>A summary of resources that are compliant. The summary is organized according to the resource count for each compliance type.</p>
1162#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1163#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1164pub struct CompliantSummary {
1165    /// <p>The total number of resources that are compliant.</p>
1166    #[serde(rename = "CompliantCount")]
1167    #[serde(skip_serializing_if = "Option::is_none")]
1168    pub compliant_count: Option<i64>,
1169    /// <p>A summary of the compliance severity by compliance type.</p>
1170    #[serde(rename = "SeveritySummary")]
1171    #[serde(skip_serializing_if = "Option::is_none")]
1172    pub severity_summary: Option<SeveritySummary>,
1173}
1174
1175#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1176#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1177pub struct CreateActivationRequest {
1178    /// <p><p>The name of the registered, managed instance as it will appear in the Systems Manager console or when you use the AWS command line tools to list Systems Manager resources.</p> <important> <p>Do not enter personally identifiable information in this field.</p> </important></p>
1179    #[serde(rename = "DefaultInstanceName")]
1180    #[serde(skip_serializing_if = "Option::is_none")]
1181    pub default_instance_name: Option<String>,
1182    /// <p><p>A user-defined description of the resource that you want to register with Systems Manager. </p> <important> <p>Do not enter personally identifiable information in this field.</p> </important></p>
1183    #[serde(rename = "Description")]
1184    #[serde(skip_serializing_if = "Option::is_none")]
1185    pub description: Option<String>,
1186    /// <p>The date by which this activation request should expire. The default value is 24 hours.</p>
1187    #[serde(rename = "ExpirationDate")]
1188    #[serde(skip_serializing_if = "Option::is_none")]
1189    pub expiration_date: Option<f64>,
1190    /// <p>The Amazon Identity and Access Management (IAM) role that you want to assign to the managed instance. This IAM role must provide AssumeRole permissions for the Systems Manager service principal <code>ssm.amazonaws.com</code>. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-service-role.html">Create an IAM service role for a hybrid environment</a> in the <i>AWS Systems Manager User Guide</i>.</p>
1191    #[serde(rename = "IamRole")]
1192    pub iam_role: String,
1193    /// <p>Specify the maximum number of managed instances you want to register. The default value is 1 instance.</p>
1194    #[serde(rename = "RegistrationLimit")]
1195    #[serde(skip_serializing_if = "Option::is_none")]
1196    pub registration_limit: Option<i64>,
1197    /// <p>Optional metadata that you assign to a resource. Tags enable you to categorize a resource in different ways, such as by purpose, owner, or environment. For example, you might want to tag an activation to identify which servers or virtual machines (VMs) in your on-premises environment you intend to activate. In this case, you could specify the following key name/value pairs:</p> <ul> <li> <p> <code>Key=OS,Value=Windows</code> </p> </li> <li> <p> <code>Key=Environment,Value=Production</code> </p> </li> </ul> <important> <p>When you install SSM Agent on your on-premises servers and VMs, you specify an activation ID and code. When you specify the activation ID and code, tags assigned to the activation are automatically applied to the on-premises servers or VMs.</p> </important> <p>You can't add tags to or delete tags from an existing activation. You can tag your on-premises servers and VMs after they connect to Systems Manager for the first time and are assigned a managed instance ID. This means they are listed in the AWS Systems Manager console with an ID that is prefixed with "mi-". For information about how to add tags to your managed instances, see <a>AddTagsToResource</a>. For information about how to remove tags from your managed instances, see <a>RemoveTagsFromResource</a>.</p>
1198    #[serde(rename = "Tags")]
1199    #[serde(skip_serializing_if = "Option::is_none")]
1200    pub tags: Option<Vec<Tag>>,
1201}
1202
1203#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1204#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1205pub struct CreateActivationResult {
1206    /// <p>The code the system generates when it processes the activation. The activation code functions like a password to validate the activation ID. </p>
1207    #[serde(rename = "ActivationCode")]
1208    #[serde(skip_serializing_if = "Option::is_none")]
1209    pub activation_code: Option<String>,
1210    /// <p>The ID number generated by the system when it processed the activation. The activation ID functions like a user name.</p>
1211    #[serde(rename = "ActivationId")]
1212    #[serde(skip_serializing_if = "Option::is_none")]
1213    pub activation_id: Option<String>,
1214}
1215
1216#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1217#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1218pub struct CreateAssociationBatchRequest {
1219    /// <p>One or more associations.</p>
1220    #[serde(rename = "Entries")]
1221    pub entries: Vec<CreateAssociationBatchRequestEntry>,
1222}
1223
1224/// <p>Describes the association of a Systems Manager SSM document and an instance.</p>
1225#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1226pub struct CreateAssociationBatchRequestEntry {
1227    /// <p>By default, when you create a new associations, the system runs it immediately after it is created and then according to the schedule you specified. Specify this option if you don't want an association to run immediately after you create it.</p>
1228    #[serde(rename = "ApplyOnlyAtCronInterval")]
1229    #[serde(skip_serializing_if = "Option::is_none")]
1230    pub apply_only_at_cron_interval: Option<bool>,
1231    /// <p>Specify a descriptive name for the association.</p>
1232    #[serde(rename = "AssociationName")]
1233    #[serde(skip_serializing_if = "Option::is_none")]
1234    pub association_name: Option<String>,
1235    /// <p>Specify the target for the association. This target is required for associations that use an Automation document and target resources by using rate controls.</p>
1236    #[serde(rename = "AutomationTargetParameterName")]
1237    #[serde(skip_serializing_if = "Option::is_none")]
1238    pub automation_target_parameter_name: Option<String>,
1239    /// <p>The severity level to assign to the association.</p>
1240    #[serde(rename = "ComplianceSeverity")]
1241    #[serde(skip_serializing_if = "Option::is_none")]
1242    pub compliance_severity: Option<String>,
1243    /// <p>The document version.</p>
1244    #[serde(rename = "DocumentVersion")]
1245    #[serde(skip_serializing_if = "Option::is_none")]
1246    pub document_version: Option<String>,
1247    /// <p>The ID of the instance. </p>
1248    #[serde(rename = "InstanceId")]
1249    #[serde(skip_serializing_if = "Option::is_none")]
1250    pub instance_id: Option<String>,
1251    /// <p>The maximum number of targets allowed to run the association at the same time. You can specify a number, for example 10, or a percentage of the target set, for example 10%. The default value is 100%, which means all targets run the association at the same time.</p> <p>If a new instance starts and attempts to run an association while Systems Manager is running MaxConcurrency associations, the association is allowed to run. During the next association interval, the new instance will process its association within the limit specified for MaxConcurrency.</p>
1252    #[serde(rename = "MaxConcurrency")]
1253    #[serde(skip_serializing_if = "Option::is_none")]
1254    pub max_concurrency: Option<String>,
1255    /// <p>The number of errors that are allowed before the system stops sending requests to run the association on additional targets. You can specify either an absolute number of errors, for example 10, or a percentage of the target set, for example 10%. If you specify 3, for example, the system stops sending requests when the fourth error is received. If you specify 0, then the system stops sending requests after the first error is returned. If you run an association on 50 instances and set MaxError to 10%, then the system stops sending the request when the sixth error is received.</p> <p>Executions that are already running an association when MaxErrors is reached are allowed to complete, but some of these executions may fail as well. If you need to ensure that there won't be more than max-errors failed executions, set MaxConcurrency to 1 so that executions proceed one at a time.</p>
1256    #[serde(rename = "MaxErrors")]
1257    #[serde(skip_serializing_if = "Option::is_none")]
1258    pub max_errors: Option<String>,
1259    /// <p>The name of the SSM document that contains the configuration information for the instance. You can specify Command or Automation documents.</p> <p>You can specify AWS-predefined documents, documents you created, or a document that is shared with you from another account.</p> <p>For SSM documents that are shared with you from other AWS accounts, you must specify the complete SSM document ARN, in the following format:</p> <p> <code>arn:aws:ssm:<i>region</i>:<i>account-id</i>:document/<i>document-name</i> </code> </p> <p>For example:</p> <p> <code>arn:aws:ssm:us-east-2:12345678912:document/My-Shared-Document</code> </p> <p>For AWS-predefined documents and SSM documents you created in your account, you only need to specify the document name. For example, <code>AWS-ApplyPatchBaseline</code> or <code>My-Document</code>.</p>
1260    #[serde(rename = "Name")]
1261    pub name: String,
1262    /// <p>An S3 bucket where you want to store the results of this request.</p>
1263    #[serde(rename = "OutputLocation")]
1264    #[serde(skip_serializing_if = "Option::is_none")]
1265    pub output_location: Option<InstanceAssociationOutputLocation>,
1266    /// <p>A description of the parameters for a document. </p>
1267    #[serde(rename = "Parameters")]
1268    #[serde(skip_serializing_if = "Option::is_none")]
1269    pub parameters: Option<::std::collections::HashMap<String, Vec<String>>>,
1270    /// <p>A cron expression that specifies a schedule when the association runs.</p>
1271    #[serde(rename = "ScheduleExpression")]
1272    #[serde(skip_serializing_if = "Option::is_none")]
1273    pub schedule_expression: Option<String>,
1274    /// <p>The mode for generating association compliance. You can specify <code>AUTO</code> or <code>MANUAL</code>. In <code>AUTO</code> mode, the system uses the status of the association execution to determine the compliance status. If the association execution runs successfully, then the association is <code>COMPLIANT</code>. If the association execution doesn't run successfully, the association is <code>NON-COMPLIANT</code>. </p> <p>In <code>MANUAL</code> mode, you must specify the <code>AssociationId</code> as a parameter for the <a>PutComplianceItems</a> API action. In this case, compliance data is not managed by State Manager. It is managed by your direct call to the <a>PutComplianceItems</a> API action.</p> <p>By default, all associations use <code>AUTO</code> mode.</p>
1275    #[serde(rename = "SyncCompliance")]
1276    #[serde(skip_serializing_if = "Option::is_none")]
1277    pub sync_compliance: Option<String>,
1278    /// <p>The instances targeted by the request.</p>
1279    #[serde(rename = "Targets")]
1280    #[serde(skip_serializing_if = "Option::is_none")]
1281    pub targets: Option<Vec<Target>>,
1282}
1283
1284#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1285#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1286pub struct CreateAssociationBatchResult {
1287    /// <p>Information about the associations that failed.</p>
1288    #[serde(rename = "Failed")]
1289    #[serde(skip_serializing_if = "Option::is_none")]
1290    pub failed: Option<Vec<FailedCreateAssociation>>,
1291    /// <p>Information about the associations that succeeded.</p>
1292    #[serde(rename = "Successful")]
1293    #[serde(skip_serializing_if = "Option::is_none")]
1294    pub successful: Option<Vec<AssociationDescription>>,
1295}
1296
1297#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1298#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1299pub struct CreateAssociationRequest {
1300    /// <p>By default, when you create a new associations, the system runs it immediately after it is created and then according to the schedule you specified. Specify this option if you don't want an association to run immediately after you create it.</p>
1301    #[serde(rename = "ApplyOnlyAtCronInterval")]
1302    #[serde(skip_serializing_if = "Option::is_none")]
1303    pub apply_only_at_cron_interval: Option<bool>,
1304    /// <p>Specify a descriptive name for the association.</p>
1305    #[serde(rename = "AssociationName")]
1306    #[serde(skip_serializing_if = "Option::is_none")]
1307    pub association_name: Option<String>,
1308    /// <p>Specify the target for the association. This target is required for associations that use an Automation document and target resources by using rate controls.</p>
1309    #[serde(rename = "AutomationTargetParameterName")]
1310    #[serde(skip_serializing_if = "Option::is_none")]
1311    pub automation_target_parameter_name: Option<String>,
1312    /// <p>The severity level to assign to the association.</p>
1313    #[serde(rename = "ComplianceSeverity")]
1314    #[serde(skip_serializing_if = "Option::is_none")]
1315    pub compliance_severity: Option<String>,
1316    /// <p>The document version you want to associate with the target(s). Can be a specific version or the default version.</p>
1317    #[serde(rename = "DocumentVersion")]
1318    #[serde(skip_serializing_if = "Option::is_none")]
1319    pub document_version: Option<String>,
1320    /// <p><p>The instance ID.</p> <note> <p> <code>InstanceId</code> has been deprecated. To specify an instance ID for an association, use the <code>Targets</code> parameter. Requests that include the parameter <code>InstanceID</code> with SSM documents that use schema version 2.0 or later will fail. In addition, if you use the parameter <code>InstanceId</code>, you cannot use the parameters <code>AssociationName</code>, <code>DocumentVersion</code>, <code>MaxErrors</code>, <code>MaxConcurrency</code>, <code>OutputLocation</code>, or <code>ScheduleExpression</code>. To use these parameters, you must use the <code>Targets</code> parameter.</p> </note></p>
1321    #[serde(rename = "InstanceId")]
1322    #[serde(skip_serializing_if = "Option::is_none")]
1323    pub instance_id: Option<String>,
1324    /// <p>The maximum number of targets allowed to run the association at the same time. You can specify a number, for example 10, or a percentage of the target set, for example 10%. The default value is 100%, which means all targets run the association at the same time.</p> <p>If a new instance starts and attempts to run an association while Systems Manager is running MaxConcurrency associations, the association is allowed to run. During the next association interval, the new instance will process its association within the limit specified for MaxConcurrency.</p>
1325    #[serde(rename = "MaxConcurrency")]
1326    #[serde(skip_serializing_if = "Option::is_none")]
1327    pub max_concurrency: Option<String>,
1328    /// <p>The number of errors that are allowed before the system stops sending requests to run the association on additional targets. You can specify either an absolute number of errors, for example 10, or a percentage of the target set, for example 10%. If you specify 3, for example, the system stops sending requests when the fourth error is received. If you specify 0, then the system stops sending requests after the first error is returned. If you run an association on 50 instances and set MaxError to 10%, then the system stops sending the request when the sixth error is received.</p> <p>Executions that are already running an association when MaxErrors is reached are allowed to complete, but some of these executions may fail as well. If you need to ensure that there won't be more than max-errors failed executions, set MaxConcurrency to 1 so that executions proceed one at a time.</p>
1329    #[serde(rename = "MaxErrors")]
1330    #[serde(skip_serializing_if = "Option::is_none")]
1331    pub max_errors: Option<String>,
1332    /// <p>The name of the SSM document that contains the configuration information for the instance. You can specify Command or Automation documents.</p> <p>You can specify AWS-predefined documents, documents you created, or a document that is shared with you from another account.</p> <p>For SSM documents that are shared with you from other AWS accounts, you must specify the complete SSM document ARN, in the following format:</p> <p> <code>arn:<i>partition</i>:ssm:<i>region</i>:<i>account-id</i>:document/<i>document-name</i> </code> </p> <p>For example:</p> <p> <code>arn:aws:ssm:us-east-2:12345678912:document/My-Shared-Document</code> </p> <p>For AWS-predefined documents and SSM documents you created in your account, you only need to specify the document name. For example, <code>AWS-ApplyPatchBaseline</code> or <code>My-Document</code>.</p>
1333    #[serde(rename = "Name")]
1334    pub name: String,
1335    /// <p>An S3 bucket where you want to store the output details of the request.</p>
1336    #[serde(rename = "OutputLocation")]
1337    #[serde(skip_serializing_if = "Option::is_none")]
1338    pub output_location: Option<InstanceAssociationOutputLocation>,
1339    /// <p>The parameters for the runtime configuration of the document.</p>
1340    #[serde(rename = "Parameters")]
1341    #[serde(skip_serializing_if = "Option::is_none")]
1342    pub parameters: Option<::std::collections::HashMap<String, Vec<String>>>,
1343    /// <p>A cron expression when the association will be applied to the target(s).</p>
1344    #[serde(rename = "ScheduleExpression")]
1345    #[serde(skip_serializing_if = "Option::is_none")]
1346    pub schedule_expression: Option<String>,
1347    /// <p>The mode for generating association compliance. You can specify <code>AUTO</code> or <code>MANUAL</code>. In <code>AUTO</code> mode, the system uses the status of the association execution to determine the compliance status. If the association execution runs successfully, then the association is <code>COMPLIANT</code>. If the association execution doesn't run successfully, the association is <code>NON-COMPLIANT</code>.</p> <p>In <code>MANUAL</code> mode, you must specify the <code>AssociationId</code> as a parameter for the <a>PutComplianceItems</a> API action. In this case, compliance data is not managed by State Manager. It is managed by your direct call to the <a>PutComplianceItems</a> API action.</p> <p>By default, all associations use <code>AUTO</code> mode.</p>
1348    #[serde(rename = "SyncCompliance")]
1349    #[serde(skip_serializing_if = "Option::is_none")]
1350    pub sync_compliance: Option<String>,
1351    /// <p>The targets for the association. You can target instances by using tags, AWS Resource Groups, all instances in an AWS account, or individual instance IDs. For more information about choosing targets for an association, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-state-manager-targets-and-rate-controls.html">Using targets and rate controls with State Manager associations</a> in the <i>AWS Systems Manager User Guide</i>.</p>
1352    #[serde(rename = "Targets")]
1353    #[serde(skip_serializing_if = "Option::is_none")]
1354    pub targets: Option<Vec<Target>>,
1355}
1356
1357#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1358#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1359pub struct CreateAssociationResult {
1360    /// <p>Information about the association.</p>
1361    #[serde(rename = "AssociationDescription")]
1362    #[serde(skip_serializing_if = "Option::is_none")]
1363    pub association_description: Option<AssociationDescription>,
1364}
1365
1366#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1367#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1368pub struct CreateDocumentRequest {
1369    /// <p>A list of key and value pairs that describe attachments to a version of a document.</p>
1370    #[serde(rename = "Attachments")]
1371    #[serde(skip_serializing_if = "Option::is_none")]
1372    pub attachments: Option<Vec<AttachmentsSource>>,
1373    /// <p><p>The content for the new SSM document in JSON or YAML format. We recommend storing the contents for your new document in an external JSON or YAML file and referencing the file in a command.</p> <p>For examples, see the following topics in the <i>AWS Systems Manager User Guide</i>.</p> <ul> <li> <p> <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/create-ssm-document-api.html">Create an SSM document (AWS API)</a> </p> </li> <li> <p> <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/create-ssm-document-cli.html">Create an SSM document (AWS CLI)</a> </p> </li> <li> <p> <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/create-ssm-document-api.html">Create an SSM document (API)</a> </p> </li> </ul></p>
1374    #[serde(rename = "Content")]
1375    pub content: String,
1376    /// <p>Specify the document format for the request. The document format can be JSON, YAML, or TEXT. JSON is the default format.</p>
1377    #[serde(rename = "DocumentFormat")]
1378    #[serde(skip_serializing_if = "Option::is_none")]
1379    pub document_format: Option<String>,
1380    /// <p>The type of document to create.</p>
1381    #[serde(rename = "DocumentType")]
1382    #[serde(skip_serializing_if = "Option::is_none")]
1383    pub document_type: Option<String>,
1384    /// <p><p>A name for the Systems Manager document.</p> <important> <p>You can&#39;t use the following strings as document name prefixes. These are reserved by AWS for use as document name prefixes:</p> <ul> <li> <p> <code>aws-</code> </p> </li> <li> <p> <code>amazon</code> </p> </li> <li> <p> <code>amzn</code> </p> </li> </ul> </important></p>
1385    #[serde(rename = "Name")]
1386    pub name: String,
1387    /// <p>A list of SSM documents required by a document. This parameter is used exclusively by AWS AppConfig. When a user creates an AppConfig configuration in an SSM document, the user must also specify a required document for validation purposes. In this case, an <code>ApplicationConfiguration</code> document requires an <code>ApplicationConfigurationSchema</code> document for validation purposes. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/appconfig.html">AWS AppConfig</a> in the <i>AWS Systems Manager User Guide</i>.</p>
1388    #[serde(rename = "Requires")]
1389    #[serde(skip_serializing_if = "Option::is_none")]
1390    pub requires: Option<Vec<DocumentRequires>>,
1391    /// <p><p>Optional metadata that you assign to a resource. Tags enable you to categorize a resource in different ways, such as by purpose, owner, or environment. For example, you might want to tag an SSM document to identify the types of targets or the environment where it will run. In this case, you could specify the following key name/value pairs:</p> <ul> <li> <p> <code>Key=OS,Value=Windows</code> </p> </li> <li> <p> <code>Key=Environment,Value=Production</code> </p> </li> </ul> <note> <p>To add tags to an existing SSM document, use the <a>AddTagsToResource</a> action.</p> </note></p>
1392    #[serde(rename = "Tags")]
1393    #[serde(skip_serializing_if = "Option::is_none")]
1394    pub tags: Option<Vec<Tag>>,
1395    /// <p>Specify a target type to define the kinds of resources the document can run on. For example, to run a document on EC2 instances, specify the following value: /AWS::EC2::Instance. If you specify a value of '/' the document can run on all types of resources. If you don't specify a value, the document can't run on any resources. For a list of valid resource types, see <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html">AWS resource and property types reference</a> in the <i>AWS CloudFormation User Guide</i>. </p>
1396    #[serde(rename = "TargetType")]
1397    #[serde(skip_serializing_if = "Option::is_none")]
1398    pub target_type: Option<String>,
1399    /// <p>An optional field specifying the version of the artifact you are creating with the document. For example, "Release 12, Update 6". This value is unique across all versions of a document, and cannot be changed.</p>
1400    #[serde(rename = "VersionName")]
1401    #[serde(skip_serializing_if = "Option::is_none")]
1402    pub version_name: Option<String>,
1403}
1404
1405#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1406#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1407pub struct CreateDocumentResult {
1408    /// <p>Information about the Systems Manager document.</p>
1409    #[serde(rename = "DocumentDescription")]
1410    #[serde(skip_serializing_if = "Option::is_none")]
1411    pub document_description: Option<DocumentDescription>,
1412}
1413
1414#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1415#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1416pub struct CreateMaintenanceWindowRequest {
1417    /// <p>Enables a maintenance window task to run on managed instances, even if you have not registered those instances as targets. If enabled, then you must specify the unregistered instances (by instance ID) when you register a task with the maintenance window.</p> <p>If you don't enable this option, then you must specify previously-registered targets when you register a task with the maintenance window.</p>
1418    #[serde(rename = "AllowUnassociatedTargets")]
1419    pub allow_unassociated_targets: bool,
1420    /// <p>User-provided idempotency token.</p>
1421    #[serde(rename = "ClientToken")]
1422    #[serde(skip_serializing_if = "Option::is_none")]
1423    pub client_token: Option<String>,
1424    /// <p>The number of hours before the end of the maintenance window that Systems Manager stops scheduling new tasks for execution.</p>
1425    #[serde(rename = "Cutoff")]
1426    pub cutoff: i64,
1427    /// <p>An optional description for the maintenance window. We recommend specifying a description to help you organize your maintenance windows. </p>
1428    #[serde(rename = "Description")]
1429    #[serde(skip_serializing_if = "Option::is_none")]
1430    pub description: Option<String>,
1431    /// <p>The duration of the maintenance window in hours.</p>
1432    #[serde(rename = "Duration")]
1433    pub duration: i64,
1434    /// <p>The date and time, in ISO-8601 Extended format, for when you want the maintenance window to become inactive. EndDate allows you to set a date and time in the future when the maintenance window will no longer run.</p>
1435    #[serde(rename = "EndDate")]
1436    #[serde(skip_serializing_if = "Option::is_none")]
1437    pub end_date: Option<String>,
1438    /// <p>The name of the maintenance window.</p>
1439    #[serde(rename = "Name")]
1440    pub name: String,
1441    /// <p>The schedule of the maintenance window in the form of a cron or rate expression.</p>
1442    #[serde(rename = "Schedule")]
1443    pub schedule: String,
1444    /// <p>The number of days to wait after the date and time specified by a CRON expression before running the maintenance window.</p> <p>For example, the following cron expression schedules a maintenance window to run on the third Tuesday of every month at 11:30 PM.</p> <p> <code>cron(0 30 23 ? * TUE#3 *)</code> </p> <p>If the schedule offset is <code>2</code>, the maintenance window won't run until two days later.</p>
1445    #[serde(rename = "ScheduleOffset")]
1446    #[serde(skip_serializing_if = "Option::is_none")]
1447    pub schedule_offset: Option<i64>,
1448    /// <p>The time zone that the scheduled maintenance window executions are based on, in Internet Assigned Numbers Authority (IANA) format. For example: "America/Los_Angeles", "etc/UTC", or "Asia/Seoul". For more information, see the <a href="https://www.iana.org/time-zones">Time Zone Database</a> on the IANA website.</p>
1449    #[serde(rename = "ScheduleTimezone")]
1450    #[serde(skip_serializing_if = "Option::is_none")]
1451    pub schedule_timezone: Option<String>,
1452    /// <p>The date and time, in ISO-8601 Extended format, for when you want the maintenance window to become active. StartDate allows you to delay activation of the maintenance window until the specified future date.</p>
1453    #[serde(rename = "StartDate")]
1454    #[serde(skip_serializing_if = "Option::is_none")]
1455    pub start_date: Option<String>,
1456    /// <p><p>Optional metadata that you assign to a resource. Tags enable you to categorize a resource in different ways, such as by purpose, owner, or environment. For example, you might want to tag a maintenance window to identify the type of tasks it will run, the types of targets, and the environment it will run in. In this case, you could specify the following key name/value pairs:</p> <ul> <li> <p> <code>Key=TaskType,Value=AgentUpdate</code> </p> </li> <li> <p> <code>Key=OS,Value=Windows</code> </p> </li> <li> <p> <code>Key=Environment,Value=Production</code> </p> </li> </ul> <note> <p>To add tags to an existing maintenance window, use the <a>AddTagsToResource</a> action.</p> </note></p>
1457    #[serde(rename = "Tags")]
1458    #[serde(skip_serializing_if = "Option::is_none")]
1459    pub tags: Option<Vec<Tag>>,
1460}
1461
1462#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1463#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1464pub struct CreateMaintenanceWindowResult {
1465    /// <p>The ID of the created maintenance window.</p>
1466    #[serde(rename = "WindowId")]
1467    #[serde(skip_serializing_if = "Option::is_none")]
1468    pub window_id: Option<String>,
1469}
1470
1471#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1472#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1473pub struct CreateOpsItemRequest {
1474    /// <p>Specify a category to assign to an OpsItem. </p>
1475    #[serde(rename = "Category")]
1476    #[serde(skip_serializing_if = "Option::is_none")]
1477    pub category: Option<String>,
1478    /// <p>Information about the OpsItem. </p>
1479    #[serde(rename = "Description")]
1480    pub description: String,
1481    /// <p>The Amazon Resource Name (ARN) of an SNS topic where notifications are sent when this OpsItem is edited or changed.</p>
1482    #[serde(rename = "Notifications")]
1483    #[serde(skip_serializing_if = "Option::is_none")]
1484    pub notifications: Option<Vec<OpsItemNotification>>,
1485    /// <p>Operational data is custom data that provides useful reference details about the OpsItem. For example, you can specify log files, error strings, license keys, troubleshooting tips, or other relevant data. You enter operational data as key-value pairs. The key has a maximum length of 128 characters. The value has a maximum size of 20 KB.</p> <important> <p>Operational data keys <i>can't</i> begin with the following: amazon, aws, amzn, ssm, /amazon, /aws, /amzn, /ssm.</p> </important> <p>You can choose to make the data searchable by other users in the account or you can restrict search access. Searchable data means that all users with access to the OpsItem Overview page (as provided by the <a>DescribeOpsItems</a> API action) can view and search on the specified data. Operational data that is not searchable is only viewable by users who have access to the OpsItem (as provided by the <a>GetOpsItem</a> API action).</p> <p>Use the <code>/aws/resources</code> key in OperationalData to specify a related resource in the request. Use the <code>/aws/automations</code> key in OperationalData to associate an Automation runbook with the OpsItem. To view AWS CLI example commands that use these keys, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-creating-OpsItems.html#OpsCenter-manually-create-OpsItems">Creating OpsItems manually</a> in the <i>AWS Systems Manager User Guide</i>.</p>
1486    #[serde(rename = "OperationalData")]
1487    #[serde(skip_serializing_if = "Option::is_none")]
1488    pub operational_data: Option<::std::collections::HashMap<String, OpsItemDataValue>>,
1489    /// <p>The importance of this OpsItem in relation to other OpsItems in the system.</p>
1490    #[serde(rename = "Priority")]
1491    #[serde(skip_serializing_if = "Option::is_none")]
1492    pub priority: Option<i64>,
1493    /// <p>One or more OpsItems that share something in common with the current OpsItems. For example, related OpsItems can include OpsItems with similar error messages, impacted resources, or statuses for the impacted resource.</p>
1494    #[serde(rename = "RelatedOpsItems")]
1495    #[serde(skip_serializing_if = "Option::is_none")]
1496    pub related_ops_items: Option<Vec<RelatedOpsItem>>,
1497    /// <p>Specify a severity to assign to an OpsItem.</p>
1498    #[serde(rename = "Severity")]
1499    #[serde(skip_serializing_if = "Option::is_none")]
1500    pub severity: Option<String>,
1501    /// <p><p>The origin of the OpsItem, such as Amazon EC2 or Systems Manager.</p> <note> <p>The source name can&#39;t contain the following strings: aws, amazon, and amzn. </p> </note></p>
1502    #[serde(rename = "Source")]
1503    pub source: String,
1504    /// <p><p>Optional metadata that you assign to a resource. You can restrict access to OpsItems by using an inline IAM policy that specifies tags. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-getting-started.html#OpsCenter-getting-started-user-permissions">Getting started with OpsCenter</a> in the <i>AWS Systems Manager User Guide</i>.</p> <p>Tags use a key-value pair. For example:</p> <p> <code>Key=Department,Value=Finance</code> </p> <note> <p>To add tags to an existing OpsItem, use the <a>AddTagsToResource</a> action.</p> </note></p>
1505    #[serde(rename = "Tags")]
1506    #[serde(skip_serializing_if = "Option::is_none")]
1507    pub tags: Option<Vec<Tag>>,
1508    /// <p>A short heading that describes the nature of the OpsItem and the impacted resource.</p>
1509    #[serde(rename = "Title")]
1510    pub title: String,
1511}
1512
1513#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1514#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1515pub struct CreateOpsItemResponse {
1516    /// <p>The ID of the OpsItem.</p>
1517    #[serde(rename = "OpsItemId")]
1518    #[serde(skip_serializing_if = "Option::is_none")]
1519    pub ops_item_id: Option<String>,
1520}
1521
1522#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1523#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1524pub struct CreatePatchBaselineRequest {
1525    /// <p>A set of rules used to include patches in the baseline.</p>
1526    #[serde(rename = "ApprovalRules")]
1527    #[serde(skip_serializing_if = "Option::is_none")]
1528    pub approval_rules: Option<PatchRuleGroup>,
1529    /// <p>A list of explicitly approved patches for the baseline.</p> <p>For information about accepted formats for lists of approved patches and rejected patches, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-approved-rejected-package-name-formats.html">About package name formats for approved and rejected patch lists</a> in the <i>AWS Systems Manager User Guide</i>.</p>
1530    #[serde(rename = "ApprovedPatches")]
1531    #[serde(skip_serializing_if = "Option::is_none")]
1532    pub approved_patches: Option<Vec<String>>,
1533    /// <p>Defines the compliance level for approved patches. This means that if an approved patch is reported as missing, this is the severity of the compliance violation. The default value is UNSPECIFIED.</p>
1534    #[serde(rename = "ApprovedPatchesComplianceLevel")]
1535    #[serde(skip_serializing_if = "Option::is_none")]
1536    pub approved_patches_compliance_level: Option<String>,
1537    /// <p>Indicates whether the list of approved patches includes non-security updates that should be applied to the instances. The default value is 'false'. Applies to Linux instances only.</p>
1538    #[serde(rename = "ApprovedPatchesEnableNonSecurity")]
1539    #[serde(skip_serializing_if = "Option::is_none")]
1540    pub approved_patches_enable_non_security: Option<bool>,
1541    /// <p>User-provided idempotency token.</p>
1542    #[serde(rename = "ClientToken")]
1543    #[serde(skip_serializing_if = "Option::is_none")]
1544    pub client_token: Option<String>,
1545    /// <p>A description of the patch baseline.</p>
1546    #[serde(rename = "Description")]
1547    #[serde(skip_serializing_if = "Option::is_none")]
1548    pub description: Option<String>,
1549    /// <p>A set of global filters used to include patches in the baseline.</p>
1550    #[serde(rename = "GlobalFilters")]
1551    #[serde(skip_serializing_if = "Option::is_none")]
1552    pub global_filters: Option<PatchFilterGroup>,
1553    /// <p>The name of the patch baseline.</p>
1554    #[serde(rename = "Name")]
1555    pub name: String,
1556    /// <p>Defines the operating system the patch baseline applies to. The Default value is WINDOWS.</p>
1557    #[serde(rename = "OperatingSystem")]
1558    #[serde(skip_serializing_if = "Option::is_none")]
1559    pub operating_system: Option<String>,
1560    /// <p>A list of explicitly rejected patches for the baseline.</p> <p>For information about accepted formats for lists of approved patches and rejected patches, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-approved-rejected-package-name-formats.html">About package name formats for approved and rejected patch lists</a> in the <i>AWS Systems Manager User Guide</i>.</p>
1561    #[serde(rename = "RejectedPatches")]
1562    #[serde(skip_serializing_if = "Option::is_none")]
1563    pub rejected_patches: Option<Vec<String>>,
1564    /// <p><p>The action for Patch Manager to take on patches included in the RejectedPackages list.</p> <ul> <li> <p> <b>ALLOW<em>AS</em>DEPENDENCY</b>: A package in the Rejected patches list is installed only if it is a dependency of another package. It is considered compliant with the patch baseline, and its status is reported as <i>InstalledOther</i>. This is the default action if no option is specified.</p> </li> <li> <p> <b>BLOCK</b>: Packages in the RejectedPatches list, and packages that include them as dependencies, are not installed under any circumstances. If a package was installed before it was added to the Rejected patches list, it is considered non-compliant with the patch baseline, and its status is reported as <i>InstalledRejected</i>.</p> </li> </ul></p>
1565    #[serde(rename = "RejectedPatchesAction")]
1566    #[serde(skip_serializing_if = "Option::is_none")]
1567    pub rejected_patches_action: Option<String>,
1568    /// <p>Information about the patches to use to update the instances, including target operating systems and source repositories. Applies to Linux instances only.</p>
1569    #[serde(rename = "Sources")]
1570    #[serde(skip_serializing_if = "Option::is_none")]
1571    pub sources: Option<Vec<PatchSource>>,
1572    /// <p><p>Optional metadata that you assign to a resource. Tags enable you to categorize a resource in different ways, such as by purpose, owner, or environment. For example, you might want to tag a patch baseline to identify the severity level of patches it specifies and the operating system family it applies to. In this case, you could specify the following key name/value pairs:</p> <ul> <li> <p> <code>Key=PatchSeverity,Value=Critical</code> </p> </li> <li> <p> <code>Key=OS,Value=Windows</code> </p> </li> </ul> <note> <p>To add tags to an existing patch baseline, use the <a>AddTagsToResource</a> action.</p> </note></p>
1573    #[serde(rename = "Tags")]
1574    #[serde(skip_serializing_if = "Option::is_none")]
1575    pub tags: Option<Vec<Tag>>,
1576}
1577
1578#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1579#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1580pub struct CreatePatchBaselineResult {
1581    /// <p>The ID of the created patch baseline.</p>
1582    #[serde(rename = "BaselineId")]
1583    #[serde(skip_serializing_if = "Option::is_none")]
1584    pub baseline_id: Option<String>,
1585}
1586
1587#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1588#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1589pub struct CreateResourceDataSyncRequest {
1590    /// <p>Amazon S3 configuration details for the sync. This parameter is required if the <code>SyncType</code> value is SyncToDestination.</p>
1591    #[serde(rename = "S3Destination")]
1592    #[serde(skip_serializing_if = "Option::is_none")]
1593    pub s3_destination: Option<ResourceDataSyncS3Destination>,
1594    /// <p>A name for the configuration.</p>
1595    #[serde(rename = "SyncName")]
1596    pub sync_name: String,
1597    /// <p>Specify information about the data sources to synchronize. This parameter is required if the <code>SyncType</code> value is SyncFromSource.</p>
1598    #[serde(rename = "SyncSource")]
1599    #[serde(skip_serializing_if = "Option::is_none")]
1600    pub sync_source: Option<ResourceDataSyncSource>,
1601    /// <p>Specify <code>SyncToDestination</code> to create a resource data sync that synchronizes data to an S3 bucket for Inventory. If you specify <code>SyncToDestination</code>, you must provide a value for <code>S3Destination</code>. Specify <code>SyncFromSource</code> to synchronize data from a single account and multiple Regions, or multiple AWS accounts and Regions, as listed in AWS Organizations for Explorer. If you specify <code>SyncFromSource</code>, you must provide a value for <code>SyncSource</code>. The default value is <code>SyncToDestination</code>.</p>
1602    #[serde(rename = "SyncType")]
1603    #[serde(skip_serializing_if = "Option::is_none")]
1604    pub sync_type: Option<String>,
1605}
1606
1607#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1608#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1609pub struct CreateResourceDataSyncResult {}
1610
1611#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1612#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1613pub struct DeleteActivationRequest {
1614    /// <p>The ID of the activation that you want to delete.</p>
1615    #[serde(rename = "ActivationId")]
1616    pub activation_id: String,
1617}
1618
1619#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1620#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1621pub struct DeleteActivationResult {}
1622
1623#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1624#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1625pub struct DeleteAssociationRequest {
1626    /// <p>The association ID that you want to delete.</p>
1627    #[serde(rename = "AssociationId")]
1628    #[serde(skip_serializing_if = "Option::is_none")]
1629    pub association_id: Option<String>,
1630    /// <p>The ID of the instance.</p>
1631    #[serde(rename = "InstanceId")]
1632    #[serde(skip_serializing_if = "Option::is_none")]
1633    pub instance_id: Option<String>,
1634    /// <p>The name of the Systems Manager document.</p>
1635    #[serde(rename = "Name")]
1636    #[serde(skip_serializing_if = "Option::is_none")]
1637    pub name: Option<String>,
1638}
1639
1640#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1641#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1642pub struct DeleteAssociationResult {}
1643
1644#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1645#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1646pub struct DeleteDocumentRequest {
1647    /// <p>The version of the document that you want to delete. If not provided, all versions of the document are deleted.</p>
1648    #[serde(rename = "DocumentVersion")]
1649    #[serde(skip_serializing_if = "Option::is_none")]
1650    pub document_version: Option<String>,
1651    /// <p>Some SSM document types require that you specify a <code>Force</code> flag before you can delete the document. For example, you must specify a <code>Force</code> flag to delete a document of type <code>ApplicationConfigurationSchema</code>. You can restrict access to the <code>Force</code> flag in an AWS Identity and Access Management (IAM) policy.</p>
1652    #[serde(rename = "Force")]
1653    #[serde(skip_serializing_if = "Option::is_none")]
1654    pub force: Option<bool>,
1655    /// <p>The name of the document.</p>
1656    #[serde(rename = "Name")]
1657    pub name: String,
1658    /// <p>The version name of the document that you want to delete. If not provided, all versions of the document are deleted.</p>
1659    #[serde(rename = "VersionName")]
1660    #[serde(skip_serializing_if = "Option::is_none")]
1661    pub version_name: Option<String>,
1662}
1663
1664#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1665#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1666pub struct DeleteDocumentResult {}
1667
1668#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1669#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1670pub struct DeleteInventoryRequest {
1671    /// <p>User-provided idempotency token.</p>
1672    #[serde(rename = "ClientToken")]
1673    #[serde(skip_serializing_if = "Option::is_none")]
1674    pub client_token: Option<String>,
1675    /// <p>Use this option to view a summary of the deletion request without deleting any data or the data type. This option is useful when you only want to understand what will be deleted. Once you validate that the data to be deleted is what you intend to delete, you can run the same command without specifying the <code>DryRun</code> option.</p>
1676    #[serde(rename = "DryRun")]
1677    #[serde(skip_serializing_if = "Option::is_none")]
1678    pub dry_run: Option<bool>,
1679    /// <p>Use the <code>SchemaDeleteOption</code> to delete a custom inventory type (schema). If you don't choose this option, the system only deletes existing inventory data associated with the custom inventory type. Choose one of the following options:</p> <p>DisableSchema: If you choose this option, the system ignores all inventory data for the specified version, and any earlier versions. To enable this schema again, you must call the <code>PutInventory</code> action for a version greater than the disabled version.</p> <p>DeleteSchema: This option deletes the specified custom type from the Inventory service. You can recreate the schema later, if you want.</p>
1680    #[serde(rename = "SchemaDeleteOption")]
1681    #[serde(skip_serializing_if = "Option::is_none")]
1682    pub schema_delete_option: Option<String>,
1683    /// <p>The name of the custom inventory type for which you want to delete either all previously collected data, or the inventory type itself. </p>
1684    #[serde(rename = "TypeName")]
1685    pub type_name: String,
1686}
1687
1688#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1689#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1690pub struct DeleteInventoryResult {
1691    /// <p>Every <code>DeleteInventory</code> action is assigned a unique ID. This option returns a unique ID. You can use this ID to query the status of a delete operation. This option is useful for ensuring that a delete operation has completed before you begin other actions. </p>
1692    #[serde(rename = "DeletionId")]
1693    #[serde(skip_serializing_if = "Option::is_none")]
1694    pub deletion_id: Option<String>,
1695    /// <p>A summary of the delete operation. For more information about this summary, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-inventory-custom.html#sysman-inventory-delete-summary">Deleting custom inventory</a> in the <i>AWS Systems Manager User Guide</i>.</p>
1696    #[serde(rename = "DeletionSummary")]
1697    #[serde(skip_serializing_if = "Option::is_none")]
1698    pub deletion_summary: Option<InventoryDeletionSummary>,
1699    /// <p>The name of the inventory data type specified in the request.</p>
1700    #[serde(rename = "TypeName")]
1701    #[serde(skip_serializing_if = "Option::is_none")]
1702    pub type_name: Option<String>,
1703}
1704
1705#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1706#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1707pub struct DeleteMaintenanceWindowRequest {
1708    /// <p>The ID of the maintenance window to delete.</p>
1709    #[serde(rename = "WindowId")]
1710    pub window_id: String,
1711}
1712
1713#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1714#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1715pub struct DeleteMaintenanceWindowResult {
1716    /// <p>The ID of the deleted maintenance window.</p>
1717    #[serde(rename = "WindowId")]
1718    #[serde(skip_serializing_if = "Option::is_none")]
1719    pub window_id: Option<String>,
1720}
1721
1722#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1723#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1724pub struct DeleteParameterRequest {
1725    /// <p>The name of the parameter to delete.</p>
1726    #[serde(rename = "Name")]
1727    pub name: String,
1728}
1729
1730#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1731#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1732pub struct DeleteParameterResult {}
1733
1734#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1735#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1736pub struct DeleteParametersRequest {
1737    /// <p>The names of the parameters to delete.</p>
1738    #[serde(rename = "Names")]
1739    pub names: Vec<String>,
1740}
1741
1742#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1743#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1744pub struct DeleteParametersResult {
1745    /// <p>The names of the deleted parameters.</p>
1746    #[serde(rename = "DeletedParameters")]
1747    #[serde(skip_serializing_if = "Option::is_none")]
1748    pub deleted_parameters: Option<Vec<String>>,
1749    /// <p>The names of parameters that weren't deleted because the parameters are not valid.</p>
1750    #[serde(rename = "InvalidParameters")]
1751    #[serde(skip_serializing_if = "Option::is_none")]
1752    pub invalid_parameters: Option<Vec<String>>,
1753}
1754
1755#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1756#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1757pub struct DeletePatchBaselineRequest {
1758    /// <p>The ID of the patch baseline to delete.</p>
1759    #[serde(rename = "BaselineId")]
1760    pub baseline_id: String,
1761}
1762
1763#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1764#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1765pub struct DeletePatchBaselineResult {
1766    /// <p>The ID of the deleted patch baseline.</p>
1767    #[serde(rename = "BaselineId")]
1768    #[serde(skip_serializing_if = "Option::is_none")]
1769    pub baseline_id: Option<String>,
1770}
1771
1772#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1773#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1774pub struct DeleteResourceDataSyncRequest {
1775    /// <p>The name of the configuration to delete.</p>
1776    #[serde(rename = "SyncName")]
1777    pub sync_name: String,
1778    /// <p>Specify the type of resource data sync to delete.</p>
1779    #[serde(rename = "SyncType")]
1780    #[serde(skip_serializing_if = "Option::is_none")]
1781    pub sync_type: Option<String>,
1782}
1783
1784#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1785#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1786pub struct DeleteResourceDataSyncResult {}
1787
1788#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1789#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1790pub struct DeregisterManagedInstanceRequest {
1791    /// <p>The ID assigned to the managed instance when you registered it using the activation process. </p>
1792    #[serde(rename = "InstanceId")]
1793    pub instance_id: String,
1794}
1795
1796#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1797#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1798pub struct DeregisterManagedInstanceResult {}
1799
1800#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1801#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1802pub struct DeregisterPatchBaselineForPatchGroupRequest {
1803    /// <p>The ID of the patch baseline to deregister the patch group from.</p>
1804    #[serde(rename = "BaselineId")]
1805    pub baseline_id: String,
1806    /// <p>The name of the patch group that should be deregistered from the patch baseline.</p>
1807    #[serde(rename = "PatchGroup")]
1808    pub patch_group: String,
1809}
1810
1811#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1812#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1813pub struct DeregisterPatchBaselineForPatchGroupResult {
1814    /// <p>The ID of the patch baseline the patch group was deregistered from.</p>
1815    #[serde(rename = "BaselineId")]
1816    #[serde(skip_serializing_if = "Option::is_none")]
1817    pub baseline_id: Option<String>,
1818    /// <p>The name of the patch group deregistered from the patch baseline.</p>
1819    #[serde(rename = "PatchGroup")]
1820    #[serde(skip_serializing_if = "Option::is_none")]
1821    pub patch_group: Option<String>,
1822}
1823
1824#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1825#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1826pub struct DeregisterTargetFromMaintenanceWindowRequest {
1827    /// <p>The system checks if the target is being referenced by a task. If the target is being referenced, the system returns an error and does not deregister the target from the maintenance window.</p>
1828    #[serde(rename = "Safe")]
1829    #[serde(skip_serializing_if = "Option::is_none")]
1830    pub safe: Option<bool>,
1831    /// <p>The ID of the maintenance window the target should be removed from.</p>
1832    #[serde(rename = "WindowId")]
1833    pub window_id: String,
1834    /// <p>The ID of the target definition to remove.</p>
1835    #[serde(rename = "WindowTargetId")]
1836    pub window_target_id: String,
1837}
1838
1839#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1840#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1841pub struct DeregisterTargetFromMaintenanceWindowResult {
1842    /// <p>The ID of the maintenance window the target was removed from.</p>
1843    #[serde(rename = "WindowId")]
1844    #[serde(skip_serializing_if = "Option::is_none")]
1845    pub window_id: Option<String>,
1846    /// <p>The ID of the removed target definition.</p>
1847    #[serde(rename = "WindowTargetId")]
1848    #[serde(skip_serializing_if = "Option::is_none")]
1849    pub window_target_id: Option<String>,
1850}
1851
1852#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1853#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1854pub struct DeregisterTaskFromMaintenanceWindowRequest {
1855    /// <p>The ID of the maintenance window the task should be removed from.</p>
1856    #[serde(rename = "WindowId")]
1857    pub window_id: String,
1858    /// <p>The ID of the task to remove from the maintenance window.</p>
1859    #[serde(rename = "WindowTaskId")]
1860    pub window_task_id: String,
1861}
1862
1863#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1864#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1865pub struct DeregisterTaskFromMaintenanceWindowResult {
1866    /// <p>The ID of the maintenance window the task was removed from.</p>
1867    #[serde(rename = "WindowId")]
1868    #[serde(skip_serializing_if = "Option::is_none")]
1869    pub window_id: Option<String>,
1870    /// <p>The ID of the task removed from the maintenance window.</p>
1871    #[serde(rename = "WindowTaskId")]
1872    #[serde(skip_serializing_if = "Option::is_none")]
1873    pub window_task_id: Option<String>,
1874}
1875
1876/// <p>Filter for the DescribeActivation API.</p>
1877#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1878#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1879pub struct DescribeActivationsFilter {
1880    /// <p>The name of the filter.</p>
1881    #[serde(rename = "FilterKey")]
1882    #[serde(skip_serializing_if = "Option::is_none")]
1883    pub filter_key: Option<String>,
1884    /// <p>The filter values.</p>
1885    #[serde(rename = "FilterValues")]
1886    #[serde(skip_serializing_if = "Option::is_none")]
1887    pub filter_values: Option<Vec<String>>,
1888}
1889
1890#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1891#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1892pub struct DescribeActivationsRequest {
1893    /// <p>A filter to view information about your activations.</p>
1894    #[serde(rename = "Filters")]
1895    #[serde(skip_serializing_if = "Option::is_none")]
1896    pub filters: Option<Vec<DescribeActivationsFilter>>,
1897    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
1898    #[serde(rename = "MaxResults")]
1899    #[serde(skip_serializing_if = "Option::is_none")]
1900    pub max_results: Option<i64>,
1901    /// <p>A token to start the list. Use this token to get the next set of results. </p>
1902    #[serde(rename = "NextToken")]
1903    #[serde(skip_serializing_if = "Option::is_none")]
1904    pub next_token: Option<String>,
1905}
1906
1907#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1908#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1909pub struct DescribeActivationsResult {
1910    /// <p>A list of activations for your AWS account.</p>
1911    #[serde(rename = "ActivationList")]
1912    #[serde(skip_serializing_if = "Option::is_none")]
1913    pub activation_list: Option<Vec<Activation>>,
1914    /// <p>The token for the next set of items to return. Use this token to get the next set of results. </p>
1915    #[serde(rename = "NextToken")]
1916    #[serde(skip_serializing_if = "Option::is_none")]
1917    pub next_token: Option<String>,
1918}
1919
1920#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1921#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1922pub struct DescribeAssociationExecutionTargetsRequest {
1923    /// <p>The association ID that includes the execution for which you want to view details.</p>
1924    #[serde(rename = "AssociationId")]
1925    pub association_id: String,
1926    /// <p>The execution ID for which you want to view details.</p>
1927    #[serde(rename = "ExecutionId")]
1928    pub execution_id: String,
1929    /// <p>Filters for the request. You can specify the following filters and values.</p> <p>Status (EQUAL)</p> <p>ResourceId (EQUAL)</p> <p>ResourceType (EQUAL)</p>
1930    #[serde(rename = "Filters")]
1931    #[serde(skip_serializing_if = "Option::is_none")]
1932    pub filters: Option<Vec<AssociationExecutionTargetsFilter>>,
1933    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
1934    #[serde(rename = "MaxResults")]
1935    #[serde(skip_serializing_if = "Option::is_none")]
1936    pub max_results: Option<i64>,
1937    /// <p>A token to start the list. Use this token to get the next set of results. </p>
1938    #[serde(rename = "NextToken")]
1939    #[serde(skip_serializing_if = "Option::is_none")]
1940    pub next_token: Option<String>,
1941}
1942
1943#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1944#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1945pub struct DescribeAssociationExecutionTargetsResult {
1946    /// <p>Information about the execution.</p>
1947    #[serde(rename = "AssociationExecutionTargets")]
1948    #[serde(skip_serializing_if = "Option::is_none")]
1949    pub association_execution_targets: Option<Vec<AssociationExecutionTarget>>,
1950    /// <p>The token for the next set of items to return. Use this token to get the next set of results.</p>
1951    #[serde(rename = "NextToken")]
1952    #[serde(skip_serializing_if = "Option::is_none")]
1953    pub next_token: Option<String>,
1954}
1955
1956#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1957#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1958pub struct DescribeAssociationExecutionsRequest {
1959    /// <p>The association ID for which you want to view execution history details.</p>
1960    #[serde(rename = "AssociationId")]
1961    pub association_id: String,
1962    /// <p>Filters for the request. You can specify the following filters and values.</p> <p>ExecutionId (EQUAL)</p> <p>Status (EQUAL)</p> <p>CreatedTime (EQUAL, GREATER_THAN, LESS_THAN)</p>
1963    #[serde(rename = "Filters")]
1964    #[serde(skip_serializing_if = "Option::is_none")]
1965    pub filters: Option<Vec<AssociationExecutionFilter>>,
1966    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
1967    #[serde(rename = "MaxResults")]
1968    #[serde(skip_serializing_if = "Option::is_none")]
1969    pub max_results: Option<i64>,
1970    /// <p>A token to start the list. Use this token to get the next set of results. </p>
1971    #[serde(rename = "NextToken")]
1972    #[serde(skip_serializing_if = "Option::is_none")]
1973    pub next_token: Option<String>,
1974}
1975
1976#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1977#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1978pub struct DescribeAssociationExecutionsResult {
1979    /// <p>A list of the executions for the specified association ID.</p>
1980    #[serde(rename = "AssociationExecutions")]
1981    #[serde(skip_serializing_if = "Option::is_none")]
1982    pub association_executions: Option<Vec<AssociationExecution>>,
1983    /// <p>The token for the next set of items to return. Use this token to get the next set of results.</p>
1984    #[serde(rename = "NextToken")]
1985    #[serde(skip_serializing_if = "Option::is_none")]
1986    pub next_token: Option<String>,
1987}
1988
1989#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1990#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1991pub struct DescribeAssociationRequest {
1992    /// <p>The association ID for which you want information.</p>
1993    #[serde(rename = "AssociationId")]
1994    #[serde(skip_serializing_if = "Option::is_none")]
1995    pub association_id: Option<String>,
1996    /// <p>Specify the association version to retrieve. To view the latest version, either specify <code>$LATEST</code> for this parameter, or omit this parameter. To view a list of all associations for an instance, use <a>ListAssociations</a>. To get a list of versions for a specific association, use <a>ListAssociationVersions</a>. </p>
1997    #[serde(rename = "AssociationVersion")]
1998    #[serde(skip_serializing_if = "Option::is_none")]
1999    pub association_version: Option<String>,
2000    /// <p>The instance ID.</p>
2001    #[serde(rename = "InstanceId")]
2002    #[serde(skip_serializing_if = "Option::is_none")]
2003    pub instance_id: Option<String>,
2004    /// <p>The name of the Systems Manager document.</p>
2005    #[serde(rename = "Name")]
2006    #[serde(skip_serializing_if = "Option::is_none")]
2007    pub name: Option<String>,
2008}
2009
2010#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2011#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2012pub struct DescribeAssociationResult {
2013    /// <p>Information about the association.</p>
2014    #[serde(rename = "AssociationDescription")]
2015    #[serde(skip_serializing_if = "Option::is_none")]
2016    pub association_description: Option<AssociationDescription>,
2017}
2018
2019#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2020#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2021pub struct DescribeAutomationExecutionsRequest {
2022    /// <p>Filters used to limit the scope of executions that are requested.</p>
2023    #[serde(rename = "Filters")]
2024    #[serde(skip_serializing_if = "Option::is_none")]
2025    pub filters: Option<Vec<AutomationExecutionFilter>>,
2026    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
2027    #[serde(rename = "MaxResults")]
2028    #[serde(skip_serializing_if = "Option::is_none")]
2029    pub max_results: Option<i64>,
2030    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
2031    #[serde(rename = "NextToken")]
2032    #[serde(skip_serializing_if = "Option::is_none")]
2033    pub next_token: Option<String>,
2034}
2035
2036#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2037#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2038pub struct DescribeAutomationExecutionsResult {
2039    /// <p>The list of details about each automation execution which has occurred which matches the filter specification, if any.</p>
2040    #[serde(rename = "AutomationExecutionMetadataList")]
2041    #[serde(skip_serializing_if = "Option::is_none")]
2042    pub automation_execution_metadata_list: Option<Vec<AutomationExecutionMetadata>>,
2043    /// <p>The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.</p>
2044    #[serde(rename = "NextToken")]
2045    #[serde(skip_serializing_if = "Option::is_none")]
2046    pub next_token: Option<String>,
2047}
2048
2049#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2050#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2051pub struct DescribeAutomationStepExecutionsRequest {
2052    /// <p>The Automation execution ID for which you want step execution descriptions.</p>
2053    #[serde(rename = "AutomationExecutionId")]
2054    pub automation_execution_id: String,
2055    /// <p>One or more filters to limit the number of step executions returned by the request.</p>
2056    #[serde(rename = "Filters")]
2057    #[serde(skip_serializing_if = "Option::is_none")]
2058    pub filters: Option<Vec<StepExecutionFilter>>,
2059    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
2060    #[serde(rename = "MaxResults")]
2061    #[serde(skip_serializing_if = "Option::is_none")]
2062    pub max_results: Option<i64>,
2063    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
2064    #[serde(rename = "NextToken")]
2065    #[serde(skip_serializing_if = "Option::is_none")]
2066    pub next_token: Option<String>,
2067    /// <p>A boolean that indicates whether to list step executions in reverse order by start time. The default value is false.</p>
2068    #[serde(rename = "ReverseOrder")]
2069    #[serde(skip_serializing_if = "Option::is_none")]
2070    pub reverse_order: Option<bool>,
2071}
2072
2073#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2074#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2075pub struct DescribeAutomationStepExecutionsResult {
2076    /// <p>The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.</p>
2077    #[serde(rename = "NextToken")]
2078    #[serde(skip_serializing_if = "Option::is_none")]
2079    pub next_token: Option<String>,
2080    /// <p>A list of details about the current state of all steps that make up an execution.</p>
2081    #[serde(rename = "StepExecutions")]
2082    #[serde(skip_serializing_if = "Option::is_none")]
2083    pub step_executions: Option<Vec<StepExecution>>,
2084}
2085
2086#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2087#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2088pub struct DescribeAvailablePatchesRequest {
2089    /// <p>Filters used to scope down the returned patches.</p>
2090    #[serde(rename = "Filters")]
2091    #[serde(skip_serializing_if = "Option::is_none")]
2092    pub filters: Option<Vec<PatchOrchestratorFilter>>,
2093    /// <p>The maximum number of patches to return (per page).</p>
2094    #[serde(rename = "MaxResults")]
2095    #[serde(skip_serializing_if = "Option::is_none")]
2096    pub max_results: Option<i64>,
2097    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
2098    #[serde(rename = "NextToken")]
2099    #[serde(skip_serializing_if = "Option::is_none")]
2100    pub next_token: Option<String>,
2101}
2102
2103#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2104#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2105pub struct DescribeAvailablePatchesResult {
2106    /// <p>The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.</p>
2107    #[serde(rename = "NextToken")]
2108    #[serde(skip_serializing_if = "Option::is_none")]
2109    pub next_token: Option<String>,
2110    /// <p>An array of patches. Each entry in the array is a patch structure.</p>
2111    #[serde(rename = "Patches")]
2112    #[serde(skip_serializing_if = "Option::is_none")]
2113    pub patches: Option<Vec<Patch>>,
2114}
2115
2116#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2117#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2118pub struct DescribeDocumentPermissionRequest {
2119    /// <p>The name of the document for which you are the owner.</p>
2120    #[serde(rename = "Name")]
2121    pub name: String,
2122    /// <p>The permission type for the document. The permission type can be <i>Share</i>.</p>
2123    #[serde(rename = "PermissionType")]
2124    pub permission_type: String,
2125}
2126
2127#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2128#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2129pub struct DescribeDocumentPermissionResponse {
2130    /// <p>The account IDs that have permission to use this document. The ID can be either an AWS account or <i>All</i>.</p>
2131    #[serde(rename = "AccountIds")]
2132    #[serde(skip_serializing_if = "Option::is_none")]
2133    pub account_ids: Option<Vec<String>>,
2134    /// <p>A list of AWS accounts where the current document is shared and the version shared with each account.</p>
2135    #[serde(rename = "AccountSharingInfoList")]
2136    #[serde(skip_serializing_if = "Option::is_none")]
2137    pub account_sharing_info_list: Option<Vec<AccountSharingInfo>>,
2138}
2139
2140#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2141#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2142pub struct DescribeDocumentRequest {
2143    /// <p>The document version for which you want information. Can be a specific version or the default version.</p>
2144    #[serde(rename = "DocumentVersion")]
2145    #[serde(skip_serializing_if = "Option::is_none")]
2146    pub document_version: Option<String>,
2147    /// <p>The name of the Systems Manager document.</p>
2148    #[serde(rename = "Name")]
2149    pub name: String,
2150    /// <p>An optional field specifying the version of the artifact associated with the document. For example, "Release 12, Update 6". This value is unique across all versions of a document, and cannot be changed.</p>
2151    #[serde(rename = "VersionName")]
2152    #[serde(skip_serializing_if = "Option::is_none")]
2153    pub version_name: Option<String>,
2154}
2155
2156#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2157#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2158pub struct DescribeDocumentResult {
2159    /// <p>Information about the Systems Manager document.</p>
2160    #[serde(rename = "Document")]
2161    #[serde(skip_serializing_if = "Option::is_none")]
2162    pub document: Option<DocumentDescription>,
2163}
2164
2165#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2166#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2167pub struct DescribeEffectiveInstanceAssociationsRequest {
2168    /// <p>The instance ID for which you want to view all associations.</p>
2169    #[serde(rename = "InstanceId")]
2170    pub instance_id: String,
2171    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
2172    #[serde(rename = "MaxResults")]
2173    #[serde(skip_serializing_if = "Option::is_none")]
2174    pub max_results: Option<i64>,
2175    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
2176    #[serde(rename = "NextToken")]
2177    #[serde(skip_serializing_if = "Option::is_none")]
2178    pub next_token: Option<String>,
2179}
2180
2181#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2182#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2183pub struct DescribeEffectiveInstanceAssociationsResult {
2184    /// <p>The associations for the requested instance.</p>
2185    #[serde(rename = "Associations")]
2186    #[serde(skip_serializing_if = "Option::is_none")]
2187    pub associations: Option<Vec<InstanceAssociation>>,
2188    /// <p>The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.</p>
2189    #[serde(rename = "NextToken")]
2190    #[serde(skip_serializing_if = "Option::is_none")]
2191    pub next_token: Option<String>,
2192}
2193
2194#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2195#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2196pub struct DescribeEffectivePatchesForPatchBaselineRequest {
2197    /// <p>The ID of the patch baseline to retrieve the effective patches for.</p>
2198    #[serde(rename = "BaselineId")]
2199    pub baseline_id: String,
2200    /// <p>The maximum number of patches to return (per page).</p>
2201    #[serde(rename = "MaxResults")]
2202    #[serde(skip_serializing_if = "Option::is_none")]
2203    pub max_results: Option<i64>,
2204    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
2205    #[serde(rename = "NextToken")]
2206    #[serde(skip_serializing_if = "Option::is_none")]
2207    pub next_token: Option<String>,
2208}
2209
2210#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2211#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2212pub struct DescribeEffectivePatchesForPatchBaselineResult {
2213    /// <p>An array of patches and patch status.</p>
2214    #[serde(rename = "EffectivePatches")]
2215    #[serde(skip_serializing_if = "Option::is_none")]
2216    pub effective_patches: Option<Vec<EffectivePatch>>,
2217    /// <p>The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.</p>
2218    #[serde(rename = "NextToken")]
2219    #[serde(skip_serializing_if = "Option::is_none")]
2220    pub next_token: Option<String>,
2221}
2222
2223#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2224#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2225pub struct DescribeInstanceAssociationsStatusRequest {
2226    /// <p>The instance IDs for which you want association status information.</p>
2227    #[serde(rename = "InstanceId")]
2228    pub instance_id: String,
2229    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
2230    #[serde(rename = "MaxResults")]
2231    #[serde(skip_serializing_if = "Option::is_none")]
2232    pub max_results: Option<i64>,
2233    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
2234    #[serde(rename = "NextToken")]
2235    #[serde(skip_serializing_if = "Option::is_none")]
2236    pub next_token: Option<String>,
2237}
2238
2239#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2240#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2241pub struct DescribeInstanceAssociationsStatusResult {
2242    /// <p>Status information about the association.</p>
2243    #[serde(rename = "InstanceAssociationStatusInfos")]
2244    #[serde(skip_serializing_if = "Option::is_none")]
2245    pub instance_association_status_infos: Option<Vec<InstanceAssociationStatusInfo>>,
2246    /// <p>The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.</p>
2247    #[serde(rename = "NextToken")]
2248    #[serde(skip_serializing_if = "Option::is_none")]
2249    pub next_token: Option<String>,
2250}
2251
2252#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2253#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2254pub struct DescribeInstanceInformationRequest {
2255    /// <p>One or more filters. Use a filter to return a more specific list of instances. You can filter based on tags applied to EC2 instances. Use this <code>Filters</code> data type instead of <code>InstanceInformationFilterList</code>, which is deprecated.</p>
2256    #[serde(rename = "Filters")]
2257    #[serde(skip_serializing_if = "Option::is_none")]
2258    pub filters: Option<Vec<InstanceInformationStringFilter>>,
2259    /// <p><p>This is a legacy method. We recommend that you don&#39;t use this method. Instead, use the <code>Filters</code> data type. <code>Filters</code> enables you to return instance information by filtering based on tags applied to managed instances.</p> <note> <p>Attempting to use <code>InstanceInformationFilterList</code> and <code>Filters</code> leads to an exception error. </p> </note></p>
2260    #[serde(rename = "InstanceInformationFilterList")]
2261    #[serde(skip_serializing_if = "Option::is_none")]
2262    pub instance_information_filter_list: Option<Vec<InstanceInformationFilter>>,
2263    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. </p>
2264    #[serde(rename = "MaxResults")]
2265    #[serde(skip_serializing_if = "Option::is_none")]
2266    pub max_results: Option<i64>,
2267    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
2268    #[serde(rename = "NextToken")]
2269    #[serde(skip_serializing_if = "Option::is_none")]
2270    pub next_token: Option<String>,
2271}
2272
2273#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2274#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2275pub struct DescribeInstanceInformationResult {
2276    /// <p>The instance information list.</p>
2277    #[serde(rename = "InstanceInformationList")]
2278    #[serde(skip_serializing_if = "Option::is_none")]
2279    pub instance_information_list: Option<Vec<InstanceInformation>>,
2280    /// <p>The token to use when requesting the next set of items. If there are no additional items to return, the string is empty. </p>
2281    #[serde(rename = "NextToken")]
2282    #[serde(skip_serializing_if = "Option::is_none")]
2283    pub next_token: Option<String>,
2284}
2285
2286#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2287#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2288pub struct DescribeInstancePatchStatesForPatchGroupRequest {
2289    /// <p>Each entry in the array is a structure containing:</p> <p>Key (string between 1 and 200 characters)</p> <p> Values (array containing a single string)</p> <p> Type (string "Equal", "NotEqual", "LessThan", "GreaterThan")</p>
2290    #[serde(rename = "Filters")]
2291    #[serde(skip_serializing_if = "Option::is_none")]
2292    pub filters: Option<Vec<InstancePatchStateFilter>>,
2293    /// <p>The maximum number of patches to return (per page).</p>
2294    #[serde(rename = "MaxResults")]
2295    #[serde(skip_serializing_if = "Option::is_none")]
2296    pub max_results: Option<i64>,
2297    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
2298    #[serde(rename = "NextToken")]
2299    #[serde(skip_serializing_if = "Option::is_none")]
2300    pub next_token: Option<String>,
2301    /// <p>The name of the patch group for which the patch state information should be retrieved.</p>
2302    #[serde(rename = "PatchGroup")]
2303    pub patch_group: String,
2304}
2305
2306#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2307#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2308pub struct DescribeInstancePatchStatesForPatchGroupResult {
2309    /// <p>The high-level patch state for the requested instances. </p>
2310    #[serde(rename = "InstancePatchStates")]
2311    #[serde(skip_serializing_if = "Option::is_none")]
2312    pub instance_patch_states: Option<Vec<InstancePatchState>>,
2313    /// <p>The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.</p>
2314    #[serde(rename = "NextToken")]
2315    #[serde(skip_serializing_if = "Option::is_none")]
2316    pub next_token: Option<String>,
2317}
2318
2319#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2320#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2321pub struct DescribeInstancePatchStatesRequest {
2322    /// <p>The ID of the instance whose patch state information should be retrieved.</p>
2323    #[serde(rename = "InstanceIds")]
2324    pub instance_ids: Vec<String>,
2325    /// <p>The maximum number of instances to return (per page).</p>
2326    #[serde(rename = "MaxResults")]
2327    #[serde(skip_serializing_if = "Option::is_none")]
2328    pub max_results: Option<i64>,
2329    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
2330    #[serde(rename = "NextToken")]
2331    #[serde(skip_serializing_if = "Option::is_none")]
2332    pub next_token: Option<String>,
2333}
2334
2335#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2336#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2337pub struct DescribeInstancePatchStatesResult {
2338    /// <p>The high-level patch state for the requested instances.</p>
2339    #[serde(rename = "InstancePatchStates")]
2340    #[serde(skip_serializing_if = "Option::is_none")]
2341    pub instance_patch_states: Option<Vec<InstancePatchState>>,
2342    /// <p>The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.</p>
2343    #[serde(rename = "NextToken")]
2344    #[serde(skip_serializing_if = "Option::is_none")]
2345    pub next_token: Option<String>,
2346}
2347
2348#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2349#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2350pub struct DescribeInstancePatchesRequest {
2351    /// <p>An array of structures. Each entry in the array is a structure containing a Key, Value combination. Valid values for Key are <code>Classification</code> | <code>KBId</code> | <code>Severity</code> | <code>State</code>.</p>
2352    #[serde(rename = "Filters")]
2353    #[serde(skip_serializing_if = "Option::is_none")]
2354    pub filters: Option<Vec<PatchOrchestratorFilter>>,
2355    /// <p>The ID of the instance whose patch state information should be retrieved.</p>
2356    #[serde(rename = "InstanceId")]
2357    pub instance_id: String,
2358    /// <p>The maximum number of patches to return (per page).</p>
2359    #[serde(rename = "MaxResults")]
2360    #[serde(skip_serializing_if = "Option::is_none")]
2361    pub max_results: Option<i64>,
2362    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
2363    #[serde(rename = "NextToken")]
2364    #[serde(skip_serializing_if = "Option::is_none")]
2365    pub next_token: Option<String>,
2366}
2367
2368#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2369#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2370pub struct DescribeInstancePatchesResult {
2371    /// <p>The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.</p>
2372    #[serde(rename = "NextToken")]
2373    #[serde(skip_serializing_if = "Option::is_none")]
2374    pub next_token: Option<String>,
2375    /// <p>Each entry in the array is a structure containing:</p> <p>Title (string)</p> <p>KBId (string)</p> <p>Classification (string)</p> <p>Severity (string)</p> <p>State (string, such as "INSTALLED" or "FAILED")</p> <p>InstalledTime (DateTime)</p> <p>InstalledBy (string)</p>
2376    #[serde(rename = "Patches")]
2377    #[serde(skip_serializing_if = "Option::is_none")]
2378    pub patches: Option<Vec<PatchComplianceData>>,
2379}
2380
2381#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2382#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2383pub struct DescribeInventoryDeletionsRequest {
2384    /// <p>Specify the delete inventory ID for which you want information. This ID was returned by the <code>DeleteInventory</code> action.</p>
2385    #[serde(rename = "DeletionId")]
2386    #[serde(skip_serializing_if = "Option::is_none")]
2387    pub deletion_id: Option<String>,
2388    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
2389    #[serde(rename = "MaxResults")]
2390    #[serde(skip_serializing_if = "Option::is_none")]
2391    pub max_results: Option<i64>,
2392    /// <p>A token to start the list. Use this token to get the next set of results. </p>
2393    #[serde(rename = "NextToken")]
2394    #[serde(skip_serializing_if = "Option::is_none")]
2395    pub next_token: Option<String>,
2396}
2397
2398#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2399#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2400pub struct DescribeInventoryDeletionsResult {
2401    /// <p>A list of status items for deleted inventory.</p>
2402    #[serde(rename = "InventoryDeletions")]
2403    #[serde(skip_serializing_if = "Option::is_none")]
2404    pub inventory_deletions: Option<Vec<InventoryDeletionStatusItem>>,
2405    /// <p>The token for the next set of items to return. Use this token to get the next set of results.</p>
2406    #[serde(rename = "NextToken")]
2407    #[serde(skip_serializing_if = "Option::is_none")]
2408    pub next_token: Option<String>,
2409}
2410
2411#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2412#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2413pub struct DescribeMaintenanceWindowExecutionTaskInvocationsRequest {
2414    /// <p>Optional filters used to scope down the returned task invocations. The supported filter key is STATUS with the corresponding values PENDING, IN_PROGRESS, SUCCESS, FAILED, TIMED_OUT, CANCELLING, and CANCELLED.</p>
2415    #[serde(rename = "Filters")]
2416    #[serde(skip_serializing_if = "Option::is_none")]
2417    pub filters: Option<Vec<MaintenanceWindowFilter>>,
2418    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
2419    #[serde(rename = "MaxResults")]
2420    #[serde(skip_serializing_if = "Option::is_none")]
2421    pub max_results: Option<i64>,
2422    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
2423    #[serde(rename = "NextToken")]
2424    #[serde(skip_serializing_if = "Option::is_none")]
2425    pub next_token: Option<String>,
2426    /// <p>The ID of the specific task in the maintenance window task that should be retrieved.</p>
2427    #[serde(rename = "TaskId")]
2428    pub task_id: String,
2429    /// <p>The ID of the maintenance window execution the task is part of.</p>
2430    #[serde(rename = "WindowExecutionId")]
2431    pub window_execution_id: String,
2432}
2433
2434#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2435#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2436pub struct DescribeMaintenanceWindowExecutionTaskInvocationsResult {
2437    /// <p>The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.</p>
2438    #[serde(rename = "NextToken")]
2439    #[serde(skip_serializing_if = "Option::is_none")]
2440    pub next_token: Option<String>,
2441    /// <p>Information about the task invocation results per invocation.</p>
2442    #[serde(rename = "WindowExecutionTaskInvocationIdentities")]
2443    #[serde(skip_serializing_if = "Option::is_none")]
2444    pub window_execution_task_invocation_identities:
2445        Option<Vec<MaintenanceWindowExecutionTaskInvocationIdentity>>,
2446}
2447
2448#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2449#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2450pub struct DescribeMaintenanceWindowExecutionTasksRequest {
2451    /// <p>Optional filters used to scope down the returned tasks. The supported filter key is STATUS with the corresponding values PENDING, IN_PROGRESS, SUCCESS, FAILED, TIMED_OUT, CANCELLING, and CANCELLED. </p>
2452    #[serde(rename = "Filters")]
2453    #[serde(skip_serializing_if = "Option::is_none")]
2454    pub filters: Option<Vec<MaintenanceWindowFilter>>,
2455    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
2456    #[serde(rename = "MaxResults")]
2457    #[serde(skip_serializing_if = "Option::is_none")]
2458    pub max_results: Option<i64>,
2459    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
2460    #[serde(rename = "NextToken")]
2461    #[serde(skip_serializing_if = "Option::is_none")]
2462    pub next_token: Option<String>,
2463    /// <p>The ID of the maintenance window execution whose task executions should be retrieved.</p>
2464    #[serde(rename = "WindowExecutionId")]
2465    pub window_execution_id: String,
2466}
2467
2468#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2469#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2470pub struct DescribeMaintenanceWindowExecutionTasksResult {
2471    /// <p>The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.</p>
2472    #[serde(rename = "NextToken")]
2473    #[serde(skip_serializing_if = "Option::is_none")]
2474    pub next_token: Option<String>,
2475    /// <p>Information about the task executions.</p>
2476    #[serde(rename = "WindowExecutionTaskIdentities")]
2477    #[serde(skip_serializing_if = "Option::is_none")]
2478    pub window_execution_task_identities: Option<Vec<MaintenanceWindowExecutionTaskIdentity>>,
2479}
2480
2481#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2482#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2483pub struct DescribeMaintenanceWindowExecutionsRequest {
2484    /// <p>Each entry in the array is a structure containing:</p> <p>Key (string, between 1 and 128 characters)</p> <p>Values (array of strings, each string is between 1 and 256 characters)</p> <p>The supported Keys are ExecutedBefore and ExecutedAfter with the value being a date/time string such as 2016-11-04T05:00:00Z.</p>
2485    #[serde(rename = "Filters")]
2486    #[serde(skip_serializing_if = "Option::is_none")]
2487    pub filters: Option<Vec<MaintenanceWindowFilter>>,
2488    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
2489    #[serde(rename = "MaxResults")]
2490    #[serde(skip_serializing_if = "Option::is_none")]
2491    pub max_results: Option<i64>,
2492    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
2493    #[serde(rename = "NextToken")]
2494    #[serde(skip_serializing_if = "Option::is_none")]
2495    pub next_token: Option<String>,
2496    /// <p>The ID of the maintenance window whose executions should be retrieved.</p>
2497    #[serde(rename = "WindowId")]
2498    pub window_id: String,
2499}
2500
2501#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2502#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2503pub struct DescribeMaintenanceWindowExecutionsResult {
2504    /// <p>The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.</p>
2505    #[serde(rename = "NextToken")]
2506    #[serde(skip_serializing_if = "Option::is_none")]
2507    pub next_token: Option<String>,
2508    /// <p>Information about the maintenance window executions.</p>
2509    #[serde(rename = "WindowExecutions")]
2510    #[serde(skip_serializing_if = "Option::is_none")]
2511    pub window_executions: Option<Vec<MaintenanceWindowExecution>>,
2512}
2513
2514#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2515#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2516pub struct DescribeMaintenanceWindowScheduleRequest {
2517    /// <p>Filters used to limit the range of results. For example, you can limit maintenance window executions to only those scheduled before or after a certain date and time.</p>
2518    #[serde(rename = "Filters")]
2519    #[serde(skip_serializing_if = "Option::is_none")]
2520    pub filters: Option<Vec<PatchOrchestratorFilter>>,
2521    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
2522    #[serde(rename = "MaxResults")]
2523    #[serde(skip_serializing_if = "Option::is_none")]
2524    pub max_results: Option<i64>,
2525    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
2526    #[serde(rename = "NextToken")]
2527    #[serde(skip_serializing_if = "Option::is_none")]
2528    pub next_token: Option<String>,
2529    /// <p>The type of resource you want to retrieve information about. For example, "INSTANCE".</p>
2530    #[serde(rename = "ResourceType")]
2531    #[serde(skip_serializing_if = "Option::is_none")]
2532    pub resource_type: Option<String>,
2533    /// <p>The instance ID or key/value pair to retrieve information about.</p>
2534    #[serde(rename = "Targets")]
2535    #[serde(skip_serializing_if = "Option::is_none")]
2536    pub targets: Option<Vec<Target>>,
2537    /// <p>The ID of the maintenance window to retrieve information about.</p>
2538    #[serde(rename = "WindowId")]
2539    #[serde(skip_serializing_if = "Option::is_none")]
2540    pub window_id: Option<String>,
2541}
2542
2543#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2544#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2545pub struct DescribeMaintenanceWindowScheduleResult {
2546    /// <p>The token for the next set of items to return. (You use this token in the next call.)</p>
2547    #[serde(rename = "NextToken")]
2548    #[serde(skip_serializing_if = "Option::is_none")]
2549    pub next_token: Option<String>,
2550    /// <p>Information about maintenance window executions scheduled for the specified time range.</p>
2551    #[serde(rename = "ScheduledWindowExecutions")]
2552    #[serde(skip_serializing_if = "Option::is_none")]
2553    pub scheduled_window_executions: Option<Vec<ScheduledWindowExecution>>,
2554}
2555
2556#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2557#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2558pub struct DescribeMaintenanceWindowTargetsRequest {
2559    /// <p>Optional filters that can be used to narrow down the scope of the returned window targets. The supported filter keys are Type, WindowTargetId and OwnerInformation.</p>
2560    #[serde(rename = "Filters")]
2561    #[serde(skip_serializing_if = "Option::is_none")]
2562    pub filters: Option<Vec<MaintenanceWindowFilter>>,
2563    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
2564    #[serde(rename = "MaxResults")]
2565    #[serde(skip_serializing_if = "Option::is_none")]
2566    pub max_results: Option<i64>,
2567    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
2568    #[serde(rename = "NextToken")]
2569    #[serde(skip_serializing_if = "Option::is_none")]
2570    pub next_token: Option<String>,
2571    /// <p>The ID of the maintenance window whose targets should be retrieved.</p>
2572    #[serde(rename = "WindowId")]
2573    pub window_id: String,
2574}
2575
2576#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2577#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2578pub struct DescribeMaintenanceWindowTargetsResult {
2579    /// <p>The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.</p>
2580    #[serde(rename = "NextToken")]
2581    #[serde(skip_serializing_if = "Option::is_none")]
2582    pub next_token: Option<String>,
2583    /// <p>Information about the targets in the maintenance window.</p>
2584    #[serde(rename = "Targets")]
2585    #[serde(skip_serializing_if = "Option::is_none")]
2586    pub targets: Option<Vec<MaintenanceWindowTarget>>,
2587}
2588
2589#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2590#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2591pub struct DescribeMaintenanceWindowTasksRequest {
2592    /// <p>Optional filters used to narrow down the scope of the returned tasks. The supported filter keys are WindowTaskId, TaskArn, Priority, and TaskType.</p>
2593    #[serde(rename = "Filters")]
2594    #[serde(skip_serializing_if = "Option::is_none")]
2595    pub filters: Option<Vec<MaintenanceWindowFilter>>,
2596    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
2597    #[serde(rename = "MaxResults")]
2598    #[serde(skip_serializing_if = "Option::is_none")]
2599    pub max_results: Option<i64>,
2600    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
2601    #[serde(rename = "NextToken")]
2602    #[serde(skip_serializing_if = "Option::is_none")]
2603    pub next_token: Option<String>,
2604    /// <p>The ID of the maintenance window whose tasks should be retrieved.</p>
2605    #[serde(rename = "WindowId")]
2606    pub window_id: String,
2607}
2608
2609#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2610#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2611pub struct DescribeMaintenanceWindowTasksResult {
2612    /// <p>The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.</p>
2613    #[serde(rename = "NextToken")]
2614    #[serde(skip_serializing_if = "Option::is_none")]
2615    pub next_token: Option<String>,
2616    /// <p>Information about the tasks in the maintenance window.</p>
2617    #[serde(rename = "Tasks")]
2618    #[serde(skip_serializing_if = "Option::is_none")]
2619    pub tasks: Option<Vec<MaintenanceWindowTask>>,
2620}
2621
2622#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2623#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2624pub struct DescribeMaintenanceWindowsForTargetRequest {
2625    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
2626    #[serde(rename = "MaxResults")]
2627    #[serde(skip_serializing_if = "Option::is_none")]
2628    pub max_results: Option<i64>,
2629    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
2630    #[serde(rename = "NextToken")]
2631    #[serde(skip_serializing_if = "Option::is_none")]
2632    pub next_token: Option<String>,
2633    /// <p>The type of resource you want to retrieve information about. For example, "INSTANCE".</p>
2634    #[serde(rename = "ResourceType")]
2635    pub resource_type: String,
2636    /// <p>The instance ID or key/value pair to retrieve information about.</p>
2637    #[serde(rename = "Targets")]
2638    pub targets: Vec<Target>,
2639}
2640
2641#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2642#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2643pub struct DescribeMaintenanceWindowsForTargetResult {
2644    /// <p>The token for the next set of items to return. (You use this token in the next call.)</p>
2645    #[serde(rename = "NextToken")]
2646    #[serde(skip_serializing_if = "Option::is_none")]
2647    pub next_token: Option<String>,
2648    /// <p>Information about the maintenance window targets and tasks an instance is associated with.</p>
2649    #[serde(rename = "WindowIdentities")]
2650    #[serde(skip_serializing_if = "Option::is_none")]
2651    pub window_identities: Option<Vec<MaintenanceWindowIdentityForTarget>>,
2652}
2653
2654#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2655#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2656pub struct DescribeMaintenanceWindowsRequest {
2657    /// <p>Optional filters used to narrow down the scope of the returned maintenance windows. Supported filter keys are <b>Name</b> and <b>Enabled</b>.</p>
2658    #[serde(rename = "Filters")]
2659    #[serde(skip_serializing_if = "Option::is_none")]
2660    pub filters: Option<Vec<MaintenanceWindowFilter>>,
2661    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
2662    #[serde(rename = "MaxResults")]
2663    #[serde(skip_serializing_if = "Option::is_none")]
2664    pub max_results: Option<i64>,
2665    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
2666    #[serde(rename = "NextToken")]
2667    #[serde(skip_serializing_if = "Option::is_none")]
2668    pub next_token: Option<String>,
2669}
2670
2671#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2672#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2673pub struct DescribeMaintenanceWindowsResult {
2674    /// <p>The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.</p>
2675    #[serde(rename = "NextToken")]
2676    #[serde(skip_serializing_if = "Option::is_none")]
2677    pub next_token: Option<String>,
2678    /// <p>Information about the maintenance windows.</p>
2679    #[serde(rename = "WindowIdentities")]
2680    #[serde(skip_serializing_if = "Option::is_none")]
2681    pub window_identities: Option<Vec<MaintenanceWindowIdentity>>,
2682}
2683
2684#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2685#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2686pub struct DescribeOpsItemsRequest {
2687    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
2688    #[serde(rename = "MaxResults")]
2689    #[serde(skip_serializing_if = "Option::is_none")]
2690    pub max_results: Option<i64>,
2691    /// <p>A token to start the list. Use this token to get the next set of results.</p>
2692    #[serde(rename = "NextToken")]
2693    #[serde(skip_serializing_if = "Option::is_none")]
2694    pub next_token: Option<String>,
2695    /// <p>One or more filters to limit the response.</p> <ul> <li> <p>Key: CreatedTime</p> <p>Operations: GreaterThan, LessThan</p> </li> <li> <p>Key: LastModifiedBy</p> <p>Operations: Contains, Equals</p> </li> <li> <p>Key: LastModifiedTime</p> <p>Operations: GreaterThan, LessThan</p> </li> <li> <p>Key: Priority</p> <p>Operations: Equals</p> </li> <li> <p>Key: Source</p> <p>Operations: Contains, Equals</p> </li> <li> <p>Key: Status</p> <p>Operations: Equals</p> </li> <li> <p>Key: Title</p> <p>Operations: Contains</p> </li> <li> <p>Key: OperationalData*</p> <p>Operations: Equals</p> </li> <li> <p>Key: OperationalDataKey</p> <p>Operations: Equals</p> </li> <li> <p>Key: OperationalDataValue</p> <p>Operations: Equals, Contains</p> </li> <li> <p>Key: OpsItemId</p> <p>Operations: Equals</p> </li> <li> <p>Key: ResourceId</p> <p>Operations: Contains</p> </li> <li> <p>Key: AutomationId</p> <p>Operations: Equals</p> </li> </ul> <p>*If you filter the response by using the OperationalData operator, specify a key-value pair by using the following JSON format: {"key":"key_name","value":"a_value"}</p>
2696    #[serde(rename = "OpsItemFilters")]
2697    #[serde(skip_serializing_if = "Option::is_none")]
2698    pub ops_item_filters: Option<Vec<OpsItemFilter>>,
2699}
2700
2701#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2702#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2703pub struct DescribeOpsItemsResponse {
2704    /// <p>The token for the next set of items to return. Use this token to get the next set of results.</p>
2705    #[serde(rename = "NextToken")]
2706    #[serde(skip_serializing_if = "Option::is_none")]
2707    pub next_token: Option<String>,
2708    /// <p>A list of OpsItems.</p>
2709    #[serde(rename = "OpsItemSummaries")]
2710    #[serde(skip_serializing_if = "Option::is_none")]
2711    pub ops_item_summaries: Option<Vec<OpsItemSummary>>,
2712}
2713
2714#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2715#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2716pub struct DescribeParametersRequest {
2717    /// <p>This data type is deprecated. Instead, use <code>ParameterFilters</code>.</p>
2718    #[serde(rename = "Filters")]
2719    #[serde(skip_serializing_if = "Option::is_none")]
2720    pub filters: Option<Vec<ParametersFilter>>,
2721    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
2722    #[serde(rename = "MaxResults")]
2723    #[serde(skip_serializing_if = "Option::is_none")]
2724    pub max_results: Option<i64>,
2725    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
2726    #[serde(rename = "NextToken")]
2727    #[serde(skip_serializing_if = "Option::is_none")]
2728    pub next_token: Option<String>,
2729    /// <p>Filters to limit the request results.</p>
2730    #[serde(rename = "ParameterFilters")]
2731    #[serde(skip_serializing_if = "Option::is_none")]
2732    pub parameter_filters: Option<Vec<ParameterStringFilter>>,
2733}
2734
2735#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2736#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2737pub struct DescribeParametersResult {
2738    /// <p>The token to use when requesting the next set of items.</p>
2739    #[serde(rename = "NextToken")]
2740    #[serde(skip_serializing_if = "Option::is_none")]
2741    pub next_token: Option<String>,
2742    /// <p>Parameters returned by the request.</p>
2743    #[serde(rename = "Parameters")]
2744    #[serde(skip_serializing_if = "Option::is_none")]
2745    pub parameters: Option<Vec<ParameterMetadata>>,
2746}
2747
2748#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2749#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2750pub struct DescribePatchBaselinesRequest {
2751    /// <p>Each element in the array is a structure containing: </p> <p>Key: (string, "NAME_PREFIX" or "OWNER")</p> <p>Value: (array of strings, exactly 1 entry, between 1 and 255 characters)</p>
2752    #[serde(rename = "Filters")]
2753    #[serde(skip_serializing_if = "Option::is_none")]
2754    pub filters: Option<Vec<PatchOrchestratorFilter>>,
2755    /// <p>The maximum number of patch baselines to return (per page).</p>
2756    #[serde(rename = "MaxResults")]
2757    #[serde(skip_serializing_if = "Option::is_none")]
2758    pub max_results: Option<i64>,
2759    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
2760    #[serde(rename = "NextToken")]
2761    #[serde(skip_serializing_if = "Option::is_none")]
2762    pub next_token: Option<String>,
2763}
2764
2765#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2766#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2767pub struct DescribePatchBaselinesResult {
2768    /// <p>An array of PatchBaselineIdentity elements.</p>
2769    #[serde(rename = "BaselineIdentities")]
2770    #[serde(skip_serializing_if = "Option::is_none")]
2771    pub baseline_identities: Option<Vec<PatchBaselineIdentity>>,
2772    /// <p>The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.</p>
2773    #[serde(rename = "NextToken")]
2774    #[serde(skip_serializing_if = "Option::is_none")]
2775    pub next_token: Option<String>,
2776}
2777
2778#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2779#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2780pub struct DescribePatchGroupStateRequest {
2781    /// <p>The name of the patch group whose patch snapshot should be retrieved.</p>
2782    #[serde(rename = "PatchGroup")]
2783    pub patch_group: String,
2784}
2785
2786#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2787#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2788pub struct DescribePatchGroupStateResult {
2789    /// <p>The number of instances in the patch group.</p>
2790    #[serde(rename = "Instances")]
2791    #[serde(skip_serializing_if = "Option::is_none")]
2792    pub instances: Option<i64>,
2793    /// <p>The number of instances with patches from the patch baseline that failed to install.</p>
2794    #[serde(rename = "InstancesWithFailedPatches")]
2795    #[serde(skip_serializing_if = "Option::is_none")]
2796    pub instances_with_failed_patches: Option<i64>,
2797    /// <p>The number of instances with patches installed that aren't defined in the patch baseline.</p>
2798    #[serde(rename = "InstancesWithInstalledOtherPatches")]
2799    #[serde(skip_serializing_if = "Option::is_none")]
2800    pub instances_with_installed_other_patches: Option<i64>,
2801    /// <p>The number of instances with installed patches.</p>
2802    #[serde(rename = "InstancesWithInstalledPatches")]
2803    #[serde(skip_serializing_if = "Option::is_none")]
2804    pub instances_with_installed_patches: Option<i64>,
2805    /// <p>The number of instances with patches installed by Patch Manager that have not been rebooted after the patch installation. The status of these instances is NON_COMPLIANT.</p>
2806    #[serde(rename = "InstancesWithInstalledPendingRebootPatches")]
2807    #[serde(skip_serializing_if = "Option::is_none")]
2808    pub instances_with_installed_pending_reboot_patches: Option<i64>,
2809    /// <p><p>The number of instances with patches installed that are specified in a RejectedPatches list. Patches with a status of <i>INSTALLED<em>REJECTED</i> were typically installed before they were added to a RejectedPatches list.</p> <note> <p>If ALLOW</em>AS_DEPENDENCY is the specified option for RejectedPatchesAction, the value of InstancesWithInstalledRejectedPatches will always be 0 (zero).</p> </note></p>
2810    #[serde(rename = "InstancesWithInstalledRejectedPatches")]
2811    #[serde(skip_serializing_if = "Option::is_none")]
2812    pub instances_with_installed_rejected_patches: Option<i64>,
2813    /// <p>The number of instances with missing patches from the patch baseline.</p>
2814    #[serde(rename = "InstancesWithMissingPatches")]
2815    #[serde(skip_serializing_if = "Option::is_none")]
2816    pub instances_with_missing_patches: Option<i64>,
2817    /// <p>The number of instances with patches that aren't applicable.</p>
2818    #[serde(rename = "InstancesWithNotApplicablePatches")]
2819    #[serde(skip_serializing_if = "Option::is_none")]
2820    pub instances_with_not_applicable_patches: Option<i64>,
2821    /// <p>The number of instances with <code>NotApplicable</code> patches beyond the supported limit, which are not reported by name to Systems Manager Inventory.</p>
2822    #[serde(rename = "InstancesWithUnreportedNotApplicablePatches")]
2823    #[serde(skip_serializing_if = "Option::is_none")]
2824    pub instances_with_unreported_not_applicable_patches: Option<i64>,
2825}
2826
2827#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2828#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2829pub struct DescribePatchGroupsRequest {
2830    /// <p>One or more filters. Use a filter to return a more specific list of results.</p>
2831    #[serde(rename = "Filters")]
2832    #[serde(skip_serializing_if = "Option::is_none")]
2833    pub filters: Option<Vec<PatchOrchestratorFilter>>,
2834    /// <p>The maximum number of patch groups to return (per page).</p>
2835    #[serde(rename = "MaxResults")]
2836    #[serde(skip_serializing_if = "Option::is_none")]
2837    pub max_results: Option<i64>,
2838    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
2839    #[serde(rename = "NextToken")]
2840    #[serde(skip_serializing_if = "Option::is_none")]
2841    pub next_token: Option<String>,
2842}
2843
2844#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2845#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2846pub struct DescribePatchGroupsResult {
2847    /// <p>Each entry in the array contains:</p> <p>PatchGroup: string (between 1 and 256 characters, Regex: ^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$)</p> <p>PatchBaselineIdentity: A PatchBaselineIdentity element. </p>
2848    #[serde(rename = "Mappings")]
2849    #[serde(skip_serializing_if = "Option::is_none")]
2850    pub mappings: Option<Vec<PatchGroupPatchBaselineMapping>>,
2851    /// <p>The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.</p>
2852    #[serde(rename = "NextToken")]
2853    #[serde(skip_serializing_if = "Option::is_none")]
2854    pub next_token: Option<String>,
2855}
2856
2857#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2858#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2859pub struct DescribePatchPropertiesRequest {
2860    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
2861    #[serde(rename = "MaxResults")]
2862    #[serde(skip_serializing_if = "Option::is_none")]
2863    pub max_results: Option<i64>,
2864    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
2865    #[serde(rename = "NextToken")]
2866    #[serde(skip_serializing_if = "Option::is_none")]
2867    pub next_token: Option<String>,
2868    /// <p>The operating system type for which to list patches.</p>
2869    #[serde(rename = "OperatingSystem")]
2870    pub operating_system: String,
2871    /// <p>Indicates whether to list patches for the Windows operating system or for Microsoft applications. Not applicable for Linux operating systems.</p>
2872    #[serde(rename = "PatchSet")]
2873    #[serde(skip_serializing_if = "Option::is_none")]
2874    pub patch_set: Option<String>,
2875    /// <p>The patch property for which you want to view patch details. </p>
2876    #[serde(rename = "Property")]
2877    pub property: String,
2878}
2879
2880#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2881#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2882pub struct DescribePatchPropertiesResult {
2883    /// <p>The token for the next set of items to return. (You use this token in the next call.)</p>
2884    #[serde(rename = "NextToken")]
2885    #[serde(skip_serializing_if = "Option::is_none")]
2886    pub next_token: Option<String>,
2887    /// <p>A list of the properties for patches matching the filter request parameters.</p>
2888    #[serde(rename = "Properties")]
2889    #[serde(skip_serializing_if = "Option::is_none")]
2890    pub properties: Option<Vec<::std::collections::HashMap<String, String>>>,
2891}
2892
2893#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2894#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2895pub struct DescribeSessionsRequest {
2896    /// <p>One or more filters to limit the type of sessions returned by the request.</p>
2897    #[serde(rename = "Filters")]
2898    #[serde(skip_serializing_if = "Option::is_none")]
2899    pub filters: Option<Vec<SessionFilter>>,
2900    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
2901    #[serde(rename = "MaxResults")]
2902    #[serde(skip_serializing_if = "Option::is_none")]
2903    pub max_results: Option<i64>,
2904    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
2905    #[serde(rename = "NextToken")]
2906    #[serde(skip_serializing_if = "Option::is_none")]
2907    pub next_token: Option<String>,
2908    /// <p>The session status to retrieve a list of sessions for. For example, "Active".</p>
2909    #[serde(rename = "State")]
2910    pub state: String,
2911}
2912
2913#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2914#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2915pub struct DescribeSessionsResponse {
2916    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
2917    #[serde(rename = "NextToken")]
2918    #[serde(skip_serializing_if = "Option::is_none")]
2919    pub next_token: Option<String>,
2920    /// <p>A list of sessions meeting the request parameters.</p>
2921    #[serde(rename = "Sessions")]
2922    #[serde(skip_serializing_if = "Option::is_none")]
2923    pub sessions: Option<Vec<Session>>,
2924}
2925
2926/// <p>A default version of a document.</p>
2927#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2928#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2929pub struct DocumentDefaultVersionDescription {
2930    /// <p>The default version of the document.</p>
2931    #[serde(rename = "DefaultVersion")]
2932    #[serde(skip_serializing_if = "Option::is_none")]
2933    pub default_version: Option<String>,
2934    /// <p>The default version of the artifact associated with the document.</p>
2935    #[serde(rename = "DefaultVersionName")]
2936    #[serde(skip_serializing_if = "Option::is_none")]
2937    pub default_version_name: Option<String>,
2938    /// <p>The name of the document.</p>
2939    #[serde(rename = "Name")]
2940    #[serde(skip_serializing_if = "Option::is_none")]
2941    pub name: Option<String>,
2942}
2943
2944/// <p>Describes a Systems Manager document. </p>
2945#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2946#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2947pub struct DocumentDescription {
2948    /// <p>Details about the document attachments, including names, locations, sizes, and so on.</p>
2949    #[serde(rename = "AttachmentsInformation")]
2950    #[serde(skip_serializing_if = "Option::is_none")]
2951    pub attachments_information: Option<Vec<AttachmentInformation>>,
2952    /// <p>The date when the document was created.</p>
2953    #[serde(rename = "CreatedDate")]
2954    #[serde(skip_serializing_if = "Option::is_none")]
2955    pub created_date: Option<f64>,
2956    /// <p>The default version.</p>
2957    #[serde(rename = "DefaultVersion")]
2958    #[serde(skip_serializing_if = "Option::is_none")]
2959    pub default_version: Option<String>,
2960    /// <p>A description of the document. </p>
2961    #[serde(rename = "Description")]
2962    #[serde(skip_serializing_if = "Option::is_none")]
2963    pub description: Option<String>,
2964    /// <p>The document format, either JSON or YAML.</p>
2965    #[serde(rename = "DocumentFormat")]
2966    #[serde(skip_serializing_if = "Option::is_none")]
2967    pub document_format: Option<String>,
2968    /// <p>The type of document.</p>
2969    #[serde(rename = "DocumentType")]
2970    #[serde(skip_serializing_if = "Option::is_none")]
2971    pub document_type: Option<String>,
2972    /// <p>The document version.</p>
2973    #[serde(rename = "DocumentVersion")]
2974    #[serde(skip_serializing_if = "Option::is_none")]
2975    pub document_version: Option<String>,
2976    /// <p><p>The Sha256 or Sha1 hash created by the system when the document was created. </p> <note> <p>Sha1 hashes have been deprecated.</p> </note></p>
2977    #[serde(rename = "Hash")]
2978    #[serde(skip_serializing_if = "Option::is_none")]
2979    pub hash: Option<String>,
2980    /// <p><p>The hash type of the document. Valid values include <code>Sha256</code> or <code>Sha1</code>.</p> <note> <p>Sha1 hashes have been deprecated.</p> </note></p>
2981    #[serde(rename = "HashType")]
2982    #[serde(skip_serializing_if = "Option::is_none")]
2983    pub hash_type: Option<String>,
2984    /// <p>The latest version of the document.</p>
2985    #[serde(rename = "LatestVersion")]
2986    #[serde(skip_serializing_if = "Option::is_none")]
2987    pub latest_version: Option<String>,
2988    /// <p>The name of the Systems Manager document.</p>
2989    #[serde(rename = "Name")]
2990    #[serde(skip_serializing_if = "Option::is_none")]
2991    pub name: Option<String>,
2992    /// <p>The AWS user account that created the document.</p>
2993    #[serde(rename = "Owner")]
2994    #[serde(skip_serializing_if = "Option::is_none")]
2995    pub owner: Option<String>,
2996    /// <p>A description of the parameters for a document.</p>
2997    #[serde(rename = "Parameters")]
2998    #[serde(skip_serializing_if = "Option::is_none")]
2999    pub parameters: Option<Vec<DocumentParameter>>,
3000    /// <p>The list of OS platforms compatible with this Systems Manager document. </p>
3001    #[serde(rename = "PlatformTypes")]
3002    #[serde(skip_serializing_if = "Option::is_none")]
3003    pub platform_types: Option<Vec<String>>,
3004    /// <p>A list of SSM documents required by a document. For example, an <code>ApplicationConfiguration</code> document requires an <code>ApplicationConfigurationSchema</code> document.</p>
3005    #[serde(rename = "Requires")]
3006    #[serde(skip_serializing_if = "Option::is_none")]
3007    pub requires: Option<Vec<DocumentRequires>>,
3008    /// <p>The schema version.</p>
3009    #[serde(rename = "SchemaVersion")]
3010    #[serde(skip_serializing_if = "Option::is_none")]
3011    pub schema_version: Option<String>,
3012    /// <p>The SHA1 hash of the document, which you can use for verification.</p>
3013    #[serde(rename = "Sha1")]
3014    #[serde(skip_serializing_if = "Option::is_none")]
3015    pub sha_1: Option<String>,
3016    /// <p>The status of the Systems Manager document.</p>
3017    #[serde(rename = "Status")]
3018    #[serde(skip_serializing_if = "Option::is_none")]
3019    pub status: Option<String>,
3020    /// <p>A message returned by AWS Systems Manager that explains the <code>Status</code> value. For example, a <code>Failed</code> status might be explained by the <code>StatusInformation</code> message, "The specified S3 bucket does not exist. Verify that the URL of the S3 bucket is correct."</p>
3021    #[serde(rename = "StatusInformation")]
3022    #[serde(skip_serializing_if = "Option::is_none")]
3023    pub status_information: Option<String>,
3024    /// <p>The tags, or metadata, that have been applied to the document.</p>
3025    #[serde(rename = "Tags")]
3026    #[serde(skip_serializing_if = "Option::is_none")]
3027    pub tags: Option<Vec<Tag>>,
3028    /// <p>The target type which defines the kinds of resources the document can run on. For example, /AWS::EC2::Instance. For a list of valid resource types, see <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html">AWS resource and property types reference</a> in the <i>AWS CloudFormation User Guide</i>. </p>
3029    #[serde(rename = "TargetType")]
3030    #[serde(skip_serializing_if = "Option::is_none")]
3031    pub target_type: Option<String>,
3032    /// <p>The version of the artifact associated with the document.</p>
3033    #[serde(rename = "VersionName")]
3034    #[serde(skip_serializing_if = "Option::is_none")]
3035    pub version_name: Option<String>,
3036}
3037
3038/// <p>This data type is deprecated. Instead, use <a>DocumentKeyValuesFilter</a>.</p>
3039#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3040#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3041pub struct DocumentFilter {
3042    /// <p>The name of the filter.</p>
3043    #[serde(rename = "key")]
3044    pub key: String,
3045    /// <p>The value of the filter.</p>
3046    #[serde(rename = "value")]
3047    pub value: String,
3048}
3049
3050/// <p>Describes the name of a Systems Manager document.</p>
3051#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3052#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3053pub struct DocumentIdentifier {
3054    /// <p>The document format, either JSON or YAML.</p>
3055    #[serde(rename = "DocumentFormat")]
3056    #[serde(skip_serializing_if = "Option::is_none")]
3057    pub document_format: Option<String>,
3058    /// <p>The document type.</p>
3059    #[serde(rename = "DocumentType")]
3060    #[serde(skip_serializing_if = "Option::is_none")]
3061    pub document_type: Option<String>,
3062    /// <p>The document version.</p>
3063    #[serde(rename = "DocumentVersion")]
3064    #[serde(skip_serializing_if = "Option::is_none")]
3065    pub document_version: Option<String>,
3066    /// <p>The name of the Systems Manager document.</p>
3067    #[serde(rename = "Name")]
3068    #[serde(skip_serializing_if = "Option::is_none")]
3069    pub name: Option<String>,
3070    /// <p>The AWS user account that created the document.</p>
3071    #[serde(rename = "Owner")]
3072    #[serde(skip_serializing_if = "Option::is_none")]
3073    pub owner: Option<String>,
3074    /// <p>The operating system platform. </p>
3075    #[serde(rename = "PlatformTypes")]
3076    #[serde(skip_serializing_if = "Option::is_none")]
3077    pub platform_types: Option<Vec<String>>,
3078    /// <p>A list of SSM documents required by a document. For example, an <code>ApplicationConfiguration</code> document requires an <code>ApplicationConfigurationSchema</code> document.</p>
3079    #[serde(rename = "Requires")]
3080    #[serde(skip_serializing_if = "Option::is_none")]
3081    pub requires: Option<Vec<DocumentRequires>>,
3082    /// <p>The schema version.</p>
3083    #[serde(rename = "SchemaVersion")]
3084    #[serde(skip_serializing_if = "Option::is_none")]
3085    pub schema_version: Option<String>,
3086    /// <p>The tags, or metadata, that have been applied to the document.</p>
3087    #[serde(rename = "Tags")]
3088    #[serde(skip_serializing_if = "Option::is_none")]
3089    pub tags: Option<Vec<Tag>>,
3090    /// <p>The target type which defines the kinds of resources the document can run on. For example, /AWS::EC2::Instance. For a list of valid resource types, see <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html">AWS resource and property types reference</a> in the <i>AWS CloudFormation User Guide</i>. </p>
3091    #[serde(rename = "TargetType")]
3092    #[serde(skip_serializing_if = "Option::is_none")]
3093    pub target_type: Option<String>,
3094    /// <p>An optional field specifying the version of the artifact associated with the document. For example, "Release 12, Update 6". This value is unique across all versions of a document, and cannot be changed.</p>
3095    #[serde(rename = "VersionName")]
3096    #[serde(skip_serializing_if = "Option::is_none")]
3097    pub version_name: Option<String>,
3098}
3099
3100/// <p>One or more filters. Use a filter to return a more specific list of documents.</p> <p>For keys, you can specify one or more tags that have been applied to a document. </p> <p>Other valid values include <code>Owner</code>, <code>Name</code>, <code>PlatformTypes</code>, <code>DocumentType</code>, and <code>TargetType</code>.</p> <p>Note that only one Owner can be specified in a request. For example: <code>Key=Owner,Values=Self</code>.</p> <p>If you use Name as a key, you can use a name prefix to return a list of documents. For example, in the AWS CLI, to return a list of all documents that begin with <code>Te</code>, run the following command:</p> <p> <code>aws ssm list-documents --filters Key=Name,Values=Te</code> </p> <p>If you specify more than two keys, only documents that are identified by all the tags are returned in the results. If you specify more than two values for a key, documents that are identified by any of the values are returned in the results.</p> <p>To specify a custom key and value pair, use the format <code>Key=tag:tagName,Values=valueName</code>.</p> <p>For example, if you created a Key called region and are using the AWS CLI to call the <code>list-documents</code> command: </p> <p> <code>aws ssm list-documents --filters Key=tag:region,Values=east,west Key=Owner,Values=Self</code> </p>
3101#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3102#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3103pub struct DocumentKeyValuesFilter {
3104    /// <p>The name of the filter key.</p>
3105    #[serde(rename = "Key")]
3106    #[serde(skip_serializing_if = "Option::is_none")]
3107    pub key: Option<String>,
3108    /// <p>The value for the filter key.</p>
3109    #[serde(rename = "Values")]
3110    #[serde(skip_serializing_if = "Option::is_none")]
3111    pub values: Option<Vec<String>>,
3112}
3113
3114/// <p>Parameters specified in a System Manager document that run on the server when the command is run. </p>
3115#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3116#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3117pub struct DocumentParameter {
3118    /// <p>If specified, the default values for the parameters. Parameters without a default value are required. Parameters with a default value are optional.</p>
3119    #[serde(rename = "DefaultValue")]
3120    #[serde(skip_serializing_if = "Option::is_none")]
3121    pub default_value: Option<String>,
3122    /// <p>A description of what the parameter does, how to use it, the default value, and whether or not the parameter is optional.</p>
3123    #[serde(rename = "Description")]
3124    #[serde(skip_serializing_if = "Option::is_none")]
3125    pub description: Option<String>,
3126    /// <p>The name of the parameter.</p>
3127    #[serde(rename = "Name")]
3128    #[serde(skip_serializing_if = "Option::is_none")]
3129    pub name: Option<String>,
3130    /// <p>The type of parameter. The type can be either String or StringList.</p>
3131    #[serde(rename = "Type")]
3132    #[serde(skip_serializing_if = "Option::is_none")]
3133    pub type_: Option<String>,
3134}
3135
3136/// <p>An SSM document required by the current document.</p>
3137#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
3138pub struct DocumentRequires {
3139    /// <p>The name of the required SSM document. The name can be an Amazon Resource Name (ARN).</p>
3140    #[serde(rename = "Name")]
3141    pub name: String,
3142    /// <p>The document version required by the current document.</p>
3143    #[serde(rename = "Version")]
3144    #[serde(skip_serializing_if = "Option::is_none")]
3145    pub version: Option<String>,
3146}
3147
3148/// <p>Version information about the document.</p>
3149#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3150#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3151pub struct DocumentVersionInfo {
3152    /// <p>The date the document was created.</p>
3153    #[serde(rename = "CreatedDate")]
3154    #[serde(skip_serializing_if = "Option::is_none")]
3155    pub created_date: Option<f64>,
3156    /// <p>The document format, either JSON or YAML.</p>
3157    #[serde(rename = "DocumentFormat")]
3158    #[serde(skip_serializing_if = "Option::is_none")]
3159    pub document_format: Option<String>,
3160    /// <p>The document version.</p>
3161    #[serde(rename = "DocumentVersion")]
3162    #[serde(skip_serializing_if = "Option::is_none")]
3163    pub document_version: Option<String>,
3164    /// <p>An identifier for the default version of the document.</p>
3165    #[serde(rename = "IsDefaultVersion")]
3166    #[serde(skip_serializing_if = "Option::is_none")]
3167    pub is_default_version: Option<bool>,
3168    /// <p>The document name.</p>
3169    #[serde(rename = "Name")]
3170    #[serde(skip_serializing_if = "Option::is_none")]
3171    pub name: Option<String>,
3172    /// <p>The status of the Systems Manager document, such as <code>Creating</code>, <code>Active</code>, <code>Failed</code>, and <code>Deleting</code>.</p>
3173    #[serde(rename = "Status")]
3174    #[serde(skip_serializing_if = "Option::is_none")]
3175    pub status: Option<String>,
3176    /// <p>A message returned by AWS Systems Manager that explains the <code>Status</code> value. For example, a <code>Failed</code> status might be explained by the <code>StatusInformation</code> message, "The specified S3 bucket does not exist. Verify that the URL of the S3 bucket is correct."</p>
3177    #[serde(rename = "StatusInformation")]
3178    #[serde(skip_serializing_if = "Option::is_none")]
3179    pub status_information: Option<String>,
3180    /// <p>The version of the artifact associated with the document. For example, "Release 12, Update 6". This value is unique across all versions of a document, and cannot be changed.</p>
3181    #[serde(rename = "VersionName")]
3182    #[serde(skip_serializing_if = "Option::is_none")]
3183    pub version_name: Option<String>,
3184}
3185
3186/// <p>The EffectivePatch structure defines metadata about a patch along with the approval state of the patch in a particular patch baseline. The approval state includes information about whether the patch is currently approved, due to be approved by a rule, explicitly approved, or explicitly rejected and the date the patch was or will be approved.</p>
3187#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3188#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3189pub struct EffectivePatch {
3190    /// <p>Provides metadata for a patch, including information such as the KB ID, severity, classification and a URL for where more information can be obtained about the patch.</p>
3191    #[serde(rename = "Patch")]
3192    #[serde(skip_serializing_if = "Option::is_none")]
3193    pub patch: Option<Patch>,
3194    /// <p>The status of the patch in a patch baseline. This includes information about whether the patch is currently approved, due to be approved by a rule, explicitly approved, or explicitly rejected and the date the patch was or will be approved.</p>
3195    #[serde(rename = "PatchStatus")]
3196    #[serde(skip_serializing_if = "Option::is_none")]
3197    pub patch_status: Option<PatchStatus>,
3198}
3199
3200/// <p>Describes a failed association.</p>
3201#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3202#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3203pub struct FailedCreateAssociation {
3204    /// <p>The association.</p>
3205    #[serde(rename = "Entry")]
3206    #[serde(skip_serializing_if = "Option::is_none")]
3207    pub entry: Option<CreateAssociationBatchRequestEntry>,
3208    /// <p>The source of the failure.</p>
3209    #[serde(rename = "Fault")]
3210    #[serde(skip_serializing_if = "Option::is_none")]
3211    pub fault: Option<String>,
3212    /// <p>A description of the failure.</p>
3213    #[serde(rename = "Message")]
3214    #[serde(skip_serializing_if = "Option::is_none")]
3215    pub message: Option<String>,
3216}
3217
3218/// <p>Information about an Automation failure.</p>
3219#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3220#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3221pub struct FailureDetails {
3222    /// <p>Detailed information about the Automation step failure.</p>
3223    #[serde(rename = "Details")]
3224    #[serde(skip_serializing_if = "Option::is_none")]
3225    pub details: Option<::std::collections::HashMap<String, Vec<String>>>,
3226    /// <p>The stage of the Automation execution when the failure occurred. The stages include the following: InputValidation, PreVerification, Invocation, PostVerification.</p>
3227    #[serde(rename = "FailureStage")]
3228    #[serde(skip_serializing_if = "Option::is_none")]
3229    pub failure_stage: Option<String>,
3230    /// <p>The type of Automation failure. Failure types include the following: Action, Permission, Throttling, Verification, Internal.</p>
3231    #[serde(rename = "FailureType")]
3232    #[serde(skip_serializing_if = "Option::is_none")]
3233    pub failure_type: Option<String>,
3234}
3235
3236#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3237#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3238pub struct GetAutomationExecutionRequest {
3239    /// <p>The unique identifier for an existing automation execution to examine. The execution ID is returned by StartAutomationExecution when the execution of an Automation document is initiated.</p>
3240    #[serde(rename = "AutomationExecutionId")]
3241    pub automation_execution_id: String,
3242}
3243
3244#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3245#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3246pub struct GetAutomationExecutionResult {
3247    /// <p>Detailed information about the current state of an automation execution.</p>
3248    #[serde(rename = "AutomationExecution")]
3249    #[serde(skip_serializing_if = "Option::is_none")]
3250    pub automation_execution: Option<AutomationExecution>,
3251}
3252
3253#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3254#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3255pub struct GetCalendarStateRequest {
3256    /// <p>(Optional) The specific time for which you want to get calendar state information, in <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> format. If you do not add <code>AtTime</code>, the current time is assumed.</p>
3257    #[serde(rename = "AtTime")]
3258    #[serde(skip_serializing_if = "Option::is_none")]
3259    pub at_time: Option<String>,
3260    /// <p>The names or Amazon Resource Names (ARNs) of the Systems Manager documents that represent the calendar entries for which you want to get the state.</p>
3261    #[serde(rename = "CalendarNames")]
3262    pub calendar_names: Vec<String>,
3263}
3264
3265#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3266#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3267pub struct GetCalendarStateResponse {
3268    /// <p>The time, as an <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> string, that you specified in your command. If you did not specify a time, <code>GetCalendarState</code> uses the current time.</p>
3269    #[serde(rename = "AtTime")]
3270    #[serde(skip_serializing_if = "Option::is_none")]
3271    pub at_time: Option<String>,
3272    /// <p>The time, as an <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> string, that the calendar state will change. If the current calendar state is <code>OPEN</code>, <code>NextTransitionTime</code> indicates when the calendar state changes to <code>CLOSED</code>, and vice-versa.</p>
3273    #[serde(rename = "NextTransitionTime")]
3274    #[serde(skip_serializing_if = "Option::is_none")]
3275    pub next_transition_time: Option<String>,
3276    /// <p>The state of the calendar. An <code>OPEN</code> calendar indicates that actions are allowed to proceed, and a <code>CLOSED</code> calendar indicates that actions are not allowed to proceed.</p>
3277    #[serde(rename = "State")]
3278    #[serde(skip_serializing_if = "Option::is_none")]
3279    pub state: Option<String>,
3280}
3281
3282#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3283#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3284pub struct GetCommandInvocationRequest {
3285    /// <p>(Required) The parent command ID of the invocation plugin.</p>
3286    #[serde(rename = "CommandId")]
3287    pub command_id: String,
3288    /// <p>(Required) The ID of the managed instance targeted by the command. A managed instance can be an EC2 instance or an instance in your hybrid environment that is configured for Systems Manager.</p>
3289    #[serde(rename = "InstanceId")]
3290    pub instance_id: String,
3291    /// <p>(Optional) The name of the plugin for which you want detailed results. If the document contains only one plugin, the name can be omitted and the details will be returned.</p>
3292    #[serde(rename = "PluginName")]
3293    #[serde(skip_serializing_if = "Option::is_none")]
3294    pub plugin_name: Option<String>,
3295}
3296
3297#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3298#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3299pub struct GetCommandInvocationResult {
3300    /// <p>CloudWatch Logs information where Systems Manager sent the command output.</p>
3301    #[serde(rename = "CloudWatchOutputConfig")]
3302    #[serde(skip_serializing_if = "Option::is_none")]
3303    pub cloud_watch_output_config: Option<CloudWatchOutputConfig>,
3304    /// <p>The parent command ID of the invocation plugin.</p>
3305    #[serde(rename = "CommandId")]
3306    #[serde(skip_serializing_if = "Option::is_none")]
3307    pub command_id: Option<String>,
3308    /// <p>The comment text for the command.</p>
3309    #[serde(rename = "Comment")]
3310    #[serde(skip_serializing_if = "Option::is_none")]
3311    pub comment: Option<String>,
3312    /// <p>The name of the document that was run. For example, AWS-RunShellScript.</p>
3313    #[serde(rename = "DocumentName")]
3314    #[serde(skip_serializing_if = "Option::is_none")]
3315    pub document_name: Option<String>,
3316    /// <p>The SSM document version used in the request.</p>
3317    #[serde(rename = "DocumentVersion")]
3318    #[serde(skip_serializing_if = "Option::is_none")]
3319    pub document_version: Option<String>,
3320    /// <p>Duration since ExecutionStartDateTime.</p>
3321    #[serde(rename = "ExecutionElapsedTime")]
3322    #[serde(skip_serializing_if = "Option::is_none")]
3323    pub execution_elapsed_time: Option<String>,
3324    /// <p>The date and time the plugin was finished running. Date and time are written in ISO 8601 format. For example, June 7, 2017 is represented as 2017-06-7. The following sample AWS CLI command uses the <code>InvokedAfter</code> filter.</p> <p> <code>aws ssm list-commands --filters key=InvokedAfter,value=2017-06-07T00:00:00Z</code> </p> <p>If the plugin has not started to run, the string is empty.</p>
3325    #[serde(rename = "ExecutionEndDateTime")]
3326    #[serde(skip_serializing_if = "Option::is_none")]
3327    pub execution_end_date_time: Option<String>,
3328    /// <p>The date and time the plugin started running. Date and time are written in ISO 8601 format. For example, June 7, 2017 is represented as 2017-06-7. The following sample AWS CLI command uses the <code>InvokedBefore</code> filter.</p> <p> <code>aws ssm list-commands --filters key=InvokedBefore,value=2017-06-07T00:00:00Z</code> </p> <p>If the plugin has not started to run, the string is empty.</p>
3329    #[serde(rename = "ExecutionStartDateTime")]
3330    #[serde(skip_serializing_if = "Option::is_none")]
3331    pub execution_start_date_time: Option<String>,
3332    /// <p>The ID of the managed instance targeted by the command. A managed instance can be an EC2 instance or an instance in your hybrid environment that is configured for Systems Manager.</p>
3333    #[serde(rename = "InstanceId")]
3334    #[serde(skip_serializing_if = "Option::is_none")]
3335    pub instance_id: Option<String>,
3336    /// <p>The name of the plugin for which you want detailed results. For example, aws:RunShellScript is a plugin.</p>
3337    #[serde(rename = "PluginName")]
3338    #[serde(skip_serializing_if = "Option::is_none")]
3339    pub plugin_name: Option<String>,
3340    /// <p>The error level response code for the plugin script. If the response code is -1, then the command has not started running on the instance, or it was not received by the instance.</p>
3341    #[serde(rename = "ResponseCode")]
3342    #[serde(skip_serializing_if = "Option::is_none")]
3343    pub response_code: Option<i64>,
3344    /// <p>The first 8,000 characters written by the plugin to stderr. If the command has not finished running, then this string is empty.</p>
3345    #[serde(rename = "StandardErrorContent")]
3346    #[serde(skip_serializing_if = "Option::is_none")]
3347    pub standard_error_content: Option<String>,
3348    /// <p>The URL for the complete text written by the plugin to stderr. If the command has not finished running, then this string is empty.</p>
3349    #[serde(rename = "StandardErrorUrl")]
3350    #[serde(skip_serializing_if = "Option::is_none")]
3351    pub standard_error_url: Option<String>,
3352    /// <p>The first 24,000 characters written by the plugin to stdout. If the command has not finished running, if ExecutionStatus is neither Succeeded nor Failed, then this string is empty.</p>
3353    #[serde(rename = "StandardOutputContent")]
3354    #[serde(skip_serializing_if = "Option::is_none")]
3355    pub standard_output_content: Option<String>,
3356    /// <p>The URL for the complete text written by the plugin to stdout in Amazon S3. If an S3 bucket was not specified, then this string is empty.</p>
3357    #[serde(rename = "StandardOutputUrl")]
3358    #[serde(skip_serializing_if = "Option::is_none")]
3359    pub standard_output_url: Option<String>,
3360    /// <p>The status of this invocation plugin. This status can be different than StatusDetails.</p>
3361    #[serde(rename = "Status")]
3362    #[serde(skip_serializing_if = "Option::is_none")]
3363    pub status: Option<String>,
3364    /// <p><p>A detailed status of the command execution for an invocation. StatusDetails includes more information than Status because it includes states resulting from error and concurrency control parameters. StatusDetails can show different results than Status. For more information about these statuses, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/monitor-commands.html">Understanding command statuses</a> in the <i>AWS Systems Manager User Guide</i>. StatusDetails can be one of the following values:</p> <ul> <li> <p>Pending: The command has not been sent to the instance.</p> </li> <li> <p>In Progress: The command has been sent to the instance but has not reached a terminal state.</p> </li> <li> <p>Delayed: The system attempted to send the command to the target, but the target was not available. The instance might not be available because of network issues, because the instance was stopped, or for similar reasons. The system will try to send the command again.</p> </li> <li> <p>Success: The command or plugin ran successfully. This is a terminal state.</p> </li> <li> <p>Delivery Timed Out: The command was not delivered to the instance before the delivery timeout expired. Delivery timeouts do not count against the parent command&#39;s MaxErrors limit, but they do contribute to whether the parent command status is Success or Incomplete. This is a terminal state.</p> </li> <li> <p>Execution Timed Out: The command started to run on the instance, but the execution was not complete before the timeout expired. Execution timeouts count against the MaxErrors limit of the parent command. This is a terminal state.</p> </li> <li> <p>Failed: The command wasn&#39;t run successfully on the instance. For a plugin, this indicates that the result code was not zero. For a command invocation, this indicates that the result code for one or more plugins was not zero. Invocation failures count against the MaxErrors limit of the parent command. This is a terminal state.</p> </li> <li> <p>Canceled: The command was terminated before it was completed. This is a terminal state.</p> </li> <li> <p>Undeliverable: The command can&#39;t be delivered to the instance. The instance might not exist or might not be responding. Undeliverable invocations don&#39;t count against the parent command&#39;s MaxErrors limit and don&#39;t contribute to whether the parent command status is Success or Incomplete. This is a terminal state.</p> </li> <li> <p>Terminated: The parent command exceeded its MaxErrors limit and subsequent command invocations were canceled by the system. This is a terminal state.</p> </li> </ul></p>
3365    #[serde(rename = "StatusDetails")]
3366    #[serde(skip_serializing_if = "Option::is_none")]
3367    pub status_details: Option<String>,
3368}
3369
3370#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3371#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3372pub struct GetConnectionStatusRequest {
3373    /// <p>The ID of the instance.</p>
3374    #[serde(rename = "Target")]
3375    pub target: String,
3376}
3377
3378#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3379#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3380pub struct GetConnectionStatusResponse {
3381    /// <p>The status of the connection to the instance. For example, 'Connected' or 'Not Connected'.</p>
3382    #[serde(rename = "Status")]
3383    #[serde(skip_serializing_if = "Option::is_none")]
3384    pub status: Option<String>,
3385    /// <p>The ID of the instance to check connection status. </p>
3386    #[serde(rename = "Target")]
3387    #[serde(skip_serializing_if = "Option::is_none")]
3388    pub target: Option<String>,
3389}
3390
3391#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3392#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3393pub struct GetDefaultPatchBaselineRequest {
3394    /// <p>Returns the default patch baseline for the specified operating system.</p>
3395    #[serde(rename = "OperatingSystem")]
3396    #[serde(skip_serializing_if = "Option::is_none")]
3397    pub operating_system: Option<String>,
3398}
3399
3400#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3401#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3402pub struct GetDefaultPatchBaselineResult {
3403    /// <p>The ID of the default patch baseline.</p>
3404    #[serde(rename = "BaselineId")]
3405    #[serde(skip_serializing_if = "Option::is_none")]
3406    pub baseline_id: Option<String>,
3407    /// <p>The operating system for the returned patch baseline. </p>
3408    #[serde(rename = "OperatingSystem")]
3409    #[serde(skip_serializing_if = "Option::is_none")]
3410    pub operating_system: Option<String>,
3411}
3412
3413#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3414#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3415pub struct GetDeployablePatchSnapshotForInstanceRequest {
3416    /// <p>The ID of the instance for which the appropriate patch snapshot should be retrieved.</p>
3417    #[serde(rename = "InstanceId")]
3418    pub instance_id: String,
3419    /// <p>The user-defined snapshot ID.</p>
3420    #[serde(rename = "SnapshotId")]
3421    pub snapshot_id: String,
3422}
3423
3424#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3425#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3426pub struct GetDeployablePatchSnapshotForInstanceResult {
3427    /// <p>The ID of the instance.</p>
3428    #[serde(rename = "InstanceId")]
3429    #[serde(skip_serializing_if = "Option::is_none")]
3430    pub instance_id: Option<String>,
3431    /// <p>Returns the specific operating system (for example Windows Server 2012 or Amazon Linux 2015.09) on the instance for the specified patch snapshot.</p>
3432    #[serde(rename = "Product")]
3433    #[serde(skip_serializing_if = "Option::is_none")]
3434    pub product: Option<String>,
3435    /// <p>A pre-signed Amazon S3 URL that can be used to download the patch snapshot.</p>
3436    #[serde(rename = "SnapshotDownloadUrl")]
3437    #[serde(skip_serializing_if = "Option::is_none")]
3438    pub snapshot_download_url: Option<String>,
3439    /// <p>The user-defined snapshot ID.</p>
3440    #[serde(rename = "SnapshotId")]
3441    #[serde(skip_serializing_if = "Option::is_none")]
3442    pub snapshot_id: Option<String>,
3443}
3444
3445#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3446#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3447pub struct GetDocumentRequest {
3448    /// <p>Returns the document in the specified format. The document format can be either JSON or YAML. JSON is the default format.</p>
3449    #[serde(rename = "DocumentFormat")]
3450    #[serde(skip_serializing_if = "Option::is_none")]
3451    pub document_format: Option<String>,
3452    /// <p>The document version for which you want information.</p>
3453    #[serde(rename = "DocumentVersion")]
3454    #[serde(skip_serializing_if = "Option::is_none")]
3455    pub document_version: Option<String>,
3456    /// <p>The name of the Systems Manager document.</p>
3457    #[serde(rename = "Name")]
3458    pub name: String,
3459    /// <p>An optional field specifying the version of the artifact associated with the document. For example, "Release 12, Update 6". This value is unique across all versions of a document and can't be changed.</p>
3460    #[serde(rename = "VersionName")]
3461    #[serde(skip_serializing_if = "Option::is_none")]
3462    pub version_name: Option<String>,
3463}
3464
3465#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3466#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3467pub struct GetDocumentResult {
3468    /// <p>A description of the document attachments, including names, locations, sizes, and so on.</p>
3469    #[serde(rename = "AttachmentsContent")]
3470    #[serde(skip_serializing_if = "Option::is_none")]
3471    pub attachments_content: Option<Vec<AttachmentContent>>,
3472    /// <p>The contents of the Systems Manager document.</p>
3473    #[serde(rename = "Content")]
3474    #[serde(skip_serializing_if = "Option::is_none")]
3475    pub content: Option<String>,
3476    /// <p>The document format, either JSON or YAML.</p>
3477    #[serde(rename = "DocumentFormat")]
3478    #[serde(skip_serializing_if = "Option::is_none")]
3479    pub document_format: Option<String>,
3480    /// <p>The document type.</p>
3481    #[serde(rename = "DocumentType")]
3482    #[serde(skip_serializing_if = "Option::is_none")]
3483    pub document_type: Option<String>,
3484    /// <p>The document version.</p>
3485    #[serde(rename = "DocumentVersion")]
3486    #[serde(skip_serializing_if = "Option::is_none")]
3487    pub document_version: Option<String>,
3488    /// <p>The name of the Systems Manager document.</p>
3489    #[serde(rename = "Name")]
3490    #[serde(skip_serializing_if = "Option::is_none")]
3491    pub name: Option<String>,
3492    /// <p>A list of SSM documents required by a document. For example, an <code>ApplicationConfiguration</code> document requires an <code>ApplicationConfigurationSchema</code> document.</p>
3493    #[serde(rename = "Requires")]
3494    #[serde(skip_serializing_if = "Option::is_none")]
3495    pub requires: Option<Vec<DocumentRequires>>,
3496    /// <p>The status of the Systems Manager document, such as <code>Creating</code>, <code>Active</code>, <code>Updating</code>, <code>Failed</code>, and <code>Deleting</code>.</p>
3497    #[serde(rename = "Status")]
3498    #[serde(skip_serializing_if = "Option::is_none")]
3499    pub status: Option<String>,
3500    /// <p>A message returned by AWS Systems Manager that explains the <code>Status</code> value. For example, a <code>Failed</code> status might be explained by the <code>StatusInformation</code> message, "The specified S3 bucket does not exist. Verify that the URL of the S3 bucket is correct."</p>
3501    #[serde(rename = "StatusInformation")]
3502    #[serde(skip_serializing_if = "Option::is_none")]
3503    pub status_information: Option<String>,
3504    /// <p>The version of the artifact associated with the document. For example, "Release 12, Update 6". This value is unique across all versions of a document, and cannot be changed.</p>
3505    #[serde(rename = "VersionName")]
3506    #[serde(skip_serializing_if = "Option::is_none")]
3507    pub version_name: Option<String>,
3508}
3509
3510#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3511#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3512pub struct GetInventoryRequest {
3513    /// <p>Returns counts of inventory types based on one or more expressions. For example, if you aggregate by using an expression that uses the <code>AWS:InstanceInformation.PlatformType</code> type, you can see a count of how many Windows and Linux instances exist in your inventoried fleet.</p>
3514    #[serde(rename = "Aggregators")]
3515    #[serde(skip_serializing_if = "Option::is_none")]
3516    pub aggregators: Option<Vec<InventoryAggregator>>,
3517    /// <p>One or more filters. Use a filter to return a more specific list of results.</p>
3518    #[serde(rename = "Filters")]
3519    #[serde(skip_serializing_if = "Option::is_none")]
3520    pub filters: Option<Vec<InventoryFilter>>,
3521    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
3522    #[serde(rename = "MaxResults")]
3523    #[serde(skip_serializing_if = "Option::is_none")]
3524    pub max_results: Option<i64>,
3525    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
3526    #[serde(rename = "NextToken")]
3527    #[serde(skip_serializing_if = "Option::is_none")]
3528    pub next_token: Option<String>,
3529    /// <p>The list of inventory item types to return.</p>
3530    #[serde(rename = "ResultAttributes")]
3531    #[serde(skip_serializing_if = "Option::is_none")]
3532    pub result_attributes: Option<Vec<ResultAttribute>>,
3533}
3534
3535#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3536#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3537pub struct GetInventoryResult {
3538    /// <p>Collection of inventory entities such as a collection of instance inventory. </p>
3539    #[serde(rename = "Entities")]
3540    #[serde(skip_serializing_if = "Option::is_none")]
3541    pub entities: Option<Vec<InventoryResultEntity>>,
3542    /// <p>The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.</p>
3543    #[serde(rename = "NextToken")]
3544    #[serde(skip_serializing_if = "Option::is_none")]
3545    pub next_token: Option<String>,
3546}
3547
3548#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3549#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3550pub struct GetInventorySchemaRequest {
3551    /// <p>Returns inventory schemas that support aggregation. For example, this call returns the <code>AWS:InstanceInformation</code> type, because it supports aggregation based on the <code>PlatformName</code>, <code>PlatformType</code>, and <code>PlatformVersion</code> attributes.</p>
3552    #[serde(rename = "Aggregator")]
3553    #[serde(skip_serializing_if = "Option::is_none")]
3554    pub aggregator: Option<bool>,
3555    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
3556    #[serde(rename = "MaxResults")]
3557    #[serde(skip_serializing_if = "Option::is_none")]
3558    pub max_results: Option<i64>,
3559    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
3560    #[serde(rename = "NextToken")]
3561    #[serde(skip_serializing_if = "Option::is_none")]
3562    pub next_token: Option<String>,
3563    /// <p>Returns the sub-type schema for a specified inventory type.</p>
3564    #[serde(rename = "SubType")]
3565    #[serde(skip_serializing_if = "Option::is_none")]
3566    pub sub_type: Option<bool>,
3567    /// <p>The type of inventory item to return.</p>
3568    #[serde(rename = "TypeName")]
3569    #[serde(skip_serializing_if = "Option::is_none")]
3570    pub type_name: Option<String>,
3571}
3572
3573#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3574#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3575pub struct GetInventorySchemaResult {
3576    /// <p>The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.</p>
3577    #[serde(rename = "NextToken")]
3578    #[serde(skip_serializing_if = "Option::is_none")]
3579    pub next_token: Option<String>,
3580    /// <p>Inventory schemas returned by the request.</p>
3581    #[serde(rename = "Schemas")]
3582    #[serde(skip_serializing_if = "Option::is_none")]
3583    pub schemas: Option<Vec<InventoryItemSchema>>,
3584}
3585
3586#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3587#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3588pub struct GetMaintenanceWindowExecutionRequest {
3589    /// <p>The ID of the maintenance window execution that includes the task.</p>
3590    #[serde(rename = "WindowExecutionId")]
3591    pub window_execution_id: String,
3592}
3593
3594#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3595#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3596pub struct GetMaintenanceWindowExecutionResult {
3597    /// <p>The time the maintenance window finished running.</p>
3598    #[serde(rename = "EndTime")]
3599    #[serde(skip_serializing_if = "Option::is_none")]
3600    pub end_time: Option<f64>,
3601    /// <p>The time the maintenance window started running.</p>
3602    #[serde(rename = "StartTime")]
3603    #[serde(skip_serializing_if = "Option::is_none")]
3604    pub start_time: Option<f64>,
3605    /// <p>The status of the maintenance window execution.</p>
3606    #[serde(rename = "Status")]
3607    #[serde(skip_serializing_if = "Option::is_none")]
3608    pub status: Option<String>,
3609    /// <p>The details explaining the Status. Only available for certain status values.</p>
3610    #[serde(rename = "StatusDetails")]
3611    #[serde(skip_serializing_if = "Option::is_none")]
3612    pub status_details: Option<String>,
3613    /// <p>The ID of the task executions from the maintenance window execution.</p>
3614    #[serde(rename = "TaskIds")]
3615    #[serde(skip_serializing_if = "Option::is_none")]
3616    pub task_ids: Option<Vec<String>>,
3617    /// <p>The ID of the maintenance window execution.</p>
3618    #[serde(rename = "WindowExecutionId")]
3619    #[serde(skip_serializing_if = "Option::is_none")]
3620    pub window_execution_id: Option<String>,
3621}
3622
3623#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3624#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3625pub struct GetMaintenanceWindowExecutionTaskInvocationRequest {
3626    /// <p>The invocation ID to retrieve.</p>
3627    #[serde(rename = "InvocationId")]
3628    pub invocation_id: String,
3629    /// <p>The ID of the specific task in the maintenance window task that should be retrieved. </p>
3630    #[serde(rename = "TaskId")]
3631    pub task_id: String,
3632    /// <p>The ID of the maintenance window execution for which the task is a part.</p>
3633    #[serde(rename = "WindowExecutionId")]
3634    pub window_execution_id: String,
3635}
3636
3637#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3638#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3639pub struct GetMaintenanceWindowExecutionTaskInvocationResult {
3640    /// <p>The time that the task finished running on the target.</p>
3641    #[serde(rename = "EndTime")]
3642    #[serde(skip_serializing_if = "Option::is_none")]
3643    pub end_time: Option<f64>,
3644    /// <p>The execution ID.</p>
3645    #[serde(rename = "ExecutionId")]
3646    #[serde(skip_serializing_if = "Option::is_none")]
3647    pub execution_id: Option<String>,
3648    /// <p>The invocation ID.</p>
3649    #[serde(rename = "InvocationId")]
3650    #[serde(skip_serializing_if = "Option::is_none")]
3651    pub invocation_id: Option<String>,
3652    /// <p>User-provided value to be included in any CloudWatch events raised while running tasks for these targets in this maintenance window. </p>
3653    #[serde(rename = "OwnerInformation")]
3654    #[serde(skip_serializing_if = "Option::is_none")]
3655    pub owner_information: Option<String>,
3656    /// <p>The parameters used at the time that the task ran.</p>
3657    #[serde(rename = "Parameters")]
3658    #[serde(skip_serializing_if = "Option::is_none")]
3659    pub parameters: Option<String>,
3660    /// <p>The time that the task started running on the target.</p>
3661    #[serde(rename = "StartTime")]
3662    #[serde(skip_serializing_if = "Option::is_none")]
3663    pub start_time: Option<f64>,
3664    /// <p>The task status for an invocation.</p>
3665    #[serde(rename = "Status")]
3666    #[serde(skip_serializing_if = "Option::is_none")]
3667    pub status: Option<String>,
3668    /// <p>The details explaining the status. Details are only available for certain status values.</p>
3669    #[serde(rename = "StatusDetails")]
3670    #[serde(skip_serializing_if = "Option::is_none")]
3671    pub status_details: Option<String>,
3672    /// <p>The task execution ID.</p>
3673    #[serde(rename = "TaskExecutionId")]
3674    #[serde(skip_serializing_if = "Option::is_none")]
3675    pub task_execution_id: Option<String>,
3676    /// <p>Retrieves the task type for a maintenance window. Task types include the following: LAMBDA, STEP_FUNCTIONS, AUTOMATION, RUN_COMMAND.</p>
3677    #[serde(rename = "TaskType")]
3678    #[serde(skip_serializing_if = "Option::is_none")]
3679    pub task_type: Option<String>,
3680    /// <p>The maintenance window execution ID.</p>
3681    #[serde(rename = "WindowExecutionId")]
3682    #[serde(skip_serializing_if = "Option::is_none")]
3683    pub window_execution_id: Option<String>,
3684    /// <p>The maintenance window target ID.</p>
3685    #[serde(rename = "WindowTargetId")]
3686    #[serde(skip_serializing_if = "Option::is_none")]
3687    pub window_target_id: Option<String>,
3688}
3689
3690#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3691#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3692pub struct GetMaintenanceWindowExecutionTaskRequest {
3693    /// <p>The ID of the specific task execution in the maintenance window task that should be retrieved.</p>
3694    #[serde(rename = "TaskId")]
3695    pub task_id: String,
3696    /// <p>The ID of the maintenance window execution that includes the task.</p>
3697    #[serde(rename = "WindowExecutionId")]
3698    pub window_execution_id: String,
3699}
3700
3701#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3702#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3703pub struct GetMaintenanceWindowExecutionTaskResult {
3704    /// <p>The time the task execution completed.</p>
3705    #[serde(rename = "EndTime")]
3706    #[serde(skip_serializing_if = "Option::is_none")]
3707    pub end_time: Option<f64>,
3708    /// <p>The defined maximum number of task executions that could be run in parallel.</p>
3709    #[serde(rename = "MaxConcurrency")]
3710    #[serde(skip_serializing_if = "Option::is_none")]
3711    pub max_concurrency: Option<String>,
3712    /// <p>The defined maximum number of task execution errors allowed before scheduling of the task execution would have been stopped.</p>
3713    #[serde(rename = "MaxErrors")]
3714    #[serde(skip_serializing_if = "Option::is_none")]
3715    pub max_errors: Option<String>,
3716    /// <p>The priority of the task.</p>
3717    #[serde(rename = "Priority")]
3718    #[serde(skip_serializing_if = "Option::is_none")]
3719    pub priority: Option<i64>,
3720    /// <p>The role that was assumed when running the task.</p>
3721    #[serde(rename = "ServiceRole")]
3722    #[serde(skip_serializing_if = "Option::is_none")]
3723    pub service_role: Option<String>,
3724    /// <p>The time the task execution started.</p>
3725    #[serde(rename = "StartTime")]
3726    #[serde(skip_serializing_if = "Option::is_none")]
3727    pub start_time: Option<f64>,
3728    /// <p>The status of the task.</p>
3729    #[serde(rename = "Status")]
3730    #[serde(skip_serializing_if = "Option::is_none")]
3731    pub status: Option<String>,
3732    /// <p>The details explaining the Status. Only available for certain status values.</p>
3733    #[serde(rename = "StatusDetails")]
3734    #[serde(skip_serializing_if = "Option::is_none")]
3735    pub status_details: Option<String>,
3736    /// <p>The ARN of the task that ran.</p>
3737    #[serde(rename = "TaskArn")]
3738    #[serde(skip_serializing_if = "Option::is_none")]
3739    pub task_arn: Option<String>,
3740    /// <p>The ID of the specific task execution in the maintenance window task that was retrieved.</p>
3741    #[serde(rename = "TaskExecutionId")]
3742    #[serde(skip_serializing_if = "Option::is_none")]
3743    pub task_execution_id: Option<String>,
3744    /// <p>The parameters passed to the task when it was run.</p> <note> <p> <code>TaskParameters</code> has been deprecated. To specify parameters to pass to a task when it runs, instead use the <code>Parameters</code> option in the <code>TaskInvocationParameters</code> structure. For information about how Systems Manager handles these options for the supported maintenance window task types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p> </note> <p>The map has the following format:</p> <p>Key: string, between 1 and 255 characters</p> <p>Value: an array of strings, each string is between 1 and 255 characters</p>
3745    #[serde(rename = "TaskParameters")]
3746    #[serde(skip_serializing_if = "Option::is_none")]
3747    pub task_parameters: Option<
3748        Vec<::std::collections::HashMap<String, MaintenanceWindowTaskParameterValueExpression>>,
3749    >,
3750    /// <p>The type of task that was run.</p>
3751    #[serde(rename = "Type")]
3752    #[serde(skip_serializing_if = "Option::is_none")]
3753    pub type_: Option<String>,
3754    /// <p>The ID of the maintenance window execution that includes the task.</p>
3755    #[serde(rename = "WindowExecutionId")]
3756    #[serde(skip_serializing_if = "Option::is_none")]
3757    pub window_execution_id: Option<String>,
3758}
3759
3760#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3761#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3762pub struct GetMaintenanceWindowRequest {
3763    /// <p>The ID of the maintenance window for which you want to retrieve information.</p>
3764    #[serde(rename = "WindowId")]
3765    pub window_id: String,
3766}
3767
3768#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3769#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3770pub struct GetMaintenanceWindowResult {
3771    /// <p>Whether targets must be registered with the maintenance window before tasks can be defined for those targets.</p>
3772    #[serde(rename = "AllowUnassociatedTargets")]
3773    #[serde(skip_serializing_if = "Option::is_none")]
3774    pub allow_unassociated_targets: Option<bool>,
3775    /// <p>The date the maintenance window was created.</p>
3776    #[serde(rename = "CreatedDate")]
3777    #[serde(skip_serializing_if = "Option::is_none")]
3778    pub created_date: Option<f64>,
3779    /// <p>The number of hours before the end of the maintenance window that Systems Manager stops scheduling new tasks for execution.</p>
3780    #[serde(rename = "Cutoff")]
3781    #[serde(skip_serializing_if = "Option::is_none")]
3782    pub cutoff: Option<i64>,
3783    /// <p>The description of the maintenance window.</p>
3784    #[serde(rename = "Description")]
3785    #[serde(skip_serializing_if = "Option::is_none")]
3786    pub description: Option<String>,
3787    /// <p>The duration of the maintenance window in hours.</p>
3788    #[serde(rename = "Duration")]
3789    #[serde(skip_serializing_if = "Option::is_none")]
3790    pub duration: Option<i64>,
3791    /// <p>Indicates whether the maintenance window is enabled.</p>
3792    #[serde(rename = "Enabled")]
3793    #[serde(skip_serializing_if = "Option::is_none")]
3794    pub enabled: Option<bool>,
3795    /// <p>The date and time, in ISO-8601 Extended format, for when the maintenance window is scheduled to become inactive. The maintenance window will not run after this specified time.</p>
3796    #[serde(rename = "EndDate")]
3797    #[serde(skip_serializing_if = "Option::is_none")]
3798    pub end_date: Option<String>,
3799    /// <p>The date the maintenance window was last modified.</p>
3800    #[serde(rename = "ModifiedDate")]
3801    #[serde(skip_serializing_if = "Option::is_none")]
3802    pub modified_date: Option<f64>,
3803    /// <p>The name of the maintenance window.</p>
3804    #[serde(rename = "Name")]
3805    #[serde(skip_serializing_if = "Option::is_none")]
3806    pub name: Option<String>,
3807    /// <p>The next time the maintenance window will actually run, taking into account any specified times for the maintenance window to become active or inactive.</p>
3808    #[serde(rename = "NextExecutionTime")]
3809    #[serde(skip_serializing_if = "Option::is_none")]
3810    pub next_execution_time: Option<String>,
3811    /// <p>The schedule of the maintenance window in the form of a cron or rate expression.</p>
3812    #[serde(rename = "Schedule")]
3813    #[serde(skip_serializing_if = "Option::is_none")]
3814    pub schedule: Option<String>,
3815    /// <p>The number of days to wait to run a maintenance window after the scheduled CRON expression date and time.</p>
3816    #[serde(rename = "ScheduleOffset")]
3817    #[serde(skip_serializing_if = "Option::is_none")]
3818    pub schedule_offset: Option<i64>,
3819    /// <p>The time zone that the scheduled maintenance window executions are based on, in Internet Assigned Numbers Authority (IANA) format. For example: "America/Los_Angeles", "etc/UTC", or "Asia/Seoul". For more information, see the <a href="https://www.iana.org/time-zones">Time Zone Database</a> on the IANA website.</p>
3820    #[serde(rename = "ScheduleTimezone")]
3821    #[serde(skip_serializing_if = "Option::is_none")]
3822    pub schedule_timezone: Option<String>,
3823    /// <p>The date and time, in ISO-8601 Extended format, for when the maintenance window is scheduled to become active. The maintenance window will not run before this specified time.</p>
3824    #[serde(rename = "StartDate")]
3825    #[serde(skip_serializing_if = "Option::is_none")]
3826    pub start_date: Option<String>,
3827    /// <p>The ID of the created maintenance window.</p>
3828    #[serde(rename = "WindowId")]
3829    #[serde(skip_serializing_if = "Option::is_none")]
3830    pub window_id: Option<String>,
3831}
3832
3833#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3834#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3835pub struct GetMaintenanceWindowTaskRequest {
3836    /// <p>The maintenance window ID that includes the task to retrieve.</p>
3837    #[serde(rename = "WindowId")]
3838    pub window_id: String,
3839    /// <p>The maintenance window task ID to retrieve.</p>
3840    #[serde(rename = "WindowTaskId")]
3841    pub window_task_id: String,
3842}
3843
3844#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3845#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3846pub struct GetMaintenanceWindowTaskResult {
3847    /// <p>The retrieved task description.</p>
3848    #[serde(rename = "Description")]
3849    #[serde(skip_serializing_if = "Option::is_none")]
3850    pub description: Option<String>,
3851    /// <p><p>The location in Amazon S3 where the task results are logged.</p> <note> <p> <code>LoggingInfo</code> has been deprecated. To specify an S3 bucket to contain logs, instead use the <code>OutputS3BucketName</code> and <code>OutputS3KeyPrefix</code> options in the <code>TaskInvocationParameters</code> structure. For information about how Systems Manager handles these options for the supported maintenance window task types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p> </note></p>
3852    #[serde(rename = "LoggingInfo")]
3853    #[serde(skip_serializing_if = "Option::is_none")]
3854    pub logging_info: Option<LoggingInfo>,
3855    /// <p>The maximum number of targets allowed to run this task in parallel.</p>
3856    #[serde(rename = "MaxConcurrency")]
3857    #[serde(skip_serializing_if = "Option::is_none")]
3858    pub max_concurrency: Option<String>,
3859    /// <p>The maximum number of errors allowed before the task stops being scheduled.</p>
3860    #[serde(rename = "MaxErrors")]
3861    #[serde(skip_serializing_if = "Option::is_none")]
3862    pub max_errors: Option<String>,
3863    /// <p>The retrieved task name.</p>
3864    #[serde(rename = "Name")]
3865    #[serde(skip_serializing_if = "Option::is_none")]
3866    pub name: Option<String>,
3867    /// <p>The priority of the task when it runs. The lower the number, the higher the priority. Tasks that have the same priority are scheduled in parallel.</p>
3868    #[serde(rename = "Priority")]
3869    #[serde(skip_serializing_if = "Option::is_none")]
3870    pub priority: Option<i64>,
3871    /// <p>The ARN of the IAM service role to use to publish Amazon Simple Notification Service (Amazon SNS) notifications for maintenance window Run Command tasks.</p>
3872    #[serde(rename = "ServiceRoleArn")]
3873    #[serde(skip_serializing_if = "Option::is_none")]
3874    pub service_role_arn: Option<String>,
3875    /// <p>The targets where the task should run.</p>
3876    #[serde(rename = "Targets")]
3877    #[serde(skip_serializing_if = "Option::is_none")]
3878    pub targets: Option<Vec<Target>>,
3879    /// <p>The resource that the task used during execution. For RUN_COMMAND and AUTOMATION task types, the TaskArn is the Systems Manager Document name/ARN. For LAMBDA tasks, the value is the function name/ARN. For STEP_FUNCTIONS tasks, the value is the state machine ARN.</p>
3880    #[serde(rename = "TaskArn")]
3881    #[serde(skip_serializing_if = "Option::is_none")]
3882    pub task_arn: Option<String>,
3883    /// <p>The parameters to pass to the task when it runs.</p>
3884    #[serde(rename = "TaskInvocationParameters")]
3885    #[serde(skip_serializing_if = "Option::is_none")]
3886    pub task_invocation_parameters: Option<MaintenanceWindowTaskInvocationParameters>,
3887    /// <p><p>The parameters to pass to the task when it runs.</p> <note> <p> <code>TaskParameters</code> has been deprecated. To specify parameters to pass to a task when it runs, instead use the <code>Parameters</code> option in the <code>TaskInvocationParameters</code> structure. For information about how Systems Manager handles these options for the supported maintenance window task types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p> </note></p>
3888    #[serde(rename = "TaskParameters")]
3889    #[serde(skip_serializing_if = "Option::is_none")]
3890    pub task_parameters:
3891        Option<::std::collections::HashMap<String, MaintenanceWindowTaskParameterValueExpression>>,
3892    /// <p>The type of task to run.</p>
3893    #[serde(rename = "TaskType")]
3894    #[serde(skip_serializing_if = "Option::is_none")]
3895    pub task_type: Option<String>,
3896    /// <p>The retrieved maintenance window ID.</p>
3897    #[serde(rename = "WindowId")]
3898    #[serde(skip_serializing_if = "Option::is_none")]
3899    pub window_id: Option<String>,
3900    /// <p>The retrieved maintenance window task ID.</p>
3901    #[serde(rename = "WindowTaskId")]
3902    #[serde(skip_serializing_if = "Option::is_none")]
3903    pub window_task_id: Option<String>,
3904}
3905
3906#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3907#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3908pub struct GetOpsItemRequest {
3909    /// <p>The ID of the OpsItem that you want to get.</p>
3910    #[serde(rename = "OpsItemId")]
3911    pub ops_item_id: String,
3912}
3913
3914#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3915#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3916pub struct GetOpsItemResponse {
3917    /// <p>The OpsItem.</p>
3918    #[serde(rename = "OpsItem")]
3919    #[serde(skip_serializing_if = "Option::is_none")]
3920    pub ops_item: Option<OpsItem>,
3921}
3922
3923#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3924#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3925pub struct GetOpsSummaryRequest {
3926    /// <p>Optional aggregators that return counts of OpsItems based on one or more expressions.</p>
3927    #[serde(rename = "Aggregators")]
3928    #[serde(skip_serializing_if = "Option::is_none")]
3929    pub aggregators: Option<Vec<OpsAggregator>>,
3930    /// <p>Optional filters used to scope down the returned OpsItems. </p>
3931    #[serde(rename = "Filters")]
3932    #[serde(skip_serializing_if = "Option::is_none")]
3933    pub filters: Option<Vec<OpsFilter>>,
3934    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
3935    #[serde(rename = "MaxResults")]
3936    #[serde(skip_serializing_if = "Option::is_none")]
3937    pub max_results: Option<i64>,
3938    /// <p>A token to start the list. Use this token to get the next set of results. </p>
3939    #[serde(rename = "NextToken")]
3940    #[serde(skip_serializing_if = "Option::is_none")]
3941    pub next_token: Option<String>,
3942    /// <p>The OpsItem data type to return.</p>
3943    #[serde(rename = "ResultAttributes")]
3944    #[serde(skip_serializing_if = "Option::is_none")]
3945    pub result_attributes: Option<Vec<OpsResultAttribute>>,
3946    /// <p>Specify the name of a resource data sync to get.</p>
3947    #[serde(rename = "SyncName")]
3948    #[serde(skip_serializing_if = "Option::is_none")]
3949    pub sync_name: Option<String>,
3950}
3951
3952#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3953#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3954pub struct GetOpsSummaryResult {
3955    /// <p>The list of aggregated and filtered OpsItems.</p>
3956    #[serde(rename = "Entities")]
3957    #[serde(skip_serializing_if = "Option::is_none")]
3958    pub entities: Option<Vec<OpsEntity>>,
3959    /// <p>The token for the next set of items to return. Use this token to get the next set of results.</p>
3960    #[serde(rename = "NextToken")]
3961    #[serde(skip_serializing_if = "Option::is_none")]
3962    pub next_token: Option<String>,
3963}
3964
3965#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3966#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3967pub struct GetParameterHistoryRequest {
3968    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
3969    #[serde(rename = "MaxResults")]
3970    #[serde(skip_serializing_if = "Option::is_none")]
3971    pub max_results: Option<i64>,
3972    /// <p>The name of a parameter you want to query.</p>
3973    #[serde(rename = "Name")]
3974    pub name: String,
3975    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
3976    #[serde(rename = "NextToken")]
3977    #[serde(skip_serializing_if = "Option::is_none")]
3978    pub next_token: Option<String>,
3979    /// <p>Return decrypted values for secure string parameters. This flag is ignored for String and StringList parameter types.</p>
3980    #[serde(rename = "WithDecryption")]
3981    #[serde(skip_serializing_if = "Option::is_none")]
3982    pub with_decryption: Option<bool>,
3983}
3984
3985#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3986#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3987pub struct GetParameterHistoryResult {
3988    /// <p>The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.</p>
3989    #[serde(rename = "NextToken")]
3990    #[serde(skip_serializing_if = "Option::is_none")]
3991    pub next_token: Option<String>,
3992    /// <p>A list of parameters returned by the request.</p>
3993    #[serde(rename = "Parameters")]
3994    #[serde(skip_serializing_if = "Option::is_none")]
3995    pub parameters: Option<Vec<ParameterHistory>>,
3996}
3997
3998#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3999#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4000pub struct GetParameterRequest {
4001    /// <p>The name of the parameter you want to query.</p>
4002    #[serde(rename = "Name")]
4003    pub name: String,
4004    /// <p>Return decrypted values for secure string parameters. This flag is ignored for String and StringList parameter types.</p>
4005    #[serde(rename = "WithDecryption")]
4006    #[serde(skip_serializing_if = "Option::is_none")]
4007    pub with_decryption: Option<bool>,
4008}
4009
4010#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4011#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4012pub struct GetParameterResult {
4013    /// <p>Information about a parameter.</p>
4014    #[serde(rename = "Parameter")]
4015    #[serde(skip_serializing_if = "Option::is_none")]
4016    pub parameter: Option<Parameter>,
4017}
4018
4019#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4020#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4021pub struct GetParametersByPathRequest {
4022    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
4023    #[serde(rename = "MaxResults")]
4024    #[serde(skip_serializing_if = "Option::is_none")]
4025    pub max_results: Option<i64>,
4026    /// <p>A token to start the list. Use this token to get the next set of results. </p>
4027    #[serde(rename = "NextToken")]
4028    #[serde(skip_serializing_if = "Option::is_none")]
4029    pub next_token: Option<String>,
4030    /// <p>Filters to limit the request results.</p>
4031    #[serde(rename = "ParameterFilters")]
4032    #[serde(skip_serializing_if = "Option::is_none")]
4033    pub parameter_filters: Option<Vec<ParameterStringFilter>>,
4034    /// <p>The hierarchy for the parameter. Hierarchies start with a forward slash (/) and end with the parameter name. A parameter name hierarchy can have a maximum of 15 levels. Here is an example of a hierarchy: <code>/Finance/Prod/IAD/WinServ2016/license33</code> </p>
4035    #[serde(rename = "Path")]
4036    pub path: String,
4037    /// <p><p>Retrieve all parameters within a hierarchy.</p> <important> <p>If a user has access to a path, then the user can access all levels of that path. For example, if a user has permission to access path <code>/a</code>, then the user can also access <code>/a/b</code>. Even if a user has explicitly been denied access in IAM for parameter <code>/a/b</code>, they can still call the GetParametersByPath API action recursively for <code>/a</code> and view <code>/a/b</code>.</p> </important></p>
4038    #[serde(rename = "Recursive")]
4039    #[serde(skip_serializing_if = "Option::is_none")]
4040    pub recursive: Option<bool>,
4041    /// <p>Retrieve all parameters in a hierarchy with their value decrypted.</p>
4042    #[serde(rename = "WithDecryption")]
4043    #[serde(skip_serializing_if = "Option::is_none")]
4044    pub with_decryption: Option<bool>,
4045}
4046
4047#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4048#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4049pub struct GetParametersByPathResult {
4050    /// <p>The token for the next set of items to return. Use this token to get the next set of results.</p>
4051    #[serde(rename = "NextToken")]
4052    #[serde(skip_serializing_if = "Option::is_none")]
4053    pub next_token: Option<String>,
4054    /// <p>A list of parameters found in the specified hierarchy.</p>
4055    #[serde(rename = "Parameters")]
4056    #[serde(skip_serializing_if = "Option::is_none")]
4057    pub parameters: Option<Vec<Parameter>>,
4058}
4059
4060#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4061#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4062pub struct GetParametersRequest {
4063    /// <p>Names of the parameters for which you want to query information.</p>
4064    #[serde(rename = "Names")]
4065    pub names: Vec<String>,
4066    /// <p>Return decrypted secure string value. Return decrypted values for secure string parameters. This flag is ignored for String and StringList parameter types.</p>
4067    #[serde(rename = "WithDecryption")]
4068    #[serde(skip_serializing_if = "Option::is_none")]
4069    pub with_decryption: Option<bool>,
4070}
4071
4072#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4073#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4074pub struct GetParametersResult {
4075    /// <p>A list of parameters that are not formatted correctly or do not run during an execution.</p>
4076    #[serde(rename = "InvalidParameters")]
4077    #[serde(skip_serializing_if = "Option::is_none")]
4078    pub invalid_parameters: Option<Vec<String>>,
4079    /// <p>A list of details for a parameter.</p>
4080    #[serde(rename = "Parameters")]
4081    #[serde(skip_serializing_if = "Option::is_none")]
4082    pub parameters: Option<Vec<Parameter>>,
4083}
4084
4085#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4086#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4087pub struct GetPatchBaselineForPatchGroupRequest {
4088    /// <p>Returns he operating system rule specified for patch groups using the patch baseline.</p>
4089    #[serde(rename = "OperatingSystem")]
4090    #[serde(skip_serializing_if = "Option::is_none")]
4091    pub operating_system: Option<String>,
4092    /// <p>The name of the patch group whose patch baseline should be retrieved.</p>
4093    #[serde(rename = "PatchGroup")]
4094    pub patch_group: String,
4095}
4096
4097#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4098#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4099pub struct GetPatchBaselineForPatchGroupResult {
4100    /// <p>The ID of the patch baseline that should be used for the patch group.</p>
4101    #[serde(rename = "BaselineId")]
4102    #[serde(skip_serializing_if = "Option::is_none")]
4103    pub baseline_id: Option<String>,
4104    /// <p>The operating system rule specified for patch groups using the patch baseline.</p>
4105    #[serde(rename = "OperatingSystem")]
4106    #[serde(skip_serializing_if = "Option::is_none")]
4107    pub operating_system: Option<String>,
4108    /// <p>The name of the patch group.</p>
4109    #[serde(rename = "PatchGroup")]
4110    #[serde(skip_serializing_if = "Option::is_none")]
4111    pub patch_group: Option<String>,
4112}
4113
4114#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4115#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4116pub struct GetPatchBaselineRequest {
4117    /// <p>The ID of the patch baseline to retrieve.</p>
4118    #[serde(rename = "BaselineId")]
4119    pub baseline_id: String,
4120}
4121
4122#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4123#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4124pub struct GetPatchBaselineResult {
4125    /// <p>A set of rules used to include patches in the baseline.</p>
4126    #[serde(rename = "ApprovalRules")]
4127    #[serde(skip_serializing_if = "Option::is_none")]
4128    pub approval_rules: Option<PatchRuleGroup>,
4129    /// <p>A list of explicitly approved patches for the baseline.</p>
4130    #[serde(rename = "ApprovedPatches")]
4131    #[serde(skip_serializing_if = "Option::is_none")]
4132    pub approved_patches: Option<Vec<String>>,
4133    /// <p>Returns the specified compliance severity level for approved patches in the patch baseline.</p>
4134    #[serde(rename = "ApprovedPatchesComplianceLevel")]
4135    #[serde(skip_serializing_if = "Option::is_none")]
4136    pub approved_patches_compliance_level: Option<String>,
4137    /// <p>Indicates whether the list of approved patches includes non-security updates that should be applied to the instances. The default value is 'false'. Applies to Linux instances only.</p>
4138    #[serde(rename = "ApprovedPatchesEnableNonSecurity")]
4139    #[serde(skip_serializing_if = "Option::is_none")]
4140    pub approved_patches_enable_non_security: Option<bool>,
4141    /// <p>The ID of the retrieved patch baseline.</p>
4142    #[serde(rename = "BaselineId")]
4143    #[serde(skip_serializing_if = "Option::is_none")]
4144    pub baseline_id: Option<String>,
4145    /// <p>The date the patch baseline was created.</p>
4146    #[serde(rename = "CreatedDate")]
4147    #[serde(skip_serializing_if = "Option::is_none")]
4148    pub created_date: Option<f64>,
4149    /// <p>A description of the patch baseline.</p>
4150    #[serde(rename = "Description")]
4151    #[serde(skip_serializing_if = "Option::is_none")]
4152    pub description: Option<String>,
4153    /// <p>A set of global filters used to exclude patches from the baseline.</p>
4154    #[serde(rename = "GlobalFilters")]
4155    #[serde(skip_serializing_if = "Option::is_none")]
4156    pub global_filters: Option<PatchFilterGroup>,
4157    /// <p>The date the patch baseline was last modified.</p>
4158    #[serde(rename = "ModifiedDate")]
4159    #[serde(skip_serializing_if = "Option::is_none")]
4160    pub modified_date: Option<f64>,
4161    /// <p>The name of the patch baseline.</p>
4162    #[serde(rename = "Name")]
4163    #[serde(skip_serializing_if = "Option::is_none")]
4164    pub name: Option<String>,
4165    /// <p>Returns the operating system specified for the patch baseline.</p>
4166    #[serde(rename = "OperatingSystem")]
4167    #[serde(skip_serializing_if = "Option::is_none")]
4168    pub operating_system: Option<String>,
4169    /// <p>Patch groups included in the patch baseline.</p>
4170    #[serde(rename = "PatchGroups")]
4171    #[serde(skip_serializing_if = "Option::is_none")]
4172    pub patch_groups: Option<Vec<String>>,
4173    /// <p>A list of explicitly rejected patches for the baseline.</p>
4174    #[serde(rename = "RejectedPatches")]
4175    #[serde(skip_serializing_if = "Option::is_none")]
4176    pub rejected_patches: Option<Vec<String>>,
4177    /// <p>The action specified to take on patches included in the RejectedPatches list. A patch can be allowed only if it is a dependency of another package, or blocked entirely along with packages that include it as a dependency.</p>
4178    #[serde(rename = "RejectedPatchesAction")]
4179    #[serde(skip_serializing_if = "Option::is_none")]
4180    pub rejected_patches_action: Option<String>,
4181    /// <p>Information about the patches to use to update the instances, including target operating systems and source repositories. Applies to Linux instances only.</p>
4182    #[serde(rename = "Sources")]
4183    #[serde(skip_serializing_if = "Option::is_none")]
4184    pub sources: Option<Vec<PatchSource>>,
4185}
4186
4187/// <p>The request body of the GetServiceSetting API action.</p>
4188#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4189#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4190pub struct GetServiceSettingRequest {
4191    /// <p>The ID of the service setting to get. The setting ID can be <code>/ssm/parameter-store/default-parameter-tier</code>, <code>/ssm/parameter-store/high-throughput-enabled</code>, or <code>/ssm/managed-instance/activation-tier</code>.</p>
4192    #[serde(rename = "SettingId")]
4193    pub setting_id: String,
4194}
4195
4196/// <p>The query result body of the GetServiceSetting API action.</p>
4197#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4198#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4199pub struct GetServiceSettingResult {
4200    /// <p>The query result of the current service setting.</p>
4201    #[serde(rename = "ServiceSetting")]
4202    #[serde(skip_serializing_if = "Option::is_none")]
4203    pub service_setting: Option<ServiceSetting>,
4204}
4205
4206/// <p>Status information about the aggregated associations.</p>
4207#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4208#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4209pub struct InstanceAggregatedAssociationOverview {
4210    /// <p>Detailed status information about the aggregated associations.</p>
4211    #[serde(rename = "DetailedStatus")]
4212    #[serde(skip_serializing_if = "Option::is_none")]
4213    pub detailed_status: Option<String>,
4214    /// <p>The number of associations for the instance(s).</p>
4215    #[serde(rename = "InstanceAssociationStatusAggregatedCount")]
4216    #[serde(skip_serializing_if = "Option::is_none")]
4217    pub instance_association_status_aggregated_count:
4218        Option<::std::collections::HashMap<String, i64>>,
4219}
4220
4221/// <p>One or more association documents on the instance. </p>
4222#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4223#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4224pub struct InstanceAssociation {
4225    /// <p>The association ID.</p>
4226    #[serde(rename = "AssociationId")]
4227    #[serde(skip_serializing_if = "Option::is_none")]
4228    pub association_id: Option<String>,
4229    /// <p>Version information for the association on the instance.</p>
4230    #[serde(rename = "AssociationVersion")]
4231    #[serde(skip_serializing_if = "Option::is_none")]
4232    pub association_version: Option<String>,
4233    /// <p>The content of the association document for the instance(s).</p>
4234    #[serde(rename = "Content")]
4235    #[serde(skip_serializing_if = "Option::is_none")]
4236    pub content: Option<String>,
4237    /// <p>The instance ID.</p>
4238    #[serde(rename = "InstanceId")]
4239    #[serde(skip_serializing_if = "Option::is_none")]
4240    pub instance_id: Option<String>,
4241}
4242
4243/// <p>An S3 bucket where you want to store the results of this request.</p>
4244#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
4245pub struct InstanceAssociationOutputLocation {
4246    /// <p>An S3 bucket where you want to store the results of this request.</p>
4247    #[serde(rename = "S3Location")]
4248    #[serde(skip_serializing_if = "Option::is_none")]
4249    pub s3_location: Option<S3OutputLocation>,
4250}
4251
4252/// <p>The URL of S3 bucket where you want to store the results of this request.</p>
4253#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4254#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4255pub struct InstanceAssociationOutputUrl {
4256    /// <p>The URL of S3 bucket where you want to store the results of this request.</p>
4257    #[serde(rename = "S3OutputUrl")]
4258    #[serde(skip_serializing_if = "Option::is_none")]
4259    pub s3_output_url: Option<S3OutputUrl>,
4260}
4261
4262/// <p>Status information about the instance association.</p>
4263#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4264#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4265pub struct InstanceAssociationStatusInfo {
4266    /// <p>The association ID.</p>
4267    #[serde(rename = "AssociationId")]
4268    #[serde(skip_serializing_if = "Option::is_none")]
4269    pub association_id: Option<String>,
4270    /// <p>The name of the association applied to the instance.</p>
4271    #[serde(rename = "AssociationName")]
4272    #[serde(skip_serializing_if = "Option::is_none")]
4273    pub association_name: Option<String>,
4274    /// <p>The version of the association applied to the instance.</p>
4275    #[serde(rename = "AssociationVersion")]
4276    #[serde(skip_serializing_if = "Option::is_none")]
4277    pub association_version: Option<String>,
4278    /// <p>Detailed status information about the instance association.</p>
4279    #[serde(rename = "DetailedStatus")]
4280    #[serde(skip_serializing_if = "Option::is_none")]
4281    pub detailed_status: Option<String>,
4282    /// <p>The association document versions.</p>
4283    #[serde(rename = "DocumentVersion")]
4284    #[serde(skip_serializing_if = "Option::is_none")]
4285    pub document_version: Option<String>,
4286    /// <p>An error code returned by the request to create the association.</p>
4287    #[serde(rename = "ErrorCode")]
4288    #[serde(skip_serializing_if = "Option::is_none")]
4289    pub error_code: Option<String>,
4290    /// <p>The date the instance association ran. </p>
4291    #[serde(rename = "ExecutionDate")]
4292    #[serde(skip_serializing_if = "Option::is_none")]
4293    pub execution_date: Option<f64>,
4294    /// <p>Summary information about association execution.</p>
4295    #[serde(rename = "ExecutionSummary")]
4296    #[serde(skip_serializing_if = "Option::is_none")]
4297    pub execution_summary: Option<String>,
4298    /// <p>The instance ID where the association was created.</p>
4299    #[serde(rename = "InstanceId")]
4300    #[serde(skip_serializing_if = "Option::is_none")]
4301    pub instance_id: Option<String>,
4302    /// <p>The name of the association.</p>
4303    #[serde(rename = "Name")]
4304    #[serde(skip_serializing_if = "Option::is_none")]
4305    pub name: Option<String>,
4306    /// <p>A URL for an S3 bucket where you want to store the results of this request.</p>
4307    #[serde(rename = "OutputUrl")]
4308    #[serde(skip_serializing_if = "Option::is_none")]
4309    pub output_url: Option<InstanceAssociationOutputUrl>,
4310    /// <p>Status information about the instance association.</p>
4311    #[serde(rename = "Status")]
4312    #[serde(skip_serializing_if = "Option::is_none")]
4313    pub status: Option<String>,
4314}
4315
4316/// <p>Describes a filter for a specific list of instances. </p>
4317#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4318#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4319pub struct InstanceInformation {
4320    /// <p>The activation ID created by Systems Manager when the server or VM was registered.</p>
4321    #[serde(rename = "ActivationId")]
4322    #[serde(skip_serializing_if = "Option::is_none")]
4323    pub activation_id: Option<String>,
4324    /// <p>The version of SSM Agent running on your Linux instance. </p>
4325    #[serde(rename = "AgentVersion")]
4326    #[serde(skip_serializing_if = "Option::is_none")]
4327    pub agent_version: Option<String>,
4328    /// <p>Information about the association.</p>
4329    #[serde(rename = "AssociationOverview")]
4330    #[serde(skip_serializing_if = "Option::is_none")]
4331    pub association_overview: Option<InstanceAggregatedAssociationOverview>,
4332    /// <p>The status of the association.</p>
4333    #[serde(rename = "AssociationStatus")]
4334    #[serde(skip_serializing_if = "Option::is_none")]
4335    pub association_status: Option<String>,
4336    /// <p>The fully qualified host name of the managed instance.</p>
4337    #[serde(rename = "ComputerName")]
4338    #[serde(skip_serializing_if = "Option::is_none")]
4339    pub computer_name: Option<String>,
4340    /// <p>The IP address of the managed instance.</p>
4341    #[serde(rename = "IPAddress")]
4342    #[serde(skip_serializing_if = "Option::is_none")]
4343    pub ip_address: Option<String>,
4344    /// <p>The Amazon Identity and Access Management (IAM) role assigned to the on-premises Systems Manager managed instances. This call does not return the IAM role for EC2 instances. </p>
4345    #[serde(rename = "IamRole")]
4346    #[serde(skip_serializing_if = "Option::is_none")]
4347    pub iam_role: Option<String>,
4348    /// <p>The instance ID. </p>
4349    #[serde(rename = "InstanceId")]
4350    #[serde(skip_serializing_if = "Option::is_none")]
4351    pub instance_id: Option<String>,
4352    /// <p>Indicates whether the latest version of SSM Agent is running on your Linux Managed Instance. This field does not indicate whether or not the latest version is installed on Windows managed instances, because some older versions of Windows Server use the EC2Config service to process SSM requests.</p>
4353    #[serde(rename = "IsLatestVersion")]
4354    #[serde(skip_serializing_if = "Option::is_none")]
4355    pub is_latest_version: Option<bool>,
4356    /// <p>The date the association was last run.</p>
4357    #[serde(rename = "LastAssociationExecutionDate")]
4358    #[serde(skip_serializing_if = "Option::is_none")]
4359    pub last_association_execution_date: Option<f64>,
4360    /// <p>The date and time when agent last pinged Systems Manager service. </p>
4361    #[serde(rename = "LastPingDateTime")]
4362    #[serde(skip_serializing_if = "Option::is_none")]
4363    pub last_ping_date_time: Option<f64>,
4364    /// <p>The last date the association was successfully run.</p>
4365    #[serde(rename = "LastSuccessfulAssociationExecutionDate")]
4366    #[serde(skip_serializing_if = "Option::is_none")]
4367    pub last_successful_association_execution_date: Option<f64>,
4368    /// <p>The name of the managed instance.</p>
4369    #[serde(rename = "Name")]
4370    #[serde(skip_serializing_if = "Option::is_none")]
4371    pub name: Option<String>,
4372    /// <p>Connection status of SSM Agent. </p>
4373    #[serde(rename = "PingStatus")]
4374    #[serde(skip_serializing_if = "Option::is_none")]
4375    pub ping_status: Option<String>,
4376    /// <p>The name of the operating system platform running on your instance. </p>
4377    #[serde(rename = "PlatformName")]
4378    #[serde(skip_serializing_if = "Option::is_none")]
4379    pub platform_name: Option<String>,
4380    /// <p>The operating system platform type. </p>
4381    #[serde(rename = "PlatformType")]
4382    #[serde(skip_serializing_if = "Option::is_none")]
4383    pub platform_type: Option<String>,
4384    /// <p>The version of the OS platform running on your instance. </p>
4385    #[serde(rename = "PlatformVersion")]
4386    #[serde(skip_serializing_if = "Option::is_none")]
4387    pub platform_version: Option<String>,
4388    /// <p>The date the server or VM was registered with AWS as a managed instance.</p>
4389    #[serde(rename = "RegistrationDate")]
4390    #[serde(skip_serializing_if = "Option::is_none")]
4391    pub registration_date: Option<f64>,
4392    /// <p>The type of instance. Instances are either EC2 instances or managed instances. </p>
4393    #[serde(rename = "ResourceType")]
4394    #[serde(skip_serializing_if = "Option::is_none")]
4395    pub resource_type: Option<String>,
4396}
4397
4398/// <p>Describes a filter for a specific list of instances. You can filter instances information by using tags. You specify tags by using a key-value mapping.</p> <p>Use this action instead of the <a>DescribeInstanceInformationRequest$InstanceInformationFilterList</a> method. The <code>InstanceInformationFilterList</code> method is a legacy method and does not support tags. </p>
4399#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4400#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4401pub struct InstanceInformationFilter {
4402    /// <p>The name of the filter. </p>
4403    #[serde(rename = "key")]
4404    pub key: String,
4405    /// <p>The filter values.</p>
4406    #[serde(rename = "valueSet")]
4407    pub value_set: Vec<String>,
4408}
4409
4410/// <p>The filters to describe or get information about your managed instances.</p>
4411#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4412#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4413pub struct InstanceInformationStringFilter {
4414    /// <p>The filter key name to describe your instances. For example:</p> <p>"InstanceIds"|"AgentVersion"|"PingStatus"|"PlatformTypes"|"ActivationIds"|"IamRole"|"ResourceType"|"AssociationStatus"|"Tag Key"</p>
4415    #[serde(rename = "Key")]
4416    pub key: String,
4417    /// <p>The filter values.</p>
4418    #[serde(rename = "Values")]
4419    pub values: Vec<String>,
4420}
4421
4422/// <p>Defines the high-level patch compliance state for a managed instance, providing information about the number of installed, missing, not applicable, and failed patches along with metadata about the operation when this information was gathered for the instance.</p>
4423#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4424#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4425pub struct InstancePatchState {
4426    /// <p>The ID of the patch baseline used to patch the instance.</p>
4427    #[serde(rename = "BaselineId")]
4428    pub baseline_id: String,
4429    /// <p>The number of patches from the patch baseline that were attempted to be installed during the last patching operation, but failed to install.</p>
4430    #[serde(rename = "FailedCount")]
4431    #[serde(skip_serializing_if = "Option::is_none")]
4432    pub failed_count: Option<i64>,
4433    /// <p>An https URL or an Amazon S3 path-style URL to a list of patches to be installed. This patch installation list, which you maintain in an S3 bucket in YAML format and specify in the SSM document <code>AWS-RunPatchBaseline</code>, overrides the patches specified by the default patch baseline.</p> <p>For more information about the <code>InstallOverrideList</code> parameter, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-about-aws-runpatchbaseline.html">About the SSM document AWS-RunPatchBaseline</a> in the <i>AWS Systems Manager User Guide</i>.</p>
4434    #[serde(rename = "InstallOverrideList")]
4435    #[serde(skip_serializing_if = "Option::is_none")]
4436    pub install_override_list: Option<String>,
4437    /// <p>The number of patches from the patch baseline that are installed on the instance.</p>
4438    #[serde(rename = "InstalledCount")]
4439    #[serde(skip_serializing_if = "Option::is_none")]
4440    pub installed_count: Option<i64>,
4441    /// <p>The number of patches not specified in the patch baseline that are installed on the instance.</p>
4442    #[serde(rename = "InstalledOtherCount")]
4443    #[serde(skip_serializing_if = "Option::is_none")]
4444    pub installed_other_count: Option<i64>,
4445    /// <p>The number of patches installed by Patch Manager since the last time the instance was rebooted.</p>
4446    #[serde(rename = "InstalledPendingRebootCount")]
4447    #[serde(skip_serializing_if = "Option::is_none")]
4448    pub installed_pending_reboot_count: Option<i64>,
4449    /// <p><p>The number of instances with patches installed that are specified in a RejectedPatches list. Patches with a status of <i>InstalledRejected</i> were typically installed before they were added to a RejectedPatches list.</p> <note> <p>If ALLOW<em>AS</em>DEPENDENCY is the specified option for RejectedPatchesAction, the value of InstalledRejectedCount will always be 0 (zero).</p> </note></p>
4450    #[serde(rename = "InstalledRejectedCount")]
4451    #[serde(skip_serializing_if = "Option::is_none")]
4452    pub installed_rejected_count: Option<i64>,
4453    /// <p>The ID of the managed instance the high-level patch compliance information was collected for.</p>
4454    #[serde(rename = "InstanceId")]
4455    pub instance_id: String,
4456    /// <p>The time of the last attempt to patch the instance with <code>NoReboot</code> specified as the reboot option.</p>
4457    #[serde(rename = "LastNoRebootInstallOperationTime")]
4458    #[serde(skip_serializing_if = "Option::is_none")]
4459    pub last_no_reboot_install_operation_time: Option<f64>,
4460    /// <p>The number of patches from the patch baseline that are applicable for the instance but aren't currently installed.</p>
4461    #[serde(rename = "MissingCount")]
4462    #[serde(skip_serializing_if = "Option::is_none")]
4463    pub missing_count: Option<i64>,
4464    /// <p>The number of patches from the patch baseline that aren't applicable for the instance and therefore aren't installed on the instance. This number may be truncated if the list of patch names is very large. The number of patches beyond this limit are reported in <code>UnreportedNotApplicableCount</code>.</p>
4465    #[serde(rename = "NotApplicableCount")]
4466    #[serde(skip_serializing_if = "Option::is_none")]
4467    pub not_applicable_count: Option<i64>,
4468    /// <p>The type of patching operation that was performed: SCAN (assess patch compliance state) or INSTALL (install missing patches).</p>
4469    #[serde(rename = "Operation")]
4470    pub operation: String,
4471    /// <p>The time the most recent patching operation completed on the instance.</p>
4472    #[serde(rename = "OperationEndTime")]
4473    pub operation_end_time: f64,
4474    /// <p>The time the most recent patching operation was started on the instance.</p>
4475    #[serde(rename = "OperationStartTime")]
4476    pub operation_start_time: f64,
4477    /// <p>Placeholder information. This field will always be empty in the current release of the service.</p>
4478    #[serde(rename = "OwnerInformation")]
4479    #[serde(skip_serializing_if = "Option::is_none")]
4480    pub owner_information: Option<String>,
4481    /// <p>The name of the patch group the managed instance belongs to.</p>
4482    #[serde(rename = "PatchGroup")]
4483    pub patch_group: String,
4484    /// <p><p>Indicates the reboot option specified in the patch baseline.</p> <note> <p>Reboot options apply to <code>Install</code> operations only. Reboots are not attempted for Patch Manager <code>Scan</code> operations.</p> </note> <ul> <li> <p> <b>RebootIfNeeded</b>: Patch Manager tries to reboot the instance if it installed any patches, or if any patches are detected with a status of <code>InstalledPendingReboot</code>.</p> </li> <li> <p> <b>NoReboot</b>: Patch Manager attempts to install missing packages without trying to reboot the system. Patches installed with this option are assigned a status of <code>InstalledPendingReboot</code>. These patches might not be in effect until a reboot is performed.</p> </li> </ul></p>
4485    #[serde(rename = "RebootOption")]
4486    #[serde(skip_serializing_if = "Option::is_none")]
4487    pub reboot_option: Option<String>,
4488    /// <p>The ID of the patch baseline snapshot used during the patching operation when this compliance data was collected.</p>
4489    #[serde(rename = "SnapshotId")]
4490    #[serde(skip_serializing_if = "Option::is_none")]
4491    pub snapshot_id: Option<String>,
4492    /// <p>The number of patches beyond the supported limit of <code>NotApplicableCount</code> that are not reported by name to Systems Manager Inventory.</p>
4493    #[serde(rename = "UnreportedNotApplicableCount")]
4494    #[serde(skip_serializing_if = "Option::is_none")]
4495    pub unreported_not_applicable_count: Option<i64>,
4496}
4497
4498/// <p>Defines a filter used in DescribeInstancePatchStatesForPatchGroup used to scope down the information returned by the API.</p>
4499#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4500#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4501pub struct InstancePatchStateFilter {
4502    /// <p>The key for the filter. Supported values are FailedCount, InstalledCount, InstalledOtherCount, MissingCount and NotApplicableCount.</p>
4503    #[serde(rename = "Key")]
4504    pub key: String,
4505    /// <p>The type of comparison that should be performed for the value: Equal, NotEqual, LessThan or GreaterThan.</p>
4506    #[serde(rename = "Type")]
4507    pub type_: String,
4508    /// <p>The value for the filter, must be an integer greater than or equal to 0.</p>
4509    #[serde(rename = "Values")]
4510    pub values: Vec<String>,
4511}
4512
4513/// <p>Specifies the inventory type and attribute for the aggregation execution.</p>
4514#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4515#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4516pub struct InventoryAggregator {
4517    /// <p>Nested aggregators to further refine aggregation for an inventory type.</p>
4518    #[serde(rename = "Aggregators")]
4519    #[serde(skip_serializing_if = "Option::is_none")]
4520    pub aggregators: Option<Vec<InventoryAggregator>>,
4521    /// <p>The inventory type and attribute name for aggregation.</p>
4522    #[serde(rename = "Expression")]
4523    #[serde(skip_serializing_if = "Option::is_none")]
4524    pub expression: Option<String>,
4525    /// <p>A user-defined set of one or more filters on which to aggregate inventory data. Groups return a count of resources that match and don't match the specified criteria.</p>
4526    #[serde(rename = "Groups")]
4527    #[serde(skip_serializing_if = "Option::is_none")]
4528    pub groups: Option<Vec<InventoryGroup>>,
4529}
4530
4531/// <p>Status information returned by the <code>DeleteInventory</code> action.</p>
4532#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4533#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4534pub struct InventoryDeletionStatusItem {
4535    /// <p>The deletion ID returned by the <code>DeleteInventory</code> action.</p>
4536    #[serde(rename = "DeletionId")]
4537    #[serde(skip_serializing_if = "Option::is_none")]
4538    pub deletion_id: Option<String>,
4539    /// <p>The UTC timestamp when the delete operation started.</p>
4540    #[serde(rename = "DeletionStartTime")]
4541    #[serde(skip_serializing_if = "Option::is_none")]
4542    pub deletion_start_time: Option<f64>,
4543    /// <p>Information about the delete operation. For more information about this summary, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-inventory-custom.html#sysman-inventory-delete">Understanding the delete inventory summary</a> in the <i>AWS Systems Manager User Guide</i>.</p>
4544    #[serde(rename = "DeletionSummary")]
4545    #[serde(skip_serializing_if = "Option::is_none")]
4546    pub deletion_summary: Option<InventoryDeletionSummary>,
4547    /// <p>The status of the operation. Possible values are InProgress and Complete.</p>
4548    #[serde(rename = "LastStatus")]
4549    #[serde(skip_serializing_if = "Option::is_none")]
4550    pub last_status: Option<String>,
4551    /// <p>Information about the status.</p>
4552    #[serde(rename = "LastStatusMessage")]
4553    #[serde(skip_serializing_if = "Option::is_none")]
4554    pub last_status_message: Option<String>,
4555    /// <p>The UTC timestamp of when the last status report.</p>
4556    #[serde(rename = "LastStatusUpdateTime")]
4557    #[serde(skip_serializing_if = "Option::is_none")]
4558    pub last_status_update_time: Option<f64>,
4559    /// <p>The name of the inventory data type.</p>
4560    #[serde(rename = "TypeName")]
4561    #[serde(skip_serializing_if = "Option::is_none")]
4562    pub type_name: Option<String>,
4563}
4564
4565/// <p>Information about the delete operation.</p>
4566#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4567#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4568pub struct InventoryDeletionSummary {
4569    /// <p>Remaining number of items to delete.</p>
4570    #[serde(rename = "RemainingCount")]
4571    #[serde(skip_serializing_if = "Option::is_none")]
4572    pub remaining_count: Option<i64>,
4573    /// <p>A list of counts and versions for deleted items.</p>
4574    #[serde(rename = "SummaryItems")]
4575    #[serde(skip_serializing_if = "Option::is_none")]
4576    pub summary_items: Option<Vec<InventoryDeletionSummaryItem>>,
4577    /// <p>The total number of items to delete. This count does not change during the delete operation.</p>
4578    #[serde(rename = "TotalCount")]
4579    #[serde(skip_serializing_if = "Option::is_none")]
4580    pub total_count: Option<i64>,
4581}
4582
4583/// <p>Either a count, remaining count, or a version number in a delete inventory summary.</p>
4584#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4585#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4586pub struct InventoryDeletionSummaryItem {
4587    /// <p>A count of the number of deleted items.</p>
4588    #[serde(rename = "Count")]
4589    #[serde(skip_serializing_if = "Option::is_none")]
4590    pub count: Option<i64>,
4591    /// <p>The remaining number of items to delete.</p>
4592    #[serde(rename = "RemainingCount")]
4593    #[serde(skip_serializing_if = "Option::is_none")]
4594    pub remaining_count: Option<i64>,
4595    /// <p>The inventory type version.</p>
4596    #[serde(rename = "Version")]
4597    #[serde(skip_serializing_if = "Option::is_none")]
4598    pub version: Option<String>,
4599}
4600
4601/// <p>One or more filters. Use a filter to return a more specific list of results.</p>
4602#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4603#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4604pub struct InventoryFilter {
4605    /// <p>The name of the filter key.</p>
4606    #[serde(rename = "Key")]
4607    pub key: String,
4608    /// <p><p>The type of filter.</p> <note> <p>The <code>Exists</code> filter must be used with aggregators. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-inventory-aggregate.html">Aggregating inventory data</a> in the <i>AWS Systems Manager User Guide</i>.</p> </note></p>
4609    #[serde(rename = "Type")]
4610    #[serde(skip_serializing_if = "Option::is_none")]
4611    pub type_: Option<String>,
4612    /// <p>Inventory filter values. Example: inventory filter where instance IDs are specified as values Key=AWS:InstanceInformation.InstanceId,Values= i-a12b3c4d5e6g, i-1a2b3c4d5e6,Type=Equal </p>
4613    #[serde(rename = "Values")]
4614    pub values: Vec<String>,
4615}
4616
4617/// <p>A user-defined set of one or more filters on which to aggregate inventory data. Groups return a count of resources that match and don't match the specified criteria.</p>
4618#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4619#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4620pub struct InventoryGroup {
4621    /// <p>Filters define the criteria for the group. The <code>matchingCount</code> field displays the number of resources that match the criteria. The <code>notMatchingCount</code> field displays the number of resources that don't match the criteria. </p>
4622    #[serde(rename = "Filters")]
4623    pub filters: Vec<InventoryFilter>,
4624    /// <p>The name of the group.</p>
4625    #[serde(rename = "Name")]
4626    pub name: String,
4627}
4628
4629/// <p>Information collected from managed instances based on your inventory policy document</p>
4630#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4631#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4632pub struct InventoryItem {
4633    /// <p>The time the inventory information was collected.</p>
4634    #[serde(rename = "CaptureTime")]
4635    pub capture_time: String,
4636    /// <p>The inventory data of the inventory type.</p>
4637    #[serde(rename = "Content")]
4638    #[serde(skip_serializing_if = "Option::is_none")]
4639    pub content: Option<Vec<::std::collections::HashMap<String, String>>>,
4640    /// <p>MD5 hash of the inventory item type contents. The content hash is used to determine whether to update inventory information. The PutInventory API does not update the inventory item type contents if the MD5 hash has not changed since last update. </p>
4641    #[serde(rename = "ContentHash")]
4642    #[serde(skip_serializing_if = "Option::is_none")]
4643    pub content_hash: Option<String>,
4644    /// <p>A map of associated properties for a specified inventory type. For example, with this attribute, you can specify the <code>ExecutionId</code>, <code>ExecutionType</code>, <code>ComplianceType</code> properties of the <code>AWS:ComplianceItem</code> type.</p>
4645    #[serde(rename = "Context")]
4646    #[serde(skip_serializing_if = "Option::is_none")]
4647    pub context: Option<::std::collections::HashMap<String, String>>,
4648    /// <p>The schema version for the inventory item.</p>
4649    #[serde(rename = "SchemaVersion")]
4650    pub schema_version: String,
4651    /// <p>The name of the inventory type. Default inventory item type names start with AWS. Custom inventory type names will start with Custom. Default inventory item types include the following: AWS:AWSComponent, AWS:Application, AWS:InstanceInformation, AWS:Network, and AWS:WindowsUpdate.</p>
4652    #[serde(rename = "TypeName")]
4653    pub type_name: String,
4654}
4655
4656/// <p>Attributes are the entries within the inventory item content. It contains name and value.</p>
4657#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4658#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4659pub struct InventoryItemAttribute {
4660    /// <p>The data type of the inventory item attribute. </p>
4661    #[serde(rename = "DataType")]
4662    pub data_type: String,
4663    /// <p>Name of the inventory item attribute.</p>
4664    #[serde(rename = "Name")]
4665    pub name: String,
4666}
4667
4668/// <p>The inventory item schema definition. Users can use this to compose inventory query filters.</p>
4669#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4670#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4671pub struct InventoryItemSchema {
4672    /// <p>The schema attributes for inventory. This contains data type and attribute name.</p>
4673    #[serde(rename = "Attributes")]
4674    pub attributes: Vec<InventoryItemAttribute>,
4675    /// <p>The alias name of the inventory type. The alias name is used for display purposes.</p>
4676    #[serde(rename = "DisplayName")]
4677    #[serde(skip_serializing_if = "Option::is_none")]
4678    pub display_name: Option<String>,
4679    /// <p>The name of the inventory type. Default inventory item type names start with AWS. Custom inventory type names will start with Custom. Default inventory item types include the following: AWS:AWSComponent, AWS:Application, AWS:InstanceInformation, AWS:Network, and AWS:WindowsUpdate.</p>
4680    #[serde(rename = "TypeName")]
4681    pub type_name: String,
4682    /// <p>The schema version for the inventory item.</p>
4683    #[serde(rename = "Version")]
4684    #[serde(skip_serializing_if = "Option::is_none")]
4685    pub version: Option<String>,
4686}
4687
4688/// <p>Inventory query results.</p>
4689#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4690#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4691pub struct InventoryResultEntity {
4692    /// <p>The data section in the inventory result entity JSON.</p>
4693    #[serde(rename = "Data")]
4694    #[serde(skip_serializing_if = "Option::is_none")]
4695    pub data: Option<::std::collections::HashMap<String, InventoryResultItem>>,
4696    /// <p>ID of the inventory result entity. For example, for managed instance inventory the result will be the managed instance ID. For EC2 instance inventory, the result will be the instance ID. </p>
4697    #[serde(rename = "Id")]
4698    #[serde(skip_serializing_if = "Option::is_none")]
4699    pub id: Option<String>,
4700}
4701
4702/// <p>The inventory result item.</p>
4703#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4704#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4705pub struct InventoryResultItem {
4706    /// <p>The time inventory item data was captured.</p>
4707    #[serde(rename = "CaptureTime")]
4708    #[serde(skip_serializing_if = "Option::is_none")]
4709    pub capture_time: Option<String>,
4710    /// <p>Contains all the inventory data of the item type. Results include attribute names and values. </p>
4711    #[serde(rename = "Content")]
4712    pub content: Vec<::std::collections::HashMap<String, String>>,
4713    /// <p>MD5 hash of the inventory item type contents. The content hash is used to determine whether to update inventory information. The PutInventory API does not update the inventory item type contents if the MD5 hash has not changed since last update. </p>
4714    #[serde(rename = "ContentHash")]
4715    #[serde(skip_serializing_if = "Option::is_none")]
4716    pub content_hash: Option<String>,
4717    /// <p>The schema version for the inventory result item/</p>
4718    #[serde(rename = "SchemaVersion")]
4719    pub schema_version: String,
4720    /// <p>The name of the inventory result item type.</p>
4721    #[serde(rename = "TypeName")]
4722    pub type_name: String,
4723}
4724
4725#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4726#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4727pub struct LabelParameterVersionRequest {
4728    /// <p>One or more labels to attach to the specified parameter version.</p>
4729    #[serde(rename = "Labels")]
4730    pub labels: Vec<String>,
4731    /// <p>The parameter name on which you want to attach one or more labels.</p>
4732    #[serde(rename = "Name")]
4733    pub name: String,
4734    /// <p>The specific version of the parameter on which you want to attach one or more labels. If no version is specified, the system attaches the label to the latest version.</p>
4735    #[serde(rename = "ParameterVersion")]
4736    #[serde(skip_serializing_if = "Option::is_none")]
4737    pub parameter_version: Option<i64>,
4738}
4739
4740#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4741#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4742pub struct LabelParameterVersionResult {
4743    /// <p>The label does not meet the requirements. For information about parameter label requirements, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-labels.html">Labeling parameters</a> in the <i>AWS Systems Manager User Guide</i>.</p>
4744    #[serde(rename = "InvalidLabels")]
4745    #[serde(skip_serializing_if = "Option::is_none")]
4746    pub invalid_labels: Option<Vec<String>>,
4747    /// <p>The version of the parameter that has been labeled.</p>
4748    #[serde(rename = "ParameterVersion")]
4749    #[serde(skip_serializing_if = "Option::is_none")]
4750    pub parameter_version: Option<i64>,
4751}
4752
4753#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4754#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4755pub struct ListAssociationVersionsRequest {
4756    /// <p>The association ID for which you want to view all versions.</p>
4757    #[serde(rename = "AssociationId")]
4758    pub association_id: String,
4759    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
4760    #[serde(rename = "MaxResults")]
4761    #[serde(skip_serializing_if = "Option::is_none")]
4762    pub max_results: Option<i64>,
4763    /// <p>A token to start the list. Use this token to get the next set of results. </p>
4764    #[serde(rename = "NextToken")]
4765    #[serde(skip_serializing_if = "Option::is_none")]
4766    pub next_token: Option<String>,
4767}
4768
4769#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4770#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4771pub struct ListAssociationVersionsResult {
4772    /// <p>Information about all versions of the association for the specified association ID.</p>
4773    #[serde(rename = "AssociationVersions")]
4774    #[serde(skip_serializing_if = "Option::is_none")]
4775    pub association_versions: Option<Vec<AssociationVersionInfo>>,
4776    /// <p>The token for the next set of items to return. Use this token to get the next set of results.</p>
4777    #[serde(rename = "NextToken")]
4778    #[serde(skip_serializing_if = "Option::is_none")]
4779    pub next_token: Option<String>,
4780}
4781
4782#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4783#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4784pub struct ListAssociationsRequest {
4785    /// <p>One or more filters. Use a filter to return a more specific list of results.</p>
4786    #[serde(rename = "AssociationFilterList")]
4787    #[serde(skip_serializing_if = "Option::is_none")]
4788    pub association_filter_list: Option<Vec<AssociationFilter>>,
4789    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
4790    #[serde(rename = "MaxResults")]
4791    #[serde(skip_serializing_if = "Option::is_none")]
4792    pub max_results: Option<i64>,
4793    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
4794    #[serde(rename = "NextToken")]
4795    #[serde(skip_serializing_if = "Option::is_none")]
4796    pub next_token: Option<String>,
4797}
4798
4799#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4800#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4801pub struct ListAssociationsResult {
4802    /// <p>The associations.</p>
4803    #[serde(rename = "Associations")]
4804    #[serde(skip_serializing_if = "Option::is_none")]
4805    pub associations: Option<Vec<Association>>,
4806    /// <p>The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.</p>
4807    #[serde(rename = "NextToken")]
4808    #[serde(skip_serializing_if = "Option::is_none")]
4809    pub next_token: Option<String>,
4810}
4811
4812#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4813#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4814pub struct ListCommandInvocationsRequest {
4815    /// <p>(Optional) The invocations for a specific command ID.</p>
4816    #[serde(rename = "CommandId")]
4817    #[serde(skip_serializing_if = "Option::is_none")]
4818    pub command_id: Option<String>,
4819    /// <p>(Optional) If set this returns the response of the command executions and any command output. By default this is set to False. </p>
4820    #[serde(rename = "Details")]
4821    #[serde(skip_serializing_if = "Option::is_none")]
4822    pub details: Option<bool>,
4823    /// <p>(Optional) One or more filters. Use a filter to return a more specific list of results.</p>
4824    #[serde(rename = "Filters")]
4825    #[serde(skip_serializing_if = "Option::is_none")]
4826    pub filters: Option<Vec<CommandFilter>>,
4827    /// <p>(Optional) The command execution details for a specific instance ID.</p>
4828    #[serde(rename = "InstanceId")]
4829    #[serde(skip_serializing_if = "Option::is_none")]
4830    pub instance_id: Option<String>,
4831    /// <p>(Optional) The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
4832    #[serde(rename = "MaxResults")]
4833    #[serde(skip_serializing_if = "Option::is_none")]
4834    pub max_results: Option<i64>,
4835    /// <p>(Optional) The token for the next set of items to return. (You received this token from a previous call.)</p>
4836    #[serde(rename = "NextToken")]
4837    #[serde(skip_serializing_if = "Option::is_none")]
4838    pub next_token: Option<String>,
4839}
4840
4841#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4842#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4843pub struct ListCommandInvocationsResult {
4844    /// <p>(Optional) A list of all invocations. </p>
4845    #[serde(rename = "CommandInvocations")]
4846    #[serde(skip_serializing_if = "Option::is_none")]
4847    pub command_invocations: Option<Vec<CommandInvocation>>,
4848    /// <p>(Optional) The token for the next set of items to return. (You received this token from a previous call.)</p>
4849    #[serde(rename = "NextToken")]
4850    #[serde(skip_serializing_if = "Option::is_none")]
4851    pub next_token: Option<String>,
4852}
4853
4854#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4855#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4856pub struct ListCommandsRequest {
4857    /// <p>(Optional) If provided, lists only the specified command.</p>
4858    #[serde(rename = "CommandId")]
4859    #[serde(skip_serializing_if = "Option::is_none")]
4860    pub command_id: Option<String>,
4861    /// <p>(Optional) One or more filters. Use a filter to return a more specific list of results. </p>
4862    #[serde(rename = "Filters")]
4863    #[serde(skip_serializing_if = "Option::is_none")]
4864    pub filters: Option<Vec<CommandFilter>>,
4865    /// <p>(Optional) Lists commands issued against this instance ID.</p>
4866    #[serde(rename = "InstanceId")]
4867    #[serde(skip_serializing_if = "Option::is_none")]
4868    pub instance_id: Option<String>,
4869    /// <p>(Optional) The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
4870    #[serde(rename = "MaxResults")]
4871    #[serde(skip_serializing_if = "Option::is_none")]
4872    pub max_results: Option<i64>,
4873    /// <p>(Optional) The token for the next set of items to return. (You received this token from a previous call.)</p>
4874    #[serde(rename = "NextToken")]
4875    #[serde(skip_serializing_if = "Option::is_none")]
4876    pub next_token: Option<String>,
4877}
4878
4879#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4880#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4881pub struct ListCommandsResult {
4882    /// <p>(Optional) The list of commands requested by the user. </p>
4883    #[serde(rename = "Commands")]
4884    #[serde(skip_serializing_if = "Option::is_none")]
4885    pub commands: Option<Vec<Command>>,
4886    /// <p>(Optional) The token for the next set of items to return. (You received this token from a previous call.)</p>
4887    #[serde(rename = "NextToken")]
4888    #[serde(skip_serializing_if = "Option::is_none")]
4889    pub next_token: Option<String>,
4890}
4891
4892#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4893#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4894pub struct ListComplianceItemsRequest {
4895    /// <p>One or more compliance filters. Use a filter to return a more specific list of results.</p>
4896    #[serde(rename = "Filters")]
4897    #[serde(skip_serializing_if = "Option::is_none")]
4898    pub filters: Option<Vec<ComplianceStringFilter>>,
4899    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
4900    #[serde(rename = "MaxResults")]
4901    #[serde(skip_serializing_if = "Option::is_none")]
4902    pub max_results: Option<i64>,
4903    /// <p>A token to start the list. Use this token to get the next set of results. </p>
4904    #[serde(rename = "NextToken")]
4905    #[serde(skip_serializing_if = "Option::is_none")]
4906    pub next_token: Option<String>,
4907    /// <p>The ID for the resources from which to get compliance information. Currently, you can only specify one resource ID.</p>
4908    #[serde(rename = "ResourceIds")]
4909    #[serde(skip_serializing_if = "Option::is_none")]
4910    pub resource_ids: Option<Vec<String>>,
4911    /// <p>The type of resource from which to get compliance information. Currently, the only supported resource type is <code>ManagedInstance</code>.</p>
4912    #[serde(rename = "ResourceTypes")]
4913    #[serde(skip_serializing_if = "Option::is_none")]
4914    pub resource_types: Option<Vec<String>>,
4915}
4916
4917#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4918#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4919pub struct ListComplianceItemsResult {
4920    /// <p>A list of compliance information for the specified resource ID. </p>
4921    #[serde(rename = "ComplianceItems")]
4922    #[serde(skip_serializing_if = "Option::is_none")]
4923    pub compliance_items: Option<Vec<ComplianceItem>>,
4924    /// <p>The token for the next set of items to return. Use this token to get the next set of results.</p>
4925    #[serde(rename = "NextToken")]
4926    #[serde(skip_serializing_if = "Option::is_none")]
4927    pub next_token: Option<String>,
4928}
4929
4930#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4931#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4932pub struct ListComplianceSummariesRequest {
4933    /// <p>One or more compliance or inventory filters. Use a filter to return a more specific list of results.</p>
4934    #[serde(rename = "Filters")]
4935    #[serde(skip_serializing_if = "Option::is_none")]
4936    pub filters: Option<Vec<ComplianceStringFilter>>,
4937    /// <p>The maximum number of items to return for this call. Currently, you can specify null or 50. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
4938    #[serde(rename = "MaxResults")]
4939    #[serde(skip_serializing_if = "Option::is_none")]
4940    pub max_results: Option<i64>,
4941    /// <p>A token to start the list. Use this token to get the next set of results. </p>
4942    #[serde(rename = "NextToken")]
4943    #[serde(skip_serializing_if = "Option::is_none")]
4944    pub next_token: Option<String>,
4945}
4946
4947#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4948#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4949pub struct ListComplianceSummariesResult {
4950    /// <p>A list of compliant and non-compliant summary counts based on compliance types. For example, this call returns State Manager associations, patches, or custom compliance types according to the filter criteria that you specified.</p>
4951    #[serde(rename = "ComplianceSummaryItems")]
4952    #[serde(skip_serializing_if = "Option::is_none")]
4953    pub compliance_summary_items: Option<Vec<ComplianceSummaryItem>>,
4954    /// <p>The token for the next set of items to return. Use this token to get the next set of results.</p>
4955    #[serde(rename = "NextToken")]
4956    #[serde(skip_serializing_if = "Option::is_none")]
4957    pub next_token: Option<String>,
4958}
4959
4960#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4961#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4962pub struct ListDocumentVersionsRequest {
4963    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
4964    #[serde(rename = "MaxResults")]
4965    #[serde(skip_serializing_if = "Option::is_none")]
4966    pub max_results: Option<i64>,
4967    /// <p>The name of the document. You can specify an Amazon Resource Name (ARN).</p>
4968    #[serde(rename = "Name")]
4969    pub name: String,
4970    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
4971    #[serde(rename = "NextToken")]
4972    #[serde(skip_serializing_if = "Option::is_none")]
4973    pub next_token: Option<String>,
4974}
4975
4976#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
4977#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
4978pub struct ListDocumentVersionsResult {
4979    /// <p>The document versions.</p>
4980    #[serde(rename = "DocumentVersions")]
4981    #[serde(skip_serializing_if = "Option::is_none")]
4982    pub document_versions: Option<Vec<DocumentVersionInfo>>,
4983    /// <p>The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.</p>
4984    #[serde(rename = "NextToken")]
4985    #[serde(skip_serializing_if = "Option::is_none")]
4986    pub next_token: Option<String>,
4987}
4988
4989#[derive(Clone, Debug, Default, PartialEq, Serialize)]
4990#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
4991pub struct ListDocumentsRequest {
4992    /// <p>This data type is deprecated. Instead, use <code>Filters</code>.</p>
4993    #[serde(rename = "DocumentFilterList")]
4994    #[serde(skip_serializing_if = "Option::is_none")]
4995    pub document_filter_list: Option<Vec<DocumentFilter>>,
4996    /// <p>One or more DocumentKeyValuesFilter objects. Use a filter to return a more specific list of results. For keys, you can specify one or more key-value pair tags that have been applied to a document. Other valid keys include <code>Owner</code>, <code>Name</code>, <code>PlatformTypes</code>, <code>DocumentType</code>, and <code>TargetType</code>. For example, to return documents you own use <code>Key=Owner,Values=Self</code>. To specify a custom key-value pair, use the format <code>Key=tag:tagName,Values=valueName</code>.</p>
4997    #[serde(rename = "Filters")]
4998    #[serde(skip_serializing_if = "Option::is_none")]
4999    pub filters: Option<Vec<DocumentKeyValuesFilter>>,
5000    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
5001    #[serde(rename = "MaxResults")]
5002    #[serde(skip_serializing_if = "Option::is_none")]
5003    pub max_results: Option<i64>,
5004    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
5005    #[serde(rename = "NextToken")]
5006    #[serde(skip_serializing_if = "Option::is_none")]
5007    pub next_token: Option<String>,
5008}
5009
5010#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5011#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5012pub struct ListDocumentsResult {
5013    /// <p>The names of the Systems Manager documents.</p>
5014    #[serde(rename = "DocumentIdentifiers")]
5015    #[serde(skip_serializing_if = "Option::is_none")]
5016    pub document_identifiers: Option<Vec<DocumentIdentifier>>,
5017    /// <p>The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.</p>
5018    #[serde(rename = "NextToken")]
5019    #[serde(skip_serializing_if = "Option::is_none")]
5020    pub next_token: Option<String>,
5021}
5022
5023#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5024#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5025pub struct ListInventoryEntriesRequest {
5026    /// <p>One or more filters. Use a filter to return a more specific list of results.</p>
5027    #[serde(rename = "Filters")]
5028    #[serde(skip_serializing_if = "Option::is_none")]
5029    pub filters: Option<Vec<InventoryFilter>>,
5030    /// <p>The instance ID for which you want inventory information.</p>
5031    #[serde(rename = "InstanceId")]
5032    pub instance_id: String,
5033    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
5034    #[serde(rename = "MaxResults")]
5035    #[serde(skip_serializing_if = "Option::is_none")]
5036    pub max_results: Option<i64>,
5037    /// <p>The token for the next set of items to return. (You received this token from a previous call.)</p>
5038    #[serde(rename = "NextToken")]
5039    #[serde(skip_serializing_if = "Option::is_none")]
5040    pub next_token: Option<String>,
5041    /// <p>The type of inventory item for which you want information.</p>
5042    #[serde(rename = "TypeName")]
5043    pub type_name: String,
5044}
5045
5046#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5047#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5048pub struct ListInventoryEntriesResult {
5049    /// <p>The time that inventory information was collected for the instance(s).</p>
5050    #[serde(rename = "CaptureTime")]
5051    #[serde(skip_serializing_if = "Option::is_none")]
5052    pub capture_time: Option<String>,
5053    /// <p>A list of inventory items on the instance(s).</p>
5054    #[serde(rename = "Entries")]
5055    #[serde(skip_serializing_if = "Option::is_none")]
5056    pub entries: Option<Vec<::std::collections::HashMap<String, String>>>,
5057    /// <p>The instance ID targeted by the request to query inventory information.</p>
5058    #[serde(rename = "InstanceId")]
5059    #[serde(skip_serializing_if = "Option::is_none")]
5060    pub instance_id: Option<String>,
5061    /// <p>The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.</p>
5062    #[serde(rename = "NextToken")]
5063    #[serde(skip_serializing_if = "Option::is_none")]
5064    pub next_token: Option<String>,
5065    /// <p>The inventory schema version used by the instance(s).</p>
5066    #[serde(rename = "SchemaVersion")]
5067    #[serde(skip_serializing_if = "Option::is_none")]
5068    pub schema_version: Option<String>,
5069    /// <p>The type of inventory item returned by the request.</p>
5070    #[serde(rename = "TypeName")]
5071    #[serde(skip_serializing_if = "Option::is_none")]
5072    pub type_name: Option<String>,
5073}
5074
5075#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5076#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5077pub struct ListResourceComplianceSummariesRequest {
5078    /// <p>One or more filters. Use a filter to return a more specific list of results.</p>
5079    #[serde(rename = "Filters")]
5080    #[serde(skip_serializing_if = "Option::is_none")]
5081    pub filters: Option<Vec<ComplianceStringFilter>>,
5082    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
5083    #[serde(rename = "MaxResults")]
5084    #[serde(skip_serializing_if = "Option::is_none")]
5085    pub max_results: Option<i64>,
5086    /// <p>A token to start the list. Use this token to get the next set of results. </p>
5087    #[serde(rename = "NextToken")]
5088    #[serde(skip_serializing_if = "Option::is_none")]
5089    pub next_token: Option<String>,
5090}
5091
5092#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5093#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5094pub struct ListResourceComplianceSummariesResult {
5095    /// <p>The token for the next set of items to return. Use this token to get the next set of results.</p>
5096    #[serde(rename = "NextToken")]
5097    #[serde(skip_serializing_if = "Option::is_none")]
5098    pub next_token: Option<String>,
5099    /// <p>A summary count for specified or targeted managed instances. Summary count includes information about compliant and non-compliant State Manager associations, patch status, or custom items according to the filter criteria that you specify. </p>
5100    #[serde(rename = "ResourceComplianceSummaryItems")]
5101    #[serde(skip_serializing_if = "Option::is_none")]
5102    pub resource_compliance_summary_items: Option<Vec<ResourceComplianceSummaryItem>>,
5103}
5104
5105#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5106#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5107pub struct ListResourceDataSyncRequest {
5108    /// <p>The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.</p>
5109    #[serde(rename = "MaxResults")]
5110    #[serde(skip_serializing_if = "Option::is_none")]
5111    pub max_results: Option<i64>,
5112    /// <p>A token to start the list. Use this token to get the next set of results. </p>
5113    #[serde(rename = "NextToken")]
5114    #[serde(skip_serializing_if = "Option::is_none")]
5115    pub next_token: Option<String>,
5116    /// <p>View a list of resource data syncs according to the sync type. Specify <code>SyncToDestination</code> to view resource data syncs that synchronize data to an Amazon S3 buckets. Specify <code>SyncFromSource</code> to view resource data syncs from AWS Organizations or from multiple AWS Regions. </p>
5117    #[serde(rename = "SyncType")]
5118    #[serde(skip_serializing_if = "Option::is_none")]
5119    pub sync_type: Option<String>,
5120}
5121
5122#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5123#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5124pub struct ListResourceDataSyncResult {
5125    /// <p>The token for the next set of items to return. Use this token to get the next set of results.</p>
5126    #[serde(rename = "NextToken")]
5127    #[serde(skip_serializing_if = "Option::is_none")]
5128    pub next_token: Option<String>,
5129    /// <p>A list of your current Resource Data Sync configurations and their statuses.</p>
5130    #[serde(rename = "ResourceDataSyncItems")]
5131    #[serde(skip_serializing_if = "Option::is_none")]
5132    pub resource_data_sync_items: Option<Vec<ResourceDataSyncItem>>,
5133}
5134
5135#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5136#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5137pub struct ListTagsForResourceRequest {
5138    /// <p>The resource ID for which you want to see a list of tags.</p>
5139    #[serde(rename = "ResourceId")]
5140    pub resource_id: String,
5141    /// <p>Returns a list of tags for a specific resource type.</p>
5142    #[serde(rename = "ResourceType")]
5143    pub resource_type: String,
5144}
5145
5146#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5147#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5148pub struct ListTagsForResourceResult {
5149    /// <p>A list of tags.</p>
5150    #[serde(rename = "TagList")]
5151    #[serde(skip_serializing_if = "Option::is_none")]
5152    pub tag_list: Option<Vec<Tag>>,
5153}
5154
5155/// <p><p>Information about an S3 bucket to write instance-level logs to.</p> <note> <p> <code>LoggingInfo</code> has been deprecated. To specify an S3 bucket to contain logs, instead use the <code>OutputS3BucketName</code> and <code>OutputS3KeyPrefix</code> options in the <code>TaskInvocationParameters</code> structure. For information about how Systems Manager handles these options for the supported maintenance window task types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p> </note></p>
5156#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5157pub struct LoggingInfo {
5158    /// <p>The name of an S3 bucket where execution logs are stored .</p>
5159    #[serde(rename = "S3BucketName")]
5160    pub s3_bucket_name: String,
5161    /// <p>(Optional) The S3 bucket subfolder. </p>
5162    #[serde(rename = "S3KeyPrefix")]
5163    #[serde(skip_serializing_if = "Option::is_none")]
5164    pub s3_key_prefix: Option<String>,
5165    /// <p>The Region where the S3 bucket is located.</p>
5166    #[serde(rename = "S3Region")]
5167    pub s3_region: String,
5168}
5169
5170/// <p>The parameters for an AUTOMATION task type.</p>
5171#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5172pub struct MaintenanceWindowAutomationParameters {
5173    /// <p>The version of an Automation document to use during task execution.</p>
5174    #[serde(rename = "DocumentVersion")]
5175    #[serde(skip_serializing_if = "Option::is_none")]
5176    pub document_version: Option<String>,
5177    /// <p><p>The parameters for the AUTOMATION task.</p> <p>For information about specifying and updating task parameters, see <a>RegisterTaskWithMaintenanceWindow</a> and <a>UpdateMaintenanceWindowTask</a>.</p> <note> <p> <code>LoggingInfo</code> has been deprecated. To specify an S3 bucket to contain logs, instead use the <code>OutputS3BucketName</code> and <code>OutputS3KeyPrefix</code> options in the <code>TaskInvocationParameters</code> structure. For information about how Systems Manager handles these options for the supported maintenance window task types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p> <p> <code>TaskParameters</code> has been deprecated. To specify parameters to pass to a task when it runs, instead use the <code>Parameters</code> option in the <code>TaskInvocationParameters</code> structure. For information about how Systems Manager handles these options for the supported maintenance window task types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p> <p>For AUTOMATION task types, Systems Manager ignores any values specified for these parameters.</p> </note></p>
5178    #[serde(rename = "Parameters")]
5179    #[serde(skip_serializing_if = "Option::is_none")]
5180    pub parameters: Option<::std::collections::HashMap<String, Vec<String>>>,
5181}
5182
5183/// <p>Describes the information about an execution of a maintenance window. </p>
5184#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5185#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5186pub struct MaintenanceWindowExecution {
5187    /// <p>The time the execution finished.</p>
5188    #[serde(rename = "EndTime")]
5189    #[serde(skip_serializing_if = "Option::is_none")]
5190    pub end_time: Option<f64>,
5191    /// <p>The time the execution started.</p>
5192    #[serde(rename = "StartTime")]
5193    #[serde(skip_serializing_if = "Option::is_none")]
5194    pub start_time: Option<f64>,
5195    /// <p>The status of the execution.</p>
5196    #[serde(rename = "Status")]
5197    #[serde(skip_serializing_if = "Option::is_none")]
5198    pub status: Option<String>,
5199    /// <p>The details explaining the Status. Only available for certain status values.</p>
5200    #[serde(rename = "StatusDetails")]
5201    #[serde(skip_serializing_if = "Option::is_none")]
5202    pub status_details: Option<String>,
5203    /// <p>The ID of the maintenance window execution.</p>
5204    #[serde(rename = "WindowExecutionId")]
5205    #[serde(skip_serializing_if = "Option::is_none")]
5206    pub window_execution_id: Option<String>,
5207    /// <p>The ID of the maintenance window.</p>
5208    #[serde(rename = "WindowId")]
5209    #[serde(skip_serializing_if = "Option::is_none")]
5210    pub window_id: Option<String>,
5211}
5212
5213/// <p>Information about a task execution performed as part of a maintenance window execution.</p>
5214#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5215#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5216pub struct MaintenanceWindowExecutionTaskIdentity {
5217    /// <p>The time the task execution finished.</p>
5218    #[serde(rename = "EndTime")]
5219    #[serde(skip_serializing_if = "Option::is_none")]
5220    pub end_time: Option<f64>,
5221    /// <p>The time the task execution started.</p>
5222    #[serde(rename = "StartTime")]
5223    #[serde(skip_serializing_if = "Option::is_none")]
5224    pub start_time: Option<f64>,
5225    /// <p>The status of the task execution.</p>
5226    #[serde(rename = "Status")]
5227    #[serde(skip_serializing_if = "Option::is_none")]
5228    pub status: Option<String>,
5229    /// <p>The details explaining the status of the task execution. Only available for certain status values.</p>
5230    #[serde(rename = "StatusDetails")]
5231    #[serde(skip_serializing_if = "Option::is_none")]
5232    pub status_details: Option<String>,
5233    /// <p>The ARN of the task that ran.</p>
5234    #[serde(rename = "TaskArn")]
5235    #[serde(skip_serializing_if = "Option::is_none")]
5236    pub task_arn: Option<String>,
5237    /// <p>The ID of the specific task execution in the maintenance window execution.</p>
5238    #[serde(rename = "TaskExecutionId")]
5239    #[serde(skip_serializing_if = "Option::is_none")]
5240    pub task_execution_id: Option<String>,
5241    /// <p>The type of task that ran.</p>
5242    #[serde(rename = "TaskType")]
5243    #[serde(skip_serializing_if = "Option::is_none")]
5244    pub task_type: Option<String>,
5245    /// <p>The ID of the maintenance window execution that ran the task.</p>
5246    #[serde(rename = "WindowExecutionId")]
5247    #[serde(skip_serializing_if = "Option::is_none")]
5248    pub window_execution_id: Option<String>,
5249}
5250
5251/// <p>Describes the information about a task invocation for a particular target as part of a task execution performed as part of a maintenance window execution.</p>
5252#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5253#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5254pub struct MaintenanceWindowExecutionTaskInvocationIdentity {
5255    /// <p>The time the invocation finished.</p>
5256    #[serde(rename = "EndTime")]
5257    #[serde(skip_serializing_if = "Option::is_none")]
5258    pub end_time: Option<f64>,
5259    /// <p>The ID of the action performed in the service that actually handled the task invocation. If the task type is RUN_COMMAND, this value is the command ID.</p>
5260    #[serde(rename = "ExecutionId")]
5261    #[serde(skip_serializing_if = "Option::is_none")]
5262    pub execution_id: Option<String>,
5263    /// <p>The ID of the task invocation.</p>
5264    #[serde(rename = "InvocationId")]
5265    #[serde(skip_serializing_if = "Option::is_none")]
5266    pub invocation_id: Option<String>,
5267    /// <p>User-provided value that was specified when the target was registered with the maintenance window. This was also included in any CloudWatch events raised during the task invocation.</p>
5268    #[serde(rename = "OwnerInformation")]
5269    #[serde(skip_serializing_if = "Option::is_none")]
5270    pub owner_information: Option<String>,
5271    /// <p>The parameters that were provided for the invocation when it was run.</p>
5272    #[serde(rename = "Parameters")]
5273    #[serde(skip_serializing_if = "Option::is_none")]
5274    pub parameters: Option<String>,
5275    /// <p>The time the invocation started.</p>
5276    #[serde(rename = "StartTime")]
5277    #[serde(skip_serializing_if = "Option::is_none")]
5278    pub start_time: Option<f64>,
5279    /// <p>The status of the task invocation.</p>
5280    #[serde(rename = "Status")]
5281    #[serde(skip_serializing_if = "Option::is_none")]
5282    pub status: Option<String>,
5283    /// <p>The details explaining the status of the task invocation. Only available for certain Status values. </p>
5284    #[serde(rename = "StatusDetails")]
5285    #[serde(skip_serializing_if = "Option::is_none")]
5286    pub status_details: Option<String>,
5287    /// <p>The ID of the specific task execution in the maintenance window execution.</p>
5288    #[serde(rename = "TaskExecutionId")]
5289    #[serde(skip_serializing_if = "Option::is_none")]
5290    pub task_execution_id: Option<String>,
5291    /// <p>The task type.</p>
5292    #[serde(rename = "TaskType")]
5293    #[serde(skip_serializing_if = "Option::is_none")]
5294    pub task_type: Option<String>,
5295    /// <p>The ID of the maintenance window execution that ran the task.</p>
5296    #[serde(rename = "WindowExecutionId")]
5297    #[serde(skip_serializing_if = "Option::is_none")]
5298    pub window_execution_id: Option<String>,
5299    /// <p>The ID of the target definition in this maintenance window the invocation was performed for.</p>
5300    #[serde(rename = "WindowTargetId")]
5301    #[serde(skip_serializing_if = "Option::is_none")]
5302    pub window_target_id: Option<String>,
5303}
5304
5305/// <p>Filter used in the request. Supported filter keys are Name and Enabled.</p>
5306#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5307#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5308pub struct MaintenanceWindowFilter {
5309    /// <p>The name of the filter.</p>
5310    #[serde(rename = "Key")]
5311    #[serde(skip_serializing_if = "Option::is_none")]
5312    pub key: Option<String>,
5313    /// <p>The filter values.</p>
5314    #[serde(rename = "Values")]
5315    #[serde(skip_serializing_if = "Option::is_none")]
5316    pub values: Option<Vec<String>>,
5317}
5318
5319/// <p>Information about the maintenance window.</p>
5320#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5321#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5322pub struct MaintenanceWindowIdentity {
5323    /// <p>The number of hours before the end of the maintenance window that Systems Manager stops scheduling new tasks for execution.</p>
5324    #[serde(rename = "Cutoff")]
5325    #[serde(skip_serializing_if = "Option::is_none")]
5326    pub cutoff: Option<i64>,
5327    /// <p>A description of the maintenance window.</p>
5328    #[serde(rename = "Description")]
5329    #[serde(skip_serializing_if = "Option::is_none")]
5330    pub description: Option<String>,
5331    /// <p>The duration of the maintenance window in hours.</p>
5332    #[serde(rename = "Duration")]
5333    #[serde(skip_serializing_if = "Option::is_none")]
5334    pub duration: Option<i64>,
5335    /// <p>Indicates whether the maintenance window is enabled.</p>
5336    #[serde(rename = "Enabled")]
5337    #[serde(skip_serializing_if = "Option::is_none")]
5338    pub enabled: Option<bool>,
5339    /// <p>The date and time, in ISO-8601 Extended format, for when the maintenance window is scheduled to become inactive.</p>
5340    #[serde(rename = "EndDate")]
5341    #[serde(skip_serializing_if = "Option::is_none")]
5342    pub end_date: Option<String>,
5343    /// <p>The name of the maintenance window.</p>
5344    #[serde(rename = "Name")]
5345    #[serde(skip_serializing_if = "Option::is_none")]
5346    pub name: Option<String>,
5347    /// <p>The next time the maintenance window will actually run, taking into account any specified times for the maintenance window to become active or inactive.</p>
5348    #[serde(rename = "NextExecutionTime")]
5349    #[serde(skip_serializing_if = "Option::is_none")]
5350    pub next_execution_time: Option<String>,
5351    /// <p>The schedule of the maintenance window in the form of a cron or rate expression.</p>
5352    #[serde(rename = "Schedule")]
5353    #[serde(skip_serializing_if = "Option::is_none")]
5354    pub schedule: Option<String>,
5355    /// <p>The number of days to wait to run a maintenance window after the scheduled CRON expression date and time.</p>
5356    #[serde(rename = "ScheduleOffset")]
5357    #[serde(skip_serializing_if = "Option::is_none")]
5358    pub schedule_offset: Option<i64>,
5359    /// <p>The time zone that the scheduled maintenance window executions are based on, in Internet Assigned Numbers Authority (IANA) format.</p>
5360    #[serde(rename = "ScheduleTimezone")]
5361    #[serde(skip_serializing_if = "Option::is_none")]
5362    pub schedule_timezone: Option<String>,
5363    /// <p>The date and time, in ISO-8601 Extended format, for when the maintenance window is scheduled to become active.</p>
5364    #[serde(rename = "StartDate")]
5365    #[serde(skip_serializing_if = "Option::is_none")]
5366    pub start_date: Option<String>,
5367    /// <p>The ID of the maintenance window.</p>
5368    #[serde(rename = "WindowId")]
5369    #[serde(skip_serializing_if = "Option::is_none")]
5370    pub window_id: Option<String>,
5371}
5372
5373/// <p>The maintenance window to which the specified target belongs.</p>
5374#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5375#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5376pub struct MaintenanceWindowIdentityForTarget {
5377    /// <p>The name of the maintenance window.</p>
5378    #[serde(rename = "Name")]
5379    #[serde(skip_serializing_if = "Option::is_none")]
5380    pub name: Option<String>,
5381    /// <p>The ID of the maintenance window.</p>
5382    #[serde(rename = "WindowId")]
5383    #[serde(skip_serializing_if = "Option::is_none")]
5384    pub window_id: Option<String>,
5385}
5386
5387/// <p><p>The parameters for a LAMBDA task type.</p> <p>For information about specifying and updating task parameters, see <a>RegisterTaskWithMaintenanceWindow</a> and <a>UpdateMaintenanceWindowTask</a>.</p> <note> <p> <code>LoggingInfo</code> has been deprecated. To specify an S3 bucket to contain logs, instead use the <code>OutputS3BucketName</code> and <code>OutputS3KeyPrefix</code> options in the <code>TaskInvocationParameters</code> structure. For information about how Systems Manager handles these options for the supported maintenance window task types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p> <p> <code>TaskParameters</code> has been deprecated. To specify parameters to pass to a task when it runs, instead use the <code>Parameters</code> option in the <code>TaskInvocationParameters</code> structure. For information about how Systems Manager handles these options for the supported maintenance window task types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p> <p>For Lambda tasks, Systems Manager ignores any values specified for TaskParameters and LoggingInfo.</p> </note></p>
5388#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5389pub struct MaintenanceWindowLambdaParameters {
5390    /// <p>Pass client-specific information to the Lambda function that you are invoking. You can then process the client information in your Lambda function as you choose through the context variable.</p>
5391    #[serde(rename = "ClientContext")]
5392    #[serde(skip_serializing_if = "Option::is_none")]
5393    pub client_context: Option<String>,
5394    /// <p>JSON to provide to your Lambda function as input.</p>
5395    #[serde(rename = "Payload")]
5396    #[serde(
5397        deserialize_with = "::rusoto_core::serialization::SerdeBlob::deserialize_blob",
5398        serialize_with = "::rusoto_core::serialization::SerdeBlob::serialize_blob",
5399        default
5400    )]
5401    #[serde(skip_serializing_if = "Option::is_none")]
5402    pub payload: Option<bytes::Bytes>,
5403    /// <p>(Optional) Specify a Lambda function version or alias name. If you specify a function version, the action uses the qualified function ARN to invoke a specific Lambda function. If you specify an alias name, the action uses the alias ARN to invoke the Lambda function version to which the alias points.</p>
5404    #[serde(rename = "Qualifier")]
5405    #[serde(skip_serializing_if = "Option::is_none")]
5406    pub qualifier: Option<String>,
5407}
5408
5409/// <p><p>The parameters for a RUN_COMMAND task type.</p> <p>For information about specifying and updating task parameters, see <a>RegisterTaskWithMaintenanceWindow</a> and <a>UpdateMaintenanceWindowTask</a>.</p> <note> <p> <code>LoggingInfo</code> has been deprecated. To specify an S3 bucket to contain logs, instead use the <code>OutputS3BucketName</code> and <code>OutputS3KeyPrefix</code> options in the <code>TaskInvocationParameters</code> structure. For information about how Systems Manager handles these options for the supported maintenance window task types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p> <p> <code>TaskParameters</code> has been deprecated. To specify parameters to pass to a task when it runs, instead use the <code>Parameters</code> option in the <code>TaskInvocationParameters</code> structure. For information about how Systems Manager handles these options for the supported maintenance window task types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p> <p>For Run Command tasks, Systems Manager uses specified values for <code>TaskParameters</code> and <code>LoggingInfo</code> only if no values are specified for <code>TaskInvocationParameters</code>. </p> </note></p>
5410#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5411pub struct MaintenanceWindowRunCommandParameters {
5412    #[serde(rename = "CloudWatchOutputConfig")]
5413    #[serde(skip_serializing_if = "Option::is_none")]
5414    pub cloud_watch_output_config: Option<CloudWatchOutputConfig>,
5415    /// <p>Information about the commands to run.</p>
5416    #[serde(rename = "Comment")]
5417    #[serde(skip_serializing_if = "Option::is_none")]
5418    pub comment: Option<String>,
5419    /// <p>The SHA-256 or SHA-1 hash created by the system when the document was created. SHA-1 hashes have been deprecated.</p>
5420    #[serde(rename = "DocumentHash")]
5421    #[serde(skip_serializing_if = "Option::is_none")]
5422    pub document_hash: Option<String>,
5423    /// <p>SHA-256 or SHA-1. SHA-1 hashes have been deprecated.</p>
5424    #[serde(rename = "DocumentHashType")]
5425    #[serde(skip_serializing_if = "Option::is_none")]
5426    pub document_hash_type: Option<String>,
5427    /// <p>The SSM document version to use in the request. You can specify $DEFAULT, $LATEST, or a specific version number. If you run commands by using the AWS CLI, then you must escape the first two options by using a backslash. If you specify a version number, then you don't need to use the backslash. For example:</p> <p>--document-version "\$DEFAULT"</p> <p>--document-version "\$LATEST"</p> <p>--document-version "3"</p>
5428    #[serde(rename = "DocumentVersion")]
5429    #[serde(skip_serializing_if = "Option::is_none")]
5430    pub document_version: Option<String>,
5431    /// <p>Configurations for sending notifications about command status changes on a per-instance basis.</p>
5432    #[serde(rename = "NotificationConfig")]
5433    #[serde(skip_serializing_if = "Option::is_none")]
5434    pub notification_config: Option<NotificationConfig>,
5435    /// <p>The name of the S3 bucket.</p>
5436    #[serde(rename = "OutputS3BucketName")]
5437    #[serde(skip_serializing_if = "Option::is_none")]
5438    pub output_s3_bucket_name: Option<String>,
5439    /// <p>The S3 bucket subfolder.</p>
5440    #[serde(rename = "OutputS3KeyPrefix")]
5441    #[serde(skip_serializing_if = "Option::is_none")]
5442    pub output_s3_key_prefix: Option<String>,
5443    /// <p>The parameters for the RUN_COMMAND task execution.</p>
5444    #[serde(rename = "Parameters")]
5445    #[serde(skip_serializing_if = "Option::is_none")]
5446    pub parameters: Option<::std::collections::HashMap<String, Vec<String>>>,
5447    /// <p>The ARN of the IAM service role to use to publish Amazon Simple Notification Service (Amazon SNS) notifications for maintenance window Run Command tasks.</p>
5448    #[serde(rename = "ServiceRoleArn")]
5449    #[serde(skip_serializing_if = "Option::is_none")]
5450    pub service_role_arn: Option<String>,
5451    /// <p>If this time is reached and the command has not already started running, it doesn't run.</p>
5452    #[serde(rename = "TimeoutSeconds")]
5453    #[serde(skip_serializing_if = "Option::is_none")]
5454    pub timeout_seconds: Option<i64>,
5455}
5456
5457/// <p><p>The parameters for a STEP_FUNCTIONS task.</p> <p>For information about specifying and updating task parameters, see <a>RegisterTaskWithMaintenanceWindow</a> and <a>UpdateMaintenanceWindowTask</a>.</p> <note> <p> <code>LoggingInfo</code> has been deprecated. To specify an S3 bucket to contain logs, instead use the <code>OutputS3BucketName</code> and <code>OutputS3KeyPrefix</code> options in the <code>TaskInvocationParameters</code> structure. For information about how Systems Manager handles these options for the supported maintenance window task types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p> <p> <code>TaskParameters</code> has been deprecated. To specify parameters to pass to a task when it runs, instead use the <code>Parameters</code> option in the <code>TaskInvocationParameters</code> structure. For information about how Systems Manager handles these options for the supported maintenance window task types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p> <p>For Step Functions tasks, Systems Manager ignores any values specified for <code>TaskParameters</code> and <code>LoggingInfo</code>.</p> </note></p>
5458#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5459pub struct MaintenanceWindowStepFunctionsParameters {
5460    /// <p>The inputs for the STEP_FUNCTIONS task.</p>
5461    #[serde(rename = "Input")]
5462    #[serde(skip_serializing_if = "Option::is_none")]
5463    pub input: Option<String>,
5464    /// <p>The name of the STEP_FUNCTIONS task.</p>
5465    #[serde(rename = "Name")]
5466    #[serde(skip_serializing_if = "Option::is_none")]
5467    pub name: Option<String>,
5468}
5469
5470/// <p>The target registered with the maintenance window.</p>
5471#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5472#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5473pub struct MaintenanceWindowTarget {
5474    /// <p>A description for the target.</p>
5475    #[serde(rename = "Description")]
5476    #[serde(skip_serializing_if = "Option::is_none")]
5477    pub description: Option<String>,
5478    /// <p>The name for the maintenance window target.</p>
5479    #[serde(rename = "Name")]
5480    #[serde(skip_serializing_if = "Option::is_none")]
5481    pub name: Option<String>,
5482    /// <p>A user-provided value that will be included in any CloudWatch events that are raised while running tasks for these targets in this maintenance window.</p>
5483    #[serde(rename = "OwnerInformation")]
5484    #[serde(skip_serializing_if = "Option::is_none")]
5485    pub owner_information: Option<String>,
5486    /// <p>The type of target that is being registered with the maintenance window.</p>
5487    #[serde(rename = "ResourceType")]
5488    #[serde(skip_serializing_if = "Option::is_none")]
5489    pub resource_type: Option<String>,
5490    /// <p>The targets, either instances or tags.</p> <p>Specify instances using the following format:</p> <p> <code>Key=instanceids,Values=&lt;instanceid1&gt;,&lt;instanceid2&gt;</code> </p> <p>Tags are specified using the following format:</p> <p> <code>Key=&lt;tag name&gt;,Values=&lt;tag value&gt;</code>.</p>
5491    #[serde(rename = "Targets")]
5492    #[serde(skip_serializing_if = "Option::is_none")]
5493    pub targets: Option<Vec<Target>>,
5494    /// <p>The ID of the maintenance window to register the target with.</p>
5495    #[serde(rename = "WindowId")]
5496    #[serde(skip_serializing_if = "Option::is_none")]
5497    pub window_id: Option<String>,
5498    /// <p>The ID of the target.</p>
5499    #[serde(rename = "WindowTargetId")]
5500    #[serde(skip_serializing_if = "Option::is_none")]
5501    pub window_target_id: Option<String>,
5502}
5503
5504/// <p>Information about a task defined for a maintenance window.</p>
5505#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5506#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5507pub struct MaintenanceWindowTask {
5508    /// <p>A description of the task.</p>
5509    #[serde(rename = "Description")]
5510    #[serde(skip_serializing_if = "Option::is_none")]
5511    pub description: Option<String>,
5512    /// <p><p>Information about an S3 bucket to write task-level logs to.</p> <note> <p> <code>LoggingInfo</code> has been deprecated. To specify an S3 bucket to contain logs, instead use the <code>OutputS3BucketName</code> and <code>OutputS3KeyPrefix</code> options in the <code>TaskInvocationParameters</code> structure. For information about how Systems Manager handles these options for the supported maintenance window task types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p> </note></p>
5513    #[serde(rename = "LoggingInfo")]
5514    #[serde(skip_serializing_if = "Option::is_none")]
5515    pub logging_info: Option<LoggingInfo>,
5516    /// <p>The maximum number of targets this task can be run for, in parallel.</p>
5517    #[serde(rename = "MaxConcurrency")]
5518    #[serde(skip_serializing_if = "Option::is_none")]
5519    pub max_concurrency: Option<String>,
5520    /// <p>The maximum number of errors allowed before this task stops being scheduled.</p>
5521    #[serde(rename = "MaxErrors")]
5522    #[serde(skip_serializing_if = "Option::is_none")]
5523    pub max_errors: Option<String>,
5524    /// <p>The task name.</p>
5525    #[serde(rename = "Name")]
5526    #[serde(skip_serializing_if = "Option::is_none")]
5527    pub name: Option<String>,
5528    /// <p>The priority of the task in the maintenance window. The lower the number, the higher the priority. Tasks that have the same priority are scheduled in parallel.</p>
5529    #[serde(rename = "Priority")]
5530    #[serde(skip_serializing_if = "Option::is_none")]
5531    pub priority: Option<i64>,
5532    /// <p>The ARN of the IAM service role to use to publish Amazon Simple Notification Service (Amazon SNS) notifications for maintenance window Run Command tasks.</p>
5533    #[serde(rename = "ServiceRoleArn")]
5534    #[serde(skip_serializing_if = "Option::is_none")]
5535    pub service_role_arn: Option<String>,
5536    /// <p>The targets (either instances or tags). Instances are specified using Key=instanceids,Values=&lt;instanceid1&gt;,&lt;instanceid2&gt;. Tags are specified using Key=&lt;tag name&gt;,Values=&lt;tag value&gt;.</p>
5537    #[serde(rename = "Targets")]
5538    #[serde(skip_serializing_if = "Option::is_none")]
5539    pub targets: Option<Vec<Target>>,
5540    /// <p>The resource that the task uses during execution. For RUN_COMMAND and AUTOMATION task types, <code>TaskArn</code> is the Systems Manager document name or ARN. For LAMBDA tasks, it's the function name or ARN. For STEP_FUNCTIONS tasks, it's the state machine ARN.</p>
5541    #[serde(rename = "TaskArn")]
5542    #[serde(skip_serializing_if = "Option::is_none")]
5543    pub task_arn: Option<String>,
5544    /// <p><p>The parameters that should be passed to the task when it is run.</p> <note> <p> <code>TaskParameters</code> has been deprecated. To specify parameters to pass to a task when it runs, instead use the <code>Parameters</code> option in the <code>TaskInvocationParameters</code> structure. For information about how Systems Manager handles these options for the supported maintenance window task types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p> </note></p>
5545    #[serde(rename = "TaskParameters")]
5546    #[serde(skip_serializing_if = "Option::is_none")]
5547    pub task_parameters:
5548        Option<::std::collections::HashMap<String, MaintenanceWindowTaskParameterValueExpression>>,
5549    /// <p>The type of task. The type can be one of the following: RUN_COMMAND, AUTOMATION, LAMBDA, or STEP_FUNCTIONS.</p>
5550    #[serde(rename = "Type")]
5551    #[serde(skip_serializing_if = "Option::is_none")]
5552    pub type_: Option<String>,
5553    /// <p>The ID of the maintenance window where the task is registered.</p>
5554    #[serde(rename = "WindowId")]
5555    #[serde(skip_serializing_if = "Option::is_none")]
5556    pub window_id: Option<String>,
5557    /// <p>The task ID.</p>
5558    #[serde(rename = "WindowTaskId")]
5559    #[serde(skip_serializing_if = "Option::is_none")]
5560    pub window_task_id: Option<String>,
5561}
5562
5563/// <p>The parameters for task execution.</p>
5564#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5565pub struct MaintenanceWindowTaskInvocationParameters {
5566    /// <p>The parameters for an AUTOMATION task type.</p>
5567    #[serde(rename = "Automation")]
5568    #[serde(skip_serializing_if = "Option::is_none")]
5569    pub automation: Option<MaintenanceWindowAutomationParameters>,
5570    /// <p>The parameters for a LAMBDA task type.</p>
5571    #[serde(rename = "Lambda")]
5572    #[serde(skip_serializing_if = "Option::is_none")]
5573    pub lambda: Option<MaintenanceWindowLambdaParameters>,
5574    /// <p>The parameters for a RUN_COMMAND task type.</p>
5575    #[serde(rename = "RunCommand")]
5576    #[serde(skip_serializing_if = "Option::is_none")]
5577    pub run_command: Option<MaintenanceWindowRunCommandParameters>,
5578    /// <p>The parameters for a STEP_FUNCTIONS task type.</p>
5579    #[serde(rename = "StepFunctions")]
5580    #[serde(skip_serializing_if = "Option::is_none")]
5581    pub step_functions: Option<MaintenanceWindowStepFunctionsParameters>,
5582}
5583
5584/// <p>Defines the values for a task parameter.</p>
5585#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5586pub struct MaintenanceWindowTaskParameterValueExpression {
5587    /// <p>This field contains an array of 0 or more strings, each 1 to 255 characters in length.</p>
5588    #[serde(rename = "Values")]
5589    #[serde(skip_serializing_if = "Option::is_none")]
5590    pub values: Option<Vec<String>>,
5591}
5592
5593#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5594#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5595pub struct ModifyDocumentPermissionRequest {
5596    /// <p>The AWS user accounts that should have access to the document. The account IDs can either be a group of account IDs or <i>All</i>.</p>
5597    #[serde(rename = "AccountIdsToAdd")]
5598    #[serde(skip_serializing_if = "Option::is_none")]
5599    pub account_ids_to_add: Option<Vec<String>>,
5600    /// <p>The AWS user accounts that should no longer have access to the document. The AWS user account can either be a group of account IDs or <i>All</i>. This action has a higher priority than <i>AccountIdsToAdd</i>. If you specify an account ID to add and the same ID to remove, the system removes access to the document.</p>
5601    #[serde(rename = "AccountIdsToRemove")]
5602    #[serde(skip_serializing_if = "Option::is_none")]
5603    pub account_ids_to_remove: Option<Vec<String>>,
5604    /// <p>The name of the document that you want to share.</p>
5605    #[serde(rename = "Name")]
5606    pub name: String,
5607    /// <p>The permission type for the document. The permission type can be <i>Share</i>.</p>
5608    #[serde(rename = "PermissionType")]
5609    pub permission_type: String,
5610    /// <p>(Optional) The version of the document to share. If it's not specified, the system choose the <code>Default</code> version to share.</p>
5611    #[serde(rename = "SharedDocumentVersion")]
5612    #[serde(skip_serializing_if = "Option::is_none")]
5613    pub shared_document_version: Option<String>,
5614}
5615
5616#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5617#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5618pub struct ModifyDocumentPermissionResponse {}
5619
5620/// <p>A summary of resources that are not compliant. The summary is organized according to resource type.</p>
5621#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5622#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5623pub struct NonCompliantSummary {
5624    /// <p>The total number of compliance items that are not compliant.</p>
5625    #[serde(rename = "NonCompliantCount")]
5626    #[serde(skip_serializing_if = "Option::is_none")]
5627    pub non_compliant_count: Option<i64>,
5628    /// <p>A summary of the non-compliance severity by compliance type</p>
5629    #[serde(rename = "SeveritySummary")]
5630    #[serde(skip_serializing_if = "Option::is_none")]
5631    pub severity_summary: Option<SeveritySummary>,
5632}
5633
5634/// <p>Configurations for sending notifications.</p>
5635#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5636pub struct NotificationConfig {
5637    /// <p>An Amazon Resource Name (ARN) for an Amazon Simple Notification Service (Amazon SNS) topic. Run Command pushes notifications about command status changes to this topic.</p>
5638    #[serde(rename = "NotificationArn")]
5639    #[serde(skip_serializing_if = "Option::is_none")]
5640    pub notification_arn: Option<String>,
5641    /// <p>The different events for which you can receive notifications. These events include the following: All (events), InProgress, Success, TimedOut, Cancelled, Failed. To learn more about these events, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/monitoring-sns-notifications.html">Monitoring Systems Manager status changes using Amazon SNS notifications</a> in the <i>AWS Systems Manager User Guide</i>.</p>
5642    #[serde(rename = "NotificationEvents")]
5643    #[serde(skip_serializing_if = "Option::is_none")]
5644    pub notification_events: Option<Vec<String>>,
5645    /// <p>Command: Receive notification when the status of a command changes. Invocation: For commands sent to multiple instances, receive notification on a per-instance basis when the status of a command changes. </p>
5646    #[serde(rename = "NotificationType")]
5647    #[serde(skip_serializing_if = "Option::is_none")]
5648    pub notification_type: Option<String>,
5649}
5650
5651/// <p>One or more aggregators for viewing counts of OpsItems using different dimensions such as <code>Source</code>, <code>CreatedTime</code>, or <code>Source and CreatedTime</code>, to name a few.</p>
5652#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5653#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5654pub struct OpsAggregator {
5655    /// <p>Either a Range or Count aggregator for limiting an OpsItem summary.</p>
5656    #[serde(rename = "AggregatorType")]
5657    #[serde(skip_serializing_if = "Option::is_none")]
5658    pub aggregator_type: Option<String>,
5659    /// <p>A nested aggregator for viewing counts of OpsItems.</p>
5660    #[serde(rename = "Aggregators")]
5661    #[serde(skip_serializing_if = "Option::is_none")]
5662    pub aggregators: Option<Vec<OpsAggregator>>,
5663    /// <p>The name of an OpsItem attribute on which to limit the count of OpsItems.</p>
5664    #[serde(rename = "AttributeName")]
5665    #[serde(skip_serializing_if = "Option::is_none")]
5666    pub attribute_name: Option<String>,
5667    /// <p>The aggregator filters.</p>
5668    #[serde(rename = "Filters")]
5669    #[serde(skip_serializing_if = "Option::is_none")]
5670    pub filters: Option<Vec<OpsFilter>>,
5671    /// <p>The data type name to use for viewing counts of OpsItems.</p>
5672    #[serde(rename = "TypeName")]
5673    #[serde(skip_serializing_if = "Option::is_none")]
5674    pub type_name: Option<String>,
5675    /// <p>The aggregator value.</p>
5676    #[serde(rename = "Values")]
5677    #[serde(skip_serializing_if = "Option::is_none")]
5678    pub values: Option<::std::collections::HashMap<String, String>>,
5679}
5680
5681/// <p>The result of the query.</p>
5682#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5683#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5684pub struct OpsEntity {
5685    /// <p>The data returned by the query.</p>
5686    #[serde(rename = "Data")]
5687    #[serde(skip_serializing_if = "Option::is_none")]
5688    pub data: Option<::std::collections::HashMap<String, OpsEntityItem>>,
5689    /// <p>The query ID.</p>
5690    #[serde(rename = "Id")]
5691    #[serde(skip_serializing_if = "Option::is_none")]
5692    pub id: Option<String>,
5693}
5694
5695/// <p>The OpsItem summaries result item.</p>
5696#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5697#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5698pub struct OpsEntityItem {
5699    /// <p>The time OpsItem data was captured.</p>
5700    #[serde(rename = "CaptureTime")]
5701    #[serde(skip_serializing_if = "Option::is_none")]
5702    pub capture_time: Option<String>,
5703    /// <p>The detailed data content for an OpsItem summaries result item.</p>
5704    #[serde(rename = "Content")]
5705    #[serde(skip_serializing_if = "Option::is_none")]
5706    pub content: Option<Vec<::std::collections::HashMap<String, String>>>,
5707}
5708
5709/// <p>A filter for viewing OpsItem summaries.</p>
5710#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5711#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5712pub struct OpsFilter {
5713    /// <p>The name of the filter.</p>
5714    #[serde(rename = "Key")]
5715    pub key: String,
5716    /// <p>The type of filter.</p>
5717    #[serde(rename = "Type")]
5718    #[serde(skip_serializing_if = "Option::is_none")]
5719    pub type_: Option<String>,
5720    /// <p>The filter value.</p>
5721    #[serde(rename = "Values")]
5722    pub values: Vec<String>,
5723}
5724
5725/// <p>Operations engineers and IT professionals use OpsCenter to view, investigate, and remediate operational issues impacting the performance and health of their AWS resources. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter.html">AWS Systems Manager OpsCenter</a> in the <i>AWS Systems Manager User Guide</i>. </p>
5726#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5727#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5728pub struct OpsItem {
5729    /// <p>An OpsItem category. Category options include: Availability, Cost, Performance, Recovery, Security.</p>
5730    #[serde(rename = "Category")]
5731    #[serde(skip_serializing_if = "Option::is_none")]
5732    pub category: Option<String>,
5733    /// <p>The ARN of the AWS account that created the OpsItem.</p>
5734    #[serde(rename = "CreatedBy")]
5735    #[serde(skip_serializing_if = "Option::is_none")]
5736    pub created_by: Option<String>,
5737    /// <p>The date and time the OpsItem was created.</p>
5738    #[serde(rename = "CreatedTime")]
5739    #[serde(skip_serializing_if = "Option::is_none")]
5740    pub created_time: Option<f64>,
5741    /// <p>The OpsItem description.</p>
5742    #[serde(rename = "Description")]
5743    #[serde(skip_serializing_if = "Option::is_none")]
5744    pub description: Option<String>,
5745    /// <p>The ARN of the AWS account that last updated the OpsItem.</p>
5746    #[serde(rename = "LastModifiedBy")]
5747    #[serde(skip_serializing_if = "Option::is_none")]
5748    pub last_modified_by: Option<String>,
5749    /// <p>The date and time the OpsItem was last updated.</p>
5750    #[serde(rename = "LastModifiedTime")]
5751    #[serde(skip_serializing_if = "Option::is_none")]
5752    pub last_modified_time: Option<f64>,
5753    /// <p>The Amazon Resource Name (ARN) of an SNS topic where notifications are sent when this OpsItem is edited or changed.</p>
5754    #[serde(rename = "Notifications")]
5755    #[serde(skip_serializing_if = "Option::is_none")]
5756    pub notifications: Option<Vec<OpsItemNotification>>,
5757    /// <p>Operational data is custom data that provides useful reference details about the OpsItem. For example, you can specify log files, error strings, license keys, troubleshooting tips, or other relevant data. You enter operational data as key-value pairs. The key has a maximum length of 128 characters. The value has a maximum size of 20 KB.</p> <important> <p>Operational data keys <i>can't</i> begin with the following: amazon, aws, amzn, ssm, /amazon, /aws, /amzn, /ssm.</p> </important> <p>You can choose to make the data searchable by other users in the account or you can restrict search access. Searchable data means that all users with access to the OpsItem Overview page (as provided by the <a>DescribeOpsItems</a> API action) can view and search on the specified data. Operational data that is not searchable is only viewable by users who have access to the OpsItem (as provided by the <a>GetOpsItem</a> API action).</p> <p>Use the <code>/aws/resources</code> key in OperationalData to specify a related resource in the request. Use the <code>/aws/automations</code> key in OperationalData to associate an Automation runbook with the OpsItem. To view AWS CLI example commands that use these keys, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-creating-OpsItems.html#OpsCenter-manually-create-OpsItems">Creating OpsItems manually</a> in the <i>AWS Systems Manager User Guide</i>.</p>
5758    #[serde(rename = "OperationalData")]
5759    #[serde(skip_serializing_if = "Option::is_none")]
5760    pub operational_data: Option<::std::collections::HashMap<String, OpsItemDataValue>>,
5761    /// <p>The ID of the OpsItem.</p>
5762    #[serde(rename = "OpsItemId")]
5763    #[serde(skip_serializing_if = "Option::is_none")]
5764    pub ops_item_id: Option<String>,
5765    /// <p>The importance of this OpsItem in relation to other OpsItems in the system.</p>
5766    #[serde(rename = "Priority")]
5767    #[serde(skip_serializing_if = "Option::is_none")]
5768    pub priority: Option<i64>,
5769    /// <p>One or more OpsItems that share something in common with the current OpsItem. For example, related OpsItems can include OpsItems with similar error messages, impacted resources, or statuses for the impacted resource.</p>
5770    #[serde(rename = "RelatedOpsItems")]
5771    #[serde(skip_serializing_if = "Option::is_none")]
5772    pub related_ops_items: Option<Vec<RelatedOpsItem>>,
5773    /// <p>The severity of the OpsItem. Severity options range from 1 to 4.</p>
5774    #[serde(rename = "Severity")]
5775    #[serde(skip_serializing_if = "Option::is_none")]
5776    pub severity: Option<String>,
5777    /// <p>The origin of the OpsItem, such as Amazon EC2 or Systems Manager. The impacted resource is a subset of source.</p>
5778    #[serde(rename = "Source")]
5779    #[serde(skip_serializing_if = "Option::is_none")]
5780    pub source: Option<String>,
5781    /// <p>The OpsItem status. Status can be <code>Open</code>, <code>In Progress</code>, or <code>Resolved</code>. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-working-with-OpsItems-editing-details.html">Editing OpsItem details</a> in the <i>AWS Systems Manager User Guide</i>.</p>
5782    #[serde(rename = "Status")]
5783    #[serde(skip_serializing_if = "Option::is_none")]
5784    pub status: Option<String>,
5785    /// <p>A short heading that describes the nature of the OpsItem and the impacted resource.</p>
5786    #[serde(rename = "Title")]
5787    #[serde(skip_serializing_if = "Option::is_none")]
5788    pub title: Option<String>,
5789    /// <p>The version of this OpsItem. Each time the OpsItem is edited the version number increments by one.</p>
5790    #[serde(rename = "Version")]
5791    #[serde(skip_serializing_if = "Option::is_none")]
5792    pub version: Option<String>,
5793}
5794
5795/// <p>An object that defines the value of the key and its type in the OperationalData map.</p>
5796#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5797pub struct OpsItemDataValue {
5798    /// <p>The type of key-value pair. Valid types include <code>SearchableString</code> and <code>String</code>.</p>
5799    #[serde(rename = "Type")]
5800    #[serde(skip_serializing_if = "Option::is_none")]
5801    pub type_: Option<String>,
5802    /// <p>The value of the OperationalData key.</p>
5803    #[serde(rename = "Value")]
5804    #[serde(skip_serializing_if = "Option::is_none")]
5805    pub value: Option<String>,
5806}
5807
5808/// <p>Describes an OpsItem filter.</p>
5809#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5810#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5811pub struct OpsItemFilter {
5812    /// <p>The name of the filter.</p>
5813    #[serde(rename = "Key")]
5814    pub key: String,
5815    /// <p>The operator used by the filter call.</p>
5816    #[serde(rename = "Operator")]
5817    pub operator: String,
5818    /// <p>The filter value.</p>
5819    #[serde(rename = "Values")]
5820    pub values: Vec<String>,
5821}
5822
5823/// <p>A notification about the OpsItem.</p>
5824#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
5825pub struct OpsItemNotification {
5826    /// <p>The Amazon Resource Name (ARN) of an SNS topic where notifications are sent when this OpsItem is edited or changed.</p>
5827    #[serde(rename = "Arn")]
5828    #[serde(skip_serializing_if = "Option::is_none")]
5829    pub arn: Option<String>,
5830}
5831
5832/// <p>A count of OpsItems.</p>
5833#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5834#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5835pub struct OpsItemSummary {
5836    /// <p>A list of OpsItems by category.</p>
5837    #[serde(rename = "Category")]
5838    #[serde(skip_serializing_if = "Option::is_none")]
5839    pub category: Option<String>,
5840    /// <p>The Amazon Resource Name (ARN) of the IAM entity that created the OpsItem.</p>
5841    #[serde(rename = "CreatedBy")]
5842    #[serde(skip_serializing_if = "Option::is_none")]
5843    pub created_by: Option<String>,
5844    /// <p>The date and time the OpsItem was created.</p>
5845    #[serde(rename = "CreatedTime")]
5846    #[serde(skip_serializing_if = "Option::is_none")]
5847    pub created_time: Option<f64>,
5848    /// <p>The Amazon Resource Name (ARN) of the IAM entity that created the OpsItem.</p>
5849    #[serde(rename = "LastModifiedBy")]
5850    #[serde(skip_serializing_if = "Option::is_none")]
5851    pub last_modified_by: Option<String>,
5852    /// <p>The date and time the OpsItem was last updated.</p>
5853    #[serde(rename = "LastModifiedTime")]
5854    #[serde(skip_serializing_if = "Option::is_none")]
5855    pub last_modified_time: Option<f64>,
5856    /// <p>Operational data is custom data that provides useful reference details about the OpsItem. </p>
5857    #[serde(rename = "OperationalData")]
5858    #[serde(skip_serializing_if = "Option::is_none")]
5859    pub operational_data: Option<::std::collections::HashMap<String, OpsItemDataValue>>,
5860    /// <p>The ID of the OpsItem.</p>
5861    #[serde(rename = "OpsItemId")]
5862    #[serde(skip_serializing_if = "Option::is_none")]
5863    pub ops_item_id: Option<String>,
5864    /// <p>The importance of this OpsItem in relation to other OpsItems in the system.</p>
5865    #[serde(rename = "Priority")]
5866    #[serde(skip_serializing_if = "Option::is_none")]
5867    pub priority: Option<i64>,
5868    /// <p>A list of OpsItems by severity.</p>
5869    #[serde(rename = "Severity")]
5870    #[serde(skip_serializing_if = "Option::is_none")]
5871    pub severity: Option<String>,
5872    /// <p>The impacted AWS resource.</p>
5873    #[serde(rename = "Source")]
5874    #[serde(skip_serializing_if = "Option::is_none")]
5875    pub source: Option<String>,
5876    /// <p>The OpsItem status. Status can be <code>Open</code>, <code>In Progress</code>, or <code>Resolved</code>.</p>
5877    #[serde(rename = "Status")]
5878    #[serde(skip_serializing_if = "Option::is_none")]
5879    pub status: Option<String>,
5880    /// <p>A short heading that describes the nature of the OpsItem and the impacted resource.</p>
5881    #[serde(rename = "Title")]
5882    #[serde(skip_serializing_if = "Option::is_none")]
5883    pub title: Option<String>,
5884}
5885
5886/// <p>The OpsItem data type to return.</p>
5887#[derive(Clone, Debug, Default, PartialEq, Serialize)]
5888#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
5889pub struct OpsResultAttribute {
5890    /// <p>Name of the data type. Valid value: AWS:OpsItem, AWS:EC2InstanceInformation, AWS:OpsItemTrendline, or AWS:ComplianceSummary.</p>
5891    #[serde(rename = "TypeName")]
5892    pub type_name: String,
5893}
5894
5895/// <p>Information about the source where the association execution details are stored.</p>
5896#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5897#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5898pub struct OutputSource {
5899    /// <p>The ID of the output source, for example the URL of an S3 bucket.</p>
5900    #[serde(rename = "OutputSourceId")]
5901    #[serde(skip_serializing_if = "Option::is_none")]
5902    pub output_source_id: Option<String>,
5903    /// <p>The type of source where the association execution details are stored, for example, Amazon S3.</p>
5904    #[serde(rename = "OutputSourceType")]
5905    #[serde(skip_serializing_if = "Option::is_none")]
5906    pub output_source_type: Option<String>,
5907}
5908
5909/// <p>An Systems Manager parameter in Parameter Store.</p>
5910#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5911#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5912pub struct Parameter {
5913    /// <p>The Amazon Resource Name (ARN) of the parameter.</p>
5914    #[serde(rename = "ARN")]
5915    #[serde(skip_serializing_if = "Option::is_none")]
5916    pub arn: Option<String>,
5917    /// <p>The data type of the parameter, such as <code>text</code> or <code>aws:ec2:image</code>. The default is <code>text</code>.</p>
5918    #[serde(rename = "DataType")]
5919    #[serde(skip_serializing_if = "Option::is_none")]
5920    pub data_type: Option<String>,
5921    /// <p>Date the parameter was last changed or updated and the parameter version was created.</p>
5922    #[serde(rename = "LastModifiedDate")]
5923    #[serde(skip_serializing_if = "Option::is_none")]
5924    pub last_modified_date: Option<f64>,
5925    /// <p>The name of the parameter.</p>
5926    #[serde(rename = "Name")]
5927    #[serde(skip_serializing_if = "Option::is_none")]
5928    pub name: Option<String>,
5929    /// <p>Either the version number or the label used to retrieve the parameter value. Specify selectors by using one of the following formats:</p> <p>parameter_name:version</p> <p>parameter_name:label</p>
5930    #[serde(rename = "Selector")]
5931    #[serde(skip_serializing_if = "Option::is_none")]
5932    pub selector: Option<String>,
5933    /// <p>Applies to parameters that reference information in other AWS services. SourceResult is the raw result or response from the source.</p>
5934    #[serde(rename = "SourceResult")]
5935    #[serde(skip_serializing_if = "Option::is_none")]
5936    pub source_result: Option<String>,
5937    /// <p>The type of parameter. Valid values include the following: <code>String</code>, <code>StringList</code>, and <code>SecureString</code>.</p>
5938    #[serde(rename = "Type")]
5939    #[serde(skip_serializing_if = "Option::is_none")]
5940    pub type_: Option<String>,
5941    /// <p>The parameter value.</p>
5942    #[serde(rename = "Value")]
5943    #[serde(skip_serializing_if = "Option::is_none")]
5944    pub value: Option<String>,
5945    /// <p>The parameter version.</p>
5946    #[serde(rename = "Version")]
5947    #[serde(skip_serializing_if = "Option::is_none")]
5948    pub version: Option<i64>,
5949}
5950
5951/// <p>Information about parameter usage.</p>
5952#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
5953#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
5954pub struct ParameterHistory {
5955    /// <p>Parameter names can include the following letters and symbols.</p> <p>a-zA-Z0-9_.-</p>
5956    #[serde(rename = "AllowedPattern")]
5957    #[serde(skip_serializing_if = "Option::is_none")]
5958    pub allowed_pattern: Option<String>,
5959    /// <p>The data type of the parameter, such as <code>text</code> or <code>aws:ec2:image</code>. The default is <code>text</code>.</p>
5960    #[serde(rename = "DataType")]
5961    #[serde(skip_serializing_if = "Option::is_none")]
5962    pub data_type: Option<String>,
5963    /// <p>Information about the parameter.</p>
5964    #[serde(rename = "Description")]
5965    #[serde(skip_serializing_if = "Option::is_none")]
5966    pub description: Option<String>,
5967    /// <p>The ID of the query key used for this parameter.</p>
5968    #[serde(rename = "KeyId")]
5969    #[serde(skip_serializing_if = "Option::is_none")]
5970    pub key_id: Option<String>,
5971    /// <p>Labels assigned to the parameter version.</p>
5972    #[serde(rename = "Labels")]
5973    #[serde(skip_serializing_if = "Option::is_none")]
5974    pub labels: Option<Vec<String>>,
5975    /// <p>Date the parameter was last changed or updated.</p>
5976    #[serde(rename = "LastModifiedDate")]
5977    #[serde(skip_serializing_if = "Option::is_none")]
5978    pub last_modified_date: Option<f64>,
5979    /// <p>Amazon Resource Name (ARN) of the AWS user who last changed the parameter.</p>
5980    #[serde(rename = "LastModifiedUser")]
5981    #[serde(skip_serializing_if = "Option::is_none")]
5982    pub last_modified_user: Option<String>,
5983    /// <p>The name of the parameter.</p>
5984    #[serde(rename = "Name")]
5985    #[serde(skip_serializing_if = "Option::is_none")]
5986    pub name: Option<String>,
5987    /// <p>Information about the policies assigned to a parameter.</p> <p> <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-policies.html">Assigning parameter policies</a> in the <i>AWS Systems Manager User Guide</i>.</p>
5988    #[serde(rename = "Policies")]
5989    #[serde(skip_serializing_if = "Option::is_none")]
5990    pub policies: Option<Vec<ParameterInlinePolicy>>,
5991    /// <p>The parameter tier.</p>
5992    #[serde(rename = "Tier")]
5993    #[serde(skip_serializing_if = "Option::is_none")]
5994    pub tier: Option<String>,
5995    /// <p>The type of parameter used.</p>
5996    #[serde(rename = "Type")]
5997    #[serde(skip_serializing_if = "Option::is_none")]
5998    pub type_: Option<String>,
5999    /// <p>The parameter value.</p>
6000    #[serde(rename = "Value")]
6001    #[serde(skip_serializing_if = "Option::is_none")]
6002    pub value: Option<String>,
6003    /// <p>The parameter version.</p>
6004    #[serde(rename = "Version")]
6005    #[serde(skip_serializing_if = "Option::is_none")]
6006    pub version: Option<i64>,
6007}
6008
6009/// <p>One or more policies assigned to a parameter.</p>
6010#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6011#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6012pub struct ParameterInlinePolicy {
6013    /// <p>The status of the policy. Policies report the following statuses: Pending (the policy has not been enforced or applied yet), Finished (the policy was applied), Failed (the policy was not applied), or InProgress (the policy is being applied now). </p>
6014    #[serde(rename = "PolicyStatus")]
6015    #[serde(skip_serializing_if = "Option::is_none")]
6016    pub policy_status: Option<String>,
6017    /// <p>The JSON text of the policy.</p>
6018    #[serde(rename = "PolicyText")]
6019    #[serde(skip_serializing_if = "Option::is_none")]
6020    pub policy_text: Option<String>,
6021    /// <p>The type of policy. Parameter Store supports the following policy types: Expiration, ExpirationNotification, and NoChangeNotification. </p>
6022    #[serde(rename = "PolicyType")]
6023    #[serde(skip_serializing_if = "Option::is_none")]
6024    pub policy_type: Option<String>,
6025}
6026
6027/// <p>Metadata includes information like the ARN of the last user and the date/time the parameter was last used.</p>
6028#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6029#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6030pub struct ParameterMetadata {
6031    /// <p>A parameter name can include only the following letters and symbols.</p> <p>a-zA-Z0-9_.-</p>
6032    #[serde(rename = "AllowedPattern")]
6033    #[serde(skip_serializing_if = "Option::is_none")]
6034    pub allowed_pattern: Option<String>,
6035    /// <p>The data type of the parameter, such as <code>text</code> or <code>aws:ec2:image</code>. The default is <code>text</code>.</p>
6036    #[serde(rename = "DataType")]
6037    #[serde(skip_serializing_if = "Option::is_none")]
6038    pub data_type: Option<String>,
6039    /// <p>Description of the parameter actions.</p>
6040    #[serde(rename = "Description")]
6041    #[serde(skip_serializing_if = "Option::is_none")]
6042    pub description: Option<String>,
6043    /// <p>The ID of the query key used for this parameter.</p>
6044    #[serde(rename = "KeyId")]
6045    #[serde(skip_serializing_if = "Option::is_none")]
6046    pub key_id: Option<String>,
6047    /// <p>Date the parameter was last changed or updated.</p>
6048    #[serde(rename = "LastModifiedDate")]
6049    #[serde(skip_serializing_if = "Option::is_none")]
6050    pub last_modified_date: Option<f64>,
6051    /// <p>Amazon Resource Name (ARN) of the AWS user who last changed the parameter.</p>
6052    #[serde(rename = "LastModifiedUser")]
6053    #[serde(skip_serializing_if = "Option::is_none")]
6054    pub last_modified_user: Option<String>,
6055    /// <p>The parameter name.</p>
6056    #[serde(rename = "Name")]
6057    #[serde(skip_serializing_if = "Option::is_none")]
6058    pub name: Option<String>,
6059    /// <p>A list of policies associated with a parameter.</p>
6060    #[serde(rename = "Policies")]
6061    #[serde(skip_serializing_if = "Option::is_none")]
6062    pub policies: Option<Vec<ParameterInlinePolicy>>,
6063    /// <p>The parameter tier.</p>
6064    #[serde(rename = "Tier")]
6065    #[serde(skip_serializing_if = "Option::is_none")]
6066    pub tier: Option<String>,
6067    /// <p>The type of parameter. Valid parameter types include the following: <code>String</code>, <code>StringList</code>, and <code>SecureString</code>.</p>
6068    #[serde(rename = "Type")]
6069    #[serde(skip_serializing_if = "Option::is_none")]
6070    pub type_: Option<String>,
6071    /// <p>The parameter version.</p>
6072    #[serde(rename = "Version")]
6073    #[serde(skip_serializing_if = "Option::is_none")]
6074    pub version: Option<i64>,
6075}
6076
6077/// <p><p>One or more filters. Use a filter to return a more specific list of results.</p> <important> <p>The <code>ParameterStringFilter</code> object is used by the <a>DescribeParameters</a> and <a>GetParametersByPath</a> API actions. However, not all of the pattern values listed for <code>Key</code> can be used with both actions.</p> <p>For <code>DescribeActions</code>, all of the listed patterns are valid, with the exception of <code>Label</code>.</p> <p>For <code>GetParametersByPath</code>, the following patterns listed for <code>Key</code> are not valid: <code>Name</code>, <code>Path</code>, and <code>Tier</code>.</p> <p>For examples of CLI commands demonstrating valid parameter filter constructions, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-search.html">Searching for Systems Manager parameters</a> in the <i>AWS Systems Manager User Guide</i>.</p> </important></p>
6078#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6079#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6080pub struct ParameterStringFilter {
6081    /// <p>The name of the filter.</p>
6082    #[serde(rename = "Key")]
6083    pub key: String,
6084    /// <p>For all filters used with <a>DescribeParameters</a>, valid options include <code>Equals</code> and <code>BeginsWith</code>. The <code>Name</code> filter additionally supports the <code>Contains</code> option. (Exception: For filters using the key <code>Path</code>, valid options include <code>Recursive</code> and <code>OneLevel</code>.)</p> <p>For filters used with <a>GetParametersByPath</a>, valid options include <code>Equals</code> and <code>BeginsWith</code>. (Exception: For filters using the key <code>Label</code>, the only valid option is <code>Equals</code>.)</p>
6085    #[serde(rename = "Option")]
6086    #[serde(skip_serializing_if = "Option::is_none")]
6087    pub option: Option<String>,
6088    /// <p>The value you want to search for.</p>
6089    #[serde(rename = "Values")]
6090    #[serde(skip_serializing_if = "Option::is_none")]
6091    pub values: Option<Vec<String>>,
6092}
6093
6094/// <p>This data type is deprecated. Instead, use <a>ParameterStringFilter</a>.</p>
6095#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6096#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6097pub struct ParametersFilter {
6098    /// <p>The name of the filter.</p>
6099    #[serde(rename = "Key")]
6100    pub key: String,
6101    /// <p>The filter values.</p>
6102    #[serde(rename = "Values")]
6103    pub values: Vec<String>,
6104}
6105
6106/// <p>Represents metadata about a patch.</p>
6107#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6108#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6109pub struct Patch {
6110    /// <p>The classification of the patch (for example, SecurityUpdates, Updates, CriticalUpdates).</p>
6111    #[serde(rename = "Classification")]
6112    #[serde(skip_serializing_if = "Option::is_none")]
6113    pub classification: Option<String>,
6114    /// <p>The URL where more information can be obtained about the patch.</p>
6115    #[serde(rename = "ContentUrl")]
6116    #[serde(skip_serializing_if = "Option::is_none")]
6117    pub content_url: Option<String>,
6118    /// <p>The description of the patch.</p>
6119    #[serde(rename = "Description")]
6120    #[serde(skip_serializing_if = "Option::is_none")]
6121    pub description: Option<String>,
6122    /// <p>The ID of the patch (this is different than the Microsoft Knowledge Base ID).</p>
6123    #[serde(rename = "Id")]
6124    #[serde(skip_serializing_if = "Option::is_none")]
6125    pub id: Option<String>,
6126    /// <p>The Microsoft Knowledge Base ID of the patch.</p>
6127    #[serde(rename = "KbNumber")]
6128    #[serde(skip_serializing_if = "Option::is_none")]
6129    pub kb_number: Option<String>,
6130    /// <p>The language of the patch if it's language-specific.</p>
6131    #[serde(rename = "Language")]
6132    #[serde(skip_serializing_if = "Option::is_none")]
6133    pub language: Option<String>,
6134    /// <p>The ID of the MSRC bulletin the patch is related to.</p>
6135    #[serde(rename = "MsrcNumber")]
6136    #[serde(skip_serializing_if = "Option::is_none")]
6137    pub msrc_number: Option<String>,
6138    /// <p>The severity of the patch (for example Critical, Important, Moderate).</p>
6139    #[serde(rename = "MsrcSeverity")]
6140    #[serde(skip_serializing_if = "Option::is_none")]
6141    pub msrc_severity: Option<String>,
6142    /// <p>The specific product the patch is applicable for (for example, WindowsServer2016).</p>
6143    #[serde(rename = "Product")]
6144    #[serde(skip_serializing_if = "Option::is_none")]
6145    pub product: Option<String>,
6146    /// <p>The product family the patch is applicable for (for example, Windows).</p>
6147    #[serde(rename = "ProductFamily")]
6148    #[serde(skip_serializing_if = "Option::is_none")]
6149    pub product_family: Option<String>,
6150    /// <p>The date the patch was released.</p>
6151    #[serde(rename = "ReleaseDate")]
6152    #[serde(skip_serializing_if = "Option::is_none")]
6153    pub release_date: Option<f64>,
6154    /// <p>The title of the patch.</p>
6155    #[serde(rename = "Title")]
6156    #[serde(skip_serializing_if = "Option::is_none")]
6157    pub title: Option<String>,
6158    /// <p>The name of the vendor providing the patch.</p>
6159    #[serde(rename = "Vendor")]
6160    #[serde(skip_serializing_if = "Option::is_none")]
6161    pub vendor: Option<String>,
6162}
6163
6164/// <p>Defines the basic information about a patch baseline.</p>
6165#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6166#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6167pub struct PatchBaselineIdentity {
6168    /// <p>The description of the patch baseline.</p>
6169    #[serde(rename = "BaselineDescription")]
6170    #[serde(skip_serializing_if = "Option::is_none")]
6171    pub baseline_description: Option<String>,
6172    /// <p>The ID of the patch baseline.</p>
6173    #[serde(rename = "BaselineId")]
6174    #[serde(skip_serializing_if = "Option::is_none")]
6175    pub baseline_id: Option<String>,
6176    /// <p>The name of the patch baseline.</p>
6177    #[serde(rename = "BaselineName")]
6178    #[serde(skip_serializing_if = "Option::is_none")]
6179    pub baseline_name: Option<String>,
6180    /// <p>Whether this is the default baseline. Note that Systems Manager supports creating multiple default patch baselines. For example, you can create a default patch baseline for each operating system.</p>
6181    #[serde(rename = "DefaultBaseline")]
6182    #[serde(skip_serializing_if = "Option::is_none")]
6183    pub default_baseline: Option<bool>,
6184    /// <p>Defines the operating system the patch baseline applies to. The Default value is WINDOWS. </p>
6185    #[serde(rename = "OperatingSystem")]
6186    #[serde(skip_serializing_if = "Option::is_none")]
6187    pub operating_system: Option<String>,
6188}
6189
6190/// <p>Information about the state of a patch on a particular instance as it relates to the patch baseline used to patch the instance.</p>
6191#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6192#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6193pub struct PatchComplianceData {
6194    /// <p>The classification of the patch (for example, SecurityUpdates, Updates, CriticalUpdates).</p>
6195    #[serde(rename = "Classification")]
6196    pub classification: String,
6197    /// <p>The date/time the patch was installed on the instance. Note that not all operating systems provide this level of information.</p>
6198    #[serde(rename = "InstalledTime")]
6199    pub installed_time: f64,
6200    /// <p>The operating system-specific ID of the patch.</p>
6201    #[serde(rename = "KBId")]
6202    pub kb_id: String,
6203    /// <p>The severity of the patch (for example, Critical, Important, Moderate).</p>
6204    #[serde(rename = "Severity")]
6205    pub severity: String,
6206    /// <p>The state of the patch on the instance, such as INSTALLED or FAILED.</p> <p>For descriptions of each patch state, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-compliance-about.html#sysman-compliance-monitor-patch">About patch compliance</a> in the <i>AWS Systems Manager User Guide</i>.</p>
6207    #[serde(rename = "State")]
6208    pub state: String,
6209    /// <p>The title of the patch.</p>
6210    #[serde(rename = "Title")]
6211    pub title: String,
6212}
6213
6214/// <p> Defines which patches should be included in a patch baseline.</p> <p>A patch filter consists of a key and a set of values. The filter key is a patch property. For example, the available filter keys for WINDOWS are PATCH_SET, PRODUCT, PRODUCT_FAMILY, CLASSIFICATION, and MSRC_SEVERITY. The filter values define a matching criterion for the patch property indicated by the key. For example, if the filter key is PRODUCT and the filter values are ["Office 2013", "Office 2016"], then the filter accepts all patches where product name is either "Office 2013" or "Office 2016". The filter values can be exact values for the patch property given as a key, or a wildcard (*), which matches all values.</p> <p>You can view lists of valid values for the patch properties by running the <code>DescribePatchProperties</code> command. For information about which patch properties can be used with each major operating system, see <a>DescribePatchProperties</a>.</p>
6215#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6216pub struct PatchFilter {
6217    /// <p>The key for the filter.</p> <p>Run the <a>DescribePatchProperties</a> command to view lists of valid keys for each operating system type.</p>
6218    #[serde(rename = "Key")]
6219    pub key: String,
6220    /// <p>The value for the filter key.</p> <p>Run the <a>DescribePatchProperties</a> command to view lists of valid values for each key based on operating system type.</p>
6221    #[serde(rename = "Values")]
6222    pub values: Vec<String>,
6223}
6224
6225/// <p>A set of patch filters, typically used for approval rules.</p>
6226#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6227pub struct PatchFilterGroup {
6228    /// <p>The set of patch filters that make up the group.</p>
6229    #[serde(rename = "PatchFilters")]
6230    pub patch_filters: Vec<PatchFilter>,
6231}
6232
6233/// <p>The mapping between a patch group and the patch baseline the patch group is registered with.</p>
6234#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6235#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6236pub struct PatchGroupPatchBaselineMapping {
6237    /// <p>The patch baseline the patch group is registered with.</p>
6238    #[serde(rename = "BaselineIdentity")]
6239    #[serde(skip_serializing_if = "Option::is_none")]
6240    pub baseline_identity: Option<PatchBaselineIdentity>,
6241    /// <p>The name of the patch group registered with the patch baseline.</p>
6242    #[serde(rename = "PatchGroup")]
6243    #[serde(skip_serializing_if = "Option::is_none")]
6244    pub patch_group: Option<String>,
6245}
6246
6247/// <p>Defines a filter used in Patch Manager APIs.</p>
6248#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6249#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6250pub struct PatchOrchestratorFilter {
6251    /// <p>The key for the filter.</p>
6252    #[serde(rename = "Key")]
6253    #[serde(skip_serializing_if = "Option::is_none")]
6254    pub key: Option<String>,
6255    /// <p>The value for the filter.</p>
6256    #[serde(rename = "Values")]
6257    #[serde(skip_serializing_if = "Option::is_none")]
6258    pub values: Option<Vec<String>>,
6259}
6260
6261/// <p>Defines an approval rule for a patch baseline.</p>
6262#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6263pub struct PatchRule {
6264    /// <p>The number of days after the release date of each patch matched by the rule that the patch is marked as approved in the patch baseline. For example, a value of <code>7</code> means that patches are approved seven days after they are released. Not supported on Ubuntu Server.</p>
6265    #[serde(rename = "ApproveAfterDays")]
6266    #[serde(skip_serializing_if = "Option::is_none")]
6267    pub approve_after_days: Option<i64>,
6268    /// <p>The cutoff date for auto approval of released patches. Any patches released on or before this date are installed automatically. Not supported on Ubuntu Server.</p> <p>Enter dates in the format <code>YYYY-MM-DD</code>. For example, <code>2020-12-31</code>.</p>
6269    #[serde(rename = "ApproveUntilDate")]
6270    #[serde(skip_serializing_if = "Option::is_none")]
6271    pub approve_until_date: Option<String>,
6272    /// <p>A compliance severity level for all approved patches in a patch baseline.</p>
6273    #[serde(rename = "ComplianceLevel")]
6274    #[serde(skip_serializing_if = "Option::is_none")]
6275    pub compliance_level: Option<String>,
6276    /// <p>For instances identified by the approval rule filters, enables a patch baseline to apply non-security updates available in the specified repository. The default value is 'false'. Applies to Linux instances only.</p>
6277    #[serde(rename = "EnableNonSecurity")]
6278    #[serde(skip_serializing_if = "Option::is_none")]
6279    pub enable_non_security: Option<bool>,
6280    /// <p>The patch filter group that defines the criteria for the rule.</p>
6281    #[serde(rename = "PatchFilterGroup")]
6282    pub patch_filter_group: PatchFilterGroup,
6283}
6284
6285/// <p>A set of rules defining the approval rules for a patch baseline.</p>
6286#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6287pub struct PatchRuleGroup {
6288    /// <p>The rules that make up the rule group.</p>
6289    #[serde(rename = "PatchRules")]
6290    pub patch_rules: Vec<PatchRule>,
6291}
6292
6293/// <p>Information about the patches to use to update the instances, including target operating systems and source repository. Applies to Linux instances only.</p>
6294#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6295pub struct PatchSource {
6296    /// <p>The value of the yum repo configuration. For example:</p> <p> <code>[main]</code> </p> <p> <code>cachedir=/var/cache/yum/$basesearch$releasever</code> </p> <p> <code>keepcache=0</code> </p> <p> <code>debuglevel=2</code> </p>
6297    #[serde(rename = "Configuration")]
6298    pub configuration: String,
6299    /// <p>The name specified to identify the patch source.</p>
6300    #[serde(rename = "Name")]
6301    pub name: String,
6302    /// <p>The specific operating system versions a patch repository applies to, such as "Ubuntu16.04", "AmazonLinux2016.09", "RedhatEnterpriseLinux7.2" or "Suse12.7". For lists of supported product values, see <a>PatchFilter</a>.</p>
6303    #[serde(rename = "Products")]
6304    pub products: Vec<String>,
6305}
6306
6307/// <p>Information about the approval status of a patch.</p>
6308#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6309#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6310pub struct PatchStatus {
6311    /// <p>The date the patch was approved (or will be approved if the status is PENDING_APPROVAL).</p>
6312    #[serde(rename = "ApprovalDate")]
6313    #[serde(skip_serializing_if = "Option::is_none")]
6314    pub approval_date: Option<f64>,
6315    /// <p>The compliance severity level for a patch.</p>
6316    #[serde(rename = "ComplianceLevel")]
6317    #[serde(skip_serializing_if = "Option::is_none")]
6318    pub compliance_level: Option<String>,
6319    /// <p>The approval status of a patch (APPROVED, PENDING_APPROVAL, EXPLICIT_APPROVED, EXPLICIT_REJECTED).</p>
6320    #[serde(rename = "DeploymentStatus")]
6321    #[serde(skip_serializing_if = "Option::is_none")]
6322    pub deployment_status: Option<String>,
6323}
6324
6325/// <p>An aggregate of step execution statuses displayed in the AWS Console for a multi-Region and multi-account Automation execution.</p>
6326#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6327#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6328pub struct ProgressCounters {
6329    /// <p>The total number of steps that the system cancelled in all specified AWS Regions and accounts for the current Automation execution.</p>
6330    #[serde(rename = "CancelledSteps")]
6331    #[serde(skip_serializing_if = "Option::is_none")]
6332    pub cancelled_steps: Option<i64>,
6333    /// <p>The total number of steps that failed to run in all specified AWS Regions and accounts for the current Automation execution.</p>
6334    #[serde(rename = "FailedSteps")]
6335    #[serde(skip_serializing_if = "Option::is_none")]
6336    pub failed_steps: Option<i64>,
6337    /// <p>The total number of steps that successfully completed in all specified AWS Regions and accounts for the current Automation execution.</p>
6338    #[serde(rename = "SuccessSteps")]
6339    #[serde(skip_serializing_if = "Option::is_none")]
6340    pub success_steps: Option<i64>,
6341    /// <p>The total number of steps that timed out in all specified AWS Regions and accounts for the current Automation execution.</p>
6342    #[serde(rename = "TimedOutSteps")]
6343    #[serde(skip_serializing_if = "Option::is_none")]
6344    pub timed_out_steps: Option<i64>,
6345    /// <p>The total number of steps run in all specified AWS Regions and accounts for the current Automation execution.</p>
6346    #[serde(rename = "TotalSteps")]
6347    #[serde(skip_serializing_if = "Option::is_none")]
6348    pub total_steps: Option<i64>,
6349}
6350
6351#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6352#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6353pub struct PutComplianceItemsRequest {
6354    /// <p>Specify the compliance type. For example, specify Association (for a State Manager association), Patch, or Custom:<code>string</code>.</p>
6355    #[serde(rename = "ComplianceType")]
6356    pub compliance_type: String,
6357    /// <p>A summary of the call execution that includes an execution ID, the type of execution (for example, <code>Command</code>), and the date/time of the execution using a datetime object that is saved in the following format: yyyy-MM-dd'T'HH:mm:ss'Z'.</p>
6358    #[serde(rename = "ExecutionSummary")]
6359    pub execution_summary: ComplianceExecutionSummary,
6360    /// <p>MD5 or SHA-256 content hash. The content hash is used to determine if existing information should be overwritten or ignored. If the content hashes match, the request to put compliance information is ignored.</p>
6361    #[serde(rename = "ItemContentHash")]
6362    #[serde(skip_serializing_if = "Option::is_none")]
6363    pub item_content_hash: Option<String>,
6364    /// <p>Information about the compliance as defined by the resource type. For example, for a patch compliance type, <code>Items</code> includes information about the PatchSeverity, Classification, and so on.</p>
6365    #[serde(rename = "Items")]
6366    pub items: Vec<ComplianceItemEntry>,
6367    /// <p>Specify an ID for this resource. For a managed instance, this is the instance ID.</p>
6368    #[serde(rename = "ResourceId")]
6369    pub resource_id: String,
6370    /// <p>Specify the type of resource. <code>ManagedInstance</code> is currently the only supported resource type.</p>
6371    #[serde(rename = "ResourceType")]
6372    pub resource_type: String,
6373    /// <p><p>The mode for uploading compliance items. You can specify <code>COMPLETE</code> or <code>PARTIAL</code>. In <code>COMPLETE</code> mode, the system overwrites all existing compliance information for the resource. You must provide a full list of compliance items each time you send the request.</p> <p>In <code>PARTIAL</code> mode, the system overwrites compliance information for a specific association. The association must be configured with <code>SyncCompliance</code> set to <code>MANUAL</code>. By default, all requests use <code>COMPLETE</code> mode.</p> <note> <p>This attribute is only valid for association compliance.</p> </note></p>
6374    #[serde(rename = "UploadType")]
6375    #[serde(skip_serializing_if = "Option::is_none")]
6376    pub upload_type: Option<String>,
6377}
6378
6379#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6380#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6381pub struct PutComplianceItemsResult {}
6382
6383#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6384#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6385pub struct PutInventoryRequest {
6386    /// <p>An instance ID where you want to add or update inventory items.</p>
6387    #[serde(rename = "InstanceId")]
6388    pub instance_id: String,
6389    /// <p>The inventory items that you want to add or update on instances.</p>
6390    #[serde(rename = "Items")]
6391    pub items: Vec<InventoryItem>,
6392}
6393
6394#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6395#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6396pub struct PutInventoryResult {
6397    /// <p>Information about the request.</p>
6398    #[serde(rename = "Message")]
6399    #[serde(skip_serializing_if = "Option::is_none")]
6400    pub message: Option<String>,
6401}
6402
6403#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6404#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6405pub struct PutParameterRequest {
6406    /// <p>A regular expression used to validate the parameter value. For example, for String types with values restricted to numbers, you can specify the following: AllowedPattern=^\d+$ </p>
6407    #[serde(rename = "AllowedPattern")]
6408    #[serde(skip_serializing_if = "Option::is_none")]
6409    pub allowed_pattern: Option<String>,
6410    /// <p>The data type for a <code>String</code> parameter. Supported data types include plain text and Amazon Machine Image IDs.</p> <p> <b>The following data type values are supported.</b> </p> <ul> <li> <p> <code>text</code> </p> </li> <li> <p> <code>aws:ec2:image</code> </p> </li> </ul> <p>When you create a <code>String</code> parameter and specify <code>aws:ec2:image</code>, Systems Manager validates the parameter value is in the required format, such as <code>ami-12345abcdeEXAMPLE</code>, and that the specified AMI is available in your AWS account. For more information, see <a href="http://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-ec2-aliases.html">Native parameter support for Amazon Machine Image IDs</a> in the <i>AWS Systems Manager User Guide</i>.</p>
6411    #[serde(rename = "DataType")]
6412    #[serde(skip_serializing_if = "Option::is_none")]
6413    pub data_type: Option<String>,
6414    /// <p><p>Information about the parameter that you want to add to the system. Optional but recommended.</p> <important> <p>Do not enter personally identifiable information in this field.</p> </important></p>
6415    #[serde(rename = "Description")]
6416    #[serde(skip_serializing_if = "Option::is_none")]
6417    pub description: Option<String>,
6418    /// <p><p>The KMS Key ID that you want to use to encrypt a parameter. Either the default AWS Key Management Service (AWS KMS) key automatically assigned to your AWS account or a custom key. Required for parameters that use the <code>SecureString</code> data type.</p> <p>If you don&#39;t specify a key ID, the system uses the default key associated with your AWS account.</p> <ul> <li> <p>To use your default AWS KMS key, choose the <code>SecureString</code> data type, and do <i>not</i> specify the <code>Key ID</code> when you create the parameter. The system automatically populates <code>Key ID</code> with your default KMS key.</p> </li> <li> <p>To use a custom KMS key, choose the <code>SecureString</code> data type with the <code>Key ID</code> parameter.</p> </li> </ul></p>
6419    #[serde(rename = "KeyId")]
6420    #[serde(skip_serializing_if = "Option::is_none")]
6421    pub key_id: Option<String>,
6422    /// <p><p>The fully qualified name of the parameter that you want to add to the system. The fully qualified name includes the complete hierarchy of the parameter path and name. For parameters in a hierarchy, you must include a leading forward slash character (/) when you create or reference a parameter. For example: <code>/Dev/DBServer/MySQL/db-string13</code> </p> <p>Naming Constraints:</p> <ul> <li> <p>Parameter names are case sensitive.</p> </li> <li> <p>A parameter name must be unique within an AWS Region</p> </li> <li> <p>A parameter name can&#39;t be prefixed with &quot;aws&quot; or &quot;ssm&quot; (case-insensitive).</p> </li> <li> <p>Parameter names can include only the following symbols and letters: <code>a-zA-Z0-9_.-/</code> </p> </li> <li> <p>A parameter name can&#39;t include spaces.</p> </li> <li> <p>Parameter hierarchies are limited to a maximum depth of fifteen levels.</p> </li> </ul> <p>For additional information about valid values for parameter names, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-parameter-name-constraints.html">About requirements and constraints for parameter names</a> in the <i>AWS Systems Manager User Guide</i>.</p> <note> <p>The maximum length constraint listed below includes capacity for additional system attributes that are not part of the name. The maximum length for a parameter name, including the full length of the parameter ARN, is 1011 characters. For example, the length of the following parameter name is 65 characters, not 20 characters:</p> <p> <code>arn:aws:ssm:us-east-2:111122223333:parameter/ExampleParameterName</code> </p> </note></p>
6423    #[serde(rename = "Name")]
6424    pub name: String,
6425    /// <p>Overwrite an existing parameter. If not specified, will default to "false".</p>
6426    #[serde(rename = "Overwrite")]
6427    #[serde(skip_serializing_if = "Option::is_none")]
6428    pub overwrite: Option<bool>,
6429    /// <p>One or more policies to apply to a parameter. This action takes a JSON array. Parameter Store supports the following policy types:</p> <p>Expiration: This policy deletes the parameter after it expires. When you create the policy, you specify the expiration date. You can update the expiration date and time by updating the policy. Updating the <i>parameter</i> does not affect the expiration date and time. When the expiration time is reached, Parameter Store deletes the parameter.</p> <p>ExpirationNotification: This policy triggers an event in Amazon CloudWatch Events that notifies you about the expiration. By using this policy, you can receive notification before or after the expiration time is reached, in units of days or hours.</p> <p>NoChangeNotification: This policy triggers a CloudWatch event if a parameter has not been modified for a specified period of time. This policy type is useful when, for example, a secret needs to be changed within a period of time, but it has not been changed.</p> <p>All existing policies are preserved until you send new policies or an empty policy. For more information about parameter policies, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-policies.html">Assigning parameter policies</a>. </p>
6430    #[serde(rename = "Policies")]
6431    #[serde(skip_serializing_if = "Option::is_none")]
6432    pub policies: Option<String>,
6433    /// <p><p>Optional metadata that you assign to a resource. Tags enable you to categorize a resource in different ways, such as by purpose, owner, or environment. For example, you might want to tag a Systems Manager parameter to identify the type of resource to which it applies, the environment, or the type of configuration data referenced by the parameter. In this case, you could specify the following key name/value pairs:</p> <ul> <li> <p> <code>Key=Resource,Value=S3bucket</code> </p> </li> <li> <p> <code>Key=OS,Value=Windows</code> </p> </li> <li> <p> <code>Key=ParameterType,Value=LicenseKey</code> </p> </li> </ul> <note> <p>To add tags to an existing Systems Manager parameter, use the <a>AddTagsToResource</a> action.</p> </note></p>
6434    #[serde(rename = "Tags")]
6435    #[serde(skip_serializing_if = "Option::is_none")]
6436    pub tags: Option<Vec<Tag>>,
6437    /// <p>The parameter tier to assign to a parameter.</p> <p>Parameter Store offers a standard tier and an advanced tier for parameters. Standard parameters have a content size limit of 4 KB and can't be configured to use parameter policies. You can create a maximum of 10,000 standard parameters for each Region in an AWS account. Standard parameters are offered at no additional cost. </p> <p>Advanced parameters have a content size limit of 8 KB and can be configured to use parameter policies. You can create a maximum of 100,000 advanced parameters for each Region in an AWS account. Advanced parameters incur a charge. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-advanced-parameters.html">Standard and advanced parameter tiers</a> in the <i>AWS Systems Manager User Guide</i>.</p> <p>You can change a standard parameter to an advanced parameter any time. But you can't revert an advanced parameter to a standard parameter. Reverting an advanced parameter to a standard parameter would result in data loss because the system would truncate the size of the parameter from 8 KB to 4 KB. Reverting would also remove any policies attached to the parameter. Lastly, advanced parameters use a different form of encryption than standard parameters. </p> <p>If you no longer need an advanced parameter, or if you no longer want to incur charges for an advanced parameter, you must delete it and recreate it as a new standard parameter. </p> <p> <b>Using the Default Tier Configuration</b> </p> <p>In <code>PutParameter</code> requests, you can specify the tier to create the parameter in. Whenever you specify a tier in the request, Parameter Store creates or updates the parameter according to that request. However, if you do not specify a tier in a request, Parameter Store assigns the tier based on the current Parameter Store default tier configuration.</p> <p>The default tier when you begin using Parameter Store is the standard-parameter tier. If you use the advanced-parameter tier, you can specify one of the following as the default:</p> <ul> <li> <p> <b>Advanced</b>: With this option, Parameter Store evaluates all requests as advanced parameters. </p> </li> <li> <p> <b>Intelligent-Tiering</b>: With this option, Parameter Store evaluates each request to determine if the parameter is standard or advanced. </p> <p>If the request doesn't include any options that require an advanced parameter, the parameter is created in the standard-parameter tier. If one or more options requiring an advanced parameter are included in the request, Parameter Store create a parameter in the advanced-parameter tier.</p> <p>This approach helps control your parameter-related costs by always creating standard parameters unless an advanced parameter is necessary. </p> </li> </ul> <p>Options that require an advanced parameter include the following:</p> <ul> <li> <p>The content size of the parameter is more than 4 KB.</p> </li> <li> <p>The parameter uses a parameter policy.</p> </li> <li> <p>More than 10,000 parameters already exist in your AWS account in the current Region.</p> </li> </ul> <p>For more information about configuring the default tier option, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/ps-default-tier.html">Specifying a default parameter tier</a> in the <i>AWS Systems Manager User Guide</i>.</p>
6438    #[serde(rename = "Tier")]
6439    #[serde(skip_serializing_if = "Option::is_none")]
6440    pub tier: Option<String>,
6441    /// <p><p>The type of parameter that you want to add to the system.</p> <note> <p> <code>SecureString</code> is not currently supported for AWS CloudFormation templates or in the China Regions.</p> </note> <p>Items in a <code>StringList</code> must be separated by a comma (,). You can&#39;t use other punctuation or special character to escape items in the list. If you have a parameter value that requires a comma, then use the <code>String</code> data type.</p> <important> <p>Specifying a parameter type is not required when updating a parameter. You must specify a parameter type when creating a parameter.</p> </important></p>
6442    #[serde(rename = "Type")]
6443    #[serde(skip_serializing_if = "Option::is_none")]
6444    pub type_: Option<String>,
6445    /// <p>The parameter value that you want to add to the system. Standard parameters have a value limit of 4 KB. Advanced parameters have a value limit of 8 KB.</p>
6446    #[serde(rename = "Value")]
6447    pub value: String,
6448}
6449
6450#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6451#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6452pub struct PutParameterResult {
6453    /// <p>The tier assigned to the parameter.</p>
6454    #[serde(rename = "Tier")]
6455    #[serde(skip_serializing_if = "Option::is_none")]
6456    pub tier: Option<String>,
6457    /// <p>The new version number of a parameter. If you edit a parameter value, Parameter Store automatically creates a new version and assigns this new version a unique ID. You can reference a parameter version ID in API actions or in Systems Manager documents (SSM documents). By default, if you don't specify a specific version, the system returns the latest parameter value when a parameter is called.</p>
6458    #[serde(rename = "Version")]
6459    #[serde(skip_serializing_if = "Option::is_none")]
6460    pub version: Option<i64>,
6461}
6462
6463#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6464#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6465pub struct RegisterDefaultPatchBaselineRequest {
6466    /// <p>The ID of the patch baseline that should be the default patch baseline.</p>
6467    #[serde(rename = "BaselineId")]
6468    pub baseline_id: String,
6469}
6470
6471#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6472#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6473pub struct RegisterDefaultPatchBaselineResult {
6474    /// <p>The ID of the default patch baseline.</p>
6475    #[serde(rename = "BaselineId")]
6476    #[serde(skip_serializing_if = "Option::is_none")]
6477    pub baseline_id: Option<String>,
6478}
6479
6480#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6481#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6482pub struct RegisterPatchBaselineForPatchGroupRequest {
6483    /// <p>The ID of the patch baseline to register the patch group with.</p>
6484    #[serde(rename = "BaselineId")]
6485    pub baseline_id: String,
6486    /// <p>The name of the patch group that should be registered with the patch baseline.</p>
6487    #[serde(rename = "PatchGroup")]
6488    pub patch_group: String,
6489}
6490
6491#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6492#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6493pub struct RegisterPatchBaselineForPatchGroupResult {
6494    /// <p>The ID of the patch baseline the patch group was registered with.</p>
6495    #[serde(rename = "BaselineId")]
6496    #[serde(skip_serializing_if = "Option::is_none")]
6497    pub baseline_id: Option<String>,
6498    /// <p>The name of the patch group registered with the patch baseline.</p>
6499    #[serde(rename = "PatchGroup")]
6500    #[serde(skip_serializing_if = "Option::is_none")]
6501    pub patch_group: Option<String>,
6502}
6503
6504#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6505#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6506pub struct RegisterTargetWithMaintenanceWindowRequest {
6507    /// <p>User-provided idempotency token.</p>
6508    #[serde(rename = "ClientToken")]
6509    #[serde(skip_serializing_if = "Option::is_none")]
6510    pub client_token: Option<String>,
6511    /// <p>An optional description for the target.</p>
6512    #[serde(rename = "Description")]
6513    #[serde(skip_serializing_if = "Option::is_none")]
6514    pub description: Option<String>,
6515    /// <p>An optional name for the target.</p>
6516    #[serde(rename = "Name")]
6517    #[serde(skip_serializing_if = "Option::is_none")]
6518    pub name: Option<String>,
6519    /// <p>User-provided value that will be included in any CloudWatch events raised while running tasks for these targets in this maintenance window.</p>
6520    #[serde(rename = "OwnerInformation")]
6521    #[serde(skip_serializing_if = "Option::is_none")]
6522    pub owner_information: Option<String>,
6523    /// <p>The type of target being registered with the maintenance window.</p>
6524    #[serde(rename = "ResourceType")]
6525    pub resource_type: String,
6526    /// <p>The targets to register with the maintenance window. In other words, the instances to run commands on when the maintenance window runs.</p> <p>You can specify targets using instance IDs, resource group names, or tags that have been applied to instances.</p> <p> <b>Example 1</b>: Specify instance IDs</p> <p> <code>Key=InstanceIds,Values=<i>instance-id-1</i>,<i>instance-id-2</i>,<i>instance-id-3</i> </code> </p> <p> <b>Example 2</b>: Use tag key-pairs applied to instances</p> <p> <code>Key=tag:<i>my-tag-key</i>,Values=<i>my-tag-value-1</i>,<i>my-tag-value-2</i> </code> </p> <p> <b>Example 3</b>: Use tag-keys applied to instances</p> <p> <code>Key=tag-key,Values=<i>my-tag-key-1</i>,<i>my-tag-key-2</i> </code> </p> <p> <b>Example 4</b>: Use resource group names</p> <p> <code>Key=resource-groups:Name,Values=<i>resource-group-name</i> </code> </p> <p> <b>Example 5</b>: Use filters for resource group types</p> <p> <code>Key=resource-groups:ResourceTypeFilters,Values=<i>resource-type-1</i>,<i>resource-type-2</i> </code> </p> <note> <p>For <code>Key=resource-groups:ResourceTypeFilters</code>, specify resource types in the following format</p> <p> <code>Key=resource-groups:ResourceTypeFilters,Values=<i>AWS::EC2::INSTANCE</i>,<i>AWS::EC2::VPC</i> </code> </p> </note> <p>For more information about these examples formats, including the best use case for each one, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/mw-cli-tutorial-targets-examples.html">Examples: Register targets with a maintenance window</a> in the <i>AWS Systems Manager User Guide</i>.</p>
6527    #[serde(rename = "Targets")]
6528    pub targets: Vec<Target>,
6529    /// <p>The ID of the maintenance window the target should be registered with.</p>
6530    #[serde(rename = "WindowId")]
6531    pub window_id: String,
6532}
6533
6534#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6535#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6536pub struct RegisterTargetWithMaintenanceWindowResult {
6537    /// <p>The ID of the target definition in this maintenance window.</p>
6538    #[serde(rename = "WindowTargetId")]
6539    #[serde(skip_serializing_if = "Option::is_none")]
6540    pub window_target_id: Option<String>,
6541}
6542
6543#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6544#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6545pub struct RegisterTaskWithMaintenanceWindowRequest {
6546    /// <p>User-provided idempotency token.</p>
6547    #[serde(rename = "ClientToken")]
6548    #[serde(skip_serializing_if = "Option::is_none")]
6549    pub client_token: Option<String>,
6550    /// <p>An optional description for the task.</p>
6551    #[serde(rename = "Description")]
6552    #[serde(skip_serializing_if = "Option::is_none")]
6553    pub description: Option<String>,
6554    /// <p><p>A structure containing information about an S3 bucket to write instance-level logs to. </p> <note> <p> <code>LoggingInfo</code> has been deprecated. To specify an S3 bucket to contain logs, instead use the <code>OutputS3BucketName</code> and <code>OutputS3KeyPrefix</code> options in the <code>TaskInvocationParameters</code> structure. For information about how Systems Manager handles these options for the supported maintenance window task types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p> </note></p>
6555    #[serde(rename = "LoggingInfo")]
6556    #[serde(skip_serializing_if = "Option::is_none")]
6557    pub logging_info: Option<LoggingInfo>,
6558    /// <p>The maximum number of targets this task can be run for in parallel.</p>
6559    #[serde(rename = "MaxConcurrency")]
6560    pub max_concurrency: String,
6561    /// <p>The maximum number of errors allowed before this task stops being scheduled.</p>
6562    #[serde(rename = "MaxErrors")]
6563    pub max_errors: String,
6564    /// <p>An optional name for the task.</p>
6565    #[serde(rename = "Name")]
6566    #[serde(skip_serializing_if = "Option::is_none")]
6567    pub name: Option<String>,
6568    /// <p>The priority of the task in the maintenance window, the lower the number the higher the priority. Tasks in a maintenance window are scheduled in priority order with tasks that have the same priority scheduled in parallel.</p>
6569    #[serde(rename = "Priority")]
6570    #[serde(skip_serializing_if = "Option::is_none")]
6571    pub priority: Option<i64>,
6572    /// <p><p>The ARN of the IAM service role for Systems Manager to assume when running a maintenance window task. If you do not specify a service role ARN, Systems Manager uses your account&#39;s service-linked role. If no service-linked role for Systems Manager exists in your account, it is created when you run <code>RegisterTaskWithMaintenanceWindow</code>.</p> <p>For more information, see the following topics in the in the <i>AWS Systems Manager User Guide</i>:</p> <ul> <li> <p> <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/using-service-linked-roles.html#slr-permissions">Using service-linked roles for Systems Manager</a> </p> </li> <li> <p> <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-maintenance-permissions.html#maintenance-window-tasks-service-role">Should I use a service-linked role or a custom service role to run maintenance window tasks? </a> </p> </li> </ul></p>
6573    #[serde(rename = "ServiceRoleArn")]
6574    #[serde(skip_serializing_if = "Option::is_none")]
6575    pub service_role_arn: Option<String>,
6576    /// <p>The targets (either instances or maintenance window targets).</p> <p>Specify instances using the following format: </p> <p> <code>Key=InstanceIds,Values=&lt;instance-id-1&gt;,&lt;instance-id-2&gt;</code> </p> <p>Specify maintenance window targets using the following format:</p> <p> <code>Key=WindowTargetIds;,Values=&lt;window-target-id-1&gt;,&lt;window-target-id-2&gt;</code> </p>
6577    #[serde(rename = "Targets")]
6578    pub targets: Vec<Target>,
6579    /// <p>The ARN of the task to run.</p>
6580    #[serde(rename = "TaskArn")]
6581    pub task_arn: String,
6582    /// <p>The parameters that the task should use during execution. Populate only the fields that match the task type. All other fields should be empty. </p>
6583    #[serde(rename = "TaskInvocationParameters")]
6584    #[serde(skip_serializing_if = "Option::is_none")]
6585    pub task_invocation_parameters: Option<MaintenanceWindowTaskInvocationParameters>,
6586    /// <p><p>The parameters that should be passed to the task when it is run.</p> <note> <p> <code>TaskParameters</code> has been deprecated. To specify parameters to pass to a task when it runs, instead use the <code>Parameters</code> option in the <code>TaskInvocationParameters</code> structure. For information about how Systems Manager handles these options for the supported maintenance window task types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p> </note></p>
6587    #[serde(rename = "TaskParameters")]
6588    #[serde(skip_serializing_if = "Option::is_none")]
6589    pub task_parameters:
6590        Option<::std::collections::HashMap<String, MaintenanceWindowTaskParameterValueExpression>>,
6591    /// <p>The type of task being registered.</p>
6592    #[serde(rename = "TaskType")]
6593    pub task_type: String,
6594    /// <p>The ID of the maintenance window the task should be added to.</p>
6595    #[serde(rename = "WindowId")]
6596    pub window_id: String,
6597}
6598
6599#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6600#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6601pub struct RegisterTaskWithMaintenanceWindowResult {
6602    /// <p>The ID of the task in the maintenance window.</p>
6603    #[serde(rename = "WindowTaskId")]
6604    #[serde(skip_serializing_if = "Option::is_none")]
6605    pub window_task_id: Option<String>,
6606}
6607
6608/// <p>An OpsItems that shares something in common with the current OpsItem. For example, related OpsItems can include OpsItems with similar error messages, impacted resources, or statuses for the impacted resource.</p>
6609#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6610pub struct RelatedOpsItem {
6611    /// <p>The ID of an OpsItem related to the current OpsItem.</p>
6612    #[serde(rename = "OpsItemId")]
6613    pub ops_item_id: String,
6614}
6615
6616#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6617#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6618pub struct RemoveTagsFromResourceRequest {
6619    /// <p><p>The ID of the resource from which you want to remove tags. For example:</p> <p>ManagedInstance: mi-012345abcde</p> <p>MaintenanceWindow: mw-012345abcde</p> <p>PatchBaseline: pb-012345abcde</p> <p>For the Document and Parameter values, use the name of the resource.</p> <note> <p>The ManagedInstance type for this API action is only for on-premises managed instances. Specify the name of the managed instance in the following format: mi-ID_number. For example, mi-1a2b3c4d5e6f.</p> </note></p>
6620    #[serde(rename = "ResourceId")]
6621    pub resource_id: String,
6622    /// <p><p>The type of resource from which you want to remove a tag.</p> <note> <p>The ManagedInstance type for this API action is only for on-premises managed instances. Specify the name of the managed instance in the following format: mi-ID_number. For example, mi-1a2b3c4d5e6f.</p> </note></p>
6623    #[serde(rename = "ResourceType")]
6624    pub resource_type: String,
6625    /// <p>Tag keys that you want to remove from the specified resource.</p>
6626    #[serde(rename = "TagKeys")]
6627    pub tag_keys: Vec<String>,
6628}
6629
6630#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6631#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6632pub struct RemoveTagsFromResourceResult {}
6633
6634/// <p>The request body of the ResetServiceSetting API action.</p>
6635#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6636#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6637pub struct ResetServiceSettingRequest {
6638    /// <p>The Amazon Resource Name (ARN) of the service setting to reset. The setting ID can be <code>/ssm/parameter-store/default-parameter-tier</code>, <code>/ssm/parameter-store/high-throughput-enabled</code>, or <code>/ssm/managed-instance/activation-tier</code>. For example, <code>arn:aws:ssm:us-east-1:111122223333:servicesetting/ssm/parameter-store/high-throughput-enabled</code>.</p>
6639    #[serde(rename = "SettingId")]
6640    pub setting_id: String,
6641}
6642
6643/// <p>The result body of the ResetServiceSetting API action.</p>
6644#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6645#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6646pub struct ResetServiceSettingResult {
6647    /// <p>The current, effective service setting after calling the ResetServiceSetting API action.</p>
6648    #[serde(rename = "ServiceSetting")]
6649    #[serde(skip_serializing_if = "Option::is_none")]
6650    pub service_setting: Option<ServiceSetting>,
6651}
6652
6653/// <p>Information about targets that resolved during the Automation execution.</p>
6654#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6655#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6656pub struct ResolvedTargets {
6657    /// <p>A list of parameter values sent to targets that resolved during the Automation execution.</p>
6658    #[serde(rename = "ParameterValues")]
6659    #[serde(skip_serializing_if = "Option::is_none")]
6660    pub parameter_values: Option<Vec<String>>,
6661    /// <p>A boolean value indicating whether the resolved target list is truncated.</p>
6662    #[serde(rename = "Truncated")]
6663    #[serde(skip_serializing_if = "Option::is_none")]
6664    pub truncated: Option<bool>,
6665}
6666
6667/// <p>Compliance summary information for a specific resource. </p>
6668#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6669#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6670pub struct ResourceComplianceSummaryItem {
6671    /// <p>The compliance type.</p>
6672    #[serde(rename = "ComplianceType")]
6673    #[serde(skip_serializing_if = "Option::is_none")]
6674    pub compliance_type: Option<String>,
6675    /// <p>A list of items that are compliant for the resource.</p>
6676    #[serde(rename = "CompliantSummary")]
6677    #[serde(skip_serializing_if = "Option::is_none")]
6678    pub compliant_summary: Option<CompliantSummary>,
6679    /// <p>Information about the execution.</p>
6680    #[serde(rename = "ExecutionSummary")]
6681    #[serde(skip_serializing_if = "Option::is_none")]
6682    pub execution_summary: Option<ComplianceExecutionSummary>,
6683    /// <p>A list of items that aren't compliant for the resource.</p>
6684    #[serde(rename = "NonCompliantSummary")]
6685    #[serde(skip_serializing_if = "Option::is_none")]
6686    pub non_compliant_summary: Option<NonCompliantSummary>,
6687    /// <p>The highest severity item found for the resource. The resource is compliant for this item.</p>
6688    #[serde(rename = "OverallSeverity")]
6689    #[serde(skip_serializing_if = "Option::is_none")]
6690    pub overall_severity: Option<String>,
6691    /// <p>The resource ID.</p>
6692    #[serde(rename = "ResourceId")]
6693    #[serde(skip_serializing_if = "Option::is_none")]
6694    pub resource_id: Option<String>,
6695    /// <p>The resource type.</p>
6696    #[serde(rename = "ResourceType")]
6697    #[serde(skip_serializing_if = "Option::is_none")]
6698    pub resource_type: Option<String>,
6699    /// <p>The compliance status for the resource.</p>
6700    #[serde(rename = "Status")]
6701    #[serde(skip_serializing_if = "Option::is_none")]
6702    pub status: Option<String>,
6703}
6704
6705/// <p>Information about the AwsOrganizationsSource resource data sync source. A sync source of this type can synchronize data from AWS Organizations or, if an AWS Organization is not present, from multiple AWS Regions.</p>
6706#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6707pub struct ResourceDataSyncAwsOrganizationsSource {
6708    /// <p>If an AWS Organization is present, this is either <code>OrganizationalUnits</code> or <code>EntireOrganization</code>. For <code>OrganizationalUnits</code>, the data is aggregated from a set of organization units. For <code>EntireOrganization</code>, the data is aggregated from the entire AWS Organization. </p>
6709    #[serde(rename = "OrganizationSourceType")]
6710    pub organization_source_type: String,
6711    /// <p>The AWS Organizations organization units included in the sync.</p>
6712    #[serde(rename = "OrganizationalUnits")]
6713    #[serde(skip_serializing_if = "Option::is_none")]
6714    pub organizational_units: Option<Vec<ResourceDataSyncOrganizationalUnit>>,
6715}
6716
6717/// <p>Synchronize Systems Manager Inventory data from multiple AWS accounts defined in AWS Organizations to a centralized S3 bucket. Data is synchronized to individual key prefixes in the central bucket. Each key prefix represents a different AWS account ID.</p>
6718#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6719pub struct ResourceDataSyncDestinationDataSharing {
6720    /// <p>The sharing data type. Only <code>Organization</code> is supported.</p>
6721    #[serde(rename = "DestinationDataSharingType")]
6722    #[serde(skip_serializing_if = "Option::is_none")]
6723    pub destination_data_sharing_type: Option<String>,
6724}
6725
6726/// <p>Information about a Resource Data Sync configuration, including its current status and last successful sync.</p>
6727#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6728#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6729pub struct ResourceDataSyncItem {
6730    /// <p>The status reported by the last sync.</p>
6731    #[serde(rename = "LastStatus")]
6732    #[serde(skip_serializing_if = "Option::is_none")]
6733    pub last_status: Option<String>,
6734    /// <p>The last time the sync operations returned a status of <code>SUCCESSFUL</code> (UTC).</p>
6735    #[serde(rename = "LastSuccessfulSyncTime")]
6736    #[serde(skip_serializing_if = "Option::is_none")]
6737    pub last_successful_sync_time: Option<f64>,
6738    /// <p>The status message details reported by the last sync.</p>
6739    #[serde(rename = "LastSyncStatusMessage")]
6740    #[serde(skip_serializing_if = "Option::is_none")]
6741    pub last_sync_status_message: Option<String>,
6742    /// <p>The last time the configuration attempted to sync (UTC).</p>
6743    #[serde(rename = "LastSyncTime")]
6744    #[serde(skip_serializing_if = "Option::is_none")]
6745    pub last_sync_time: Option<f64>,
6746    /// <p>Configuration information for the target S3 bucket.</p>
6747    #[serde(rename = "S3Destination")]
6748    #[serde(skip_serializing_if = "Option::is_none")]
6749    pub s3_destination: Option<ResourceDataSyncS3Destination>,
6750    /// <p>The date and time the configuration was created (UTC).</p>
6751    #[serde(rename = "SyncCreatedTime")]
6752    #[serde(skip_serializing_if = "Option::is_none")]
6753    pub sync_created_time: Option<f64>,
6754    /// <p>The date and time the resource data sync was changed. </p>
6755    #[serde(rename = "SyncLastModifiedTime")]
6756    #[serde(skip_serializing_if = "Option::is_none")]
6757    pub sync_last_modified_time: Option<f64>,
6758    /// <p>The name of the Resource Data Sync.</p>
6759    #[serde(rename = "SyncName")]
6760    #[serde(skip_serializing_if = "Option::is_none")]
6761    pub sync_name: Option<String>,
6762    /// <p>Information about the source where the data was synchronized. </p>
6763    #[serde(rename = "SyncSource")]
6764    #[serde(skip_serializing_if = "Option::is_none")]
6765    pub sync_source: Option<ResourceDataSyncSourceWithState>,
6766    /// <p>The type of resource data sync. If <code>SyncType</code> is <code>SyncToDestination</code>, then the resource data sync synchronizes data to an S3 bucket. If the <code>SyncType</code> is <code>SyncFromSource</code> then the resource data sync synchronizes data from AWS Organizations or from multiple AWS Regions.</p>
6767    #[serde(rename = "SyncType")]
6768    #[serde(skip_serializing_if = "Option::is_none")]
6769    pub sync_type: Option<String>,
6770}
6771
6772/// <p>The AWS Organizations organizational unit data source for the sync.</p>
6773#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6774pub struct ResourceDataSyncOrganizationalUnit {
6775    /// <p>The AWS Organization unit ID data source for the sync.</p>
6776    #[serde(rename = "OrganizationalUnitId")]
6777    #[serde(skip_serializing_if = "Option::is_none")]
6778    pub organizational_unit_id: Option<String>,
6779}
6780
6781/// <p>Information about the target S3 bucket for the Resource Data Sync.</p>
6782#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6783pub struct ResourceDataSyncS3Destination {
6784    /// <p>The ARN of an encryption key for a destination in Amazon S3. Must belong to the same Region as the destination S3 bucket.</p>
6785    #[serde(rename = "AWSKMSKeyARN")]
6786    #[serde(skip_serializing_if = "Option::is_none")]
6787    pub awskms_key_arn: Option<String>,
6788    /// <p>The name of the S3 bucket where the aggregated data is stored.</p>
6789    #[serde(rename = "BucketName")]
6790    pub bucket_name: String,
6791    /// <p>Enables destination data sharing. By default, this field is <code>null</code>.</p>
6792    #[serde(rename = "DestinationDataSharing")]
6793    #[serde(skip_serializing_if = "Option::is_none")]
6794    pub destination_data_sharing: Option<ResourceDataSyncDestinationDataSharing>,
6795    /// <p>An Amazon S3 prefix for the bucket.</p>
6796    #[serde(rename = "Prefix")]
6797    #[serde(skip_serializing_if = "Option::is_none")]
6798    pub prefix: Option<String>,
6799    /// <p>The AWS Region with the S3 bucket targeted by the Resource Data Sync.</p>
6800    #[serde(rename = "Region")]
6801    pub region: String,
6802    /// <p>A supported sync format. The following format is currently supported: JsonSerDe</p>
6803    #[serde(rename = "SyncFormat")]
6804    pub sync_format: String,
6805}
6806
6807/// <p>Information about the source of the data included in the resource data sync.</p>
6808#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6809#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6810pub struct ResourceDataSyncSource {
6811    /// <p>Information about the AwsOrganizationsSource resource data sync source. A sync source of this type can synchronize data from AWS Organizations.</p>
6812    #[serde(rename = "AwsOrganizationsSource")]
6813    #[serde(skip_serializing_if = "Option::is_none")]
6814    pub aws_organizations_source: Option<ResourceDataSyncAwsOrganizationsSource>,
6815    /// <p>Whether to automatically synchronize and aggregate data from new AWS Regions when those Regions come online.</p>
6816    #[serde(rename = "IncludeFutureRegions")]
6817    #[serde(skip_serializing_if = "Option::is_none")]
6818    pub include_future_regions: Option<bool>,
6819    /// <p>The <code>SyncSource</code> AWS Regions included in the resource data sync.</p>
6820    #[serde(rename = "SourceRegions")]
6821    pub source_regions: Vec<String>,
6822    /// <p>The type of data source for the resource data sync. <code>SourceType</code> is either <code>AwsOrganizations</code> (if an organization is present in AWS Organizations) or <code>singleAccountMultiRegions</code>.</p>
6823    #[serde(rename = "SourceType")]
6824    pub source_type: String,
6825}
6826
6827/// <p>The data type name for including resource data sync state. There are four sync states:</p> <p> <code>OrganizationNotExists</code> (Your organization doesn't exist)</p> <p> <code>NoPermissions</code> (The system can't locate the service-linked role. This role is automatically created when a user creates a resource data sync in Explorer.)</p> <p> <code>InvalidOrganizationalUnit</code> (You specified or selected an invalid unit in the resource data sync configuration.)</p> <p> <code>TrustedAccessDisabled</code> (You disabled Systems Manager access in the organization in AWS Organizations.)</p>
6828#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6829#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6830pub struct ResourceDataSyncSourceWithState {
6831    /// <p>The field name in <code>SyncSource</code> for the <code>ResourceDataSyncAwsOrganizationsSource</code> type.</p>
6832    #[serde(rename = "AwsOrganizationsSource")]
6833    #[serde(skip_serializing_if = "Option::is_none")]
6834    pub aws_organizations_source: Option<ResourceDataSyncAwsOrganizationsSource>,
6835    /// <p>Whether to automatically synchronize and aggregate data from new AWS Regions when those Regions come online.</p>
6836    #[serde(rename = "IncludeFutureRegions")]
6837    #[serde(skip_serializing_if = "Option::is_none")]
6838    pub include_future_regions: Option<bool>,
6839    /// <p>The <code>SyncSource</code> AWS Regions included in the resource data sync.</p>
6840    #[serde(rename = "SourceRegions")]
6841    #[serde(skip_serializing_if = "Option::is_none")]
6842    pub source_regions: Option<Vec<String>>,
6843    /// <p>The type of data source for the resource data sync. <code>SourceType</code> is either <code>AwsOrganizations</code> (if an organization is present in AWS Organizations) or <code>singleAccountMultiRegions</code>.</p>
6844    #[serde(rename = "SourceType")]
6845    #[serde(skip_serializing_if = "Option::is_none")]
6846    pub source_type: Option<String>,
6847    /// <p>The data type name for including resource data sync state. There are four sync states:</p> <p> <code>OrganizationNotExists</code>: Your organization doesn't exist.</p> <p> <code>NoPermissions</code>: The system can't locate the service-linked role. This role is automatically created when a user creates a resource data sync in Explorer.</p> <p> <code>InvalidOrganizationalUnit</code>: You specified or selected an invalid unit in the resource data sync configuration.</p> <p> <code>TrustedAccessDisabled</code>: You disabled Systems Manager access in the organization in AWS Organizations.</p>
6848    #[serde(rename = "State")]
6849    #[serde(skip_serializing_if = "Option::is_none")]
6850    pub state: Option<String>,
6851}
6852
6853/// <p>The inventory item result attribute.</p>
6854#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6855#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6856pub struct ResultAttribute {
6857    /// <p>Name of the inventory item type. Valid value: AWS:InstanceInformation. Default Value: AWS:InstanceInformation.</p>
6858    #[serde(rename = "TypeName")]
6859    pub type_name: String,
6860}
6861
6862#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6863#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6864pub struct ResumeSessionRequest {
6865    /// <p>The ID of the disconnected session to resume.</p>
6866    #[serde(rename = "SessionId")]
6867    pub session_id: String,
6868}
6869
6870#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6871#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6872pub struct ResumeSessionResponse {
6873    /// <p>The ID of the session.</p>
6874    #[serde(rename = "SessionId")]
6875    #[serde(skip_serializing_if = "Option::is_none")]
6876    pub session_id: Option<String>,
6877    /// <p>A URL back to SSM Agent on the instance that the Session Manager client uses to send commands and receive output from the instance. Format: <code>wss://ssmmessages.<b>region</b>.amazonaws.com/v1/data-channel/<b>session-id</b>?stream=(input|output)</code>.</p> <p> <b>region</b> represents the Region identifier for an AWS Region supported by AWS Systems Manager, such as <code>us-east-2</code> for the US East (Ohio) Region. For a list of supported <b>region</b> values, see the <b>Region</b> column in <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#ssm_region">Systems Manager service endpoints</a> in the <i>AWS General Reference</i>.</p> <p> <b>session-id</b> represents the ID of a Session Manager session, such as <code>1a2b3c4dEXAMPLE</code>.</p>
6878    #[serde(rename = "StreamUrl")]
6879    #[serde(skip_serializing_if = "Option::is_none")]
6880    pub stream_url: Option<String>,
6881    /// <p>An encrypted token value containing session and caller information. Used to authenticate the connection to the instance.</p>
6882    #[serde(rename = "TokenValue")]
6883    #[serde(skip_serializing_if = "Option::is_none")]
6884    pub token_value: Option<String>,
6885}
6886
6887/// <p>An S3 bucket where you want to store the results of this request.</p>
6888#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
6889pub struct S3OutputLocation {
6890    /// <p>The name of the S3 bucket.</p>
6891    #[serde(rename = "OutputS3BucketName")]
6892    #[serde(skip_serializing_if = "Option::is_none")]
6893    pub output_s3_bucket_name: Option<String>,
6894    /// <p>The S3 bucket subfolder.</p>
6895    #[serde(rename = "OutputS3KeyPrefix")]
6896    #[serde(skip_serializing_if = "Option::is_none")]
6897    pub output_s3_key_prefix: Option<String>,
6898    /// <p>(Deprecated) You can no longer specify this parameter. The system ignores it. Instead, Systems Manager automatically determines the Region of the S3 bucket.</p>
6899    #[serde(rename = "OutputS3Region")]
6900    #[serde(skip_serializing_if = "Option::is_none")]
6901    pub output_s3_region: Option<String>,
6902}
6903
6904/// <p>A URL for the S3 bucket where you want to store the results of this request.</p>
6905#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6906#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6907pub struct S3OutputUrl {
6908    /// <p>A URL for an S3 bucket where you want to store the results of this request.</p>
6909    #[serde(rename = "OutputUrl")]
6910    #[serde(skip_serializing_if = "Option::is_none")]
6911    pub output_url: Option<String>,
6912}
6913
6914/// <p>Information about a scheduled execution for a maintenance window.</p>
6915#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6916#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6917pub struct ScheduledWindowExecution {
6918    /// <p>The time, in ISO-8601 Extended format, that the maintenance window is scheduled to be run.</p>
6919    #[serde(rename = "ExecutionTime")]
6920    #[serde(skip_serializing_if = "Option::is_none")]
6921    pub execution_time: Option<String>,
6922    /// <p>The name of the maintenance window to be run.</p>
6923    #[serde(rename = "Name")]
6924    #[serde(skip_serializing_if = "Option::is_none")]
6925    pub name: Option<String>,
6926    /// <p>The ID of the maintenance window to be run.</p>
6927    #[serde(rename = "WindowId")]
6928    #[serde(skip_serializing_if = "Option::is_none")]
6929    pub window_id: Option<String>,
6930}
6931
6932#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6933#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6934pub struct SendAutomationSignalRequest {
6935    /// <p>The unique identifier for an existing Automation execution that you want to send the signal to.</p>
6936    #[serde(rename = "AutomationExecutionId")]
6937    pub automation_execution_id: String,
6938    /// <p>The data sent with the signal. The data schema depends on the type of signal used in the request.</p> <p>For <code>Approve</code> and <code>Reject</code> signal types, the payload is an optional comment that you can send with the signal type. For example:</p> <p> <code>Comment="Looks good"</code> </p> <p>For <code>StartStep</code> and <code>Resume</code> signal types, you must send the name of the Automation step to start or resume as the payload. For example:</p> <p> <code>StepName="step1"</code> </p> <p>For the <code>StopStep</code> signal type, you must send the step execution ID as the payload. For example:</p> <p> <code>StepExecutionId="97fff367-fc5a-4299-aed8-0123456789ab"</code> </p>
6939    #[serde(rename = "Payload")]
6940    #[serde(skip_serializing_if = "Option::is_none")]
6941    pub payload: Option<::std::collections::HashMap<String, Vec<String>>>,
6942    /// <p>The type of signal to send to an Automation execution. </p>
6943    #[serde(rename = "SignalType")]
6944    pub signal_type: String,
6945}
6946
6947#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
6948#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
6949pub struct SendAutomationSignalResult {}
6950
6951#[derive(Clone, Debug, Default, PartialEq, Serialize)]
6952#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
6953pub struct SendCommandRequest {
6954    /// <p>Enables Systems Manager to send Run Command output to Amazon CloudWatch Logs. </p>
6955    #[serde(rename = "CloudWatchOutputConfig")]
6956    #[serde(skip_serializing_if = "Option::is_none")]
6957    pub cloud_watch_output_config: Option<CloudWatchOutputConfig>,
6958    /// <p>User-specified information about the command, such as a brief description of what the command should do.</p>
6959    #[serde(rename = "Comment")]
6960    #[serde(skip_serializing_if = "Option::is_none")]
6961    pub comment: Option<String>,
6962    /// <p><p>The Sha256 or Sha1 hash created by the system when the document was created. </p> <note> <p>Sha1 hashes have been deprecated.</p> </note></p>
6963    #[serde(rename = "DocumentHash")]
6964    #[serde(skip_serializing_if = "Option::is_none")]
6965    pub document_hash: Option<String>,
6966    /// <p><p>Sha256 or Sha1.</p> <note> <p>Sha1 hashes have been deprecated.</p> </note></p>
6967    #[serde(rename = "DocumentHashType")]
6968    #[serde(skip_serializing_if = "Option::is_none")]
6969    pub document_hash_type: Option<String>,
6970    /// <p>Required. The name of the Systems Manager document to run. This can be a public document or a custom document.</p>
6971    #[serde(rename = "DocumentName")]
6972    pub document_name: String,
6973    /// <p>The SSM document version to use in the request. You can specify $DEFAULT, $LATEST, or a specific version number. If you run commands by using the AWS CLI, then you must escape the first two options by using a backslash. If you specify a version number, then you don't need to use the backslash. For example:</p> <p>--document-version "\$DEFAULT"</p> <p>--document-version "\$LATEST"</p> <p>--document-version "3"</p>
6974    #[serde(rename = "DocumentVersion")]
6975    #[serde(skip_serializing_if = "Option::is_none")]
6976    pub document_version: Option<String>,
6977    /// <p>The instance IDs where the command should run. You can specify a maximum of 50 IDs. If you prefer not to list individual instance IDs, you can instead send commands to a fleet of instances using the Targets parameter, which accepts EC2 tags. For more information about how to use targets, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-multiple.html">Using targets and rate controls to send commands to a fleet</a> in the <i>AWS Systems Manager User Guide</i>.</p>
6978    #[serde(rename = "InstanceIds")]
6979    #[serde(skip_serializing_if = "Option::is_none")]
6980    pub instance_ids: Option<Vec<String>>,
6981    /// <p>(Optional) The maximum number of instances that are allowed to run the command at the same time. You can specify a number such as 10 or a percentage such as 10%. The default value is 50. For more information about how to use MaxConcurrency, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-multiple.html#send-commands-velocity">Using concurrency controls</a> in the <i>AWS Systems Manager User Guide</i>.</p>
6982    #[serde(rename = "MaxConcurrency")]
6983    #[serde(skip_serializing_if = "Option::is_none")]
6984    pub max_concurrency: Option<String>,
6985    /// <p>The maximum number of errors allowed without the command failing. When the command fails one more time beyond the value of MaxErrors, the systems stops sending the command to additional targets. You can specify a number like 10 or a percentage like 10%. The default value is 0. For more information about how to use MaxErrors, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-multiple.html#send-commands-maxerrors">Using error controls</a> in the <i>AWS Systems Manager User Guide</i>.</p>
6986    #[serde(rename = "MaxErrors")]
6987    #[serde(skip_serializing_if = "Option::is_none")]
6988    pub max_errors: Option<String>,
6989    /// <p>Configurations for sending notifications.</p>
6990    #[serde(rename = "NotificationConfig")]
6991    #[serde(skip_serializing_if = "Option::is_none")]
6992    pub notification_config: Option<NotificationConfig>,
6993    /// <p>The name of the S3 bucket where command execution responses should be stored.</p>
6994    #[serde(rename = "OutputS3BucketName")]
6995    #[serde(skip_serializing_if = "Option::is_none")]
6996    pub output_s3_bucket_name: Option<String>,
6997    /// <p>The directory structure within the S3 bucket where the responses should be stored.</p>
6998    #[serde(rename = "OutputS3KeyPrefix")]
6999    #[serde(skip_serializing_if = "Option::is_none")]
7000    pub output_s3_key_prefix: Option<String>,
7001    /// <p>(Deprecated) You can no longer specify this parameter. The system ignores it. Instead, Systems Manager automatically determines the Region of the S3 bucket.</p>
7002    #[serde(rename = "OutputS3Region")]
7003    #[serde(skip_serializing_if = "Option::is_none")]
7004    pub output_s3_region: Option<String>,
7005    /// <p>The required and optional parameters specified in the document being run.</p>
7006    #[serde(rename = "Parameters")]
7007    #[serde(skip_serializing_if = "Option::is_none")]
7008    pub parameters: Option<::std::collections::HashMap<String, Vec<String>>>,
7009    /// <p>The ARN of the IAM service role to use to publish Amazon Simple Notification Service (Amazon SNS) notifications for Run Command commands.</p>
7010    #[serde(rename = "ServiceRoleArn")]
7011    #[serde(skip_serializing_if = "Option::is_none")]
7012    pub service_role_arn: Option<String>,
7013    /// <p>(Optional) An array of search criteria that targets instances using a Key,Value combination that you specify. Targets is required if you don't provide one or more instance IDs in the call. For more information about how to use targets, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-multiple.html">Sending commands to a fleet</a> in the <i>AWS Systems Manager User Guide</i>.</p>
7014    #[serde(rename = "Targets")]
7015    #[serde(skip_serializing_if = "Option::is_none")]
7016    pub targets: Option<Vec<Target>>,
7017    /// <p>If this time is reached and the command has not already started running, it will not run.</p>
7018    #[serde(rename = "TimeoutSeconds")]
7019    #[serde(skip_serializing_if = "Option::is_none")]
7020    pub timeout_seconds: Option<i64>,
7021}
7022
7023#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7024#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7025pub struct SendCommandResult {
7026    /// <p>The request as it was received by Systems Manager. Also provides the command ID which can be used future references to this request.</p>
7027    #[serde(rename = "Command")]
7028    #[serde(skip_serializing_if = "Option::is_none")]
7029    pub command: Option<Command>,
7030}
7031
7032/// <p>The service setting data structure.</p> <p> <code>ServiceSetting</code> is an account-level setting for an AWS service. This setting defines how a user interacts with or uses a service or a feature of a service. For example, if an AWS service charges money to the account based on feature or service usage, then the AWS service team might create a default setting of "false". This means the user can't use this feature unless they change the setting to "true" and intentionally opt in for a paid feature.</p> <p>Services map a <code>SettingId</code> object to a setting value. AWS services teams define the default value for a <code>SettingId</code>. You can't create a new <code>SettingId</code>, but you can overwrite the default value if you have the <code>ssm:UpdateServiceSetting</code> permission for the setting. Use the <a>UpdateServiceSetting</a> API action to change the default setting. Or, use the <a>ResetServiceSetting</a> to change the value back to the original value defined by the AWS service team.</p>
7033#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7034#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7035pub struct ServiceSetting {
7036    /// <p>The ARN of the service setting.</p>
7037    #[serde(rename = "ARN")]
7038    #[serde(skip_serializing_if = "Option::is_none")]
7039    pub arn: Option<String>,
7040    /// <p>The last time the service setting was modified.</p>
7041    #[serde(rename = "LastModifiedDate")]
7042    #[serde(skip_serializing_if = "Option::is_none")]
7043    pub last_modified_date: Option<f64>,
7044    /// <p>The ARN of the last modified user. This field is populated only if the setting value was overwritten.</p>
7045    #[serde(rename = "LastModifiedUser")]
7046    #[serde(skip_serializing_if = "Option::is_none")]
7047    pub last_modified_user: Option<String>,
7048    /// <p>The ID of the service setting.</p>
7049    #[serde(rename = "SettingId")]
7050    #[serde(skip_serializing_if = "Option::is_none")]
7051    pub setting_id: Option<String>,
7052    /// <p>The value of the service setting.</p>
7053    #[serde(rename = "SettingValue")]
7054    #[serde(skip_serializing_if = "Option::is_none")]
7055    pub setting_value: Option<String>,
7056    /// <p><p>The status of the service setting. The value can be Default, Customized or PendingUpdate.</p> <ul> <li> <p>Default: The current setting uses a default value provisioned by the AWS service team.</p> </li> <li> <p>Customized: The current setting use a custom value specified by the customer.</p> </li> <li> <p>PendingUpdate: The current setting uses a default or custom value, but a setting change request is pending approval.</p> </li> </ul></p>
7057    #[serde(rename = "Status")]
7058    #[serde(skip_serializing_if = "Option::is_none")]
7059    pub status: Option<String>,
7060}
7061
7062/// <p>Information about a Session Manager connection to an instance.</p>
7063#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7064#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7065pub struct Session {
7066    /// <p>Reserved for future use.</p>
7067    #[serde(rename = "Details")]
7068    #[serde(skip_serializing_if = "Option::is_none")]
7069    pub details: Option<String>,
7070    /// <p>The name of the Session Manager SSM document used to define the parameters and plugin settings for the session. For example, <code>SSM-SessionManagerRunShell</code>.</p>
7071    #[serde(rename = "DocumentName")]
7072    #[serde(skip_serializing_if = "Option::is_none")]
7073    pub document_name: Option<String>,
7074    /// <p>The date and time, in ISO-8601 Extended format, when the session was terminated.</p>
7075    #[serde(rename = "EndDate")]
7076    #[serde(skip_serializing_if = "Option::is_none")]
7077    pub end_date: Option<f64>,
7078    /// <p>Reserved for future use.</p>
7079    #[serde(rename = "OutputUrl")]
7080    #[serde(skip_serializing_if = "Option::is_none")]
7081    pub output_url: Option<SessionManagerOutputUrl>,
7082    /// <p>The ID of the AWS user account that started the session.</p>
7083    #[serde(rename = "Owner")]
7084    #[serde(skip_serializing_if = "Option::is_none")]
7085    pub owner: Option<String>,
7086    /// <p>The ID of the session.</p>
7087    #[serde(rename = "SessionId")]
7088    #[serde(skip_serializing_if = "Option::is_none")]
7089    pub session_id: Option<String>,
7090    /// <p>The date and time, in ISO-8601 Extended format, when the session began.</p>
7091    #[serde(rename = "StartDate")]
7092    #[serde(skip_serializing_if = "Option::is_none")]
7093    pub start_date: Option<f64>,
7094    /// <p>The status of the session. For example, "Connected" or "Terminated".</p>
7095    #[serde(rename = "Status")]
7096    #[serde(skip_serializing_if = "Option::is_none")]
7097    pub status: Option<String>,
7098    /// <p>The instance that the Session Manager session connected to.</p>
7099    #[serde(rename = "Target")]
7100    #[serde(skip_serializing_if = "Option::is_none")]
7101    pub target: Option<String>,
7102}
7103
7104/// <p>Describes a filter for Session Manager information.</p>
7105#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7106#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7107pub struct SessionFilter {
7108    /// <p>The name of the filter.</p>
7109    #[serde(rename = "key")]
7110    pub key: String,
7111    /// <p><p>The filter value. Valid values for each filter key are as follows:</p> <ul> <li> <p>InvokedAfter: Specify a timestamp to limit your results. For example, specify 2018-08-29T00:00:00Z to see sessions that started August 29, 2018, and later.</p> </li> <li> <p>InvokedBefore: Specify a timestamp to limit your results. For example, specify 2018-08-29T00:00:00Z to see sessions that started before August 29, 2018.</p> </li> <li> <p>Target: Specify an instance to which session connections have been made.</p> </li> <li> <p>Owner: Specify an AWS user account to see a list of sessions started by that user.</p> </li> <li> <p>Status: Specify a valid session status to see a list of all sessions with that status. Status values you can specify include:</p> <ul> <li> <p>Connected</p> </li> <li> <p>Connecting</p> </li> <li> <p>Disconnected</p> </li> <li> <p>Terminated</p> </li> <li> <p>Terminating</p> </li> <li> <p>Failed</p> </li> </ul> </li> </ul></p>
7112    #[serde(rename = "value")]
7113    pub value: String,
7114}
7115
7116/// <p>Reserved for future use.</p>
7117#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7118#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7119pub struct SessionManagerOutputUrl {
7120    /// <p>Reserved for future use.</p>
7121    #[serde(rename = "CloudWatchOutputUrl")]
7122    #[serde(skip_serializing_if = "Option::is_none")]
7123    pub cloud_watch_output_url: Option<String>,
7124    /// <p>Reserved for future use.</p>
7125    #[serde(rename = "S3OutputUrl")]
7126    #[serde(skip_serializing_if = "Option::is_none")]
7127    pub s3_output_url: Option<String>,
7128}
7129
7130/// <p>The number of managed instances found for each patch severity level defined in the request filter.</p>
7131#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7132#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7133pub struct SeveritySummary {
7134    /// <p>The total number of resources or compliance items that have a severity level of critical. Critical severity is determined by the organization that published the compliance items.</p>
7135    #[serde(rename = "CriticalCount")]
7136    #[serde(skip_serializing_if = "Option::is_none")]
7137    pub critical_count: Option<i64>,
7138    /// <p>The total number of resources or compliance items that have a severity level of high. High severity is determined by the organization that published the compliance items.</p>
7139    #[serde(rename = "HighCount")]
7140    #[serde(skip_serializing_if = "Option::is_none")]
7141    pub high_count: Option<i64>,
7142    /// <p>The total number of resources or compliance items that have a severity level of informational. Informational severity is determined by the organization that published the compliance items.</p>
7143    #[serde(rename = "InformationalCount")]
7144    #[serde(skip_serializing_if = "Option::is_none")]
7145    pub informational_count: Option<i64>,
7146    /// <p>The total number of resources or compliance items that have a severity level of low. Low severity is determined by the organization that published the compliance items.</p>
7147    #[serde(rename = "LowCount")]
7148    #[serde(skip_serializing_if = "Option::is_none")]
7149    pub low_count: Option<i64>,
7150    /// <p>The total number of resources or compliance items that have a severity level of medium. Medium severity is determined by the organization that published the compliance items.</p>
7151    #[serde(rename = "MediumCount")]
7152    #[serde(skip_serializing_if = "Option::is_none")]
7153    pub medium_count: Option<i64>,
7154    /// <p>The total number of resources or compliance items that have a severity level of unspecified. Unspecified severity is determined by the organization that published the compliance items.</p>
7155    #[serde(rename = "UnspecifiedCount")]
7156    #[serde(skip_serializing_if = "Option::is_none")]
7157    pub unspecified_count: Option<i64>,
7158}
7159
7160#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7161#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7162pub struct StartAssociationsOnceRequest {
7163    /// <p>The association IDs that you want to run immediately and only one time.</p>
7164    #[serde(rename = "AssociationIds")]
7165    pub association_ids: Vec<String>,
7166}
7167
7168#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7169#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7170pub struct StartAssociationsOnceResult {}
7171
7172#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7173#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7174pub struct StartAutomationExecutionRequest {
7175    /// <p>User-provided idempotency token. The token must be unique, is case insensitive, enforces the UUID format, and can't be reused.</p>
7176    #[serde(rename = "ClientToken")]
7177    #[serde(skip_serializing_if = "Option::is_none")]
7178    pub client_token: Option<String>,
7179    /// <p>The name of the Automation document to use for this execution.</p>
7180    #[serde(rename = "DocumentName")]
7181    pub document_name: String,
7182    /// <p>The version of the Automation document to use for this execution.</p>
7183    #[serde(rename = "DocumentVersion")]
7184    #[serde(skip_serializing_if = "Option::is_none")]
7185    pub document_version: Option<String>,
7186    /// <p>The maximum number of targets allowed to run this task in parallel. You can specify a number, such as 10, or a percentage, such as 10%. The default value is 10.</p>
7187    #[serde(rename = "MaxConcurrency")]
7188    #[serde(skip_serializing_if = "Option::is_none")]
7189    pub max_concurrency: Option<String>,
7190    /// <p>The number of errors that are allowed before the system stops running the automation on additional targets. You can specify either an absolute number of errors, for example 10, or a percentage of the target set, for example 10%. If you specify 3, for example, the system stops running the automation when the fourth error is received. If you specify 0, then the system stops running the automation on additional targets after the first error result is returned. If you run an automation on 50 resources and set max-errors to 10%, then the system stops running the automation on additional targets when the sixth error is received.</p> <p>Executions that are already running an automation when max-errors is reached are allowed to complete, but some of these executions may fail as well. If you need to ensure that there won't be more than max-errors failed executions, set max-concurrency to 1 so the executions proceed one at a time.</p>
7191    #[serde(rename = "MaxErrors")]
7192    #[serde(skip_serializing_if = "Option::is_none")]
7193    pub max_errors: Option<String>,
7194    /// <p>The execution mode of the automation. Valid modes include the following: Auto and Interactive. The default mode is Auto.</p>
7195    #[serde(rename = "Mode")]
7196    #[serde(skip_serializing_if = "Option::is_none")]
7197    pub mode: Option<String>,
7198    /// <p>A key-value map of execution parameters, which match the declared parameters in the Automation document.</p>
7199    #[serde(rename = "Parameters")]
7200    #[serde(skip_serializing_if = "Option::is_none")]
7201    pub parameters: Option<::std::collections::HashMap<String, Vec<String>>>,
7202    /// <p><p>Optional metadata that you assign to a resource. You can specify a maximum of five tags for an automation. Tags enable you to categorize a resource in different ways, such as by purpose, owner, or environment. For example, you might want to tag an automation to identify an environment or operating system. In this case, you could specify the following key name/value pairs:</p> <ul> <li> <p> <code>Key=environment,Value=test</code> </p> </li> <li> <p> <code>Key=OS,Value=Windows</code> </p> </li> </ul> <note> <p>To add tags to an existing patch baseline, use the <a>AddTagsToResource</a> action.</p> </note></p>
7203    #[serde(rename = "Tags")]
7204    #[serde(skip_serializing_if = "Option::is_none")]
7205    pub tags: Option<Vec<Tag>>,
7206    /// <p>A location is a combination of AWS Regions and/or AWS accounts where you want to run the Automation. Use this action to start an Automation in multiple Regions and multiple accounts. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-automation-multiple-accounts-and-regions.html">Running Automation workflows in multiple AWS Regions and accounts</a> in the <i>AWS Systems Manager User Guide</i>. </p>
7207    #[serde(rename = "TargetLocations")]
7208    #[serde(skip_serializing_if = "Option::is_none")]
7209    pub target_locations: Option<Vec<TargetLocation>>,
7210    /// <p>A key-value mapping of document parameters to target resources. Both Targets and TargetMaps cannot be specified together.</p>
7211    #[serde(rename = "TargetMaps")]
7212    #[serde(skip_serializing_if = "Option::is_none")]
7213    pub target_maps: Option<Vec<::std::collections::HashMap<String, Vec<String>>>>,
7214    /// <p>The name of the parameter used as the target resource for the rate-controlled execution. Required if you specify targets.</p>
7215    #[serde(rename = "TargetParameterName")]
7216    #[serde(skip_serializing_if = "Option::is_none")]
7217    pub target_parameter_name: Option<String>,
7218    /// <p>A key-value mapping to target resources. Required if you specify TargetParameterName.</p>
7219    #[serde(rename = "Targets")]
7220    #[serde(skip_serializing_if = "Option::is_none")]
7221    pub targets: Option<Vec<Target>>,
7222}
7223
7224#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7225#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7226pub struct StartAutomationExecutionResult {
7227    /// <p>The unique ID of a newly scheduled automation execution.</p>
7228    #[serde(rename = "AutomationExecutionId")]
7229    #[serde(skip_serializing_if = "Option::is_none")]
7230    pub automation_execution_id: Option<String>,
7231}
7232
7233#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7234#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7235pub struct StartSessionRequest {
7236    /// <p>The name of the SSM document to define the parameters and plugin settings for the session. For example, <code>SSM-SessionManagerRunShell</code>. You can call the <a>GetDocument</a> API to verify the document exists before attempting to start a session. If no document name is provided, a shell to the instance is launched by default.</p>
7237    #[serde(rename = "DocumentName")]
7238    #[serde(skip_serializing_if = "Option::is_none")]
7239    pub document_name: Option<String>,
7240    /// <p>Reserved for future use.</p>
7241    #[serde(rename = "Parameters")]
7242    #[serde(skip_serializing_if = "Option::is_none")]
7243    pub parameters: Option<::std::collections::HashMap<String, Vec<String>>>,
7244    /// <p>The instance to connect to for the session.</p>
7245    #[serde(rename = "Target")]
7246    pub target: String,
7247}
7248
7249#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7250#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7251pub struct StartSessionResponse {
7252    /// <p>The ID of the session.</p>
7253    #[serde(rename = "SessionId")]
7254    #[serde(skip_serializing_if = "Option::is_none")]
7255    pub session_id: Option<String>,
7256    /// <p>A URL back to SSM Agent on the instance that the Session Manager client uses to send commands and receive output from the instance. Format: <code>wss://ssmmessages.<b>region</b>.amazonaws.com/v1/data-channel/<b>session-id</b>?stream=(input|output)</code> </p> <p> <b>region</b> represents the Region identifier for an AWS Region supported by AWS Systems Manager, such as <code>us-east-2</code> for the US East (Ohio) Region. For a list of supported <b>region</b> values, see the <b>Region</b> column in <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#ssm_region">Systems Manager service endpoints</a> in the <i>AWS General Reference</i>.</p> <p> <b>session-id</b> represents the ID of a Session Manager session, such as <code>1a2b3c4dEXAMPLE</code>.</p>
7257    #[serde(rename = "StreamUrl")]
7258    #[serde(skip_serializing_if = "Option::is_none")]
7259    pub stream_url: Option<String>,
7260    /// <p>An encrypted token value containing session and caller information. Used to authenticate the connection to the instance.</p>
7261    #[serde(rename = "TokenValue")]
7262    #[serde(skip_serializing_if = "Option::is_none")]
7263    pub token_value: Option<String>,
7264}
7265
7266/// <p>Detailed information about an the execution state of an Automation step.</p>
7267#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7268#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7269pub struct StepExecution {
7270    /// <p>The action this step performs. The action determines the behavior of the step.</p>
7271    #[serde(rename = "Action")]
7272    #[serde(skip_serializing_if = "Option::is_none")]
7273    pub action: Option<String>,
7274    /// <p>If a step has finished execution, this contains the time the execution ended. If the step has not yet concluded, this field is not populated.</p>
7275    #[serde(rename = "ExecutionEndTime")]
7276    #[serde(skip_serializing_if = "Option::is_none")]
7277    pub execution_end_time: Option<f64>,
7278    /// <p>If a step has begun execution, this contains the time the step started. If the step is in Pending status, this field is not populated.</p>
7279    #[serde(rename = "ExecutionStartTime")]
7280    #[serde(skip_serializing_if = "Option::is_none")]
7281    pub execution_start_time: Option<f64>,
7282    /// <p>Information about the Automation failure.</p>
7283    #[serde(rename = "FailureDetails")]
7284    #[serde(skip_serializing_if = "Option::is_none")]
7285    pub failure_details: Option<FailureDetails>,
7286    /// <p>If a step failed, this message explains why the execution failed.</p>
7287    #[serde(rename = "FailureMessage")]
7288    #[serde(skip_serializing_if = "Option::is_none")]
7289    pub failure_message: Option<String>,
7290    /// <p>Fully-resolved values passed into the step before execution.</p>
7291    #[serde(rename = "Inputs")]
7292    #[serde(skip_serializing_if = "Option::is_none")]
7293    pub inputs: Option<::std::collections::HashMap<String, String>>,
7294    /// <p>The flag which can be used to help decide whether the failure of current step leads to the Automation failure.</p>
7295    #[serde(rename = "IsCritical")]
7296    #[serde(skip_serializing_if = "Option::is_none")]
7297    pub is_critical: Option<bool>,
7298    /// <p>The flag which can be used to end automation no matter whether the step succeeds or fails.</p>
7299    #[serde(rename = "IsEnd")]
7300    #[serde(skip_serializing_if = "Option::is_none")]
7301    pub is_end: Option<bool>,
7302    /// <p>The maximum number of tries to run the action of the step. The default value is 1.</p>
7303    #[serde(rename = "MaxAttempts")]
7304    #[serde(skip_serializing_if = "Option::is_none")]
7305    pub max_attempts: Option<i64>,
7306    /// <p>The next step after the step succeeds.</p>
7307    #[serde(rename = "NextStep")]
7308    #[serde(skip_serializing_if = "Option::is_none")]
7309    pub next_step: Option<String>,
7310    /// <p>The action to take if the step fails. The default value is Abort.</p>
7311    #[serde(rename = "OnFailure")]
7312    #[serde(skip_serializing_if = "Option::is_none")]
7313    pub on_failure: Option<String>,
7314    /// <p>Returned values from the execution of the step.</p>
7315    #[serde(rename = "Outputs")]
7316    #[serde(skip_serializing_if = "Option::is_none")]
7317    pub outputs: Option<::std::collections::HashMap<String, Vec<String>>>,
7318    /// <p>A user-specified list of parameters to override when running a step.</p>
7319    #[serde(rename = "OverriddenParameters")]
7320    #[serde(skip_serializing_if = "Option::is_none")]
7321    pub overridden_parameters: Option<::std::collections::HashMap<String, Vec<String>>>,
7322    /// <p>A message associated with the response code for an execution.</p>
7323    #[serde(rename = "Response")]
7324    #[serde(skip_serializing_if = "Option::is_none")]
7325    pub response: Option<String>,
7326    /// <p>The response code returned by the execution of the step.</p>
7327    #[serde(rename = "ResponseCode")]
7328    #[serde(skip_serializing_if = "Option::is_none")]
7329    pub response_code: Option<String>,
7330    /// <p>The unique ID of a step execution.</p>
7331    #[serde(rename = "StepExecutionId")]
7332    #[serde(skip_serializing_if = "Option::is_none")]
7333    pub step_execution_id: Option<String>,
7334    /// <p>The name of this execution step.</p>
7335    #[serde(rename = "StepName")]
7336    #[serde(skip_serializing_if = "Option::is_none")]
7337    pub step_name: Option<String>,
7338    /// <p>The execution status for this step.</p>
7339    #[serde(rename = "StepStatus")]
7340    #[serde(skip_serializing_if = "Option::is_none")]
7341    pub step_status: Option<String>,
7342    /// <p>The combination of AWS Regions and accounts targeted by the current Automation execution.</p>
7343    #[serde(rename = "TargetLocation")]
7344    #[serde(skip_serializing_if = "Option::is_none")]
7345    pub target_location: Option<TargetLocation>,
7346    /// <p>The targets for the step execution.</p>
7347    #[serde(rename = "Targets")]
7348    #[serde(skip_serializing_if = "Option::is_none")]
7349    pub targets: Option<Vec<Target>>,
7350    /// <p>The timeout seconds of the step.</p>
7351    #[serde(rename = "TimeoutSeconds")]
7352    #[serde(skip_serializing_if = "Option::is_none")]
7353    pub timeout_seconds: Option<i64>,
7354    /// <p>Strategies used when step fails, we support Continue and Abort. Abort will fail the automation when the step fails. Continue will ignore the failure of current step and allow automation to run the next step. With conditional branching, we add step:stepName to support the automation to go to another specific step.</p>
7355    #[serde(rename = "ValidNextSteps")]
7356    #[serde(skip_serializing_if = "Option::is_none")]
7357    pub valid_next_steps: Option<Vec<String>>,
7358}
7359
7360/// <p>A filter to limit the amount of step execution information returned by the call.</p>
7361#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7362#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7363pub struct StepExecutionFilter {
7364    /// <p>One or more keys to limit the results. Valid filter keys include the following: StepName, Action, StepExecutionId, StepExecutionStatus, StartTimeBefore, StartTimeAfter.</p>
7365    #[serde(rename = "Key")]
7366    pub key: String,
7367    /// <p>The values of the filter key.</p>
7368    #[serde(rename = "Values")]
7369    pub values: Vec<String>,
7370}
7371
7372#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7373#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7374pub struct StopAutomationExecutionRequest {
7375    /// <p>The execution ID of the Automation to stop.</p>
7376    #[serde(rename = "AutomationExecutionId")]
7377    pub automation_execution_id: String,
7378    /// <p>The stop request type. Valid types include the following: Cancel and Complete. The default type is Cancel.</p>
7379    #[serde(rename = "Type")]
7380    #[serde(skip_serializing_if = "Option::is_none")]
7381    pub type_: Option<String>,
7382}
7383
7384#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7385#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7386pub struct StopAutomationExecutionResult {}
7387
7388/// <p>Metadata that you assign to your AWS resources. Tags enable you to categorize your resources in different ways, for example, by purpose, owner, or environment. In Systems Manager, you can apply tags to documents, managed instances, maintenance windows, Parameter Store parameters, and patch baselines.</p>
7389#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
7390pub struct Tag {
7391    /// <p>The name of the tag.</p>
7392    #[serde(rename = "Key")]
7393    pub key: String,
7394    /// <p>The value of the tag.</p>
7395    #[serde(rename = "Value")]
7396    pub value: String,
7397}
7398
7399/// <p>An array of search criteria that targets instances using a Key,Value combination that you specify. </p> <p>Supported formats include the following.</p> <ul> <li> <p> <code>Key=InstanceIds,Values=<i>instance-id-1</i>,<i>instance-id-2</i>,<i>instance-id-3</i> </code> </p> </li> <li> <p> <code>Key=tag:<i>my-tag-key</i>,Values=<i>my-tag-value-1</i>,<i>my-tag-value-2</i> </code> </p> </li> <li> <p> <code>Key=tag-key,Values=<i>my-tag-key-1</i>,<i>my-tag-key-2</i> </code> </p> </li> <li> <p>(Maintenance window targets only) <code>Key=resource-groups:Name,Values=<i>resource-group-name</i> </code> </p> </li> <li> <p>(Maintenance window targets only) <code>Key=resource-groups:ResourceTypeFilters,Values=<i>resource-type-1</i>,<i>resource-type-2</i> </code> </p> </li> </ul> <p>For example:</p> <ul> <li> <p> <code>Key=InstanceIds,Values=i-02573cafcfEXAMPLE,i-0471e04240EXAMPLE,i-07782c72faEXAMPLE</code> </p> </li> <li> <p> <code>Key=tag:CostCenter,Values=CostCenter1,CostCenter2,CostCenter3</code> </p> </li> <li> <p> <code>Key=tag-key,Values=Name,Instance-Type,CostCenter</code> </p> </li> <li> <p>(Maintenance window targets only) <code>Key=resource-groups:Name,Values=ProductionResourceGroup</code> </p> <p>This example demonstrates how to target all resources in the resource group <b>ProductionResourceGroup</b> in your maintenance window.</p> </li> <li> <p>(Maintenance window targets only) <code>Key=resource-groups:ResourceTypeFilters,Values=<i>AWS::EC2::INSTANCE</i>,<i>AWS::EC2::VPC</i> </code> </p> <p>This example demonstrates how to target only EC2 instances and VPCs in your maintenance window.</p> </li> <li> <p>(State Manager association targets only) <code>Key=InstanceIds,Values=<i>*</i> </code> </p> <p>This example demonstrates how to target all managed instances in the AWS Region where the association was created.</p> </li> </ul> <p>For information about how to send commands that target instances using <code>Key,Value</code> parameters, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-multiple.html#send-commands-targeting">Targeting multiple instances</a> in the <i>AWS Systems Manager User Guide</i>.</p>
7400#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
7401pub struct Target {
7402    /// <p>User-defined criteria for sending commands that target instances that meet the criteria.</p>
7403    #[serde(rename = "Key")]
7404    #[serde(skip_serializing_if = "Option::is_none")]
7405    pub key: Option<String>,
7406    /// <p>User-defined criteria that maps to <code>Key</code>. For example, if you specified <code>tag:ServerRole</code>, you could specify <code>value:WebServer</code> to run a command on instances that include EC2 tags of <code>ServerRole,WebServer</code>. </p>
7407    #[serde(rename = "Values")]
7408    #[serde(skip_serializing_if = "Option::is_none")]
7409    pub values: Option<Vec<String>>,
7410}
7411
7412/// <p>The combination of AWS Regions and accounts targeted by the current Automation execution.</p>
7413#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
7414pub struct TargetLocation {
7415    /// <p>The AWS accounts targeted by the current Automation execution.</p>
7416    #[serde(rename = "Accounts")]
7417    #[serde(skip_serializing_if = "Option::is_none")]
7418    pub accounts: Option<Vec<String>>,
7419    /// <p>The Automation execution role used by the currently running Automation.</p>
7420    #[serde(rename = "ExecutionRoleName")]
7421    #[serde(skip_serializing_if = "Option::is_none")]
7422    pub execution_role_name: Option<String>,
7423    /// <p>The AWS Regions targeted by the current Automation execution.</p>
7424    #[serde(rename = "Regions")]
7425    #[serde(skip_serializing_if = "Option::is_none")]
7426    pub regions: Option<Vec<String>>,
7427    /// <p>The maximum number of AWS accounts and AWS regions allowed to run the Automation concurrently </p>
7428    #[serde(rename = "TargetLocationMaxConcurrency")]
7429    #[serde(skip_serializing_if = "Option::is_none")]
7430    pub target_location_max_concurrency: Option<String>,
7431    /// <p>The maximum number of errors allowed before the system stops queueing additional Automation executions for the currently running Automation. </p>
7432    #[serde(rename = "TargetLocationMaxErrors")]
7433    #[serde(skip_serializing_if = "Option::is_none")]
7434    pub target_location_max_errors: Option<String>,
7435}
7436
7437#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7438#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7439pub struct TerminateSessionRequest {
7440    /// <p>The ID of the session to terminate.</p>
7441    #[serde(rename = "SessionId")]
7442    pub session_id: String,
7443}
7444
7445#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7446#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7447pub struct TerminateSessionResponse {
7448    /// <p>The ID of the session that has been terminated.</p>
7449    #[serde(rename = "SessionId")]
7450    #[serde(skip_serializing_if = "Option::is_none")]
7451    pub session_id: Option<String>,
7452}
7453
7454#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7455#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7456pub struct UpdateAssociationRequest {
7457    /// <p>By default, when you update an association, the system runs it immediately after it is updated and then according to the schedule you specified. Specify this option if you don't want an association to run immediately after you update it.</p> <p>Also, if you specified this option when you created the association, you can reset it. To do so, specify the <code>no-apply-only-at-cron-interval</code> parameter when you update the association from the command line. This parameter forces the association to run immediately after updating it and according to the interval specified.</p>
7458    #[serde(rename = "ApplyOnlyAtCronInterval")]
7459    #[serde(skip_serializing_if = "Option::is_none")]
7460    pub apply_only_at_cron_interval: Option<bool>,
7461    /// <p>The ID of the association you want to update. </p>
7462    #[serde(rename = "AssociationId")]
7463    pub association_id: String,
7464    /// <p>The name of the association that you want to update.</p>
7465    #[serde(rename = "AssociationName")]
7466    #[serde(skip_serializing_if = "Option::is_none")]
7467    pub association_name: Option<String>,
7468    /// <p>This parameter is provided for concurrency control purposes. You must specify the latest association version in the service. If you want to ensure that this request succeeds, either specify <code>$LATEST</code>, or omit this parameter.</p>
7469    #[serde(rename = "AssociationVersion")]
7470    #[serde(skip_serializing_if = "Option::is_none")]
7471    pub association_version: Option<String>,
7472    /// <p>Specify the target for the association. This target is required for associations that use an Automation document and target resources by using rate controls.</p>
7473    #[serde(rename = "AutomationTargetParameterName")]
7474    #[serde(skip_serializing_if = "Option::is_none")]
7475    pub automation_target_parameter_name: Option<String>,
7476    /// <p>The severity level to assign to the association.</p>
7477    #[serde(rename = "ComplianceSeverity")]
7478    #[serde(skip_serializing_if = "Option::is_none")]
7479    pub compliance_severity: Option<String>,
7480    /// <p>The document version you want update for the association. </p>
7481    #[serde(rename = "DocumentVersion")]
7482    #[serde(skip_serializing_if = "Option::is_none")]
7483    pub document_version: Option<String>,
7484    /// <p>The maximum number of targets allowed to run the association at the same time. You can specify a number, for example 10, or a percentage of the target set, for example 10%. The default value is 100%, which means all targets run the association at the same time.</p> <p>If a new instance starts and attempts to run an association while Systems Manager is running MaxConcurrency associations, the association is allowed to run. During the next association interval, the new instance will process its association within the limit specified for MaxConcurrency.</p>
7485    #[serde(rename = "MaxConcurrency")]
7486    #[serde(skip_serializing_if = "Option::is_none")]
7487    pub max_concurrency: Option<String>,
7488    /// <p>The number of errors that are allowed before the system stops sending requests to run the association on additional targets. You can specify either an absolute number of errors, for example 10, or a percentage of the target set, for example 10%. If you specify 3, for example, the system stops sending requests when the fourth error is received. If you specify 0, then the system stops sending requests after the first error is returned. If you run an association on 50 instances and set MaxError to 10%, then the system stops sending the request when the sixth error is received.</p> <p>Executions that are already running an association when MaxErrors is reached are allowed to complete, but some of these executions may fail as well. If you need to ensure that there won't be more than max-errors failed executions, set MaxConcurrency to 1 so that executions proceed one at a time.</p>
7489    #[serde(rename = "MaxErrors")]
7490    #[serde(skip_serializing_if = "Option::is_none")]
7491    pub max_errors: Option<String>,
7492    /// <p>The name of the SSM document that contains the configuration information for the instance. You can specify Command or Automation documents.</p> <p>You can specify AWS-predefined documents, documents you created, or a document that is shared with you from another account.</p> <p>For SSM documents that are shared with you from other AWS accounts, you must specify the complete SSM document ARN, in the following format:</p> <p> <code>arn:aws:ssm:<i>region</i>:<i>account-id</i>:document/<i>document-name</i> </code> </p> <p>For example:</p> <p> <code>arn:aws:ssm:us-east-2:12345678912:document/My-Shared-Document</code> </p> <p>For AWS-predefined documents and SSM documents you created in your account, you only need to specify the document name. For example, <code>AWS-ApplyPatchBaseline</code> or <code>My-Document</code>.</p>
7493    #[serde(rename = "Name")]
7494    #[serde(skip_serializing_if = "Option::is_none")]
7495    pub name: Option<String>,
7496    /// <p>An S3 bucket where you want to store the results of this request.</p>
7497    #[serde(rename = "OutputLocation")]
7498    #[serde(skip_serializing_if = "Option::is_none")]
7499    pub output_location: Option<InstanceAssociationOutputLocation>,
7500    /// <p>The parameters you want to update for the association. If you create a parameter using Parameter Store, you can reference the parameter using {{ssm:parameter-name}}</p>
7501    #[serde(rename = "Parameters")]
7502    #[serde(skip_serializing_if = "Option::is_none")]
7503    pub parameters: Option<::std::collections::HashMap<String, Vec<String>>>,
7504    /// <p>The cron expression used to schedule the association that you want to update.</p>
7505    #[serde(rename = "ScheduleExpression")]
7506    #[serde(skip_serializing_if = "Option::is_none")]
7507    pub schedule_expression: Option<String>,
7508    /// <p>The mode for generating association compliance. You can specify <code>AUTO</code> or <code>MANUAL</code>. In <code>AUTO</code> mode, the system uses the status of the association execution to determine the compliance status. If the association execution runs successfully, then the association is <code>COMPLIANT</code>. If the association execution doesn't run successfully, the association is <code>NON-COMPLIANT</code>.</p> <p>In <code>MANUAL</code> mode, you must specify the <code>AssociationId</code> as a parameter for the <a>PutComplianceItems</a> API action. In this case, compliance data is not managed by State Manager. It is managed by your direct call to the <a>PutComplianceItems</a> API action.</p> <p>By default, all associations use <code>AUTO</code> mode.</p>
7509    #[serde(rename = "SyncCompliance")]
7510    #[serde(skip_serializing_if = "Option::is_none")]
7511    pub sync_compliance: Option<String>,
7512    /// <p>The targets of the association.</p>
7513    #[serde(rename = "Targets")]
7514    #[serde(skip_serializing_if = "Option::is_none")]
7515    pub targets: Option<Vec<Target>>,
7516}
7517
7518#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7519#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7520pub struct UpdateAssociationResult {
7521    /// <p>The description of the association that was updated.</p>
7522    #[serde(rename = "AssociationDescription")]
7523    #[serde(skip_serializing_if = "Option::is_none")]
7524    pub association_description: Option<AssociationDescription>,
7525}
7526
7527#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7528#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7529pub struct UpdateAssociationStatusRequest {
7530    /// <p>The association status.</p>
7531    #[serde(rename = "AssociationStatus")]
7532    pub association_status: AssociationStatus,
7533    /// <p>The ID of the instance.</p>
7534    #[serde(rename = "InstanceId")]
7535    pub instance_id: String,
7536    /// <p>The name of the Systems Manager document.</p>
7537    #[serde(rename = "Name")]
7538    pub name: String,
7539}
7540
7541#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7542#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7543pub struct UpdateAssociationStatusResult {
7544    /// <p>Information about the association.</p>
7545    #[serde(rename = "AssociationDescription")]
7546    #[serde(skip_serializing_if = "Option::is_none")]
7547    pub association_description: Option<AssociationDescription>,
7548}
7549
7550#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7551#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7552pub struct UpdateDocumentDefaultVersionRequest {
7553    /// <p>The version of a custom document that you want to set as the default version.</p>
7554    #[serde(rename = "DocumentVersion")]
7555    pub document_version: String,
7556    /// <p>The name of a custom document that you want to set as the default version.</p>
7557    #[serde(rename = "Name")]
7558    pub name: String,
7559}
7560
7561#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7562#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7563pub struct UpdateDocumentDefaultVersionResult {
7564    /// <p>The description of a custom document that you want to set as the default version.</p>
7565    #[serde(rename = "Description")]
7566    #[serde(skip_serializing_if = "Option::is_none")]
7567    pub description: Option<DocumentDefaultVersionDescription>,
7568}
7569
7570#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7571#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7572pub struct UpdateDocumentRequest {
7573    /// <p>A list of key and value pairs that describe attachments to a version of a document.</p>
7574    #[serde(rename = "Attachments")]
7575    #[serde(skip_serializing_if = "Option::is_none")]
7576    pub attachments: Option<Vec<AttachmentsSource>>,
7577    /// <p>A valid JSON or YAML string.</p>
7578    #[serde(rename = "Content")]
7579    pub content: String,
7580    /// <p>Specify the document format for the new document version. Systems Manager supports JSON and YAML documents. JSON is the default format.</p>
7581    #[serde(rename = "DocumentFormat")]
7582    #[serde(skip_serializing_if = "Option::is_none")]
7583    pub document_format: Option<String>,
7584    /// <p>(Required) The latest version of the document that you want to update. The latest document version can be specified using the $LATEST variable or by the version number. Updating a previous version of a document is not supported.</p>
7585    #[serde(rename = "DocumentVersion")]
7586    #[serde(skip_serializing_if = "Option::is_none")]
7587    pub document_version: Option<String>,
7588    /// <p>The name of the document that you want to update.</p>
7589    #[serde(rename = "Name")]
7590    pub name: String,
7591    /// <p>Specify a new target type for the document.</p>
7592    #[serde(rename = "TargetType")]
7593    #[serde(skip_serializing_if = "Option::is_none")]
7594    pub target_type: Option<String>,
7595    /// <p>An optional field specifying the version of the artifact you are updating with the document. For example, "Release 12, Update 6". This value is unique across all versions of a document, and cannot be changed.</p>
7596    #[serde(rename = "VersionName")]
7597    #[serde(skip_serializing_if = "Option::is_none")]
7598    pub version_name: Option<String>,
7599}
7600
7601#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7602#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7603pub struct UpdateDocumentResult {
7604    /// <p>A description of the document that was updated.</p>
7605    #[serde(rename = "DocumentDescription")]
7606    #[serde(skip_serializing_if = "Option::is_none")]
7607    pub document_description: Option<DocumentDescription>,
7608}
7609
7610#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7611#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7612pub struct UpdateMaintenanceWindowRequest {
7613    /// <p>Whether targets must be registered with the maintenance window before tasks can be defined for those targets.</p>
7614    #[serde(rename = "AllowUnassociatedTargets")]
7615    #[serde(skip_serializing_if = "Option::is_none")]
7616    pub allow_unassociated_targets: Option<bool>,
7617    /// <p>The number of hours before the end of the maintenance window that Systems Manager stops scheduling new tasks for execution.</p>
7618    #[serde(rename = "Cutoff")]
7619    #[serde(skip_serializing_if = "Option::is_none")]
7620    pub cutoff: Option<i64>,
7621    /// <p>An optional description for the update request.</p>
7622    #[serde(rename = "Description")]
7623    #[serde(skip_serializing_if = "Option::is_none")]
7624    pub description: Option<String>,
7625    /// <p>The duration of the maintenance window in hours.</p>
7626    #[serde(rename = "Duration")]
7627    #[serde(skip_serializing_if = "Option::is_none")]
7628    pub duration: Option<i64>,
7629    /// <p>Whether the maintenance window is enabled.</p>
7630    #[serde(rename = "Enabled")]
7631    #[serde(skip_serializing_if = "Option::is_none")]
7632    pub enabled: Option<bool>,
7633    /// <p>The date and time, in ISO-8601 Extended format, for when you want the maintenance window to become inactive. EndDate allows you to set a date and time in the future when the maintenance window will no longer run.</p>
7634    #[serde(rename = "EndDate")]
7635    #[serde(skip_serializing_if = "Option::is_none")]
7636    pub end_date: Option<String>,
7637    /// <p>The name of the maintenance window.</p>
7638    #[serde(rename = "Name")]
7639    #[serde(skip_serializing_if = "Option::is_none")]
7640    pub name: Option<String>,
7641    /// <p>If True, then all fields that are required by the CreateMaintenanceWindow action are also required for this API request. Optional fields that are not specified are set to null. </p>
7642    #[serde(rename = "Replace")]
7643    #[serde(skip_serializing_if = "Option::is_none")]
7644    pub replace: Option<bool>,
7645    /// <p>The schedule of the maintenance window in the form of a cron or rate expression.</p>
7646    #[serde(rename = "Schedule")]
7647    #[serde(skip_serializing_if = "Option::is_none")]
7648    pub schedule: Option<String>,
7649    /// <p>The number of days to wait after the date and time specified by a CRON expression before running the maintenance window.</p> <p>For example, the following cron expression schedules a maintenance window to run the third Tuesday of every month at 11:30 PM.</p> <p> <code>cron(0 30 23 ? * TUE#3 *)</code> </p> <p>If the schedule offset is <code>2</code>, the maintenance window won't run until two days later.</p>
7650    #[serde(rename = "ScheduleOffset")]
7651    #[serde(skip_serializing_if = "Option::is_none")]
7652    pub schedule_offset: Option<i64>,
7653    /// <p>The time zone that the scheduled maintenance window executions are based on, in Internet Assigned Numbers Authority (IANA) format. For example: "America/Los_Angeles", "etc/UTC", or "Asia/Seoul". For more information, see the <a href="https://www.iana.org/time-zones">Time Zone Database</a> on the IANA website.</p>
7654    #[serde(rename = "ScheduleTimezone")]
7655    #[serde(skip_serializing_if = "Option::is_none")]
7656    pub schedule_timezone: Option<String>,
7657    /// <p>The time zone that the scheduled maintenance window executions are based on, in Internet Assigned Numbers Authority (IANA) format. For example: "America/Los_Angeles", "etc/UTC", or "Asia/Seoul". For more information, see the <a href="https://www.iana.org/time-zones">Time Zone Database</a> on the IANA website.</p>
7658    #[serde(rename = "StartDate")]
7659    #[serde(skip_serializing_if = "Option::is_none")]
7660    pub start_date: Option<String>,
7661    /// <p>The ID of the maintenance window to update.</p>
7662    #[serde(rename = "WindowId")]
7663    pub window_id: String,
7664}
7665
7666#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7667#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7668pub struct UpdateMaintenanceWindowResult {
7669    /// <p>Whether targets must be registered with the maintenance window before tasks can be defined for those targets.</p>
7670    #[serde(rename = "AllowUnassociatedTargets")]
7671    #[serde(skip_serializing_if = "Option::is_none")]
7672    pub allow_unassociated_targets: Option<bool>,
7673    /// <p>The number of hours before the end of the maintenance window that Systems Manager stops scheduling new tasks for execution.</p>
7674    #[serde(rename = "Cutoff")]
7675    #[serde(skip_serializing_if = "Option::is_none")]
7676    pub cutoff: Option<i64>,
7677    /// <p>An optional description of the update.</p>
7678    #[serde(rename = "Description")]
7679    #[serde(skip_serializing_if = "Option::is_none")]
7680    pub description: Option<String>,
7681    /// <p>The duration of the maintenance window in hours.</p>
7682    #[serde(rename = "Duration")]
7683    #[serde(skip_serializing_if = "Option::is_none")]
7684    pub duration: Option<i64>,
7685    /// <p>Whether the maintenance window is enabled.</p>
7686    #[serde(rename = "Enabled")]
7687    #[serde(skip_serializing_if = "Option::is_none")]
7688    pub enabled: Option<bool>,
7689    /// <p>The date and time, in ISO-8601 Extended format, for when the maintenance window is scheduled to become inactive. The maintenance window will not run after this specified time.</p>
7690    #[serde(rename = "EndDate")]
7691    #[serde(skip_serializing_if = "Option::is_none")]
7692    pub end_date: Option<String>,
7693    /// <p>The name of the maintenance window.</p>
7694    #[serde(rename = "Name")]
7695    #[serde(skip_serializing_if = "Option::is_none")]
7696    pub name: Option<String>,
7697    /// <p>The schedule of the maintenance window in the form of a cron or rate expression.</p>
7698    #[serde(rename = "Schedule")]
7699    #[serde(skip_serializing_if = "Option::is_none")]
7700    pub schedule: Option<String>,
7701    /// <p>The number of days to wait to run a maintenance window after the scheduled CRON expression date and time.</p>
7702    #[serde(rename = "ScheduleOffset")]
7703    #[serde(skip_serializing_if = "Option::is_none")]
7704    pub schedule_offset: Option<i64>,
7705    /// <p>The time zone that the scheduled maintenance window executions are based on, in Internet Assigned Numbers Authority (IANA) format. For example: "America/Los_Angeles", "etc/UTC", or "Asia/Seoul". For more information, see the <a href="https://www.iana.org/time-zones">Time Zone Database</a> on the IANA website.</p>
7706    #[serde(rename = "ScheduleTimezone")]
7707    #[serde(skip_serializing_if = "Option::is_none")]
7708    pub schedule_timezone: Option<String>,
7709    /// <p>The date and time, in ISO-8601 Extended format, for when the maintenance window is scheduled to become active. The maintenance window will not run before this specified time.</p>
7710    #[serde(rename = "StartDate")]
7711    #[serde(skip_serializing_if = "Option::is_none")]
7712    pub start_date: Option<String>,
7713    /// <p>The ID of the created maintenance window.</p>
7714    #[serde(rename = "WindowId")]
7715    #[serde(skip_serializing_if = "Option::is_none")]
7716    pub window_id: Option<String>,
7717}
7718
7719#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7720#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7721pub struct UpdateMaintenanceWindowTargetRequest {
7722    /// <p>An optional description for the update.</p>
7723    #[serde(rename = "Description")]
7724    #[serde(skip_serializing_if = "Option::is_none")]
7725    pub description: Option<String>,
7726    /// <p>A name for the update.</p>
7727    #[serde(rename = "Name")]
7728    #[serde(skip_serializing_if = "Option::is_none")]
7729    pub name: Option<String>,
7730    /// <p>User-provided value that will be included in any CloudWatch events raised while running tasks for these targets in this maintenance window.</p>
7731    #[serde(rename = "OwnerInformation")]
7732    #[serde(skip_serializing_if = "Option::is_none")]
7733    pub owner_information: Option<String>,
7734    /// <p>If True, then all fields that are required by the RegisterTargetWithMaintenanceWindow action are also required for this API request. Optional fields that are not specified are set to null.</p>
7735    #[serde(rename = "Replace")]
7736    #[serde(skip_serializing_if = "Option::is_none")]
7737    pub replace: Option<bool>,
7738    /// <p>The targets to add or replace.</p>
7739    #[serde(rename = "Targets")]
7740    #[serde(skip_serializing_if = "Option::is_none")]
7741    pub targets: Option<Vec<Target>>,
7742    /// <p>The maintenance window ID with which to modify the target.</p>
7743    #[serde(rename = "WindowId")]
7744    pub window_id: String,
7745    /// <p>The target ID to modify.</p>
7746    #[serde(rename = "WindowTargetId")]
7747    pub window_target_id: String,
7748}
7749
7750#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7751#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7752pub struct UpdateMaintenanceWindowTargetResult {
7753    /// <p>The updated description.</p>
7754    #[serde(rename = "Description")]
7755    #[serde(skip_serializing_if = "Option::is_none")]
7756    pub description: Option<String>,
7757    /// <p>The updated name.</p>
7758    #[serde(rename = "Name")]
7759    #[serde(skip_serializing_if = "Option::is_none")]
7760    pub name: Option<String>,
7761    /// <p>The updated owner.</p>
7762    #[serde(rename = "OwnerInformation")]
7763    #[serde(skip_serializing_if = "Option::is_none")]
7764    pub owner_information: Option<String>,
7765    /// <p>The updated targets.</p>
7766    #[serde(rename = "Targets")]
7767    #[serde(skip_serializing_if = "Option::is_none")]
7768    pub targets: Option<Vec<Target>>,
7769    /// <p>The maintenance window ID specified in the update request.</p>
7770    #[serde(rename = "WindowId")]
7771    #[serde(skip_serializing_if = "Option::is_none")]
7772    pub window_id: Option<String>,
7773    /// <p>The target ID specified in the update request.</p>
7774    #[serde(rename = "WindowTargetId")]
7775    #[serde(skip_serializing_if = "Option::is_none")]
7776    pub window_target_id: Option<String>,
7777}
7778
7779#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7780#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7781pub struct UpdateMaintenanceWindowTaskRequest {
7782    /// <p>The new task description to specify.</p>
7783    #[serde(rename = "Description")]
7784    #[serde(skip_serializing_if = "Option::is_none")]
7785    pub description: Option<String>,
7786    /// <p><p>The new logging location in Amazon S3 to specify.</p> <note> <p> <code>LoggingInfo</code> has been deprecated. To specify an S3 bucket to contain logs, instead use the <code>OutputS3BucketName</code> and <code>OutputS3KeyPrefix</code> options in the <code>TaskInvocationParameters</code> structure. For information about how Systems Manager handles these options for the supported maintenance window task types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p> </note></p>
7787    #[serde(rename = "LoggingInfo")]
7788    #[serde(skip_serializing_if = "Option::is_none")]
7789    pub logging_info: Option<LoggingInfo>,
7790    /// <p>The new <code>MaxConcurrency</code> value you want to specify. <code>MaxConcurrency</code> is the number of targets that are allowed to run this task in parallel.</p>
7791    #[serde(rename = "MaxConcurrency")]
7792    #[serde(skip_serializing_if = "Option::is_none")]
7793    pub max_concurrency: Option<String>,
7794    /// <p>The new <code>MaxErrors</code> value to specify. <code>MaxErrors</code> is the maximum number of errors that are allowed before the task stops being scheduled.</p>
7795    #[serde(rename = "MaxErrors")]
7796    #[serde(skip_serializing_if = "Option::is_none")]
7797    pub max_errors: Option<String>,
7798    /// <p>The new task name to specify.</p>
7799    #[serde(rename = "Name")]
7800    #[serde(skip_serializing_if = "Option::is_none")]
7801    pub name: Option<String>,
7802    /// <p>The new task priority to specify. The lower the number, the higher the priority. Tasks that have the same priority are scheduled in parallel.</p>
7803    #[serde(rename = "Priority")]
7804    #[serde(skip_serializing_if = "Option::is_none")]
7805    pub priority: Option<i64>,
7806    /// <p>If True, then all fields that are required by the RegisterTaskWithMaintenanceWndow action are also required for this API request. Optional fields that are not specified are set to null.</p>
7807    #[serde(rename = "Replace")]
7808    #[serde(skip_serializing_if = "Option::is_none")]
7809    pub replace: Option<bool>,
7810    /// <p><p>The ARN of the IAM service role for Systems Manager to assume when running a maintenance window task. If you do not specify a service role ARN, Systems Manager uses your account&#39;s service-linked role. If no service-linked role for Systems Manager exists in your account, it is created when you run <code>RegisterTaskWithMaintenanceWindow</code>.</p> <p>For more information, see the following topics in the in the <i>AWS Systems Manager User Guide</i>:</p> <ul> <li> <p> <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/using-service-linked-roles.html#slr-permissions">Using service-linked roles for Systems Manager</a> </p> </li> <li> <p> <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-maintenance-permissions.html#maintenance-window-tasks-service-role">Should I use a service-linked role or a custom service role to run maintenance window tasks? </a> </p> </li> </ul></p>
7811    #[serde(rename = "ServiceRoleArn")]
7812    #[serde(skip_serializing_if = "Option::is_none")]
7813    pub service_role_arn: Option<String>,
7814    /// <p>The targets (either instances or tags) to modify. Instances are specified using Key=instanceids,Values=instanceID_1,instanceID_2. Tags are specified using Key=tag_name,Values=tag_value. </p>
7815    #[serde(rename = "Targets")]
7816    #[serde(skip_serializing_if = "Option::is_none")]
7817    pub targets: Option<Vec<Target>>,
7818    /// <p>The task ARN to modify.</p>
7819    #[serde(rename = "TaskArn")]
7820    #[serde(skip_serializing_if = "Option::is_none")]
7821    pub task_arn: Option<String>,
7822    /// <p>The parameters that the task should use during execution. Populate only the fields that match the task type. All other fields should be empty.</p>
7823    #[serde(rename = "TaskInvocationParameters")]
7824    #[serde(skip_serializing_if = "Option::is_none")]
7825    pub task_invocation_parameters: Option<MaintenanceWindowTaskInvocationParameters>,
7826    /// <p>The parameters to modify.</p> <note> <p> <code>TaskParameters</code> has been deprecated. To specify parameters to pass to a task when it runs, instead use the <code>Parameters</code> option in the <code>TaskInvocationParameters</code> structure. For information about how Systems Manager handles these options for the supported maintenance window task types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p> </note> <p>The map has the following format:</p> <p>Key: string, between 1 and 255 characters</p> <p>Value: an array of strings, each string is between 1 and 255 characters</p>
7827    #[serde(rename = "TaskParameters")]
7828    #[serde(skip_serializing_if = "Option::is_none")]
7829    pub task_parameters:
7830        Option<::std::collections::HashMap<String, MaintenanceWindowTaskParameterValueExpression>>,
7831    /// <p>The maintenance window ID that contains the task to modify.</p>
7832    #[serde(rename = "WindowId")]
7833    pub window_id: String,
7834    /// <p>The task ID to modify.</p>
7835    #[serde(rename = "WindowTaskId")]
7836    pub window_task_id: String,
7837}
7838
7839#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7840#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7841pub struct UpdateMaintenanceWindowTaskResult {
7842    /// <p>The updated task description.</p>
7843    #[serde(rename = "Description")]
7844    #[serde(skip_serializing_if = "Option::is_none")]
7845    pub description: Option<String>,
7846    /// <p><p>The updated logging information in Amazon S3.</p> <note> <p> <code>LoggingInfo</code> has been deprecated. To specify an S3 bucket to contain logs, instead use the <code>OutputS3BucketName</code> and <code>OutputS3KeyPrefix</code> options in the <code>TaskInvocationParameters</code> structure. For information about how Systems Manager handles these options for the supported maintenance window task types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p> </note></p>
7847    #[serde(rename = "LoggingInfo")]
7848    #[serde(skip_serializing_if = "Option::is_none")]
7849    pub logging_info: Option<LoggingInfo>,
7850    /// <p>The updated MaxConcurrency value.</p>
7851    #[serde(rename = "MaxConcurrency")]
7852    #[serde(skip_serializing_if = "Option::is_none")]
7853    pub max_concurrency: Option<String>,
7854    /// <p>The updated MaxErrors value.</p>
7855    #[serde(rename = "MaxErrors")]
7856    #[serde(skip_serializing_if = "Option::is_none")]
7857    pub max_errors: Option<String>,
7858    /// <p>The updated task name.</p>
7859    #[serde(rename = "Name")]
7860    #[serde(skip_serializing_if = "Option::is_none")]
7861    pub name: Option<String>,
7862    /// <p>The updated priority value.</p>
7863    #[serde(rename = "Priority")]
7864    #[serde(skip_serializing_if = "Option::is_none")]
7865    pub priority: Option<i64>,
7866    /// <p>The ARN of the IAM service role to use to publish Amazon Simple Notification Service (Amazon SNS) notifications for maintenance window Run Command tasks.</p>
7867    #[serde(rename = "ServiceRoleArn")]
7868    #[serde(skip_serializing_if = "Option::is_none")]
7869    pub service_role_arn: Option<String>,
7870    /// <p>The updated target values.</p>
7871    #[serde(rename = "Targets")]
7872    #[serde(skip_serializing_if = "Option::is_none")]
7873    pub targets: Option<Vec<Target>>,
7874    /// <p>The updated task ARN value.</p>
7875    #[serde(rename = "TaskArn")]
7876    #[serde(skip_serializing_if = "Option::is_none")]
7877    pub task_arn: Option<String>,
7878    /// <p>The updated parameter values.</p>
7879    #[serde(rename = "TaskInvocationParameters")]
7880    #[serde(skip_serializing_if = "Option::is_none")]
7881    pub task_invocation_parameters: Option<MaintenanceWindowTaskInvocationParameters>,
7882    /// <p><p>The updated parameter values.</p> <note> <p> <code>TaskParameters</code> has been deprecated. To specify parameters to pass to a task when it runs, instead use the <code>Parameters</code> option in the <code>TaskInvocationParameters</code> structure. For information about how Systems Manager handles these options for the supported maintenance window task types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p> </note></p>
7883    #[serde(rename = "TaskParameters")]
7884    #[serde(skip_serializing_if = "Option::is_none")]
7885    pub task_parameters:
7886        Option<::std::collections::HashMap<String, MaintenanceWindowTaskParameterValueExpression>>,
7887    /// <p>The ID of the maintenance window that was updated.</p>
7888    #[serde(rename = "WindowId")]
7889    #[serde(skip_serializing_if = "Option::is_none")]
7890    pub window_id: Option<String>,
7891    /// <p>The task ID of the maintenance window that was updated.</p>
7892    #[serde(rename = "WindowTaskId")]
7893    #[serde(skip_serializing_if = "Option::is_none")]
7894    pub window_task_id: Option<String>,
7895}
7896
7897#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7898#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7899pub struct UpdateManagedInstanceRoleRequest {
7900    /// <p>The IAM role you want to assign or change.</p>
7901    #[serde(rename = "IamRole")]
7902    pub iam_role: String,
7903    /// <p>The ID of the managed instance where you want to update the role.</p>
7904    #[serde(rename = "InstanceId")]
7905    pub instance_id: String,
7906}
7907
7908#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7909#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7910pub struct UpdateManagedInstanceRoleResult {}
7911
7912#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7913#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7914pub struct UpdateOpsItemRequest {
7915    /// <p>Specify a new category for an OpsItem.</p>
7916    #[serde(rename = "Category")]
7917    #[serde(skip_serializing_if = "Option::is_none")]
7918    pub category: Option<String>,
7919    /// <p>Update the information about the OpsItem. Provide enough information so that users reading this OpsItem for the first time understand the issue. </p>
7920    #[serde(rename = "Description")]
7921    #[serde(skip_serializing_if = "Option::is_none")]
7922    pub description: Option<String>,
7923    /// <p>The Amazon Resource Name (ARN) of an SNS topic where notifications are sent when this OpsItem is edited or changed.</p>
7924    #[serde(rename = "Notifications")]
7925    #[serde(skip_serializing_if = "Option::is_none")]
7926    pub notifications: Option<Vec<OpsItemNotification>>,
7927    /// <p>Add new keys or edit existing key-value pairs of the OperationalData map in the OpsItem object.</p> <p>Operational data is custom data that provides useful reference details about the OpsItem. For example, you can specify log files, error strings, license keys, troubleshooting tips, or other relevant data. You enter operational data as key-value pairs. The key has a maximum length of 128 characters. The value has a maximum size of 20 KB.</p> <important> <p>Operational data keys <i>can't</i> begin with the following: amazon, aws, amzn, ssm, /amazon, /aws, /amzn, /ssm.</p> </important> <p>You can choose to make the data searchable by other users in the account or you can restrict search access. Searchable data means that all users with access to the OpsItem Overview page (as provided by the <a>DescribeOpsItems</a> API action) can view and search on the specified data. Operational data that is not searchable is only viewable by users who have access to the OpsItem (as provided by the <a>GetOpsItem</a> API action).</p> <p>Use the <code>/aws/resources</code> key in OperationalData to specify a related resource in the request. Use the <code>/aws/automations</code> key in OperationalData to associate an Automation runbook with the OpsItem. To view AWS CLI example commands that use these keys, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-creating-OpsItems.html#OpsCenter-manually-create-OpsItems">Creating OpsItems manually</a> in the <i>AWS Systems Manager User Guide</i>.</p>
7928    #[serde(rename = "OperationalData")]
7929    #[serde(skip_serializing_if = "Option::is_none")]
7930    pub operational_data: Option<::std::collections::HashMap<String, OpsItemDataValue>>,
7931    /// <p>Keys that you want to remove from the OperationalData map.</p>
7932    #[serde(rename = "OperationalDataToDelete")]
7933    #[serde(skip_serializing_if = "Option::is_none")]
7934    pub operational_data_to_delete: Option<Vec<String>>,
7935    /// <p>The ID of the OpsItem.</p>
7936    #[serde(rename = "OpsItemId")]
7937    pub ops_item_id: String,
7938    /// <p>The importance of this OpsItem in relation to other OpsItems in the system.</p>
7939    #[serde(rename = "Priority")]
7940    #[serde(skip_serializing_if = "Option::is_none")]
7941    pub priority: Option<i64>,
7942    /// <p>One or more OpsItems that share something in common with the current OpsItems. For example, related OpsItems can include OpsItems with similar error messages, impacted resources, or statuses for the impacted resource.</p>
7943    #[serde(rename = "RelatedOpsItems")]
7944    #[serde(skip_serializing_if = "Option::is_none")]
7945    pub related_ops_items: Option<Vec<RelatedOpsItem>>,
7946    /// <p>Specify a new severity for an OpsItem.</p>
7947    #[serde(rename = "Severity")]
7948    #[serde(skip_serializing_if = "Option::is_none")]
7949    pub severity: Option<String>,
7950    /// <p>The OpsItem status. Status can be <code>Open</code>, <code>In Progress</code>, or <code>Resolved</code>. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-working-with-OpsItems.html#OpsCenter-working-with-OpsItems-editing-details">Editing OpsItem details</a> in the <i>AWS Systems Manager User Guide</i>.</p>
7951    #[serde(rename = "Status")]
7952    #[serde(skip_serializing_if = "Option::is_none")]
7953    pub status: Option<String>,
7954    /// <p>A short heading that describes the nature of the OpsItem and the impacted resource.</p>
7955    #[serde(rename = "Title")]
7956    #[serde(skip_serializing_if = "Option::is_none")]
7957    pub title: Option<String>,
7958}
7959
7960#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
7961#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
7962pub struct UpdateOpsItemResponse {}
7963
7964#[derive(Clone, Debug, Default, PartialEq, Serialize)]
7965#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
7966pub struct UpdatePatchBaselineRequest {
7967    /// <p>A set of rules used to include patches in the baseline.</p>
7968    #[serde(rename = "ApprovalRules")]
7969    #[serde(skip_serializing_if = "Option::is_none")]
7970    pub approval_rules: Option<PatchRuleGroup>,
7971    /// <p>A list of explicitly approved patches for the baseline.</p> <p>For information about accepted formats for lists of approved patches and rejected patches, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-approved-rejected-package-name-formats.html">About package name formats for approved and rejected patch lists</a> in the <i>AWS Systems Manager User Guide</i>.</p>
7972    #[serde(rename = "ApprovedPatches")]
7973    #[serde(skip_serializing_if = "Option::is_none")]
7974    pub approved_patches: Option<Vec<String>>,
7975    /// <p>Assigns a new compliance severity level to an existing patch baseline.</p>
7976    #[serde(rename = "ApprovedPatchesComplianceLevel")]
7977    #[serde(skip_serializing_if = "Option::is_none")]
7978    pub approved_patches_compliance_level: Option<String>,
7979    /// <p>Indicates whether the list of approved patches includes non-security updates that should be applied to the instances. The default value is 'false'. Applies to Linux instances only.</p>
7980    #[serde(rename = "ApprovedPatchesEnableNonSecurity")]
7981    #[serde(skip_serializing_if = "Option::is_none")]
7982    pub approved_patches_enable_non_security: Option<bool>,
7983    /// <p>The ID of the patch baseline to update.</p>
7984    #[serde(rename = "BaselineId")]
7985    pub baseline_id: String,
7986    /// <p>A description of the patch baseline.</p>
7987    #[serde(rename = "Description")]
7988    #[serde(skip_serializing_if = "Option::is_none")]
7989    pub description: Option<String>,
7990    /// <p>A set of global filters used to include patches in the baseline.</p>
7991    #[serde(rename = "GlobalFilters")]
7992    #[serde(skip_serializing_if = "Option::is_none")]
7993    pub global_filters: Option<PatchFilterGroup>,
7994    /// <p>The name of the patch baseline.</p>
7995    #[serde(rename = "Name")]
7996    #[serde(skip_serializing_if = "Option::is_none")]
7997    pub name: Option<String>,
7998    /// <p>A list of explicitly rejected patches for the baseline.</p> <p>For information about accepted formats for lists of approved patches and rejected patches, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-approved-rejected-package-name-formats.html">About package name formats for approved and rejected patch lists</a> in the <i>AWS Systems Manager User Guide</i>.</p>
7999    #[serde(rename = "RejectedPatches")]
8000    #[serde(skip_serializing_if = "Option::is_none")]
8001    pub rejected_patches: Option<Vec<String>>,
8002    /// <p><p>The action for Patch Manager to take on patches included in the RejectedPackages list.</p> <ul> <li> <p> <b>ALLOW<em>AS</em>DEPENDENCY</b>: A package in the Rejected patches list is installed only if it is a dependency of another package. It is considered compliant with the patch baseline, and its status is reported as <i>InstalledOther</i>. This is the default action if no option is specified.</p> </li> <li> <p> <b>BLOCK</b>: Packages in the RejectedPatches list, and packages that include them as dependencies, are not installed under any circumstances. If a package was installed before it was added to the Rejected patches list, it is considered non-compliant with the patch baseline, and its status is reported as <i>InstalledRejected</i>.</p> </li> </ul></p>
8003    #[serde(rename = "RejectedPatchesAction")]
8004    #[serde(skip_serializing_if = "Option::is_none")]
8005    pub rejected_patches_action: Option<String>,
8006    /// <p>If True, then all fields that are required by the CreatePatchBaseline action are also required for this API request. Optional fields that are not specified are set to null.</p>
8007    #[serde(rename = "Replace")]
8008    #[serde(skip_serializing_if = "Option::is_none")]
8009    pub replace: Option<bool>,
8010    /// <p>Information about the patches to use to update the instances, including target operating systems and source repositories. Applies to Linux instances only.</p>
8011    #[serde(rename = "Sources")]
8012    #[serde(skip_serializing_if = "Option::is_none")]
8013    pub sources: Option<Vec<PatchSource>>,
8014}
8015
8016#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
8017#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8018pub struct UpdatePatchBaselineResult {
8019    /// <p>A set of rules used to include patches in the baseline.</p>
8020    #[serde(rename = "ApprovalRules")]
8021    #[serde(skip_serializing_if = "Option::is_none")]
8022    pub approval_rules: Option<PatchRuleGroup>,
8023    /// <p>A list of explicitly approved patches for the baseline.</p>
8024    #[serde(rename = "ApprovedPatches")]
8025    #[serde(skip_serializing_if = "Option::is_none")]
8026    pub approved_patches: Option<Vec<String>>,
8027    /// <p>The compliance severity level assigned to the patch baseline after the update completed.</p>
8028    #[serde(rename = "ApprovedPatchesComplianceLevel")]
8029    #[serde(skip_serializing_if = "Option::is_none")]
8030    pub approved_patches_compliance_level: Option<String>,
8031    /// <p>Indicates whether the list of approved patches includes non-security updates that should be applied to the instances. The default value is 'false'. Applies to Linux instances only.</p>
8032    #[serde(rename = "ApprovedPatchesEnableNonSecurity")]
8033    #[serde(skip_serializing_if = "Option::is_none")]
8034    pub approved_patches_enable_non_security: Option<bool>,
8035    /// <p>The ID of the deleted patch baseline.</p>
8036    #[serde(rename = "BaselineId")]
8037    #[serde(skip_serializing_if = "Option::is_none")]
8038    pub baseline_id: Option<String>,
8039    /// <p>The date when the patch baseline was created.</p>
8040    #[serde(rename = "CreatedDate")]
8041    #[serde(skip_serializing_if = "Option::is_none")]
8042    pub created_date: Option<f64>,
8043    /// <p>A description of the Patch Baseline.</p>
8044    #[serde(rename = "Description")]
8045    #[serde(skip_serializing_if = "Option::is_none")]
8046    pub description: Option<String>,
8047    /// <p>A set of global filters used to exclude patches from the baseline.</p>
8048    #[serde(rename = "GlobalFilters")]
8049    #[serde(skip_serializing_if = "Option::is_none")]
8050    pub global_filters: Option<PatchFilterGroup>,
8051    /// <p>The date when the patch baseline was last modified.</p>
8052    #[serde(rename = "ModifiedDate")]
8053    #[serde(skip_serializing_if = "Option::is_none")]
8054    pub modified_date: Option<f64>,
8055    /// <p>The name of the patch baseline.</p>
8056    #[serde(rename = "Name")]
8057    #[serde(skip_serializing_if = "Option::is_none")]
8058    pub name: Option<String>,
8059    /// <p>The operating system rule used by the updated patch baseline.</p>
8060    #[serde(rename = "OperatingSystem")]
8061    #[serde(skip_serializing_if = "Option::is_none")]
8062    pub operating_system: Option<String>,
8063    /// <p>A list of explicitly rejected patches for the baseline.</p>
8064    #[serde(rename = "RejectedPatches")]
8065    #[serde(skip_serializing_if = "Option::is_none")]
8066    pub rejected_patches: Option<Vec<String>>,
8067    /// <p>The action specified to take on patches included in the RejectedPatches list. A patch can be allowed only if it is a dependency of another package, or blocked entirely along with packages that include it as a dependency.</p>
8068    #[serde(rename = "RejectedPatchesAction")]
8069    #[serde(skip_serializing_if = "Option::is_none")]
8070    pub rejected_patches_action: Option<String>,
8071    /// <p>Information about the patches to use to update the instances, including target operating systems and source repositories. Applies to Linux instances only.</p>
8072    #[serde(rename = "Sources")]
8073    #[serde(skip_serializing_if = "Option::is_none")]
8074    pub sources: Option<Vec<PatchSource>>,
8075}
8076
8077#[derive(Clone, Debug, Default, PartialEq, Serialize)]
8078#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
8079pub struct UpdateResourceDataSyncRequest {
8080    /// <p>The name of the resource data sync you want to update.</p>
8081    #[serde(rename = "SyncName")]
8082    pub sync_name: String,
8083    /// <p>Specify information about the data sources to synchronize.</p>
8084    #[serde(rename = "SyncSource")]
8085    pub sync_source: ResourceDataSyncSource,
8086    /// <p>The type of resource data sync. The supported <code>SyncType</code> is SyncFromSource.</p>
8087    #[serde(rename = "SyncType")]
8088    pub sync_type: String,
8089}
8090
8091#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
8092#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8093pub struct UpdateResourceDataSyncResult {}
8094
8095/// <p>The request body of the UpdateServiceSetting API action.</p>
8096#[derive(Clone, Debug, Default, PartialEq, Serialize)]
8097#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
8098pub struct UpdateServiceSettingRequest {
8099    /// <p><p>The Amazon Resource Name (ARN) of the service setting to reset. For example, <code>arn:aws:ssm:us-east-1:111122223333:servicesetting/ssm/parameter-store/high-throughput-enabled</code>. The setting ID can be one of the following.</p> <ul> <li> <p> <code>/ssm/parameter-store/default-parameter-tier</code> </p> </li> <li> <p> <code>/ssm/parameter-store/high-throughput-enabled</code> </p> </li> <li> <p> <code>/ssm/managed-instance/activation-tier</code> </p> </li> </ul></p>
8100    #[serde(rename = "SettingId")]
8101    pub setting_id: String,
8102    /// <p>The new value to specify for the service setting. For the <code>/ssm/parameter-store/default-parameter-tier</code> setting ID, the setting value can be one of the following.</p> <ul> <li> <p>Standard</p> </li> <li> <p>Advanced</p> </li> <li> <p>Intelligent-Tiering</p> </li> </ul> <p>For the <code>/ssm/parameter-store/high-throughput-enabled</code>, and <code>/ssm/managed-instance/activation-tier</code> setting IDs, the setting value can be true or false.</p>
8103    #[serde(rename = "SettingValue")]
8104    pub setting_value: String,
8105}
8106
8107/// <p>The result body of the UpdateServiceSetting API action.</p>
8108#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
8109#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
8110pub struct UpdateServiceSettingResult {}
8111
8112/// Errors returned by AddTagsToResource
8113#[derive(Debug, PartialEq)]
8114pub enum AddTagsToResourceError {
8115    /// <p>An error occurred on the server side.</p>
8116    InternalServerError(String),
8117    /// <p>The resource ID is not valid. Verify that you entered the correct ID and try again.</p>
8118    InvalidResourceId(String),
8119    /// <p>The resource type is not valid. For example, if you are attempting to tag an instance, the instance must be a registered, managed instance.</p>
8120    InvalidResourceType(String),
8121    /// <p>The <code>Targets</code> parameter includes too many tags. Remove one or more tags and try the command again.</p>
8122    TooManyTagsError(String),
8123    /// <p>There are concurrent updates for a resource that supports one update at a time.</p>
8124    TooManyUpdates(String),
8125}
8126
8127impl AddTagsToResourceError {
8128    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<AddTagsToResourceError> {
8129        if let Some(err) = proto::json::Error::parse(&res) {
8130            match err.typ.as_str() {
8131                "InternalServerError" => {
8132                    return RusotoError::Service(AddTagsToResourceError::InternalServerError(
8133                        err.msg,
8134                    ))
8135                }
8136                "InvalidResourceId" => {
8137                    return RusotoError::Service(AddTagsToResourceError::InvalidResourceId(err.msg))
8138                }
8139                "InvalidResourceType" => {
8140                    return RusotoError::Service(AddTagsToResourceError::InvalidResourceType(
8141                        err.msg,
8142                    ))
8143                }
8144                "TooManyTagsError" => {
8145                    return RusotoError::Service(AddTagsToResourceError::TooManyTagsError(err.msg))
8146                }
8147                "TooManyUpdates" => {
8148                    return RusotoError::Service(AddTagsToResourceError::TooManyUpdates(err.msg))
8149                }
8150                "ValidationException" => return RusotoError::Validation(err.msg),
8151                _ => {}
8152            }
8153        }
8154        RusotoError::Unknown(res)
8155    }
8156}
8157impl fmt::Display for AddTagsToResourceError {
8158    #[allow(unused_variables)]
8159    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8160        match *self {
8161            AddTagsToResourceError::InternalServerError(ref cause) => write!(f, "{}", cause),
8162            AddTagsToResourceError::InvalidResourceId(ref cause) => write!(f, "{}", cause),
8163            AddTagsToResourceError::InvalidResourceType(ref cause) => write!(f, "{}", cause),
8164            AddTagsToResourceError::TooManyTagsError(ref cause) => write!(f, "{}", cause),
8165            AddTagsToResourceError::TooManyUpdates(ref cause) => write!(f, "{}", cause),
8166        }
8167    }
8168}
8169impl Error for AddTagsToResourceError {}
8170/// Errors returned by CancelCommand
8171#[derive(Debug, PartialEq)]
8172pub enum CancelCommandError {
8173    /// <p>You cannot specify an instance ID in more than one association.</p>
8174    DuplicateInstanceId(String),
8175    /// <p>An error occurred on the server side.</p>
8176    InternalServerError(String),
8177
8178    InvalidCommandId(String),
8179    /// <p>The following problems can cause this exception:</p> <p>You do not have permission to access the instance.</p> <p>SSM Agent is not running. Verify that SSM Agent is running.</p> <p>SSM Agent is not registered with the SSM endpoint. Try reinstalling SSM Agent.</p> <p>The instance is not in valid state. Valid states are: Running, Pending, Stopped, Stopping. Invalid states are: Shutting-down and Terminated.</p>
8180    InvalidInstanceId(String),
8181}
8182
8183impl CancelCommandError {
8184    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CancelCommandError> {
8185        if let Some(err) = proto::json::Error::parse(&res) {
8186            match err.typ.as_str() {
8187                "DuplicateInstanceId" => {
8188                    return RusotoError::Service(CancelCommandError::DuplicateInstanceId(err.msg))
8189                }
8190                "InternalServerError" => {
8191                    return RusotoError::Service(CancelCommandError::InternalServerError(err.msg))
8192                }
8193                "InvalidCommandId" => {
8194                    return RusotoError::Service(CancelCommandError::InvalidCommandId(err.msg))
8195                }
8196                "InvalidInstanceId" => {
8197                    return RusotoError::Service(CancelCommandError::InvalidInstanceId(err.msg))
8198                }
8199                "ValidationException" => return RusotoError::Validation(err.msg),
8200                _ => {}
8201            }
8202        }
8203        RusotoError::Unknown(res)
8204    }
8205}
8206impl fmt::Display for CancelCommandError {
8207    #[allow(unused_variables)]
8208    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8209        match *self {
8210            CancelCommandError::DuplicateInstanceId(ref cause) => write!(f, "{}", cause),
8211            CancelCommandError::InternalServerError(ref cause) => write!(f, "{}", cause),
8212            CancelCommandError::InvalidCommandId(ref cause) => write!(f, "{}", cause),
8213            CancelCommandError::InvalidInstanceId(ref cause) => write!(f, "{}", cause),
8214        }
8215    }
8216}
8217impl Error for CancelCommandError {}
8218/// Errors returned by CancelMaintenanceWindowExecution
8219#[derive(Debug, PartialEq)]
8220pub enum CancelMaintenanceWindowExecutionError {
8221    /// <p>Error returned when the ID specified for a resource, such as a maintenance window or Patch baseline, doesn't exist.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
8222    DoesNotExist(String),
8223    /// <p>An error occurred on the server side.</p>
8224    InternalServerError(String),
8225}
8226
8227impl CancelMaintenanceWindowExecutionError {
8228    pub fn from_response(
8229        res: BufferedHttpResponse,
8230    ) -> RusotoError<CancelMaintenanceWindowExecutionError> {
8231        if let Some(err) = proto::json::Error::parse(&res) {
8232            match err.typ.as_str() {
8233                "DoesNotExistException" => {
8234                    return RusotoError::Service(
8235                        CancelMaintenanceWindowExecutionError::DoesNotExist(err.msg),
8236                    )
8237                }
8238                "InternalServerError" => {
8239                    return RusotoError::Service(
8240                        CancelMaintenanceWindowExecutionError::InternalServerError(err.msg),
8241                    )
8242                }
8243                "ValidationException" => return RusotoError::Validation(err.msg),
8244                _ => {}
8245            }
8246        }
8247        RusotoError::Unknown(res)
8248    }
8249}
8250impl fmt::Display for CancelMaintenanceWindowExecutionError {
8251    #[allow(unused_variables)]
8252    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8253        match *self {
8254            CancelMaintenanceWindowExecutionError::DoesNotExist(ref cause) => {
8255                write!(f, "{}", cause)
8256            }
8257            CancelMaintenanceWindowExecutionError::InternalServerError(ref cause) => {
8258                write!(f, "{}", cause)
8259            }
8260        }
8261    }
8262}
8263impl Error for CancelMaintenanceWindowExecutionError {}
8264/// Errors returned by CreateActivation
8265#[derive(Debug, PartialEq)]
8266pub enum CreateActivationError {
8267    /// <p>An error occurred on the server side.</p>
8268    InternalServerError(String),
8269}
8270
8271impl CreateActivationError {
8272    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateActivationError> {
8273        if let Some(err) = proto::json::Error::parse(&res) {
8274            match err.typ.as_str() {
8275                "InternalServerError" => {
8276                    return RusotoError::Service(CreateActivationError::InternalServerError(
8277                        err.msg,
8278                    ))
8279                }
8280                "ValidationException" => return RusotoError::Validation(err.msg),
8281                _ => {}
8282            }
8283        }
8284        RusotoError::Unknown(res)
8285    }
8286}
8287impl fmt::Display for CreateActivationError {
8288    #[allow(unused_variables)]
8289    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8290        match *self {
8291            CreateActivationError::InternalServerError(ref cause) => write!(f, "{}", cause),
8292        }
8293    }
8294}
8295impl Error for CreateActivationError {}
8296/// Errors returned by CreateAssociation
8297#[derive(Debug, PartialEq)]
8298pub enum CreateAssociationError {
8299    /// <p>The specified association already exists.</p>
8300    AssociationAlreadyExists(String),
8301    /// <p>You can have at most 2,000 active associations.</p>
8302    AssociationLimitExceeded(String),
8303    /// <p>An error occurred on the server side.</p>
8304    InternalServerError(String),
8305    /// <p>The specified document does not exist.</p>
8306    InvalidDocument(String),
8307    /// <p>The document version is not valid or does not exist.</p>
8308    InvalidDocumentVersion(String),
8309    /// <p>The following problems can cause this exception:</p> <p>You do not have permission to access the instance.</p> <p>SSM Agent is not running. Verify that SSM Agent is running.</p> <p>SSM Agent is not registered with the SSM endpoint. Try reinstalling SSM Agent.</p> <p>The instance is not in valid state. Valid states are: Running, Pending, Stopped, Stopping. Invalid states are: Shutting-down and Terminated.</p>
8310    InvalidInstanceId(String),
8311    /// <p>The output location is not valid or does not exist.</p>
8312    InvalidOutputLocation(String),
8313    /// <p>You must specify values for all required parameters in the Systems Manager document. You can only supply values to parameters defined in the Systems Manager document.</p>
8314    InvalidParameters(String),
8315    /// <p>The schedule is invalid. Verify your cron or rate expression and try again.</p>
8316    InvalidSchedule(String),
8317    /// <p>The target is not valid or does not exist. It might not be configured for Systems Manager or you might not have permission to perform the operation.</p>
8318    InvalidTarget(String),
8319    /// <p>The document does not support the platform type of the given instance ID(s). For example, you sent an document for a Windows instance to a Linux instance.</p>
8320    UnsupportedPlatformType(String),
8321}
8322
8323impl CreateAssociationError {
8324    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateAssociationError> {
8325        if let Some(err) = proto::json::Error::parse(&res) {
8326            match err.typ.as_str() {
8327                "AssociationAlreadyExists" => {
8328                    return RusotoError::Service(CreateAssociationError::AssociationAlreadyExists(
8329                        err.msg,
8330                    ))
8331                }
8332                "AssociationLimitExceeded" => {
8333                    return RusotoError::Service(CreateAssociationError::AssociationLimitExceeded(
8334                        err.msg,
8335                    ))
8336                }
8337                "InternalServerError" => {
8338                    return RusotoError::Service(CreateAssociationError::InternalServerError(
8339                        err.msg,
8340                    ))
8341                }
8342                "InvalidDocument" => {
8343                    return RusotoError::Service(CreateAssociationError::InvalidDocument(err.msg))
8344                }
8345                "InvalidDocumentVersion" => {
8346                    return RusotoError::Service(CreateAssociationError::InvalidDocumentVersion(
8347                        err.msg,
8348                    ))
8349                }
8350                "InvalidInstanceId" => {
8351                    return RusotoError::Service(CreateAssociationError::InvalidInstanceId(err.msg))
8352                }
8353                "InvalidOutputLocation" => {
8354                    return RusotoError::Service(CreateAssociationError::InvalidOutputLocation(
8355                        err.msg,
8356                    ))
8357                }
8358                "InvalidParameters" => {
8359                    return RusotoError::Service(CreateAssociationError::InvalidParameters(err.msg))
8360                }
8361                "InvalidSchedule" => {
8362                    return RusotoError::Service(CreateAssociationError::InvalidSchedule(err.msg))
8363                }
8364                "InvalidTarget" => {
8365                    return RusotoError::Service(CreateAssociationError::InvalidTarget(err.msg))
8366                }
8367                "UnsupportedPlatformType" => {
8368                    return RusotoError::Service(CreateAssociationError::UnsupportedPlatformType(
8369                        err.msg,
8370                    ))
8371                }
8372                "ValidationException" => return RusotoError::Validation(err.msg),
8373                _ => {}
8374            }
8375        }
8376        RusotoError::Unknown(res)
8377    }
8378}
8379impl fmt::Display for CreateAssociationError {
8380    #[allow(unused_variables)]
8381    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8382        match *self {
8383            CreateAssociationError::AssociationAlreadyExists(ref cause) => write!(f, "{}", cause),
8384            CreateAssociationError::AssociationLimitExceeded(ref cause) => write!(f, "{}", cause),
8385            CreateAssociationError::InternalServerError(ref cause) => write!(f, "{}", cause),
8386            CreateAssociationError::InvalidDocument(ref cause) => write!(f, "{}", cause),
8387            CreateAssociationError::InvalidDocumentVersion(ref cause) => write!(f, "{}", cause),
8388            CreateAssociationError::InvalidInstanceId(ref cause) => write!(f, "{}", cause),
8389            CreateAssociationError::InvalidOutputLocation(ref cause) => write!(f, "{}", cause),
8390            CreateAssociationError::InvalidParameters(ref cause) => write!(f, "{}", cause),
8391            CreateAssociationError::InvalidSchedule(ref cause) => write!(f, "{}", cause),
8392            CreateAssociationError::InvalidTarget(ref cause) => write!(f, "{}", cause),
8393            CreateAssociationError::UnsupportedPlatformType(ref cause) => write!(f, "{}", cause),
8394        }
8395    }
8396}
8397impl Error for CreateAssociationError {}
8398/// Errors returned by CreateAssociationBatch
8399#[derive(Debug, PartialEq)]
8400pub enum CreateAssociationBatchError {
8401    /// <p>You can have at most 2,000 active associations.</p>
8402    AssociationLimitExceeded(String),
8403    /// <p>You cannot specify an instance ID in more than one association.</p>
8404    DuplicateInstanceId(String),
8405    /// <p>An error occurred on the server side.</p>
8406    InternalServerError(String),
8407    /// <p>The specified document does not exist.</p>
8408    InvalidDocument(String),
8409    /// <p>The document version is not valid or does not exist.</p>
8410    InvalidDocumentVersion(String),
8411    /// <p>The following problems can cause this exception:</p> <p>You do not have permission to access the instance.</p> <p>SSM Agent is not running. Verify that SSM Agent is running.</p> <p>SSM Agent is not registered with the SSM endpoint. Try reinstalling SSM Agent.</p> <p>The instance is not in valid state. Valid states are: Running, Pending, Stopped, Stopping. Invalid states are: Shutting-down and Terminated.</p>
8412    InvalidInstanceId(String),
8413    /// <p>The output location is not valid or does not exist.</p>
8414    InvalidOutputLocation(String),
8415    /// <p>You must specify values for all required parameters in the Systems Manager document. You can only supply values to parameters defined in the Systems Manager document.</p>
8416    InvalidParameters(String),
8417    /// <p>The schedule is invalid. Verify your cron or rate expression and try again.</p>
8418    InvalidSchedule(String),
8419    /// <p>The target is not valid or does not exist. It might not be configured for Systems Manager or you might not have permission to perform the operation.</p>
8420    InvalidTarget(String),
8421    /// <p>The document does not support the platform type of the given instance ID(s). For example, you sent an document for a Windows instance to a Linux instance.</p>
8422    UnsupportedPlatformType(String),
8423}
8424
8425impl CreateAssociationBatchError {
8426    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateAssociationBatchError> {
8427        if let Some(err) = proto::json::Error::parse(&res) {
8428            match err.typ.as_str() {
8429                "AssociationLimitExceeded" => {
8430                    return RusotoError::Service(
8431                        CreateAssociationBatchError::AssociationLimitExceeded(err.msg),
8432                    )
8433                }
8434                "DuplicateInstanceId" => {
8435                    return RusotoError::Service(CreateAssociationBatchError::DuplicateInstanceId(
8436                        err.msg,
8437                    ))
8438                }
8439                "InternalServerError" => {
8440                    return RusotoError::Service(CreateAssociationBatchError::InternalServerError(
8441                        err.msg,
8442                    ))
8443                }
8444                "InvalidDocument" => {
8445                    return RusotoError::Service(CreateAssociationBatchError::InvalidDocument(
8446                        err.msg,
8447                    ))
8448                }
8449                "InvalidDocumentVersion" => {
8450                    return RusotoError::Service(
8451                        CreateAssociationBatchError::InvalidDocumentVersion(err.msg),
8452                    )
8453                }
8454                "InvalidInstanceId" => {
8455                    return RusotoError::Service(CreateAssociationBatchError::InvalidInstanceId(
8456                        err.msg,
8457                    ))
8458                }
8459                "InvalidOutputLocation" => {
8460                    return RusotoError::Service(
8461                        CreateAssociationBatchError::InvalidOutputLocation(err.msg),
8462                    )
8463                }
8464                "InvalidParameters" => {
8465                    return RusotoError::Service(CreateAssociationBatchError::InvalidParameters(
8466                        err.msg,
8467                    ))
8468                }
8469                "InvalidSchedule" => {
8470                    return RusotoError::Service(CreateAssociationBatchError::InvalidSchedule(
8471                        err.msg,
8472                    ))
8473                }
8474                "InvalidTarget" => {
8475                    return RusotoError::Service(CreateAssociationBatchError::InvalidTarget(
8476                        err.msg,
8477                    ))
8478                }
8479                "UnsupportedPlatformType" => {
8480                    return RusotoError::Service(
8481                        CreateAssociationBatchError::UnsupportedPlatformType(err.msg),
8482                    )
8483                }
8484                "ValidationException" => return RusotoError::Validation(err.msg),
8485                _ => {}
8486            }
8487        }
8488        RusotoError::Unknown(res)
8489    }
8490}
8491impl fmt::Display for CreateAssociationBatchError {
8492    #[allow(unused_variables)]
8493    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8494        match *self {
8495            CreateAssociationBatchError::AssociationLimitExceeded(ref cause) => {
8496                write!(f, "{}", cause)
8497            }
8498            CreateAssociationBatchError::DuplicateInstanceId(ref cause) => write!(f, "{}", cause),
8499            CreateAssociationBatchError::InternalServerError(ref cause) => write!(f, "{}", cause),
8500            CreateAssociationBatchError::InvalidDocument(ref cause) => write!(f, "{}", cause),
8501            CreateAssociationBatchError::InvalidDocumentVersion(ref cause) => {
8502                write!(f, "{}", cause)
8503            }
8504            CreateAssociationBatchError::InvalidInstanceId(ref cause) => write!(f, "{}", cause),
8505            CreateAssociationBatchError::InvalidOutputLocation(ref cause) => write!(f, "{}", cause),
8506            CreateAssociationBatchError::InvalidParameters(ref cause) => write!(f, "{}", cause),
8507            CreateAssociationBatchError::InvalidSchedule(ref cause) => write!(f, "{}", cause),
8508            CreateAssociationBatchError::InvalidTarget(ref cause) => write!(f, "{}", cause),
8509            CreateAssociationBatchError::UnsupportedPlatformType(ref cause) => {
8510                write!(f, "{}", cause)
8511            }
8512        }
8513    }
8514}
8515impl Error for CreateAssociationBatchError {}
8516/// Errors returned by CreateDocument
8517#[derive(Debug, PartialEq)]
8518pub enum CreateDocumentError {
8519    /// <p>The specified document already exists.</p>
8520    DocumentAlreadyExists(String),
8521    /// <p>You can have at most 500 active Systems Manager documents.</p>
8522    DocumentLimitExceeded(String),
8523    /// <p>An error occurred on the server side.</p>
8524    InternalServerError(String),
8525    /// <p>The content for the document is not valid.</p>
8526    InvalidDocumentContent(String),
8527    /// <p>The version of the document schema is not supported.</p>
8528    InvalidDocumentSchemaVersion(String),
8529    /// <p>The size limit of a document is 64 KB.</p>
8530    MaxDocumentSizeExceeded(String),
8531}
8532
8533impl CreateDocumentError {
8534    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateDocumentError> {
8535        if let Some(err) = proto::json::Error::parse(&res) {
8536            match err.typ.as_str() {
8537                "DocumentAlreadyExists" => {
8538                    return RusotoError::Service(CreateDocumentError::DocumentAlreadyExists(
8539                        err.msg,
8540                    ))
8541                }
8542                "DocumentLimitExceeded" => {
8543                    return RusotoError::Service(CreateDocumentError::DocumentLimitExceeded(
8544                        err.msg,
8545                    ))
8546                }
8547                "InternalServerError" => {
8548                    return RusotoError::Service(CreateDocumentError::InternalServerError(err.msg))
8549                }
8550                "InvalidDocumentContent" => {
8551                    return RusotoError::Service(CreateDocumentError::InvalidDocumentContent(
8552                        err.msg,
8553                    ))
8554                }
8555                "InvalidDocumentSchemaVersion" => {
8556                    return RusotoError::Service(CreateDocumentError::InvalidDocumentSchemaVersion(
8557                        err.msg,
8558                    ))
8559                }
8560                "MaxDocumentSizeExceeded" => {
8561                    return RusotoError::Service(CreateDocumentError::MaxDocumentSizeExceeded(
8562                        err.msg,
8563                    ))
8564                }
8565                "ValidationException" => return RusotoError::Validation(err.msg),
8566                _ => {}
8567            }
8568        }
8569        RusotoError::Unknown(res)
8570    }
8571}
8572impl fmt::Display for CreateDocumentError {
8573    #[allow(unused_variables)]
8574    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8575        match *self {
8576            CreateDocumentError::DocumentAlreadyExists(ref cause) => write!(f, "{}", cause),
8577            CreateDocumentError::DocumentLimitExceeded(ref cause) => write!(f, "{}", cause),
8578            CreateDocumentError::InternalServerError(ref cause) => write!(f, "{}", cause),
8579            CreateDocumentError::InvalidDocumentContent(ref cause) => write!(f, "{}", cause),
8580            CreateDocumentError::InvalidDocumentSchemaVersion(ref cause) => write!(f, "{}", cause),
8581            CreateDocumentError::MaxDocumentSizeExceeded(ref cause) => write!(f, "{}", cause),
8582        }
8583    }
8584}
8585impl Error for CreateDocumentError {}
8586/// Errors returned by CreateMaintenanceWindow
8587#[derive(Debug, PartialEq)]
8588pub enum CreateMaintenanceWindowError {
8589    /// <p>Error returned when an idempotent operation is retried and the parameters don't match the original call to the API with the same idempotency token. </p>
8590    IdempotentParameterMismatch(String),
8591    /// <p>An error occurred on the server side.</p>
8592    InternalServerError(String),
8593    /// <p>Error returned when the caller has exceeded the default resource quotas. For example, too many maintenance windows or patch baselines have been created.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
8594    ResourceLimitExceeded(String),
8595}
8596
8597impl CreateMaintenanceWindowError {
8598    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateMaintenanceWindowError> {
8599        if let Some(err) = proto::json::Error::parse(&res) {
8600            match err.typ.as_str() {
8601                "IdempotentParameterMismatch" => {
8602                    return RusotoError::Service(
8603                        CreateMaintenanceWindowError::IdempotentParameterMismatch(err.msg),
8604                    )
8605                }
8606                "InternalServerError" => {
8607                    return RusotoError::Service(CreateMaintenanceWindowError::InternalServerError(
8608                        err.msg,
8609                    ))
8610                }
8611                "ResourceLimitExceededException" => {
8612                    return RusotoError::Service(
8613                        CreateMaintenanceWindowError::ResourceLimitExceeded(err.msg),
8614                    )
8615                }
8616                "ValidationException" => return RusotoError::Validation(err.msg),
8617                _ => {}
8618            }
8619        }
8620        RusotoError::Unknown(res)
8621    }
8622}
8623impl fmt::Display for CreateMaintenanceWindowError {
8624    #[allow(unused_variables)]
8625    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8626        match *self {
8627            CreateMaintenanceWindowError::IdempotentParameterMismatch(ref cause) => {
8628                write!(f, "{}", cause)
8629            }
8630            CreateMaintenanceWindowError::InternalServerError(ref cause) => write!(f, "{}", cause),
8631            CreateMaintenanceWindowError::ResourceLimitExceeded(ref cause) => {
8632                write!(f, "{}", cause)
8633            }
8634        }
8635    }
8636}
8637impl Error for CreateMaintenanceWindowError {}
8638/// Errors returned by CreateOpsItem
8639#[derive(Debug, PartialEq)]
8640pub enum CreateOpsItemError {
8641    /// <p>An error occurred on the server side.</p>
8642    InternalServerError(String),
8643    /// <p>The OpsItem already exists.</p>
8644    OpsItemAlreadyExists(String),
8645    /// <p>A specified parameter argument isn't valid. Verify the available arguments and try again.</p>
8646    OpsItemInvalidParameter(String),
8647    /// <p>The request caused OpsItems to exceed one or more quotas. For information about OpsItem quotas, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-learn-more.html#OpsCenter-learn-more-limits">What are the resource limits for OpsCenter?</a>.</p>
8648    OpsItemLimitExceeded(String),
8649}
8650
8651impl CreateOpsItemError {
8652    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateOpsItemError> {
8653        if let Some(err) = proto::json::Error::parse(&res) {
8654            match err.typ.as_str() {
8655                "InternalServerError" => {
8656                    return RusotoError::Service(CreateOpsItemError::InternalServerError(err.msg))
8657                }
8658                "OpsItemAlreadyExistsException" => {
8659                    return RusotoError::Service(CreateOpsItemError::OpsItemAlreadyExists(err.msg))
8660                }
8661                "OpsItemInvalidParameterException" => {
8662                    return RusotoError::Service(CreateOpsItemError::OpsItemInvalidParameter(
8663                        err.msg,
8664                    ))
8665                }
8666                "OpsItemLimitExceededException" => {
8667                    return RusotoError::Service(CreateOpsItemError::OpsItemLimitExceeded(err.msg))
8668                }
8669                "ValidationException" => return RusotoError::Validation(err.msg),
8670                _ => {}
8671            }
8672        }
8673        RusotoError::Unknown(res)
8674    }
8675}
8676impl fmt::Display for CreateOpsItemError {
8677    #[allow(unused_variables)]
8678    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8679        match *self {
8680            CreateOpsItemError::InternalServerError(ref cause) => write!(f, "{}", cause),
8681            CreateOpsItemError::OpsItemAlreadyExists(ref cause) => write!(f, "{}", cause),
8682            CreateOpsItemError::OpsItemInvalidParameter(ref cause) => write!(f, "{}", cause),
8683            CreateOpsItemError::OpsItemLimitExceeded(ref cause) => write!(f, "{}", cause),
8684        }
8685    }
8686}
8687impl Error for CreateOpsItemError {}
8688/// Errors returned by CreatePatchBaseline
8689#[derive(Debug, PartialEq)]
8690pub enum CreatePatchBaselineError {
8691    /// <p>Error returned when an idempotent operation is retried and the parameters don't match the original call to the API with the same idempotency token. </p>
8692    IdempotentParameterMismatch(String),
8693    /// <p>An error occurred on the server side.</p>
8694    InternalServerError(String),
8695    /// <p>Error returned when the caller has exceeded the default resource quotas. For example, too many maintenance windows or patch baselines have been created.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
8696    ResourceLimitExceeded(String),
8697}
8698
8699impl CreatePatchBaselineError {
8700    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreatePatchBaselineError> {
8701        if let Some(err) = proto::json::Error::parse(&res) {
8702            match err.typ.as_str() {
8703                "IdempotentParameterMismatch" => {
8704                    return RusotoError::Service(
8705                        CreatePatchBaselineError::IdempotentParameterMismatch(err.msg),
8706                    )
8707                }
8708                "InternalServerError" => {
8709                    return RusotoError::Service(CreatePatchBaselineError::InternalServerError(
8710                        err.msg,
8711                    ))
8712                }
8713                "ResourceLimitExceededException" => {
8714                    return RusotoError::Service(CreatePatchBaselineError::ResourceLimitExceeded(
8715                        err.msg,
8716                    ))
8717                }
8718                "ValidationException" => return RusotoError::Validation(err.msg),
8719                _ => {}
8720            }
8721        }
8722        RusotoError::Unknown(res)
8723    }
8724}
8725impl fmt::Display for CreatePatchBaselineError {
8726    #[allow(unused_variables)]
8727    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8728        match *self {
8729            CreatePatchBaselineError::IdempotentParameterMismatch(ref cause) => {
8730                write!(f, "{}", cause)
8731            }
8732            CreatePatchBaselineError::InternalServerError(ref cause) => write!(f, "{}", cause),
8733            CreatePatchBaselineError::ResourceLimitExceeded(ref cause) => write!(f, "{}", cause),
8734        }
8735    }
8736}
8737impl Error for CreatePatchBaselineError {}
8738/// Errors returned by CreateResourceDataSync
8739#[derive(Debug, PartialEq)]
8740pub enum CreateResourceDataSyncError {
8741    /// <p>An error occurred on the server side.</p>
8742    InternalServerError(String),
8743    /// <p>A sync configuration with the same name already exists.</p>
8744    ResourceDataSyncAlreadyExists(String),
8745    /// <p>You have exceeded the allowed maximum sync configurations.</p>
8746    ResourceDataSyncCountExceeded(String),
8747    /// <p>The specified sync configuration is invalid.</p>
8748    ResourceDataSyncInvalidConfiguration(String),
8749}
8750
8751impl CreateResourceDataSyncError {
8752    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateResourceDataSyncError> {
8753        if let Some(err) = proto::json::Error::parse(&res) {
8754            match err.typ.as_str() {
8755                "InternalServerError" => {
8756                    return RusotoError::Service(CreateResourceDataSyncError::InternalServerError(
8757                        err.msg,
8758                    ))
8759                }
8760                "ResourceDataSyncAlreadyExistsException" => {
8761                    return RusotoError::Service(
8762                        CreateResourceDataSyncError::ResourceDataSyncAlreadyExists(err.msg),
8763                    )
8764                }
8765                "ResourceDataSyncCountExceededException" => {
8766                    return RusotoError::Service(
8767                        CreateResourceDataSyncError::ResourceDataSyncCountExceeded(err.msg),
8768                    )
8769                }
8770                "ResourceDataSyncInvalidConfigurationException" => {
8771                    return RusotoError::Service(
8772                        CreateResourceDataSyncError::ResourceDataSyncInvalidConfiguration(err.msg),
8773                    )
8774                }
8775                "ValidationException" => return RusotoError::Validation(err.msg),
8776                _ => {}
8777            }
8778        }
8779        RusotoError::Unknown(res)
8780    }
8781}
8782impl fmt::Display for CreateResourceDataSyncError {
8783    #[allow(unused_variables)]
8784    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8785        match *self {
8786            CreateResourceDataSyncError::InternalServerError(ref cause) => write!(f, "{}", cause),
8787            CreateResourceDataSyncError::ResourceDataSyncAlreadyExists(ref cause) => {
8788                write!(f, "{}", cause)
8789            }
8790            CreateResourceDataSyncError::ResourceDataSyncCountExceeded(ref cause) => {
8791                write!(f, "{}", cause)
8792            }
8793            CreateResourceDataSyncError::ResourceDataSyncInvalidConfiguration(ref cause) => {
8794                write!(f, "{}", cause)
8795            }
8796        }
8797    }
8798}
8799impl Error for CreateResourceDataSyncError {}
8800/// Errors returned by DeleteActivation
8801#[derive(Debug, PartialEq)]
8802pub enum DeleteActivationError {
8803    /// <p>An error occurred on the server side.</p>
8804    InternalServerError(String),
8805    /// <p>The activation is not valid. The activation might have been deleted, or the ActivationId and the ActivationCode do not match.</p>
8806    InvalidActivation(String),
8807    /// <p>The activation ID is not valid. Verify the you entered the correct ActivationId or ActivationCode and try again.</p>
8808    InvalidActivationId(String),
8809    /// <p>There are concurrent updates for a resource that supports one update at a time.</p>
8810    TooManyUpdates(String),
8811}
8812
8813impl DeleteActivationError {
8814    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteActivationError> {
8815        if let Some(err) = proto::json::Error::parse(&res) {
8816            match err.typ.as_str() {
8817                "InternalServerError" => {
8818                    return RusotoError::Service(DeleteActivationError::InternalServerError(
8819                        err.msg,
8820                    ))
8821                }
8822                "InvalidActivation" => {
8823                    return RusotoError::Service(DeleteActivationError::InvalidActivation(err.msg))
8824                }
8825                "InvalidActivationId" => {
8826                    return RusotoError::Service(DeleteActivationError::InvalidActivationId(
8827                        err.msg,
8828                    ))
8829                }
8830                "TooManyUpdates" => {
8831                    return RusotoError::Service(DeleteActivationError::TooManyUpdates(err.msg))
8832                }
8833                "ValidationException" => return RusotoError::Validation(err.msg),
8834                _ => {}
8835            }
8836        }
8837        RusotoError::Unknown(res)
8838    }
8839}
8840impl fmt::Display for DeleteActivationError {
8841    #[allow(unused_variables)]
8842    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8843        match *self {
8844            DeleteActivationError::InternalServerError(ref cause) => write!(f, "{}", cause),
8845            DeleteActivationError::InvalidActivation(ref cause) => write!(f, "{}", cause),
8846            DeleteActivationError::InvalidActivationId(ref cause) => write!(f, "{}", cause),
8847            DeleteActivationError::TooManyUpdates(ref cause) => write!(f, "{}", cause),
8848        }
8849    }
8850}
8851impl Error for DeleteActivationError {}
8852/// Errors returned by DeleteAssociation
8853#[derive(Debug, PartialEq)]
8854pub enum DeleteAssociationError {
8855    /// <p>The specified association does not exist.</p>
8856    AssociationDoesNotExist(String),
8857    /// <p>An error occurred on the server side.</p>
8858    InternalServerError(String),
8859    /// <p>The specified document does not exist.</p>
8860    InvalidDocument(String),
8861    /// <p>The following problems can cause this exception:</p> <p>You do not have permission to access the instance.</p> <p>SSM Agent is not running. Verify that SSM Agent is running.</p> <p>SSM Agent is not registered with the SSM endpoint. Try reinstalling SSM Agent.</p> <p>The instance is not in valid state. Valid states are: Running, Pending, Stopped, Stopping. Invalid states are: Shutting-down and Terminated.</p>
8862    InvalidInstanceId(String),
8863    /// <p>There are concurrent updates for a resource that supports one update at a time.</p>
8864    TooManyUpdates(String),
8865}
8866
8867impl DeleteAssociationError {
8868    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteAssociationError> {
8869        if let Some(err) = proto::json::Error::parse(&res) {
8870            match err.typ.as_str() {
8871                "AssociationDoesNotExist" => {
8872                    return RusotoError::Service(DeleteAssociationError::AssociationDoesNotExist(
8873                        err.msg,
8874                    ))
8875                }
8876                "InternalServerError" => {
8877                    return RusotoError::Service(DeleteAssociationError::InternalServerError(
8878                        err.msg,
8879                    ))
8880                }
8881                "InvalidDocument" => {
8882                    return RusotoError::Service(DeleteAssociationError::InvalidDocument(err.msg))
8883                }
8884                "InvalidInstanceId" => {
8885                    return RusotoError::Service(DeleteAssociationError::InvalidInstanceId(err.msg))
8886                }
8887                "TooManyUpdates" => {
8888                    return RusotoError::Service(DeleteAssociationError::TooManyUpdates(err.msg))
8889                }
8890                "ValidationException" => return RusotoError::Validation(err.msg),
8891                _ => {}
8892            }
8893        }
8894        RusotoError::Unknown(res)
8895    }
8896}
8897impl fmt::Display for DeleteAssociationError {
8898    #[allow(unused_variables)]
8899    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8900        match *self {
8901            DeleteAssociationError::AssociationDoesNotExist(ref cause) => write!(f, "{}", cause),
8902            DeleteAssociationError::InternalServerError(ref cause) => write!(f, "{}", cause),
8903            DeleteAssociationError::InvalidDocument(ref cause) => write!(f, "{}", cause),
8904            DeleteAssociationError::InvalidInstanceId(ref cause) => write!(f, "{}", cause),
8905            DeleteAssociationError::TooManyUpdates(ref cause) => write!(f, "{}", cause),
8906        }
8907    }
8908}
8909impl Error for DeleteAssociationError {}
8910/// Errors returned by DeleteDocument
8911#[derive(Debug, PartialEq)]
8912pub enum DeleteDocumentError {
8913    /// <p>You must disassociate a document from all instances before you can delete it.</p>
8914    AssociatedInstances(String),
8915    /// <p>An error occurred on the server side.</p>
8916    InternalServerError(String),
8917    /// <p>The specified document does not exist.</p>
8918    InvalidDocument(String),
8919    /// <p>You attempted to delete a document while it is still shared. You must stop sharing the document before you can delete it.</p>
8920    InvalidDocumentOperation(String),
8921}
8922
8923impl DeleteDocumentError {
8924    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteDocumentError> {
8925        if let Some(err) = proto::json::Error::parse(&res) {
8926            match err.typ.as_str() {
8927                "AssociatedInstances" => {
8928                    return RusotoError::Service(DeleteDocumentError::AssociatedInstances(err.msg))
8929                }
8930                "InternalServerError" => {
8931                    return RusotoError::Service(DeleteDocumentError::InternalServerError(err.msg))
8932                }
8933                "InvalidDocument" => {
8934                    return RusotoError::Service(DeleteDocumentError::InvalidDocument(err.msg))
8935                }
8936                "InvalidDocumentOperation" => {
8937                    return RusotoError::Service(DeleteDocumentError::InvalidDocumentOperation(
8938                        err.msg,
8939                    ))
8940                }
8941                "ValidationException" => return RusotoError::Validation(err.msg),
8942                _ => {}
8943            }
8944        }
8945        RusotoError::Unknown(res)
8946    }
8947}
8948impl fmt::Display for DeleteDocumentError {
8949    #[allow(unused_variables)]
8950    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8951        match *self {
8952            DeleteDocumentError::AssociatedInstances(ref cause) => write!(f, "{}", cause),
8953            DeleteDocumentError::InternalServerError(ref cause) => write!(f, "{}", cause),
8954            DeleteDocumentError::InvalidDocument(ref cause) => write!(f, "{}", cause),
8955            DeleteDocumentError::InvalidDocumentOperation(ref cause) => write!(f, "{}", cause),
8956        }
8957    }
8958}
8959impl Error for DeleteDocumentError {}
8960/// Errors returned by DeleteInventory
8961#[derive(Debug, PartialEq)]
8962pub enum DeleteInventoryError {
8963    /// <p>An error occurred on the server side.</p>
8964    InternalServerError(String),
8965    /// <p>One or more of the parameters specified for the delete operation is not valid. Verify all parameters and try again.</p>
8966    InvalidDeleteInventoryParameters(String),
8967    /// <p>The request is not valid.</p>
8968    InvalidInventoryRequest(String),
8969    /// <p>The delete inventory option specified is not valid. Verify the option and try again.</p>
8970    InvalidOption(String),
8971    /// <p>The parameter type name is not valid.</p>
8972    InvalidTypeName(String),
8973}
8974
8975impl DeleteInventoryError {
8976    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteInventoryError> {
8977        if let Some(err) = proto::json::Error::parse(&res) {
8978            match err.typ.as_str() {
8979                "InternalServerError" => {
8980                    return RusotoError::Service(DeleteInventoryError::InternalServerError(err.msg))
8981                }
8982                "InvalidDeleteInventoryParametersException" => {
8983                    return RusotoError::Service(
8984                        DeleteInventoryError::InvalidDeleteInventoryParameters(err.msg),
8985                    )
8986                }
8987                "InvalidInventoryRequestException" => {
8988                    return RusotoError::Service(DeleteInventoryError::InvalidInventoryRequest(
8989                        err.msg,
8990                    ))
8991                }
8992                "InvalidOptionException" => {
8993                    return RusotoError::Service(DeleteInventoryError::InvalidOption(err.msg))
8994                }
8995                "InvalidTypeNameException" => {
8996                    return RusotoError::Service(DeleteInventoryError::InvalidTypeName(err.msg))
8997                }
8998                "ValidationException" => return RusotoError::Validation(err.msg),
8999                _ => {}
9000            }
9001        }
9002        RusotoError::Unknown(res)
9003    }
9004}
9005impl fmt::Display for DeleteInventoryError {
9006    #[allow(unused_variables)]
9007    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9008        match *self {
9009            DeleteInventoryError::InternalServerError(ref cause) => write!(f, "{}", cause),
9010            DeleteInventoryError::InvalidDeleteInventoryParameters(ref cause) => {
9011                write!(f, "{}", cause)
9012            }
9013            DeleteInventoryError::InvalidInventoryRequest(ref cause) => write!(f, "{}", cause),
9014            DeleteInventoryError::InvalidOption(ref cause) => write!(f, "{}", cause),
9015            DeleteInventoryError::InvalidTypeName(ref cause) => write!(f, "{}", cause),
9016        }
9017    }
9018}
9019impl Error for DeleteInventoryError {}
9020/// Errors returned by DeleteMaintenanceWindow
9021#[derive(Debug, PartialEq)]
9022pub enum DeleteMaintenanceWindowError {
9023    /// <p>An error occurred on the server side.</p>
9024    InternalServerError(String),
9025}
9026
9027impl DeleteMaintenanceWindowError {
9028    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteMaintenanceWindowError> {
9029        if let Some(err) = proto::json::Error::parse(&res) {
9030            match err.typ.as_str() {
9031                "InternalServerError" => {
9032                    return RusotoError::Service(DeleteMaintenanceWindowError::InternalServerError(
9033                        err.msg,
9034                    ))
9035                }
9036                "ValidationException" => return RusotoError::Validation(err.msg),
9037                _ => {}
9038            }
9039        }
9040        RusotoError::Unknown(res)
9041    }
9042}
9043impl fmt::Display for DeleteMaintenanceWindowError {
9044    #[allow(unused_variables)]
9045    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9046        match *self {
9047            DeleteMaintenanceWindowError::InternalServerError(ref cause) => write!(f, "{}", cause),
9048        }
9049    }
9050}
9051impl Error for DeleteMaintenanceWindowError {}
9052/// Errors returned by DeleteParameter
9053#[derive(Debug, PartialEq)]
9054pub enum DeleteParameterError {
9055    /// <p>An error occurred on the server side.</p>
9056    InternalServerError(String),
9057    /// <p>The parameter could not be found. Verify the name and try again.</p>
9058    ParameterNotFound(String),
9059}
9060
9061impl DeleteParameterError {
9062    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteParameterError> {
9063        if let Some(err) = proto::json::Error::parse(&res) {
9064            match err.typ.as_str() {
9065                "InternalServerError" => {
9066                    return RusotoError::Service(DeleteParameterError::InternalServerError(err.msg))
9067                }
9068                "ParameterNotFound" => {
9069                    return RusotoError::Service(DeleteParameterError::ParameterNotFound(err.msg))
9070                }
9071                "ValidationException" => return RusotoError::Validation(err.msg),
9072                _ => {}
9073            }
9074        }
9075        RusotoError::Unknown(res)
9076    }
9077}
9078impl fmt::Display for DeleteParameterError {
9079    #[allow(unused_variables)]
9080    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9081        match *self {
9082            DeleteParameterError::InternalServerError(ref cause) => write!(f, "{}", cause),
9083            DeleteParameterError::ParameterNotFound(ref cause) => write!(f, "{}", cause),
9084        }
9085    }
9086}
9087impl Error for DeleteParameterError {}
9088/// Errors returned by DeleteParameters
9089#[derive(Debug, PartialEq)]
9090pub enum DeleteParametersError {
9091    /// <p>An error occurred on the server side.</p>
9092    InternalServerError(String),
9093}
9094
9095impl DeleteParametersError {
9096    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteParametersError> {
9097        if let Some(err) = proto::json::Error::parse(&res) {
9098            match err.typ.as_str() {
9099                "InternalServerError" => {
9100                    return RusotoError::Service(DeleteParametersError::InternalServerError(
9101                        err.msg,
9102                    ))
9103                }
9104                "ValidationException" => return RusotoError::Validation(err.msg),
9105                _ => {}
9106            }
9107        }
9108        RusotoError::Unknown(res)
9109    }
9110}
9111impl fmt::Display for DeleteParametersError {
9112    #[allow(unused_variables)]
9113    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9114        match *self {
9115            DeleteParametersError::InternalServerError(ref cause) => write!(f, "{}", cause),
9116        }
9117    }
9118}
9119impl Error for DeleteParametersError {}
9120/// Errors returned by DeletePatchBaseline
9121#[derive(Debug, PartialEq)]
9122pub enum DeletePatchBaselineError {
9123    /// <p>An error occurred on the server side.</p>
9124    InternalServerError(String),
9125    /// <p>Error returned if an attempt is made to delete a patch baseline that is registered for a patch group.</p>
9126    ResourceInUse(String),
9127}
9128
9129impl DeletePatchBaselineError {
9130    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeletePatchBaselineError> {
9131        if let Some(err) = proto::json::Error::parse(&res) {
9132            match err.typ.as_str() {
9133                "InternalServerError" => {
9134                    return RusotoError::Service(DeletePatchBaselineError::InternalServerError(
9135                        err.msg,
9136                    ))
9137                }
9138                "ResourceInUseException" => {
9139                    return RusotoError::Service(DeletePatchBaselineError::ResourceInUse(err.msg))
9140                }
9141                "ValidationException" => return RusotoError::Validation(err.msg),
9142                _ => {}
9143            }
9144        }
9145        RusotoError::Unknown(res)
9146    }
9147}
9148impl fmt::Display for DeletePatchBaselineError {
9149    #[allow(unused_variables)]
9150    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9151        match *self {
9152            DeletePatchBaselineError::InternalServerError(ref cause) => write!(f, "{}", cause),
9153            DeletePatchBaselineError::ResourceInUse(ref cause) => write!(f, "{}", cause),
9154        }
9155    }
9156}
9157impl Error for DeletePatchBaselineError {}
9158/// Errors returned by DeleteResourceDataSync
9159#[derive(Debug, PartialEq)]
9160pub enum DeleteResourceDataSyncError {
9161    /// <p>An error occurred on the server side.</p>
9162    InternalServerError(String),
9163    /// <p>The specified sync configuration is invalid.</p>
9164    ResourceDataSyncInvalidConfiguration(String),
9165    /// <p>The specified sync name was not found.</p>
9166    ResourceDataSyncNotFound(String),
9167}
9168
9169impl DeleteResourceDataSyncError {
9170    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteResourceDataSyncError> {
9171        if let Some(err) = proto::json::Error::parse(&res) {
9172            match err.typ.as_str() {
9173                "InternalServerError" => {
9174                    return RusotoError::Service(DeleteResourceDataSyncError::InternalServerError(
9175                        err.msg,
9176                    ))
9177                }
9178                "ResourceDataSyncInvalidConfigurationException" => {
9179                    return RusotoError::Service(
9180                        DeleteResourceDataSyncError::ResourceDataSyncInvalidConfiguration(err.msg),
9181                    )
9182                }
9183                "ResourceDataSyncNotFoundException" => {
9184                    return RusotoError::Service(
9185                        DeleteResourceDataSyncError::ResourceDataSyncNotFound(err.msg),
9186                    )
9187                }
9188                "ValidationException" => return RusotoError::Validation(err.msg),
9189                _ => {}
9190            }
9191        }
9192        RusotoError::Unknown(res)
9193    }
9194}
9195impl fmt::Display for DeleteResourceDataSyncError {
9196    #[allow(unused_variables)]
9197    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9198        match *self {
9199            DeleteResourceDataSyncError::InternalServerError(ref cause) => write!(f, "{}", cause),
9200            DeleteResourceDataSyncError::ResourceDataSyncInvalidConfiguration(ref cause) => {
9201                write!(f, "{}", cause)
9202            }
9203            DeleteResourceDataSyncError::ResourceDataSyncNotFound(ref cause) => {
9204                write!(f, "{}", cause)
9205            }
9206        }
9207    }
9208}
9209impl Error for DeleteResourceDataSyncError {}
9210/// Errors returned by DeregisterManagedInstance
9211#[derive(Debug, PartialEq)]
9212pub enum DeregisterManagedInstanceError {
9213    /// <p>An error occurred on the server side.</p>
9214    InternalServerError(String),
9215    /// <p>The following problems can cause this exception:</p> <p>You do not have permission to access the instance.</p> <p>SSM Agent is not running. Verify that SSM Agent is running.</p> <p>SSM Agent is not registered with the SSM endpoint. Try reinstalling SSM Agent.</p> <p>The instance is not in valid state. Valid states are: Running, Pending, Stopped, Stopping. Invalid states are: Shutting-down and Terminated.</p>
9216    InvalidInstanceId(String),
9217}
9218
9219impl DeregisterManagedInstanceError {
9220    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeregisterManagedInstanceError> {
9221        if let Some(err) = proto::json::Error::parse(&res) {
9222            match err.typ.as_str() {
9223                "InternalServerError" => {
9224                    return RusotoError::Service(
9225                        DeregisterManagedInstanceError::InternalServerError(err.msg),
9226                    )
9227                }
9228                "InvalidInstanceId" => {
9229                    return RusotoError::Service(DeregisterManagedInstanceError::InvalidInstanceId(
9230                        err.msg,
9231                    ))
9232                }
9233                "ValidationException" => return RusotoError::Validation(err.msg),
9234                _ => {}
9235            }
9236        }
9237        RusotoError::Unknown(res)
9238    }
9239}
9240impl fmt::Display for DeregisterManagedInstanceError {
9241    #[allow(unused_variables)]
9242    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9243        match *self {
9244            DeregisterManagedInstanceError::InternalServerError(ref cause) => {
9245                write!(f, "{}", cause)
9246            }
9247            DeregisterManagedInstanceError::InvalidInstanceId(ref cause) => write!(f, "{}", cause),
9248        }
9249    }
9250}
9251impl Error for DeregisterManagedInstanceError {}
9252/// Errors returned by DeregisterPatchBaselineForPatchGroup
9253#[derive(Debug, PartialEq)]
9254pub enum DeregisterPatchBaselineForPatchGroupError {
9255    /// <p>An error occurred on the server side.</p>
9256    InternalServerError(String),
9257    /// <p>The resource ID is not valid. Verify that you entered the correct ID and try again.</p>
9258    InvalidResourceId(String),
9259}
9260
9261impl DeregisterPatchBaselineForPatchGroupError {
9262    pub fn from_response(
9263        res: BufferedHttpResponse,
9264    ) -> RusotoError<DeregisterPatchBaselineForPatchGroupError> {
9265        if let Some(err) = proto::json::Error::parse(&res) {
9266            match err.typ.as_str() {
9267                "InternalServerError" => {
9268                    return RusotoError::Service(
9269                        DeregisterPatchBaselineForPatchGroupError::InternalServerError(err.msg),
9270                    )
9271                }
9272                "InvalidResourceId" => {
9273                    return RusotoError::Service(
9274                        DeregisterPatchBaselineForPatchGroupError::InvalidResourceId(err.msg),
9275                    )
9276                }
9277                "ValidationException" => return RusotoError::Validation(err.msg),
9278                _ => {}
9279            }
9280        }
9281        RusotoError::Unknown(res)
9282    }
9283}
9284impl fmt::Display for DeregisterPatchBaselineForPatchGroupError {
9285    #[allow(unused_variables)]
9286    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9287        match *self {
9288            DeregisterPatchBaselineForPatchGroupError::InternalServerError(ref cause) => {
9289                write!(f, "{}", cause)
9290            }
9291            DeregisterPatchBaselineForPatchGroupError::InvalidResourceId(ref cause) => {
9292                write!(f, "{}", cause)
9293            }
9294        }
9295    }
9296}
9297impl Error for DeregisterPatchBaselineForPatchGroupError {}
9298/// Errors returned by DeregisterTargetFromMaintenanceWindow
9299#[derive(Debug, PartialEq)]
9300pub enum DeregisterTargetFromMaintenanceWindowError {
9301    /// <p>Error returned when the ID specified for a resource, such as a maintenance window or Patch baseline, doesn't exist.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
9302    DoesNotExist(String),
9303    /// <p>An error occurred on the server side.</p>
9304    InternalServerError(String),
9305    /// <p>You specified the <code>Safe</code> option for the DeregisterTargetFromMaintenanceWindow operation, but the target is still referenced in a task.</p>
9306    TargetInUse(String),
9307}
9308
9309impl DeregisterTargetFromMaintenanceWindowError {
9310    pub fn from_response(
9311        res: BufferedHttpResponse,
9312    ) -> RusotoError<DeregisterTargetFromMaintenanceWindowError> {
9313        if let Some(err) = proto::json::Error::parse(&res) {
9314            match err.typ.as_str() {
9315                "DoesNotExistException" => {
9316                    return RusotoError::Service(
9317                        DeregisterTargetFromMaintenanceWindowError::DoesNotExist(err.msg),
9318                    )
9319                }
9320                "InternalServerError" => {
9321                    return RusotoError::Service(
9322                        DeregisterTargetFromMaintenanceWindowError::InternalServerError(err.msg),
9323                    )
9324                }
9325                "TargetInUseException" => {
9326                    return RusotoError::Service(
9327                        DeregisterTargetFromMaintenanceWindowError::TargetInUse(err.msg),
9328                    )
9329                }
9330                "ValidationException" => return RusotoError::Validation(err.msg),
9331                _ => {}
9332            }
9333        }
9334        RusotoError::Unknown(res)
9335    }
9336}
9337impl fmt::Display for DeregisterTargetFromMaintenanceWindowError {
9338    #[allow(unused_variables)]
9339    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9340        match *self {
9341            DeregisterTargetFromMaintenanceWindowError::DoesNotExist(ref cause) => {
9342                write!(f, "{}", cause)
9343            }
9344            DeregisterTargetFromMaintenanceWindowError::InternalServerError(ref cause) => {
9345                write!(f, "{}", cause)
9346            }
9347            DeregisterTargetFromMaintenanceWindowError::TargetInUse(ref cause) => {
9348                write!(f, "{}", cause)
9349            }
9350        }
9351    }
9352}
9353impl Error for DeregisterTargetFromMaintenanceWindowError {}
9354/// Errors returned by DeregisterTaskFromMaintenanceWindow
9355#[derive(Debug, PartialEq)]
9356pub enum DeregisterTaskFromMaintenanceWindowError {
9357    /// <p>Error returned when the ID specified for a resource, such as a maintenance window or Patch baseline, doesn't exist.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
9358    DoesNotExist(String),
9359    /// <p>An error occurred on the server side.</p>
9360    InternalServerError(String),
9361}
9362
9363impl DeregisterTaskFromMaintenanceWindowError {
9364    pub fn from_response(
9365        res: BufferedHttpResponse,
9366    ) -> RusotoError<DeregisterTaskFromMaintenanceWindowError> {
9367        if let Some(err) = proto::json::Error::parse(&res) {
9368            match err.typ.as_str() {
9369                "DoesNotExistException" => {
9370                    return RusotoError::Service(
9371                        DeregisterTaskFromMaintenanceWindowError::DoesNotExist(err.msg),
9372                    )
9373                }
9374                "InternalServerError" => {
9375                    return RusotoError::Service(
9376                        DeregisterTaskFromMaintenanceWindowError::InternalServerError(err.msg),
9377                    )
9378                }
9379                "ValidationException" => return RusotoError::Validation(err.msg),
9380                _ => {}
9381            }
9382        }
9383        RusotoError::Unknown(res)
9384    }
9385}
9386impl fmt::Display for DeregisterTaskFromMaintenanceWindowError {
9387    #[allow(unused_variables)]
9388    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9389        match *self {
9390            DeregisterTaskFromMaintenanceWindowError::DoesNotExist(ref cause) => {
9391                write!(f, "{}", cause)
9392            }
9393            DeregisterTaskFromMaintenanceWindowError::InternalServerError(ref cause) => {
9394                write!(f, "{}", cause)
9395            }
9396        }
9397    }
9398}
9399impl Error for DeregisterTaskFromMaintenanceWindowError {}
9400/// Errors returned by DescribeActivations
9401#[derive(Debug, PartialEq)]
9402pub enum DescribeActivationsError {
9403    /// <p>An error occurred on the server side.</p>
9404    InternalServerError(String),
9405    /// <p>The filter name is not valid. Verify the you entered the correct name and try again.</p>
9406    InvalidFilter(String),
9407    /// <p>The specified token is not valid.</p>
9408    InvalidNextToken(String),
9409}
9410
9411impl DescribeActivationsError {
9412    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeActivationsError> {
9413        if let Some(err) = proto::json::Error::parse(&res) {
9414            match err.typ.as_str() {
9415                "InternalServerError" => {
9416                    return RusotoError::Service(DescribeActivationsError::InternalServerError(
9417                        err.msg,
9418                    ))
9419                }
9420                "InvalidFilter" => {
9421                    return RusotoError::Service(DescribeActivationsError::InvalidFilter(err.msg))
9422                }
9423                "InvalidNextToken" => {
9424                    return RusotoError::Service(DescribeActivationsError::InvalidNextToken(
9425                        err.msg,
9426                    ))
9427                }
9428                "ValidationException" => return RusotoError::Validation(err.msg),
9429                _ => {}
9430            }
9431        }
9432        RusotoError::Unknown(res)
9433    }
9434}
9435impl fmt::Display for DescribeActivationsError {
9436    #[allow(unused_variables)]
9437    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9438        match *self {
9439            DescribeActivationsError::InternalServerError(ref cause) => write!(f, "{}", cause),
9440            DescribeActivationsError::InvalidFilter(ref cause) => write!(f, "{}", cause),
9441            DescribeActivationsError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
9442        }
9443    }
9444}
9445impl Error for DescribeActivationsError {}
9446/// Errors returned by DescribeAssociation
9447#[derive(Debug, PartialEq)]
9448pub enum DescribeAssociationError {
9449    /// <p>The specified association does not exist.</p>
9450    AssociationDoesNotExist(String),
9451    /// <p>An error occurred on the server side.</p>
9452    InternalServerError(String),
9453    /// <p>The version you specified is not valid. Use ListAssociationVersions to view all versions of an association according to the association ID. Or, use the <code>$LATEST</code> parameter to view the latest version of the association.</p>
9454    InvalidAssociationVersion(String),
9455    /// <p>The specified document does not exist.</p>
9456    InvalidDocument(String),
9457    /// <p>The following problems can cause this exception:</p> <p>You do not have permission to access the instance.</p> <p>SSM Agent is not running. Verify that SSM Agent is running.</p> <p>SSM Agent is not registered with the SSM endpoint. Try reinstalling SSM Agent.</p> <p>The instance is not in valid state. Valid states are: Running, Pending, Stopped, Stopping. Invalid states are: Shutting-down and Terminated.</p>
9458    InvalidInstanceId(String),
9459}
9460
9461impl DescribeAssociationError {
9462    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeAssociationError> {
9463        if let Some(err) = proto::json::Error::parse(&res) {
9464            match err.typ.as_str() {
9465                "AssociationDoesNotExist" => {
9466                    return RusotoError::Service(DescribeAssociationError::AssociationDoesNotExist(
9467                        err.msg,
9468                    ))
9469                }
9470                "InternalServerError" => {
9471                    return RusotoError::Service(DescribeAssociationError::InternalServerError(
9472                        err.msg,
9473                    ))
9474                }
9475                "InvalidAssociationVersion" => {
9476                    return RusotoError::Service(
9477                        DescribeAssociationError::InvalidAssociationVersion(err.msg),
9478                    )
9479                }
9480                "InvalidDocument" => {
9481                    return RusotoError::Service(DescribeAssociationError::InvalidDocument(err.msg))
9482                }
9483                "InvalidInstanceId" => {
9484                    return RusotoError::Service(DescribeAssociationError::InvalidInstanceId(
9485                        err.msg,
9486                    ))
9487                }
9488                "ValidationException" => return RusotoError::Validation(err.msg),
9489                _ => {}
9490            }
9491        }
9492        RusotoError::Unknown(res)
9493    }
9494}
9495impl fmt::Display for DescribeAssociationError {
9496    #[allow(unused_variables)]
9497    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9498        match *self {
9499            DescribeAssociationError::AssociationDoesNotExist(ref cause) => write!(f, "{}", cause),
9500            DescribeAssociationError::InternalServerError(ref cause) => write!(f, "{}", cause),
9501            DescribeAssociationError::InvalidAssociationVersion(ref cause) => {
9502                write!(f, "{}", cause)
9503            }
9504            DescribeAssociationError::InvalidDocument(ref cause) => write!(f, "{}", cause),
9505            DescribeAssociationError::InvalidInstanceId(ref cause) => write!(f, "{}", cause),
9506        }
9507    }
9508}
9509impl Error for DescribeAssociationError {}
9510/// Errors returned by DescribeAssociationExecutionTargets
9511#[derive(Debug, PartialEq)]
9512pub enum DescribeAssociationExecutionTargetsError {
9513    /// <p>The specified association does not exist.</p>
9514    AssociationDoesNotExist(String),
9515    /// <p>The specified execution ID does not exist. Verify the ID number and try again.</p>
9516    AssociationExecutionDoesNotExist(String),
9517    /// <p>An error occurred on the server side.</p>
9518    InternalServerError(String),
9519    /// <p>The specified token is not valid.</p>
9520    InvalidNextToken(String),
9521}
9522
9523impl DescribeAssociationExecutionTargetsError {
9524    pub fn from_response(
9525        res: BufferedHttpResponse,
9526    ) -> RusotoError<DescribeAssociationExecutionTargetsError> {
9527        if let Some(err) = proto::json::Error::parse(&res) {
9528            match err.typ.as_str() {
9529                "AssociationDoesNotExist" => {
9530                    return RusotoError::Service(
9531                        DescribeAssociationExecutionTargetsError::AssociationDoesNotExist(err.msg),
9532                    )
9533                }
9534                "AssociationExecutionDoesNotExist" => {
9535                    return RusotoError::Service(
9536                        DescribeAssociationExecutionTargetsError::AssociationExecutionDoesNotExist(
9537                            err.msg,
9538                        ),
9539                    )
9540                }
9541                "InternalServerError" => {
9542                    return RusotoError::Service(
9543                        DescribeAssociationExecutionTargetsError::InternalServerError(err.msg),
9544                    )
9545                }
9546                "InvalidNextToken" => {
9547                    return RusotoError::Service(
9548                        DescribeAssociationExecutionTargetsError::InvalidNextToken(err.msg),
9549                    )
9550                }
9551                "ValidationException" => return RusotoError::Validation(err.msg),
9552                _ => {}
9553            }
9554        }
9555        RusotoError::Unknown(res)
9556    }
9557}
9558impl fmt::Display for DescribeAssociationExecutionTargetsError {
9559    #[allow(unused_variables)]
9560    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9561        match *self {
9562            DescribeAssociationExecutionTargetsError::AssociationDoesNotExist(ref cause) => {
9563                write!(f, "{}", cause)
9564            }
9565            DescribeAssociationExecutionTargetsError::AssociationExecutionDoesNotExist(
9566                ref cause,
9567            ) => write!(f, "{}", cause),
9568            DescribeAssociationExecutionTargetsError::InternalServerError(ref cause) => {
9569                write!(f, "{}", cause)
9570            }
9571            DescribeAssociationExecutionTargetsError::InvalidNextToken(ref cause) => {
9572                write!(f, "{}", cause)
9573            }
9574        }
9575    }
9576}
9577impl Error for DescribeAssociationExecutionTargetsError {}
9578/// Errors returned by DescribeAssociationExecutions
9579#[derive(Debug, PartialEq)]
9580pub enum DescribeAssociationExecutionsError {
9581    /// <p>The specified association does not exist.</p>
9582    AssociationDoesNotExist(String),
9583    /// <p>An error occurred on the server side.</p>
9584    InternalServerError(String),
9585    /// <p>The specified token is not valid.</p>
9586    InvalidNextToken(String),
9587}
9588
9589impl DescribeAssociationExecutionsError {
9590    pub fn from_response(
9591        res: BufferedHttpResponse,
9592    ) -> RusotoError<DescribeAssociationExecutionsError> {
9593        if let Some(err) = proto::json::Error::parse(&res) {
9594            match err.typ.as_str() {
9595                "AssociationDoesNotExist" => {
9596                    return RusotoError::Service(
9597                        DescribeAssociationExecutionsError::AssociationDoesNotExist(err.msg),
9598                    )
9599                }
9600                "InternalServerError" => {
9601                    return RusotoError::Service(
9602                        DescribeAssociationExecutionsError::InternalServerError(err.msg),
9603                    )
9604                }
9605                "InvalidNextToken" => {
9606                    return RusotoError::Service(
9607                        DescribeAssociationExecutionsError::InvalidNextToken(err.msg),
9608                    )
9609                }
9610                "ValidationException" => return RusotoError::Validation(err.msg),
9611                _ => {}
9612            }
9613        }
9614        RusotoError::Unknown(res)
9615    }
9616}
9617impl fmt::Display for DescribeAssociationExecutionsError {
9618    #[allow(unused_variables)]
9619    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9620        match *self {
9621            DescribeAssociationExecutionsError::AssociationDoesNotExist(ref cause) => {
9622                write!(f, "{}", cause)
9623            }
9624            DescribeAssociationExecutionsError::InternalServerError(ref cause) => {
9625                write!(f, "{}", cause)
9626            }
9627            DescribeAssociationExecutionsError::InvalidNextToken(ref cause) => {
9628                write!(f, "{}", cause)
9629            }
9630        }
9631    }
9632}
9633impl Error for DescribeAssociationExecutionsError {}
9634/// Errors returned by DescribeAutomationExecutions
9635#[derive(Debug, PartialEq)]
9636pub enum DescribeAutomationExecutionsError {
9637    /// <p>An error occurred on the server side.</p>
9638    InternalServerError(String),
9639    /// <p>The specified key is not valid.</p>
9640    InvalidFilterKey(String),
9641    /// <p>The filter value is not valid. Verify the value and try again.</p>
9642    InvalidFilterValue(String),
9643    /// <p>The specified token is not valid.</p>
9644    InvalidNextToken(String),
9645}
9646
9647impl DescribeAutomationExecutionsError {
9648    pub fn from_response(
9649        res: BufferedHttpResponse,
9650    ) -> RusotoError<DescribeAutomationExecutionsError> {
9651        if let Some(err) = proto::json::Error::parse(&res) {
9652            match err.typ.as_str() {
9653                "InternalServerError" => {
9654                    return RusotoError::Service(
9655                        DescribeAutomationExecutionsError::InternalServerError(err.msg),
9656                    )
9657                }
9658                "InvalidFilterKey" => {
9659                    return RusotoError::Service(
9660                        DescribeAutomationExecutionsError::InvalidFilterKey(err.msg),
9661                    )
9662                }
9663                "InvalidFilterValue" => {
9664                    return RusotoError::Service(
9665                        DescribeAutomationExecutionsError::InvalidFilterValue(err.msg),
9666                    )
9667                }
9668                "InvalidNextToken" => {
9669                    return RusotoError::Service(
9670                        DescribeAutomationExecutionsError::InvalidNextToken(err.msg),
9671                    )
9672                }
9673                "ValidationException" => return RusotoError::Validation(err.msg),
9674                _ => {}
9675            }
9676        }
9677        RusotoError::Unknown(res)
9678    }
9679}
9680impl fmt::Display for DescribeAutomationExecutionsError {
9681    #[allow(unused_variables)]
9682    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9683        match *self {
9684            DescribeAutomationExecutionsError::InternalServerError(ref cause) => {
9685                write!(f, "{}", cause)
9686            }
9687            DescribeAutomationExecutionsError::InvalidFilterKey(ref cause) => {
9688                write!(f, "{}", cause)
9689            }
9690            DescribeAutomationExecutionsError::InvalidFilterValue(ref cause) => {
9691                write!(f, "{}", cause)
9692            }
9693            DescribeAutomationExecutionsError::InvalidNextToken(ref cause) => {
9694                write!(f, "{}", cause)
9695            }
9696        }
9697    }
9698}
9699impl Error for DescribeAutomationExecutionsError {}
9700/// Errors returned by DescribeAutomationStepExecutions
9701#[derive(Debug, PartialEq)]
9702pub enum DescribeAutomationStepExecutionsError {
9703    /// <p>There is no automation execution information for the requested automation execution ID.</p>
9704    AutomationExecutionNotFound(String),
9705    /// <p>An error occurred on the server side.</p>
9706    InternalServerError(String),
9707    /// <p>The specified key is not valid.</p>
9708    InvalidFilterKey(String),
9709    /// <p>The filter value is not valid. Verify the value and try again.</p>
9710    InvalidFilterValue(String),
9711    /// <p>The specified token is not valid.</p>
9712    InvalidNextToken(String),
9713}
9714
9715impl DescribeAutomationStepExecutionsError {
9716    pub fn from_response(
9717        res: BufferedHttpResponse,
9718    ) -> RusotoError<DescribeAutomationStepExecutionsError> {
9719        if let Some(err) = proto::json::Error::parse(&res) {
9720            match err.typ.as_str() {
9721                "AutomationExecutionNotFoundException" => {
9722                    return RusotoError::Service(
9723                        DescribeAutomationStepExecutionsError::AutomationExecutionNotFound(err.msg),
9724                    )
9725                }
9726                "InternalServerError" => {
9727                    return RusotoError::Service(
9728                        DescribeAutomationStepExecutionsError::InternalServerError(err.msg),
9729                    )
9730                }
9731                "InvalidFilterKey" => {
9732                    return RusotoError::Service(
9733                        DescribeAutomationStepExecutionsError::InvalidFilterKey(err.msg),
9734                    )
9735                }
9736                "InvalidFilterValue" => {
9737                    return RusotoError::Service(
9738                        DescribeAutomationStepExecutionsError::InvalidFilterValue(err.msg),
9739                    )
9740                }
9741                "InvalidNextToken" => {
9742                    return RusotoError::Service(
9743                        DescribeAutomationStepExecutionsError::InvalidNextToken(err.msg),
9744                    )
9745                }
9746                "ValidationException" => return RusotoError::Validation(err.msg),
9747                _ => {}
9748            }
9749        }
9750        RusotoError::Unknown(res)
9751    }
9752}
9753impl fmt::Display for DescribeAutomationStepExecutionsError {
9754    #[allow(unused_variables)]
9755    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9756        match *self {
9757            DescribeAutomationStepExecutionsError::AutomationExecutionNotFound(ref cause) => {
9758                write!(f, "{}", cause)
9759            }
9760            DescribeAutomationStepExecutionsError::InternalServerError(ref cause) => {
9761                write!(f, "{}", cause)
9762            }
9763            DescribeAutomationStepExecutionsError::InvalidFilterKey(ref cause) => {
9764                write!(f, "{}", cause)
9765            }
9766            DescribeAutomationStepExecutionsError::InvalidFilterValue(ref cause) => {
9767                write!(f, "{}", cause)
9768            }
9769            DescribeAutomationStepExecutionsError::InvalidNextToken(ref cause) => {
9770                write!(f, "{}", cause)
9771            }
9772        }
9773    }
9774}
9775impl Error for DescribeAutomationStepExecutionsError {}
9776/// Errors returned by DescribeAvailablePatches
9777#[derive(Debug, PartialEq)]
9778pub enum DescribeAvailablePatchesError {
9779    /// <p>An error occurred on the server side.</p>
9780    InternalServerError(String),
9781}
9782
9783impl DescribeAvailablePatchesError {
9784    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeAvailablePatchesError> {
9785        if let Some(err) = proto::json::Error::parse(&res) {
9786            match err.typ.as_str() {
9787                "InternalServerError" => {
9788                    return RusotoError::Service(
9789                        DescribeAvailablePatchesError::InternalServerError(err.msg),
9790                    )
9791                }
9792                "ValidationException" => return RusotoError::Validation(err.msg),
9793                _ => {}
9794            }
9795        }
9796        RusotoError::Unknown(res)
9797    }
9798}
9799impl fmt::Display for DescribeAvailablePatchesError {
9800    #[allow(unused_variables)]
9801    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9802        match *self {
9803            DescribeAvailablePatchesError::InternalServerError(ref cause) => write!(f, "{}", cause),
9804        }
9805    }
9806}
9807impl Error for DescribeAvailablePatchesError {}
9808/// Errors returned by DescribeDocument
9809#[derive(Debug, PartialEq)]
9810pub enum DescribeDocumentError {
9811    /// <p>An error occurred on the server side.</p>
9812    InternalServerError(String),
9813    /// <p>The specified document does not exist.</p>
9814    InvalidDocument(String),
9815    /// <p>The document version is not valid or does not exist.</p>
9816    InvalidDocumentVersion(String),
9817}
9818
9819impl DescribeDocumentError {
9820    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeDocumentError> {
9821        if let Some(err) = proto::json::Error::parse(&res) {
9822            match err.typ.as_str() {
9823                "InternalServerError" => {
9824                    return RusotoError::Service(DescribeDocumentError::InternalServerError(
9825                        err.msg,
9826                    ))
9827                }
9828                "InvalidDocument" => {
9829                    return RusotoError::Service(DescribeDocumentError::InvalidDocument(err.msg))
9830                }
9831                "InvalidDocumentVersion" => {
9832                    return RusotoError::Service(DescribeDocumentError::InvalidDocumentVersion(
9833                        err.msg,
9834                    ))
9835                }
9836                "ValidationException" => return RusotoError::Validation(err.msg),
9837                _ => {}
9838            }
9839        }
9840        RusotoError::Unknown(res)
9841    }
9842}
9843impl fmt::Display for DescribeDocumentError {
9844    #[allow(unused_variables)]
9845    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9846        match *self {
9847            DescribeDocumentError::InternalServerError(ref cause) => write!(f, "{}", cause),
9848            DescribeDocumentError::InvalidDocument(ref cause) => write!(f, "{}", cause),
9849            DescribeDocumentError::InvalidDocumentVersion(ref cause) => write!(f, "{}", cause),
9850        }
9851    }
9852}
9853impl Error for DescribeDocumentError {}
9854/// Errors returned by DescribeDocumentPermission
9855#[derive(Debug, PartialEq)]
9856pub enum DescribeDocumentPermissionError {
9857    /// <p>An error occurred on the server side.</p>
9858    InternalServerError(String),
9859    /// <p>The specified document does not exist.</p>
9860    InvalidDocument(String),
9861    /// <p>The permission type is not supported. <i>Share</i> is the only supported permission type.</p>
9862    InvalidPermissionType(String),
9863}
9864
9865impl DescribeDocumentPermissionError {
9866    pub fn from_response(
9867        res: BufferedHttpResponse,
9868    ) -> RusotoError<DescribeDocumentPermissionError> {
9869        if let Some(err) = proto::json::Error::parse(&res) {
9870            match err.typ.as_str() {
9871                "InternalServerError" => {
9872                    return RusotoError::Service(
9873                        DescribeDocumentPermissionError::InternalServerError(err.msg),
9874                    )
9875                }
9876                "InvalidDocument" => {
9877                    return RusotoError::Service(DescribeDocumentPermissionError::InvalidDocument(
9878                        err.msg,
9879                    ))
9880                }
9881                "InvalidPermissionType" => {
9882                    return RusotoError::Service(
9883                        DescribeDocumentPermissionError::InvalidPermissionType(err.msg),
9884                    )
9885                }
9886                "ValidationException" => return RusotoError::Validation(err.msg),
9887                _ => {}
9888            }
9889        }
9890        RusotoError::Unknown(res)
9891    }
9892}
9893impl fmt::Display for DescribeDocumentPermissionError {
9894    #[allow(unused_variables)]
9895    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9896        match *self {
9897            DescribeDocumentPermissionError::InternalServerError(ref cause) => {
9898                write!(f, "{}", cause)
9899            }
9900            DescribeDocumentPermissionError::InvalidDocument(ref cause) => write!(f, "{}", cause),
9901            DescribeDocumentPermissionError::InvalidPermissionType(ref cause) => {
9902                write!(f, "{}", cause)
9903            }
9904        }
9905    }
9906}
9907impl Error for DescribeDocumentPermissionError {}
9908/// Errors returned by DescribeEffectiveInstanceAssociations
9909#[derive(Debug, PartialEq)]
9910pub enum DescribeEffectiveInstanceAssociationsError {
9911    /// <p>An error occurred on the server side.</p>
9912    InternalServerError(String),
9913    /// <p>The following problems can cause this exception:</p> <p>You do not have permission to access the instance.</p> <p>SSM Agent is not running. Verify that SSM Agent is running.</p> <p>SSM Agent is not registered with the SSM endpoint. Try reinstalling SSM Agent.</p> <p>The instance is not in valid state. Valid states are: Running, Pending, Stopped, Stopping. Invalid states are: Shutting-down and Terminated.</p>
9914    InvalidInstanceId(String),
9915    /// <p>The specified token is not valid.</p>
9916    InvalidNextToken(String),
9917}
9918
9919impl DescribeEffectiveInstanceAssociationsError {
9920    pub fn from_response(
9921        res: BufferedHttpResponse,
9922    ) -> RusotoError<DescribeEffectiveInstanceAssociationsError> {
9923        if let Some(err) = proto::json::Error::parse(&res) {
9924            match err.typ.as_str() {
9925                "InternalServerError" => {
9926                    return RusotoError::Service(
9927                        DescribeEffectiveInstanceAssociationsError::InternalServerError(err.msg),
9928                    )
9929                }
9930                "InvalidInstanceId" => {
9931                    return RusotoError::Service(
9932                        DescribeEffectiveInstanceAssociationsError::InvalidInstanceId(err.msg),
9933                    )
9934                }
9935                "InvalidNextToken" => {
9936                    return RusotoError::Service(
9937                        DescribeEffectiveInstanceAssociationsError::InvalidNextToken(err.msg),
9938                    )
9939                }
9940                "ValidationException" => return RusotoError::Validation(err.msg),
9941                _ => {}
9942            }
9943        }
9944        RusotoError::Unknown(res)
9945    }
9946}
9947impl fmt::Display for DescribeEffectiveInstanceAssociationsError {
9948    #[allow(unused_variables)]
9949    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
9950        match *self {
9951            DescribeEffectiveInstanceAssociationsError::InternalServerError(ref cause) => {
9952                write!(f, "{}", cause)
9953            }
9954            DescribeEffectiveInstanceAssociationsError::InvalidInstanceId(ref cause) => {
9955                write!(f, "{}", cause)
9956            }
9957            DescribeEffectiveInstanceAssociationsError::InvalidNextToken(ref cause) => {
9958                write!(f, "{}", cause)
9959            }
9960        }
9961    }
9962}
9963impl Error for DescribeEffectiveInstanceAssociationsError {}
9964/// Errors returned by DescribeEffectivePatchesForPatchBaseline
9965#[derive(Debug, PartialEq)]
9966pub enum DescribeEffectivePatchesForPatchBaselineError {
9967    /// <p>Error returned when the ID specified for a resource, such as a maintenance window or Patch baseline, doesn't exist.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
9968    DoesNotExist(String),
9969    /// <p>An error occurred on the server side.</p>
9970    InternalServerError(String),
9971    /// <p>The resource ID is not valid. Verify that you entered the correct ID and try again.</p>
9972    InvalidResourceId(String),
9973    /// <p>The operating systems you specified is not supported, or the operation is not supported for the operating system. Valid operating systems include: Windows, AmazonLinux, RedhatEnterpriseLinux, and Ubuntu.</p>
9974    UnsupportedOperatingSystem(String),
9975}
9976
9977impl DescribeEffectivePatchesForPatchBaselineError {
9978    pub fn from_response(
9979        res: BufferedHttpResponse,
9980    ) -> RusotoError<DescribeEffectivePatchesForPatchBaselineError> {
9981        if let Some(err) = proto::json::Error::parse(&res) {
9982            match err.typ.as_str() {
9983                "DoesNotExistException" => {
9984                    return RusotoError::Service(
9985                        DescribeEffectivePatchesForPatchBaselineError::DoesNotExist(err.msg),
9986                    )
9987                }
9988                "InternalServerError" => {
9989                    return RusotoError::Service(
9990                        DescribeEffectivePatchesForPatchBaselineError::InternalServerError(err.msg),
9991                    )
9992                }
9993                "InvalidResourceId" => {
9994                    return RusotoError::Service(
9995                        DescribeEffectivePatchesForPatchBaselineError::InvalidResourceId(err.msg),
9996                    )
9997                }
9998                "UnsupportedOperatingSystem" => {
9999                    return RusotoError::Service(
10000                        DescribeEffectivePatchesForPatchBaselineError::UnsupportedOperatingSystem(
10001                            err.msg,
10002                        ),
10003                    )
10004                }
10005                "ValidationException" => return RusotoError::Validation(err.msg),
10006                _ => {}
10007            }
10008        }
10009        RusotoError::Unknown(res)
10010    }
10011}
10012impl fmt::Display for DescribeEffectivePatchesForPatchBaselineError {
10013    #[allow(unused_variables)]
10014    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10015        match *self {
10016            DescribeEffectivePatchesForPatchBaselineError::DoesNotExist(ref cause) => {
10017                write!(f, "{}", cause)
10018            }
10019            DescribeEffectivePatchesForPatchBaselineError::InternalServerError(ref cause) => {
10020                write!(f, "{}", cause)
10021            }
10022            DescribeEffectivePatchesForPatchBaselineError::InvalidResourceId(ref cause) => {
10023                write!(f, "{}", cause)
10024            }
10025            DescribeEffectivePatchesForPatchBaselineError::UnsupportedOperatingSystem(
10026                ref cause,
10027            ) => write!(f, "{}", cause),
10028        }
10029    }
10030}
10031impl Error for DescribeEffectivePatchesForPatchBaselineError {}
10032/// Errors returned by DescribeInstanceAssociationsStatus
10033#[derive(Debug, PartialEq)]
10034pub enum DescribeInstanceAssociationsStatusError {
10035    /// <p>An error occurred on the server side.</p>
10036    InternalServerError(String),
10037    /// <p>The following problems can cause this exception:</p> <p>You do not have permission to access the instance.</p> <p>SSM Agent is not running. Verify that SSM Agent is running.</p> <p>SSM Agent is not registered with the SSM endpoint. Try reinstalling SSM Agent.</p> <p>The instance is not in valid state. Valid states are: Running, Pending, Stopped, Stopping. Invalid states are: Shutting-down and Terminated.</p>
10038    InvalidInstanceId(String),
10039    /// <p>The specified token is not valid.</p>
10040    InvalidNextToken(String),
10041}
10042
10043impl DescribeInstanceAssociationsStatusError {
10044    pub fn from_response(
10045        res: BufferedHttpResponse,
10046    ) -> RusotoError<DescribeInstanceAssociationsStatusError> {
10047        if let Some(err) = proto::json::Error::parse(&res) {
10048            match err.typ.as_str() {
10049                "InternalServerError" => {
10050                    return RusotoError::Service(
10051                        DescribeInstanceAssociationsStatusError::InternalServerError(err.msg),
10052                    )
10053                }
10054                "InvalidInstanceId" => {
10055                    return RusotoError::Service(
10056                        DescribeInstanceAssociationsStatusError::InvalidInstanceId(err.msg),
10057                    )
10058                }
10059                "InvalidNextToken" => {
10060                    return RusotoError::Service(
10061                        DescribeInstanceAssociationsStatusError::InvalidNextToken(err.msg),
10062                    )
10063                }
10064                "ValidationException" => return RusotoError::Validation(err.msg),
10065                _ => {}
10066            }
10067        }
10068        RusotoError::Unknown(res)
10069    }
10070}
10071impl fmt::Display for DescribeInstanceAssociationsStatusError {
10072    #[allow(unused_variables)]
10073    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10074        match *self {
10075            DescribeInstanceAssociationsStatusError::InternalServerError(ref cause) => {
10076                write!(f, "{}", cause)
10077            }
10078            DescribeInstanceAssociationsStatusError::InvalidInstanceId(ref cause) => {
10079                write!(f, "{}", cause)
10080            }
10081            DescribeInstanceAssociationsStatusError::InvalidNextToken(ref cause) => {
10082                write!(f, "{}", cause)
10083            }
10084        }
10085    }
10086}
10087impl Error for DescribeInstanceAssociationsStatusError {}
10088/// Errors returned by DescribeInstanceInformation
10089#[derive(Debug, PartialEq)]
10090pub enum DescribeInstanceInformationError {
10091    /// <p>An error occurred on the server side.</p>
10092    InternalServerError(String),
10093    /// <p>The specified key is not valid.</p>
10094    InvalidFilterKey(String),
10095    /// <p>The following problems can cause this exception:</p> <p>You do not have permission to access the instance.</p> <p>SSM Agent is not running. Verify that SSM Agent is running.</p> <p>SSM Agent is not registered with the SSM endpoint. Try reinstalling SSM Agent.</p> <p>The instance is not in valid state. Valid states are: Running, Pending, Stopped, Stopping. Invalid states are: Shutting-down and Terminated.</p>
10096    InvalidInstanceId(String),
10097    /// <p>The specified filter value is not valid.</p>
10098    InvalidInstanceInformationFilterValue(String),
10099    /// <p>The specified token is not valid.</p>
10100    InvalidNextToken(String),
10101}
10102
10103impl DescribeInstanceInformationError {
10104    pub fn from_response(
10105        res: BufferedHttpResponse,
10106    ) -> RusotoError<DescribeInstanceInformationError> {
10107        if let Some(err) = proto::json::Error::parse(&res) {
10108            match err.typ.as_str() {
10109                "InternalServerError" => {
10110                    return RusotoError::Service(
10111                        DescribeInstanceInformationError::InternalServerError(err.msg),
10112                    )
10113                }
10114                "InvalidFilterKey" => {
10115                    return RusotoError::Service(
10116                        DescribeInstanceInformationError::InvalidFilterKey(err.msg),
10117                    )
10118                }
10119                "InvalidInstanceId" => {
10120                    return RusotoError::Service(
10121                        DescribeInstanceInformationError::InvalidInstanceId(err.msg),
10122                    )
10123                }
10124                "InvalidInstanceInformationFilterValue" => {
10125                    return RusotoError::Service(
10126                        DescribeInstanceInformationError::InvalidInstanceInformationFilterValue(
10127                            err.msg,
10128                        ),
10129                    )
10130                }
10131                "InvalidNextToken" => {
10132                    return RusotoError::Service(
10133                        DescribeInstanceInformationError::InvalidNextToken(err.msg),
10134                    )
10135                }
10136                "ValidationException" => return RusotoError::Validation(err.msg),
10137                _ => {}
10138            }
10139        }
10140        RusotoError::Unknown(res)
10141    }
10142}
10143impl fmt::Display for DescribeInstanceInformationError {
10144    #[allow(unused_variables)]
10145    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10146        match *self {
10147            DescribeInstanceInformationError::InternalServerError(ref cause) => {
10148                write!(f, "{}", cause)
10149            }
10150            DescribeInstanceInformationError::InvalidFilterKey(ref cause) => write!(f, "{}", cause),
10151            DescribeInstanceInformationError::InvalidInstanceId(ref cause) => {
10152                write!(f, "{}", cause)
10153            }
10154            DescribeInstanceInformationError::InvalidInstanceInformationFilterValue(ref cause) => {
10155                write!(f, "{}", cause)
10156            }
10157            DescribeInstanceInformationError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
10158        }
10159    }
10160}
10161impl Error for DescribeInstanceInformationError {}
10162/// Errors returned by DescribeInstancePatchStates
10163#[derive(Debug, PartialEq)]
10164pub enum DescribeInstancePatchStatesError {
10165    /// <p>An error occurred on the server side.</p>
10166    InternalServerError(String),
10167    /// <p>The specified token is not valid.</p>
10168    InvalidNextToken(String),
10169}
10170
10171impl DescribeInstancePatchStatesError {
10172    pub fn from_response(
10173        res: BufferedHttpResponse,
10174    ) -> RusotoError<DescribeInstancePatchStatesError> {
10175        if let Some(err) = proto::json::Error::parse(&res) {
10176            match err.typ.as_str() {
10177                "InternalServerError" => {
10178                    return RusotoError::Service(
10179                        DescribeInstancePatchStatesError::InternalServerError(err.msg),
10180                    )
10181                }
10182                "InvalidNextToken" => {
10183                    return RusotoError::Service(
10184                        DescribeInstancePatchStatesError::InvalidNextToken(err.msg),
10185                    )
10186                }
10187                "ValidationException" => return RusotoError::Validation(err.msg),
10188                _ => {}
10189            }
10190        }
10191        RusotoError::Unknown(res)
10192    }
10193}
10194impl fmt::Display for DescribeInstancePatchStatesError {
10195    #[allow(unused_variables)]
10196    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10197        match *self {
10198            DescribeInstancePatchStatesError::InternalServerError(ref cause) => {
10199                write!(f, "{}", cause)
10200            }
10201            DescribeInstancePatchStatesError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
10202        }
10203    }
10204}
10205impl Error for DescribeInstancePatchStatesError {}
10206/// Errors returned by DescribeInstancePatchStatesForPatchGroup
10207#[derive(Debug, PartialEq)]
10208pub enum DescribeInstancePatchStatesForPatchGroupError {
10209    /// <p>An error occurred on the server side.</p>
10210    InternalServerError(String),
10211    /// <p>The filter name is not valid. Verify the you entered the correct name and try again.</p>
10212    InvalidFilter(String),
10213    /// <p>The specified token is not valid.</p>
10214    InvalidNextToken(String),
10215}
10216
10217impl DescribeInstancePatchStatesForPatchGroupError {
10218    pub fn from_response(
10219        res: BufferedHttpResponse,
10220    ) -> RusotoError<DescribeInstancePatchStatesForPatchGroupError> {
10221        if let Some(err) = proto::json::Error::parse(&res) {
10222            match err.typ.as_str() {
10223                "InternalServerError" => {
10224                    return RusotoError::Service(
10225                        DescribeInstancePatchStatesForPatchGroupError::InternalServerError(err.msg),
10226                    )
10227                }
10228                "InvalidFilter" => {
10229                    return RusotoError::Service(
10230                        DescribeInstancePatchStatesForPatchGroupError::InvalidFilter(err.msg),
10231                    )
10232                }
10233                "InvalidNextToken" => {
10234                    return RusotoError::Service(
10235                        DescribeInstancePatchStatesForPatchGroupError::InvalidNextToken(err.msg),
10236                    )
10237                }
10238                "ValidationException" => return RusotoError::Validation(err.msg),
10239                _ => {}
10240            }
10241        }
10242        RusotoError::Unknown(res)
10243    }
10244}
10245impl fmt::Display for DescribeInstancePatchStatesForPatchGroupError {
10246    #[allow(unused_variables)]
10247    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10248        match *self {
10249            DescribeInstancePatchStatesForPatchGroupError::InternalServerError(ref cause) => {
10250                write!(f, "{}", cause)
10251            }
10252            DescribeInstancePatchStatesForPatchGroupError::InvalidFilter(ref cause) => {
10253                write!(f, "{}", cause)
10254            }
10255            DescribeInstancePatchStatesForPatchGroupError::InvalidNextToken(ref cause) => {
10256                write!(f, "{}", cause)
10257            }
10258        }
10259    }
10260}
10261impl Error for DescribeInstancePatchStatesForPatchGroupError {}
10262/// Errors returned by DescribeInstancePatches
10263#[derive(Debug, PartialEq)]
10264pub enum DescribeInstancePatchesError {
10265    /// <p>An error occurred on the server side.</p>
10266    InternalServerError(String),
10267    /// <p>The filter name is not valid. Verify the you entered the correct name and try again.</p>
10268    InvalidFilter(String),
10269    /// <p>The following problems can cause this exception:</p> <p>You do not have permission to access the instance.</p> <p>SSM Agent is not running. Verify that SSM Agent is running.</p> <p>SSM Agent is not registered with the SSM endpoint. Try reinstalling SSM Agent.</p> <p>The instance is not in valid state. Valid states are: Running, Pending, Stopped, Stopping. Invalid states are: Shutting-down and Terminated.</p>
10270    InvalidInstanceId(String),
10271    /// <p>The specified token is not valid.</p>
10272    InvalidNextToken(String),
10273}
10274
10275impl DescribeInstancePatchesError {
10276    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeInstancePatchesError> {
10277        if let Some(err) = proto::json::Error::parse(&res) {
10278            match err.typ.as_str() {
10279                "InternalServerError" => {
10280                    return RusotoError::Service(DescribeInstancePatchesError::InternalServerError(
10281                        err.msg,
10282                    ))
10283                }
10284                "InvalidFilter" => {
10285                    return RusotoError::Service(DescribeInstancePatchesError::InvalidFilter(
10286                        err.msg,
10287                    ))
10288                }
10289                "InvalidInstanceId" => {
10290                    return RusotoError::Service(DescribeInstancePatchesError::InvalidInstanceId(
10291                        err.msg,
10292                    ))
10293                }
10294                "InvalidNextToken" => {
10295                    return RusotoError::Service(DescribeInstancePatchesError::InvalidNextToken(
10296                        err.msg,
10297                    ))
10298                }
10299                "ValidationException" => return RusotoError::Validation(err.msg),
10300                _ => {}
10301            }
10302        }
10303        RusotoError::Unknown(res)
10304    }
10305}
10306impl fmt::Display for DescribeInstancePatchesError {
10307    #[allow(unused_variables)]
10308    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10309        match *self {
10310            DescribeInstancePatchesError::InternalServerError(ref cause) => write!(f, "{}", cause),
10311            DescribeInstancePatchesError::InvalidFilter(ref cause) => write!(f, "{}", cause),
10312            DescribeInstancePatchesError::InvalidInstanceId(ref cause) => write!(f, "{}", cause),
10313            DescribeInstancePatchesError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
10314        }
10315    }
10316}
10317impl Error for DescribeInstancePatchesError {}
10318/// Errors returned by DescribeInventoryDeletions
10319#[derive(Debug, PartialEq)]
10320pub enum DescribeInventoryDeletionsError {
10321    /// <p>An error occurred on the server side.</p>
10322    InternalServerError(String),
10323    /// <p>The ID specified for the delete operation does not exist or is not valid. Verify the ID and try again.</p>
10324    InvalidDeletionId(String),
10325    /// <p>The specified token is not valid.</p>
10326    InvalidNextToken(String),
10327}
10328
10329impl DescribeInventoryDeletionsError {
10330    pub fn from_response(
10331        res: BufferedHttpResponse,
10332    ) -> RusotoError<DescribeInventoryDeletionsError> {
10333        if let Some(err) = proto::json::Error::parse(&res) {
10334            match err.typ.as_str() {
10335                "InternalServerError" => {
10336                    return RusotoError::Service(
10337                        DescribeInventoryDeletionsError::InternalServerError(err.msg),
10338                    )
10339                }
10340                "InvalidDeletionIdException" => {
10341                    return RusotoError::Service(
10342                        DescribeInventoryDeletionsError::InvalidDeletionId(err.msg),
10343                    )
10344                }
10345                "InvalidNextToken" => {
10346                    return RusotoError::Service(DescribeInventoryDeletionsError::InvalidNextToken(
10347                        err.msg,
10348                    ))
10349                }
10350                "ValidationException" => return RusotoError::Validation(err.msg),
10351                _ => {}
10352            }
10353        }
10354        RusotoError::Unknown(res)
10355    }
10356}
10357impl fmt::Display for DescribeInventoryDeletionsError {
10358    #[allow(unused_variables)]
10359    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10360        match *self {
10361            DescribeInventoryDeletionsError::InternalServerError(ref cause) => {
10362                write!(f, "{}", cause)
10363            }
10364            DescribeInventoryDeletionsError::InvalidDeletionId(ref cause) => write!(f, "{}", cause),
10365            DescribeInventoryDeletionsError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
10366        }
10367    }
10368}
10369impl Error for DescribeInventoryDeletionsError {}
10370/// Errors returned by DescribeMaintenanceWindowExecutionTaskInvocations
10371#[derive(Debug, PartialEq)]
10372pub enum DescribeMaintenanceWindowExecutionTaskInvocationsError {
10373    /// <p>Error returned when the ID specified for a resource, such as a maintenance window or Patch baseline, doesn't exist.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
10374    DoesNotExist(String),
10375    /// <p>An error occurred on the server side.</p>
10376    InternalServerError(String),
10377}
10378
10379impl DescribeMaintenanceWindowExecutionTaskInvocationsError {
10380    pub fn from_response(
10381        res: BufferedHttpResponse,
10382    ) -> RusotoError<DescribeMaintenanceWindowExecutionTaskInvocationsError> {
10383        if let Some(err) = proto::json::Error::parse(&res) {
10384            match err.typ.as_str() {
10385                "DoesNotExistException" => {
10386                    return RusotoError::Service(
10387                        DescribeMaintenanceWindowExecutionTaskInvocationsError::DoesNotExist(
10388                            err.msg,
10389                        ),
10390                    )
10391                }
10392                "InternalServerError" => {
10393                    return RusotoError::Service(
10394                        DescribeMaintenanceWindowExecutionTaskInvocationsError::InternalServerError(
10395                            err.msg,
10396                        ),
10397                    )
10398                }
10399                "ValidationException" => return RusotoError::Validation(err.msg),
10400                _ => {}
10401            }
10402        }
10403        RusotoError::Unknown(res)
10404    }
10405}
10406impl fmt::Display for DescribeMaintenanceWindowExecutionTaskInvocationsError {
10407    #[allow(unused_variables)]
10408    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10409        match *self {
10410            DescribeMaintenanceWindowExecutionTaskInvocationsError::DoesNotExist(ref cause) => {
10411                write!(f, "{}", cause)
10412            }
10413            DescribeMaintenanceWindowExecutionTaskInvocationsError::InternalServerError(
10414                ref cause,
10415            ) => write!(f, "{}", cause),
10416        }
10417    }
10418}
10419impl Error for DescribeMaintenanceWindowExecutionTaskInvocationsError {}
10420/// Errors returned by DescribeMaintenanceWindowExecutionTasks
10421#[derive(Debug, PartialEq)]
10422pub enum DescribeMaintenanceWindowExecutionTasksError {
10423    /// <p>Error returned when the ID specified for a resource, such as a maintenance window or Patch baseline, doesn't exist.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
10424    DoesNotExist(String),
10425    /// <p>An error occurred on the server side.</p>
10426    InternalServerError(String),
10427}
10428
10429impl DescribeMaintenanceWindowExecutionTasksError {
10430    pub fn from_response(
10431        res: BufferedHttpResponse,
10432    ) -> RusotoError<DescribeMaintenanceWindowExecutionTasksError> {
10433        if let Some(err) = proto::json::Error::parse(&res) {
10434            match err.typ.as_str() {
10435                "DoesNotExistException" => {
10436                    return RusotoError::Service(
10437                        DescribeMaintenanceWindowExecutionTasksError::DoesNotExist(err.msg),
10438                    )
10439                }
10440                "InternalServerError" => {
10441                    return RusotoError::Service(
10442                        DescribeMaintenanceWindowExecutionTasksError::InternalServerError(err.msg),
10443                    )
10444                }
10445                "ValidationException" => return RusotoError::Validation(err.msg),
10446                _ => {}
10447            }
10448        }
10449        RusotoError::Unknown(res)
10450    }
10451}
10452impl fmt::Display for DescribeMaintenanceWindowExecutionTasksError {
10453    #[allow(unused_variables)]
10454    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10455        match *self {
10456            DescribeMaintenanceWindowExecutionTasksError::DoesNotExist(ref cause) => {
10457                write!(f, "{}", cause)
10458            }
10459            DescribeMaintenanceWindowExecutionTasksError::InternalServerError(ref cause) => {
10460                write!(f, "{}", cause)
10461            }
10462        }
10463    }
10464}
10465impl Error for DescribeMaintenanceWindowExecutionTasksError {}
10466/// Errors returned by DescribeMaintenanceWindowExecutions
10467#[derive(Debug, PartialEq)]
10468pub enum DescribeMaintenanceWindowExecutionsError {
10469    /// <p>An error occurred on the server side.</p>
10470    InternalServerError(String),
10471}
10472
10473impl DescribeMaintenanceWindowExecutionsError {
10474    pub fn from_response(
10475        res: BufferedHttpResponse,
10476    ) -> RusotoError<DescribeMaintenanceWindowExecutionsError> {
10477        if let Some(err) = proto::json::Error::parse(&res) {
10478            match err.typ.as_str() {
10479                "InternalServerError" => {
10480                    return RusotoError::Service(
10481                        DescribeMaintenanceWindowExecutionsError::InternalServerError(err.msg),
10482                    )
10483                }
10484                "ValidationException" => return RusotoError::Validation(err.msg),
10485                _ => {}
10486            }
10487        }
10488        RusotoError::Unknown(res)
10489    }
10490}
10491impl fmt::Display for DescribeMaintenanceWindowExecutionsError {
10492    #[allow(unused_variables)]
10493    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10494        match *self {
10495            DescribeMaintenanceWindowExecutionsError::InternalServerError(ref cause) => {
10496                write!(f, "{}", cause)
10497            }
10498        }
10499    }
10500}
10501impl Error for DescribeMaintenanceWindowExecutionsError {}
10502/// Errors returned by DescribeMaintenanceWindowSchedule
10503#[derive(Debug, PartialEq)]
10504pub enum DescribeMaintenanceWindowScheduleError {
10505    /// <p>Error returned when the ID specified for a resource, such as a maintenance window or Patch baseline, doesn't exist.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
10506    DoesNotExist(String),
10507    /// <p>An error occurred on the server side.</p>
10508    InternalServerError(String),
10509}
10510
10511impl DescribeMaintenanceWindowScheduleError {
10512    pub fn from_response(
10513        res: BufferedHttpResponse,
10514    ) -> RusotoError<DescribeMaintenanceWindowScheduleError> {
10515        if let Some(err) = proto::json::Error::parse(&res) {
10516            match err.typ.as_str() {
10517                "DoesNotExistException" => {
10518                    return RusotoError::Service(
10519                        DescribeMaintenanceWindowScheduleError::DoesNotExist(err.msg),
10520                    )
10521                }
10522                "InternalServerError" => {
10523                    return RusotoError::Service(
10524                        DescribeMaintenanceWindowScheduleError::InternalServerError(err.msg),
10525                    )
10526                }
10527                "ValidationException" => return RusotoError::Validation(err.msg),
10528                _ => {}
10529            }
10530        }
10531        RusotoError::Unknown(res)
10532    }
10533}
10534impl fmt::Display for DescribeMaintenanceWindowScheduleError {
10535    #[allow(unused_variables)]
10536    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10537        match *self {
10538            DescribeMaintenanceWindowScheduleError::DoesNotExist(ref cause) => {
10539                write!(f, "{}", cause)
10540            }
10541            DescribeMaintenanceWindowScheduleError::InternalServerError(ref cause) => {
10542                write!(f, "{}", cause)
10543            }
10544        }
10545    }
10546}
10547impl Error for DescribeMaintenanceWindowScheduleError {}
10548/// Errors returned by DescribeMaintenanceWindowTargets
10549#[derive(Debug, PartialEq)]
10550pub enum DescribeMaintenanceWindowTargetsError {
10551    /// <p>Error returned when the ID specified for a resource, such as a maintenance window or Patch baseline, doesn't exist.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
10552    DoesNotExist(String),
10553    /// <p>An error occurred on the server side.</p>
10554    InternalServerError(String),
10555}
10556
10557impl DescribeMaintenanceWindowTargetsError {
10558    pub fn from_response(
10559        res: BufferedHttpResponse,
10560    ) -> RusotoError<DescribeMaintenanceWindowTargetsError> {
10561        if let Some(err) = proto::json::Error::parse(&res) {
10562            match err.typ.as_str() {
10563                "DoesNotExistException" => {
10564                    return RusotoError::Service(
10565                        DescribeMaintenanceWindowTargetsError::DoesNotExist(err.msg),
10566                    )
10567                }
10568                "InternalServerError" => {
10569                    return RusotoError::Service(
10570                        DescribeMaintenanceWindowTargetsError::InternalServerError(err.msg),
10571                    )
10572                }
10573                "ValidationException" => return RusotoError::Validation(err.msg),
10574                _ => {}
10575            }
10576        }
10577        RusotoError::Unknown(res)
10578    }
10579}
10580impl fmt::Display for DescribeMaintenanceWindowTargetsError {
10581    #[allow(unused_variables)]
10582    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10583        match *self {
10584            DescribeMaintenanceWindowTargetsError::DoesNotExist(ref cause) => {
10585                write!(f, "{}", cause)
10586            }
10587            DescribeMaintenanceWindowTargetsError::InternalServerError(ref cause) => {
10588                write!(f, "{}", cause)
10589            }
10590        }
10591    }
10592}
10593impl Error for DescribeMaintenanceWindowTargetsError {}
10594/// Errors returned by DescribeMaintenanceWindowTasks
10595#[derive(Debug, PartialEq)]
10596pub enum DescribeMaintenanceWindowTasksError {
10597    /// <p>Error returned when the ID specified for a resource, such as a maintenance window or Patch baseline, doesn't exist.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
10598    DoesNotExist(String),
10599    /// <p>An error occurred on the server side.</p>
10600    InternalServerError(String),
10601}
10602
10603impl DescribeMaintenanceWindowTasksError {
10604    pub fn from_response(
10605        res: BufferedHttpResponse,
10606    ) -> RusotoError<DescribeMaintenanceWindowTasksError> {
10607        if let Some(err) = proto::json::Error::parse(&res) {
10608            match err.typ.as_str() {
10609                "DoesNotExistException" => {
10610                    return RusotoError::Service(DescribeMaintenanceWindowTasksError::DoesNotExist(
10611                        err.msg,
10612                    ))
10613                }
10614                "InternalServerError" => {
10615                    return RusotoError::Service(
10616                        DescribeMaintenanceWindowTasksError::InternalServerError(err.msg),
10617                    )
10618                }
10619                "ValidationException" => return RusotoError::Validation(err.msg),
10620                _ => {}
10621            }
10622        }
10623        RusotoError::Unknown(res)
10624    }
10625}
10626impl fmt::Display for DescribeMaintenanceWindowTasksError {
10627    #[allow(unused_variables)]
10628    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10629        match *self {
10630            DescribeMaintenanceWindowTasksError::DoesNotExist(ref cause) => write!(f, "{}", cause),
10631            DescribeMaintenanceWindowTasksError::InternalServerError(ref cause) => {
10632                write!(f, "{}", cause)
10633            }
10634        }
10635    }
10636}
10637impl Error for DescribeMaintenanceWindowTasksError {}
10638/// Errors returned by DescribeMaintenanceWindows
10639#[derive(Debug, PartialEq)]
10640pub enum DescribeMaintenanceWindowsError {
10641    /// <p>An error occurred on the server side.</p>
10642    InternalServerError(String),
10643}
10644
10645impl DescribeMaintenanceWindowsError {
10646    pub fn from_response(
10647        res: BufferedHttpResponse,
10648    ) -> RusotoError<DescribeMaintenanceWindowsError> {
10649        if let Some(err) = proto::json::Error::parse(&res) {
10650            match err.typ.as_str() {
10651                "InternalServerError" => {
10652                    return RusotoError::Service(
10653                        DescribeMaintenanceWindowsError::InternalServerError(err.msg),
10654                    )
10655                }
10656                "ValidationException" => return RusotoError::Validation(err.msg),
10657                _ => {}
10658            }
10659        }
10660        RusotoError::Unknown(res)
10661    }
10662}
10663impl fmt::Display for DescribeMaintenanceWindowsError {
10664    #[allow(unused_variables)]
10665    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10666        match *self {
10667            DescribeMaintenanceWindowsError::InternalServerError(ref cause) => {
10668                write!(f, "{}", cause)
10669            }
10670        }
10671    }
10672}
10673impl Error for DescribeMaintenanceWindowsError {}
10674/// Errors returned by DescribeMaintenanceWindowsForTarget
10675#[derive(Debug, PartialEq)]
10676pub enum DescribeMaintenanceWindowsForTargetError {
10677    /// <p>An error occurred on the server side.</p>
10678    InternalServerError(String),
10679}
10680
10681impl DescribeMaintenanceWindowsForTargetError {
10682    pub fn from_response(
10683        res: BufferedHttpResponse,
10684    ) -> RusotoError<DescribeMaintenanceWindowsForTargetError> {
10685        if let Some(err) = proto::json::Error::parse(&res) {
10686            match err.typ.as_str() {
10687                "InternalServerError" => {
10688                    return RusotoError::Service(
10689                        DescribeMaintenanceWindowsForTargetError::InternalServerError(err.msg),
10690                    )
10691                }
10692                "ValidationException" => return RusotoError::Validation(err.msg),
10693                _ => {}
10694            }
10695        }
10696        RusotoError::Unknown(res)
10697    }
10698}
10699impl fmt::Display for DescribeMaintenanceWindowsForTargetError {
10700    #[allow(unused_variables)]
10701    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10702        match *self {
10703            DescribeMaintenanceWindowsForTargetError::InternalServerError(ref cause) => {
10704                write!(f, "{}", cause)
10705            }
10706        }
10707    }
10708}
10709impl Error for DescribeMaintenanceWindowsForTargetError {}
10710/// Errors returned by DescribeOpsItems
10711#[derive(Debug, PartialEq)]
10712pub enum DescribeOpsItemsError {
10713    /// <p>An error occurred on the server side.</p>
10714    InternalServerError(String),
10715}
10716
10717impl DescribeOpsItemsError {
10718    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeOpsItemsError> {
10719        if let Some(err) = proto::json::Error::parse(&res) {
10720            match err.typ.as_str() {
10721                "InternalServerError" => {
10722                    return RusotoError::Service(DescribeOpsItemsError::InternalServerError(
10723                        err.msg,
10724                    ))
10725                }
10726                "ValidationException" => return RusotoError::Validation(err.msg),
10727                _ => {}
10728            }
10729        }
10730        RusotoError::Unknown(res)
10731    }
10732}
10733impl fmt::Display for DescribeOpsItemsError {
10734    #[allow(unused_variables)]
10735    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10736        match *self {
10737            DescribeOpsItemsError::InternalServerError(ref cause) => write!(f, "{}", cause),
10738        }
10739    }
10740}
10741impl Error for DescribeOpsItemsError {}
10742/// Errors returned by DescribeParameters
10743#[derive(Debug, PartialEq)]
10744pub enum DescribeParametersError {
10745    /// <p>An error occurred on the server side.</p>
10746    InternalServerError(String),
10747    /// <p>The specified key is not valid.</p>
10748    InvalidFilterKey(String),
10749    /// <p>The specified filter option is not valid. Valid options are Equals and BeginsWith. For Path filter, valid options are Recursive and OneLevel.</p>
10750    InvalidFilterOption(String),
10751    /// <p>The filter value is not valid. Verify the value and try again.</p>
10752    InvalidFilterValue(String),
10753    /// <p>The specified token is not valid.</p>
10754    InvalidNextToken(String),
10755}
10756
10757impl DescribeParametersError {
10758    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeParametersError> {
10759        if let Some(err) = proto::json::Error::parse(&res) {
10760            match err.typ.as_str() {
10761                "InternalServerError" => {
10762                    return RusotoError::Service(DescribeParametersError::InternalServerError(
10763                        err.msg,
10764                    ))
10765                }
10766                "InvalidFilterKey" => {
10767                    return RusotoError::Service(DescribeParametersError::InvalidFilterKey(err.msg))
10768                }
10769                "InvalidFilterOption" => {
10770                    return RusotoError::Service(DescribeParametersError::InvalidFilterOption(
10771                        err.msg,
10772                    ))
10773                }
10774                "InvalidFilterValue" => {
10775                    return RusotoError::Service(DescribeParametersError::InvalidFilterValue(
10776                        err.msg,
10777                    ))
10778                }
10779                "InvalidNextToken" => {
10780                    return RusotoError::Service(DescribeParametersError::InvalidNextToken(err.msg))
10781                }
10782                "ValidationException" => return RusotoError::Validation(err.msg),
10783                _ => {}
10784            }
10785        }
10786        RusotoError::Unknown(res)
10787    }
10788}
10789impl fmt::Display for DescribeParametersError {
10790    #[allow(unused_variables)]
10791    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10792        match *self {
10793            DescribeParametersError::InternalServerError(ref cause) => write!(f, "{}", cause),
10794            DescribeParametersError::InvalidFilterKey(ref cause) => write!(f, "{}", cause),
10795            DescribeParametersError::InvalidFilterOption(ref cause) => write!(f, "{}", cause),
10796            DescribeParametersError::InvalidFilterValue(ref cause) => write!(f, "{}", cause),
10797            DescribeParametersError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
10798        }
10799    }
10800}
10801impl Error for DescribeParametersError {}
10802/// Errors returned by DescribePatchBaselines
10803#[derive(Debug, PartialEq)]
10804pub enum DescribePatchBaselinesError {
10805    /// <p>An error occurred on the server side.</p>
10806    InternalServerError(String),
10807}
10808
10809impl DescribePatchBaselinesError {
10810    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribePatchBaselinesError> {
10811        if let Some(err) = proto::json::Error::parse(&res) {
10812            match err.typ.as_str() {
10813                "InternalServerError" => {
10814                    return RusotoError::Service(DescribePatchBaselinesError::InternalServerError(
10815                        err.msg,
10816                    ))
10817                }
10818                "ValidationException" => return RusotoError::Validation(err.msg),
10819                _ => {}
10820            }
10821        }
10822        RusotoError::Unknown(res)
10823    }
10824}
10825impl fmt::Display for DescribePatchBaselinesError {
10826    #[allow(unused_variables)]
10827    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10828        match *self {
10829            DescribePatchBaselinesError::InternalServerError(ref cause) => write!(f, "{}", cause),
10830        }
10831    }
10832}
10833impl Error for DescribePatchBaselinesError {}
10834/// Errors returned by DescribePatchGroupState
10835#[derive(Debug, PartialEq)]
10836pub enum DescribePatchGroupStateError {
10837    /// <p>An error occurred on the server side.</p>
10838    InternalServerError(String),
10839    /// <p>The specified token is not valid.</p>
10840    InvalidNextToken(String),
10841}
10842
10843impl DescribePatchGroupStateError {
10844    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribePatchGroupStateError> {
10845        if let Some(err) = proto::json::Error::parse(&res) {
10846            match err.typ.as_str() {
10847                "InternalServerError" => {
10848                    return RusotoError::Service(DescribePatchGroupStateError::InternalServerError(
10849                        err.msg,
10850                    ))
10851                }
10852                "InvalidNextToken" => {
10853                    return RusotoError::Service(DescribePatchGroupStateError::InvalidNextToken(
10854                        err.msg,
10855                    ))
10856                }
10857                "ValidationException" => return RusotoError::Validation(err.msg),
10858                _ => {}
10859            }
10860        }
10861        RusotoError::Unknown(res)
10862    }
10863}
10864impl fmt::Display for DescribePatchGroupStateError {
10865    #[allow(unused_variables)]
10866    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10867        match *self {
10868            DescribePatchGroupStateError::InternalServerError(ref cause) => write!(f, "{}", cause),
10869            DescribePatchGroupStateError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
10870        }
10871    }
10872}
10873impl Error for DescribePatchGroupStateError {}
10874/// Errors returned by DescribePatchGroups
10875#[derive(Debug, PartialEq)]
10876pub enum DescribePatchGroupsError {
10877    /// <p>An error occurred on the server side.</p>
10878    InternalServerError(String),
10879}
10880
10881impl DescribePatchGroupsError {
10882    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribePatchGroupsError> {
10883        if let Some(err) = proto::json::Error::parse(&res) {
10884            match err.typ.as_str() {
10885                "InternalServerError" => {
10886                    return RusotoError::Service(DescribePatchGroupsError::InternalServerError(
10887                        err.msg,
10888                    ))
10889                }
10890                "ValidationException" => return RusotoError::Validation(err.msg),
10891                _ => {}
10892            }
10893        }
10894        RusotoError::Unknown(res)
10895    }
10896}
10897impl fmt::Display for DescribePatchGroupsError {
10898    #[allow(unused_variables)]
10899    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10900        match *self {
10901            DescribePatchGroupsError::InternalServerError(ref cause) => write!(f, "{}", cause),
10902        }
10903    }
10904}
10905impl Error for DescribePatchGroupsError {}
10906/// Errors returned by DescribePatchProperties
10907#[derive(Debug, PartialEq)]
10908pub enum DescribePatchPropertiesError {
10909    /// <p>An error occurred on the server side.</p>
10910    InternalServerError(String),
10911}
10912
10913impl DescribePatchPropertiesError {
10914    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribePatchPropertiesError> {
10915        if let Some(err) = proto::json::Error::parse(&res) {
10916            match err.typ.as_str() {
10917                "InternalServerError" => {
10918                    return RusotoError::Service(DescribePatchPropertiesError::InternalServerError(
10919                        err.msg,
10920                    ))
10921                }
10922                "ValidationException" => return RusotoError::Validation(err.msg),
10923                _ => {}
10924            }
10925        }
10926        RusotoError::Unknown(res)
10927    }
10928}
10929impl fmt::Display for DescribePatchPropertiesError {
10930    #[allow(unused_variables)]
10931    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10932        match *self {
10933            DescribePatchPropertiesError::InternalServerError(ref cause) => write!(f, "{}", cause),
10934        }
10935    }
10936}
10937impl Error for DescribePatchPropertiesError {}
10938/// Errors returned by DescribeSessions
10939#[derive(Debug, PartialEq)]
10940pub enum DescribeSessionsError {
10941    /// <p>An error occurred on the server side.</p>
10942    InternalServerError(String),
10943    /// <p>The specified key is not valid.</p>
10944    InvalidFilterKey(String),
10945    /// <p>The specified token is not valid.</p>
10946    InvalidNextToken(String),
10947}
10948
10949impl DescribeSessionsError {
10950    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeSessionsError> {
10951        if let Some(err) = proto::json::Error::parse(&res) {
10952            match err.typ.as_str() {
10953                "InternalServerError" => {
10954                    return RusotoError::Service(DescribeSessionsError::InternalServerError(
10955                        err.msg,
10956                    ))
10957                }
10958                "InvalidFilterKey" => {
10959                    return RusotoError::Service(DescribeSessionsError::InvalidFilterKey(err.msg))
10960                }
10961                "InvalidNextToken" => {
10962                    return RusotoError::Service(DescribeSessionsError::InvalidNextToken(err.msg))
10963                }
10964                "ValidationException" => return RusotoError::Validation(err.msg),
10965                _ => {}
10966            }
10967        }
10968        RusotoError::Unknown(res)
10969    }
10970}
10971impl fmt::Display for DescribeSessionsError {
10972    #[allow(unused_variables)]
10973    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
10974        match *self {
10975            DescribeSessionsError::InternalServerError(ref cause) => write!(f, "{}", cause),
10976            DescribeSessionsError::InvalidFilterKey(ref cause) => write!(f, "{}", cause),
10977            DescribeSessionsError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
10978        }
10979    }
10980}
10981impl Error for DescribeSessionsError {}
10982/// Errors returned by GetAutomationExecution
10983#[derive(Debug, PartialEq)]
10984pub enum GetAutomationExecutionError {
10985    /// <p>There is no automation execution information for the requested automation execution ID.</p>
10986    AutomationExecutionNotFound(String),
10987    /// <p>An error occurred on the server side.</p>
10988    InternalServerError(String),
10989}
10990
10991impl GetAutomationExecutionError {
10992    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetAutomationExecutionError> {
10993        if let Some(err) = proto::json::Error::parse(&res) {
10994            match err.typ.as_str() {
10995                "AutomationExecutionNotFoundException" => {
10996                    return RusotoError::Service(
10997                        GetAutomationExecutionError::AutomationExecutionNotFound(err.msg),
10998                    )
10999                }
11000                "InternalServerError" => {
11001                    return RusotoError::Service(GetAutomationExecutionError::InternalServerError(
11002                        err.msg,
11003                    ))
11004                }
11005                "ValidationException" => return RusotoError::Validation(err.msg),
11006                _ => {}
11007            }
11008        }
11009        RusotoError::Unknown(res)
11010    }
11011}
11012impl fmt::Display for GetAutomationExecutionError {
11013    #[allow(unused_variables)]
11014    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11015        match *self {
11016            GetAutomationExecutionError::AutomationExecutionNotFound(ref cause) => {
11017                write!(f, "{}", cause)
11018            }
11019            GetAutomationExecutionError::InternalServerError(ref cause) => write!(f, "{}", cause),
11020        }
11021    }
11022}
11023impl Error for GetAutomationExecutionError {}
11024/// Errors returned by GetCalendarState
11025#[derive(Debug, PartialEq)]
11026pub enum GetCalendarStateError {
11027    /// <p>An error occurred on the server side.</p>
11028    InternalServerError(String),
11029    /// <p>The specified document does not exist.</p>
11030    InvalidDocument(String),
11031    /// <p>The document type is not valid. Valid document types are described in the <code>DocumentType</code> property.</p>
11032    InvalidDocumentType(String),
11033    /// <p>The calendar entry contained in the specified Systems Manager document is not supported.</p>
11034    UnsupportedCalendar(String),
11035}
11036
11037impl GetCalendarStateError {
11038    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetCalendarStateError> {
11039        if let Some(err) = proto::json::Error::parse(&res) {
11040            match err.typ.as_str() {
11041                "InternalServerError" => {
11042                    return RusotoError::Service(GetCalendarStateError::InternalServerError(
11043                        err.msg,
11044                    ))
11045                }
11046                "InvalidDocument" => {
11047                    return RusotoError::Service(GetCalendarStateError::InvalidDocument(err.msg))
11048                }
11049                "InvalidDocumentType" => {
11050                    return RusotoError::Service(GetCalendarStateError::InvalidDocumentType(
11051                        err.msg,
11052                    ))
11053                }
11054                "UnsupportedCalendarException" => {
11055                    return RusotoError::Service(GetCalendarStateError::UnsupportedCalendar(
11056                        err.msg,
11057                    ))
11058                }
11059                "ValidationException" => return RusotoError::Validation(err.msg),
11060                _ => {}
11061            }
11062        }
11063        RusotoError::Unknown(res)
11064    }
11065}
11066impl fmt::Display for GetCalendarStateError {
11067    #[allow(unused_variables)]
11068    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11069        match *self {
11070            GetCalendarStateError::InternalServerError(ref cause) => write!(f, "{}", cause),
11071            GetCalendarStateError::InvalidDocument(ref cause) => write!(f, "{}", cause),
11072            GetCalendarStateError::InvalidDocumentType(ref cause) => write!(f, "{}", cause),
11073            GetCalendarStateError::UnsupportedCalendar(ref cause) => write!(f, "{}", cause),
11074        }
11075    }
11076}
11077impl Error for GetCalendarStateError {}
11078/// Errors returned by GetCommandInvocation
11079#[derive(Debug, PartialEq)]
11080pub enum GetCommandInvocationError {
11081    /// <p>An error occurred on the server side.</p>
11082    InternalServerError(String),
11083
11084    InvalidCommandId(String),
11085    /// <p>The following problems can cause this exception:</p> <p>You do not have permission to access the instance.</p> <p>SSM Agent is not running. Verify that SSM Agent is running.</p> <p>SSM Agent is not registered with the SSM endpoint. Try reinstalling SSM Agent.</p> <p>The instance is not in valid state. Valid states are: Running, Pending, Stopped, Stopping. Invalid states are: Shutting-down and Terminated.</p>
11086    InvalidInstanceId(String),
11087    /// <p>The plugin name is not valid.</p>
11088    InvalidPluginName(String),
11089    /// <p>The command ID and instance ID you specified did not match any invocations. Verify the command ID and the instance ID and try again. </p>
11090    InvocationDoesNotExist(String),
11091}
11092
11093impl GetCommandInvocationError {
11094    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetCommandInvocationError> {
11095        if let Some(err) = proto::json::Error::parse(&res) {
11096            match err.typ.as_str() {
11097                "InternalServerError" => {
11098                    return RusotoError::Service(GetCommandInvocationError::InternalServerError(
11099                        err.msg,
11100                    ))
11101                }
11102                "InvalidCommandId" => {
11103                    return RusotoError::Service(GetCommandInvocationError::InvalidCommandId(
11104                        err.msg,
11105                    ))
11106                }
11107                "InvalidInstanceId" => {
11108                    return RusotoError::Service(GetCommandInvocationError::InvalidInstanceId(
11109                        err.msg,
11110                    ))
11111                }
11112                "InvalidPluginName" => {
11113                    return RusotoError::Service(GetCommandInvocationError::InvalidPluginName(
11114                        err.msg,
11115                    ))
11116                }
11117                "InvocationDoesNotExist" => {
11118                    return RusotoError::Service(GetCommandInvocationError::InvocationDoesNotExist(
11119                        err.msg,
11120                    ))
11121                }
11122                "ValidationException" => return RusotoError::Validation(err.msg),
11123                _ => {}
11124            }
11125        }
11126        RusotoError::Unknown(res)
11127    }
11128}
11129impl fmt::Display for GetCommandInvocationError {
11130    #[allow(unused_variables)]
11131    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11132        match *self {
11133            GetCommandInvocationError::InternalServerError(ref cause) => write!(f, "{}", cause),
11134            GetCommandInvocationError::InvalidCommandId(ref cause) => write!(f, "{}", cause),
11135            GetCommandInvocationError::InvalidInstanceId(ref cause) => write!(f, "{}", cause),
11136            GetCommandInvocationError::InvalidPluginName(ref cause) => write!(f, "{}", cause),
11137            GetCommandInvocationError::InvocationDoesNotExist(ref cause) => write!(f, "{}", cause),
11138        }
11139    }
11140}
11141impl Error for GetCommandInvocationError {}
11142/// Errors returned by GetConnectionStatus
11143#[derive(Debug, PartialEq)]
11144pub enum GetConnectionStatusError {
11145    /// <p>An error occurred on the server side.</p>
11146    InternalServerError(String),
11147}
11148
11149impl GetConnectionStatusError {
11150    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetConnectionStatusError> {
11151        if let Some(err) = proto::json::Error::parse(&res) {
11152            match err.typ.as_str() {
11153                "InternalServerError" => {
11154                    return RusotoError::Service(GetConnectionStatusError::InternalServerError(
11155                        err.msg,
11156                    ))
11157                }
11158                "ValidationException" => return RusotoError::Validation(err.msg),
11159                _ => {}
11160            }
11161        }
11162        RusotoError::Unknown(res)
11163    }
11164}
11165impl fmt::Display for GetConnectionStatusError {
11166    #[allow(unused_variables)]
11167    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11168        match *self {
11169            GetConnectionStatusError::InternalServerError(ref cause) => write!(f, "{}", cause),
11170        }
11171    }
11172}
11173impl Error for GetConnectionStatusError {}
11174/// Errors returned by GetDefaultPatchBaseline
11175#[derive(Debug, PartialEq)]
11176pub enum GetDefaultPatchBaselineError {
11177    /// <p>An error occurred on the server side.</p>
11178    InternalServerError(String),
11179}
11180
11181impl GetDefaultPatchBaselineError {
11182    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetDefaultPatchBaselineError> {
11183        if let Some(err) = proto::json::Error::parse(&res) {
11184            match err.typ.as_str() {
11185                "InternalServerError" => {
11186                    return RusotoError::Service(GetDefaultPatchBaselineError::InternalServerError(
11187                        err.msg,
11188                    ))
11189                }
11190                "ValidationException" => return RusotoError::Validation(err.msg),
11191                _ => {}
11192            }
11193        }
11194        RusotoError::Unknown(res)
11195    }
11196}
11197impl fmt::Display for GetDefaultPatchBaselineError {
11198    #[allow(unused_variables)]
11199    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11200        match *self {
11201            GetDefaultPatchBaselineError::InternalServerError(ref cause) => write!(f, "{}", cause),
11202        }
11203    }
11204}
11205impl Error for GetDefaultPatchBaselineError {}
11206/// Errors returned by GetDeployablePatchSnapshotForInstance
11207#[derive(Debug, PartialEq)]
11208pub enum GetDeployablePatchSnapshotForInstanceError {
11209    /// <p>An error occurred on the server side.</p>
11210    InternalServerError(String),
11211    /// <p>Microsoft application patching is only available on EC2 instances and advanced instances. To patch Microsoft applications on on-premises servers and VMs, you must enable advanced instances. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-managedinstances-advanced.html">Using the advanced-instances tier</a> in the <i>AWS Systems Manager User Guide</i>.</p>
11212    UnsupportedFeatureRequired(String),
11213    /// <p>The operating systems you specified is not supported, or the operation is not supported for the operating system. Valid operating systems include: Windows, AmazonLinux, RedhatEnterpriseLinux, and Ubuntu.</p>
11214    UnsupportedOperatingSystem(String),
11215}
11216
11217impl GetDeployablePatchSnapshotForInstanceError {
11218    pub fn from_response(
11219        res: BufferedHttpResponse,
11220    ) -> RusotoError<GetDeployablePatchSnapshotForInstanceError> {
11221        if let Some(err) = proto::json::Error::parse(&res) {
11222            match err.typ.as_str() {
11223                "InternalServerError" => {
11224                    return RusotoError::Service(
11225                        GetDeployablePatchSnapshotForInstanceError::InternalServerError(err.msg),
11226                    )
11227                }
11228                "UnsupportedFeatureRequiredException" => {
11229                    return RusotoError::Service(
11230                        GetDeployablePatchSnapshotForInstanceError::UnsupportedFeatureRequired(
11231                            err.msg,
11232                        ),
11233                    )
11234                }
11235                "UnsupportedOperatingSystem" => {
11236                    return RusotoError::Service(
11237                        GetDeployablePatchSnapshotForInstanceError::UnsupportedOperatingSystem(
11238                            err.msg,
11239                        ),
11240                    )
11241                }
11242                "ValidationException" => return RusotoError::Validation(err.msg),
11243                _ => {}
11244            }
11245        }
11246        RusotoError::Unknown(res)
11247    }
11248}
11249impl fmt::Display for GetDeployablePatchSnapshotForInstanceError {
11250    #[allow(unused_variables)]
11251    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11252        match *self {
11253            GetDeployablePatchSnapshotForInstanceError::InternalServerError(ref cause) => {
11254                write!(f, "{}", cause)
11255            }
11256            GetDeployablePatchSnapshotForInstanceError::UnsupportedFeatureRequired(ref cause) => {
11257                write!(f, "{}", cause)
11258            }
11259            GetDeployablePatchSnapshotForInstanceError::UnsupportedOperatingSystem(ref cause) => {
11260                write!(f, "{}", cause)
11261            }
11262        }
11263    }
11264}
11265impl Error for GetDeployablePatchSnapshotForInstanceError {}
11266/// Errors returned by GetDocument
11267#[derive(Debug, PartialEq)]
11268pub enum GetDocumentError {
11269    /// <p>An error occurred on the server side.</p>
11270    InternalServerError(String),
11271    /// <p>The specified document does not exist.</p>
11272    InvalidDocument(String),
11273    /// <p>The document version is not valid or does not exist.</p>
11274    InvalidDocumentVersion(String),
11275}
11276
11277impl GetDocumentError {
11278    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetDocumentError> {
11279        if let Some(err) = proto::json::Error::parse(&res) {
11280            match err.typ.as_str() {
11281                "InternalServerError" => {
11282                    return RusotoError::Service(GetDocumentError::InternalServerError(err.msg))
11283                }
11284                "InvalidDocument" => {
11285                    return RusotoError::Service(GetDocumentError::InvalidDocument(err.msg))
11286                }
11287                "InvalidDocumentVersion" => {
11288                    return RusotoError::Service(GetDocumentError::InvalidDocumentVersion(err.msg))
11289                }
11290                "ValidationException" => return RusotoError::Validation(err.msg),
11291                _ => {}
11292            }
11293        }
11294        RusotoError::Unknown(res)
11295    }
11296}
11297impl fmt::Display for GetDocumentError {
11298    #[allow(unused_variables)]
11299    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11300        match *self {
11301            GetDocumentError::InternalServerError(ref cause) => write!(f, "{}", cause),
11302            GetDocumentError::InvalidDocument(ref cause) => write!(f, "{}", cause),
11303            GetDocumentError::InvalidDocumentVersion(ref cause) => write!(f, "{}", cause),
11304        }
11305    }
11306}
11307impl Error for GetDocumentError {}
11308/// Errors returned by GetInventory
11309#[derive(Debug, PartialEq)]
11310pub enum GetInventoryError {
11311    /// <p>An error occurred on the server side.</p>
11312    InternalServerError(String),
11313    /// <p>The specified aggregator is not valid for inventory groups. Verify that the aggregator uses a valid inventory type such as <code>AWS:Application</code> or <code>AWS:InstanceInformation</code>.</p>
11314    InvalidAggregator(String),
11315    /// <p>The filter name is not valid. Verify the you entered the correct name and try again.</p>
11316    InvalidFilter(String),
11317    /// <p>The specified inventory group is not valid.</p>
11318    InvalidInventoryGroup(String),
11319    /// <p>The specified token is not valid.</p>
11320    InvalidNextToken(String),
11321    /// <p>The specified inventory item result attribute is not valid.</p>
11322    InvalidResultAttribute(String),
11323    /// <p>The parameter type name is not valid.</p>
11324    InvalidTypeName(String),
11325}
11326
11327impl GetInventoryError {
11328    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetInventoryError> {
11329        if let Some(err) = proto::json::Error::parse(&res) {
11330            match err.typ.as_str() {
11331                "InternalServerError" => {
11332                    return RusotoError::Service(GetInventoryError::InternalServerError(err.msg))
11333                }
11334                "InvalidAggregatorException" => {
11335                    return RusotoError::Service(GetInventoryError::InvalidAggregator(err.msg))
11336                }
11337                "InvalidFilter" => {
11338                    return RusotoError::Service(GetInventoryError::InvalidFilter(err.msg))
11339                }
11340                "InvalidInventoryGroupException" => {
11341                    return RusotoError::Service(GetInventoryError::InvalidInventoryGroup(err.msg))
11342                }
11343                "InvalidNextToken" => {
11344                    return RusotoError::Service(GetInventoryError::InvalidNextToken(err.msg))
11345                }
11346                "InvalidResultAttributeException" => {
11347                    return RusotoError::Service(GetInventoryError::InvalidResultAttribute(err.msg))
11348                }
11349                "InvalidTypeNameException" => {
11350                    return RusotoError::Service(GetInventoryError::InvalidTypeName(err.msg))
11351                }
11352                "ValidationException" => return RusotoError::Validation(err.msg),
11353                _ => {}
11354            }
11355        }
11356        RusotoError::Unknown(res)
11357    }
11358}
11359impl fmt::Display for GetInventoryError {
11360    #[allow(unused_variables)]
11361    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11362        match *self {
11363            GetInventoryError::InternalServerError(ref cause) => write!(f, "{}", cause),
11364            GetInventoryError::InvalidAggregator(ref cause) => write!(f, "{}", cause),
11365            GetInventoryError::InvalidFilter(ref cause) => write!(f, "{}", cause),
11366            GetInventoryError::InvalidInventoryGroup(ref cause) => write!(f, "{}", cause),
11367            GetInventoryError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
11368            GetInventoryError::InvalidResultAttribute(ref cause) => write!(f, "{}", cause),
11369            GetInventoryError::InvalidTypeName(ref cause) => write!(f, "{}", cause),
11370        }
11371    }
11372}
11373impl Error for GetInventoryError {}
11374/// Errors returned by GetInventorySchema
11375#[derive(Debug, PartialEq)]
11376pub enum GetInventorySchemaError {
11377    /// <p>An error occurred on the server side.</p>
11378    InternalServerError(String),
11379    /// <p>The specified token is not valid.</p>
11380    InvalidNextToken(String),
11381    /// <p>The parameter type name is not valid.</p>
11382    InvalidTypeName(String),
11383}
11384
11385impl GetInventorySchemaError {
11386    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetInventorySchemaError> {
11387        if let Some(err) = proto::json::Error::parse(&res) {
11388            match err.typ.as_str() {
11389                "InternalServerError" => {
11390                    return RusotoError::Service(GetInventorySchemaError::InternalServerError(
11391                        err.msg,
11392                    ))
11393                }
11394                "InvalidNextToken" => {
11395                    return RusotoError::Service(GetInventorySchemaError::InvalidNextToken(err.msg))
11396                }
11397                "InvalidTypeNameException" => {
11398                    return RusotoError::Service(GetInventorySchemaError::InvalidTypeName(err.msg))
11399                }
11400                "ValidationException" => return RusotoError::Validation(err.msg),
11401                _ => {}
11402            }
11403        }
11404        RusotoError::Unknown(res)
11405    }
11406}
11407impl fmt::Display for GetInventorySchemaError {
11408    #[allow(unused_variables)]
11409    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11410        match *self {
11411            GetInventorySchemaError::InternalServerError(ref cause) => write!(f, "{}", cause),
11412            GetInventorySchemaError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
11413            GetInventorySchemaError::InvalidTypeName(ref cause) => write!(f, "{}", cause),
11414        }
11415    }
11416}
11417impl Error for GetInventorySchemaError {}
11418/// Errors returned by GetMaintenanceWindow
11419#[derive(Debug, PartialEq)]
11420pub enum GetMaintenanceWindowError {
11421    /// <p>Error returned when the ID specified for a resource, such as a maintenance window or Patch baseline, doesn't exist.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
11422    DoesNotExist(String),
11423    /// <p>An error occurred on the server side.</p>
11424    InternalServerError(String),
11425}
11426
11427impl GetMaintenanceWindowError {
11428    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetMaintenanceWindowError> {
11429        if let Some(err) = proto::json::Error::parse(&res) {
11430            match err.typ.as_str() {
11431                "DoesNotExistException" => {
11432                    return RusotoError::Service(GetMaintenanceWindowError::DoesNotExist(err.msg))
11433                }
11434                "InternalServerError" => {
11435                    return RusotoError::Service(GetMaintenanceWindowError::InternalServerError(
11436                        err.msg,
11437                    ))
11438                }
11439                "ValidationException" => return RusotoError::Validation(err.msg),
11440                _ => {}
11441            }
11442        }
11443        RusotoError::Unknown(res)
11444    }
11445}
11446impl fmt::Display for GetMaintenanceWindowError {
11447    #[allow(unused_variables)]
11448    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11449        match *self {
11450            GetMaintenanceWindowError::DoesNotExist(ref cause) => write!(f, "{}", cause),
11451            GetMaintenanceWindowError::InternalServerError(ref cause) => write!(f, "{}", cause),
11452        }
11453    }
11454}
11455impl Error for GetMaintenanceWindowError {}
11456/// Errors returned by GetMaintenanceWindowExecution
11457#[derive(Debug, PartialEq)]
11458pub enum GetMaintenanceWindowExecutionError {
11459    /// <p>Error returned when the ID specified for a resource, such as a maintenance window or Patch baseline, doesn't exist.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
11460    DoesNotExist(String),
11461    /// <p>An error occurred on the server side.</p>
11462    InternalServerError(String),
11463}
11464
11465impl GetMaintenanceWindowExecutionError {
11466    pub fn from_response(
11467        res: BufferedHttpResponse,
11468    ) -> RusotoError<GetMaintenanceWindowExecutionError> {
11469        if let Some(err) = proto::json::Error::parse(&res) {
11470            match err.typ.as_str() {
11471                "DoesNotExistException" => {
11472                    return RusotoError::Service(GetMaintenanceWindowExecutionError::DoesNotExist(
11473                        err.msg,
11474                    ))
11475                }
11476                "InternalServerError" => {
11477                    return RusotoError::Service(
11478                        GetMaintenanceWindowExecutionError::InternalServerError(err.msg),
11479                    )
11480                }
11481                "ValidationException" => return RusotoError::Validation(err.msg),
11482                _ => {}
11483            }
11484        }
11485        RusotoError::Unknown(res)
11486    }
11487}
11488impl fmt::Display for GetMaintenanceWindowExecutionError {
11489    #[allow(unused_variables)]
11490    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11491        match *self {
11492            GetMaintenanceWindowExecutionError::DoesNotExist(ref cause) => write!(f, "{}", cause),
11493            GetMaintenanceWindowExecutionError::InternalServerError(ref cause) => {
11494                write!(f, "{}", cause)
11495            }
11496        }
11497    }
11498}
11499impl Error for GetMaintenanceWindowExecutionError {}
11500/// Errors returned by GetMaintenanceWindowExecutionTask
11501#[derive(Debug, PartialEq)]
11502pub enum GetMaintenanceWindowExecutionTaskError {
11503    /// <p>Error returned when the ID specified for a resource, such as a maintenance window or Patch baseline, doesn't exist.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
11504    DoesNotExist(String),
11505    /// <p>An error occurred on the server side.</p>
11506    InternalServerError(String),
11507}
11508
11509impl GetMaintenanceWindowExecutionTaskError {
11510    pub fn from_response(
11511        res: BufferedHttpResponse,
11512    ) -> RusotoError<GetMaintenanceWindowExecutionTaskError> {
11513        if let Some(err) = proto::json::Error::parse(&res) {
11514            match err.typ.as_str() {
11515                "DoesNotExistException" => {
11516                    return RusotoError::Service(
11517                        GetMaintenanceWindowExecutionTaskError::DoesNotExist(err.msg),
11518                    )
11519                }
11520                "InternalServerError" => {
11521                    return RusotoError::Service(
11522                        GetMaintenanceWindowExecutionTaskError::InternalServerError(err.msg),
11523                    )
11524                }
11525                "ValidationException" => return RusotoError::Validation(err.msg),
11526                _ => {}
11527            }
11528        }
11529        RusotoError::Unknown(res)
11530    }
11531}
11532impl fmt::Display for GetMaintenanceWindowExecutionTaskError {
11533    #[allow(unused_variables)]
11534    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11535        match *self {
11536            GetMaintenanceWindowExecutionTaskError::DoesNotExist(ref cause) => {
11537                write!(f, "{}", cause)
11538            }
11539            GetMaintenanceWindowExecutionTaskError::InternalServerError(ref cause) => {
11540                write!(f, "{}", cause)
11541            }
11542        }
11543    }
11544}
11545impl Error for GetMaintenanceWindowExecutionTaskError {}
11546/// Errors returned by GetMaintenanceWindowExecutionTaskInvocation
11547#[derive(Debug, PartialEq)]
11548pub enum GetMaintenanceWindowExecutionTaskInvocationError {
11549    /// <p>Error returned when the ID specified for a resource, such as a maintenance window or Patch baseline, doesn't exist.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
11550    DoesNotExist(String),
11551    /// <p>An error occurred on the server side.</p>
11552    InternalServerError(String),
11553}
11554
11555impl GetMaintenanceWindowExecutionTaskInvocationError {
11556    pub fn from_response(
11557        res: BufferedHttpResponse,
11558    ) -> RusotoError<GetMaintenanceWindowExecutionTaskInvocationError> {
11559        if let Some(err) = proto::json::Error::parse(&res) {
11560            match err.typ.as_str() {
11561                "DoesNotExistException" => {
11562                    return RusotoError::Service(
11563                        GetMaintenanceWindowExecutionTaskInvocationError::DoesNotExist(err.msg),
11564                    )
11565                }
11566                "InternalServerError" => {
11567                    return RusotoError::Service(
11568                        GetMaintenanceWindowExecutionTaskInvocationError::InternalServerError(
11569                            err.msg,
11570                        ),
11571                    )
11572                }
11573                "ValidationException" => return RusotoError::Validation(err.msg),
11574                _ => {}
11575            }
11576        }
11577        RusotoError::Unknown(res)
11578    }
11579}
11580impl fmt::Display for GetMaintenanceWindowExecutionTaskInvocationError {
11581    #[allow(unused_variables)]
11582    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11583        match *self {
11584            GetMaintenanceWindowExecutionTaskInvocationError::DoesNotExist(ref cause) => {
11585                write!(f, "{}", cause)
11586            }
11587            GetMaintenanceWindowExecutionTaskInvocationError::InternalServerError(ref cause) => {
11588                write!(f, "{}", cause)
11589            }
11590        }
11591    }
11592}
11593impl Error for GetMaintenanceWindowExecutionTaskInvocationError {}
11594/// Errors returned by GetMaintenanceWindowTask
11595#[derive(Debug, PartialEq)]
11596pub enum GetMaintenanceWindowTaskError {
11597    /// <p>Error returned when the ID specified for a resource, such as a maintenance window or Patch baseline, doesn't exist.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
11598    DoesNotExist(String),
11599    /// <p>An error occurred on the server side.</p>
11600    InternalServerError(String),
11601}
11602
11603impl GetMaintenanceWindowTaskError {
11604    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetMaintenanceWindowTaskError> {
11605        if let Some(err) = proto::json::Error::parse(&res) {
11606            match err.typ.as_str() {
11607                "DoesNotExistException" => {
11608                    return RusotoError::Service(GetMaintenanceWindowTaskError::DoesNotExist(
11609                        err.msg,
11610                    ))
11611                }
11612                "InternalServerError" => {
11613                    return RusotoError::Service(
11614                        GetMaintenanceWindowTaskError::InternalServerError(err.msg),
11615                    )
11616                }
11617                "ValidationException" => return RusotoError::Validation(err.msg),
11618                _ => {}
11619            }
11620        }
11621        RusotoError::Unknown(res)
11622    }
11623}
11624impl fmt::Display for GetMaintenanceWindowTaskError {
11625    #[allow(unused_variables)]
11626    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11627        match *self {
11628            GetMaintenanceWindowTaskError::DoesNotExist(ref cause) => write!(f, "{}", cause),
11629            GetMaintenanceWindowTaskError::InternalServerError(ref cause) => write!(f, "{}", cause),
11630        }
11631    }
11632}
11633impl Error for GetMaintenanceWindowTaskError {}
11634/// Errors returned by GetOpsItem
11635#[derive(Debug, PartialEq)]
11636pub enum GetOpsItemError {
11637    /// <p>An error occurred on the server side.</p>
11638    InternalServerError(String),
11639    /// <p>The specified OpsItem ID doesn't exist. Verify the ID and try again.</p>
11640    OpsItemNotFound(String),
11641}
11642
11643impl GetOpsItemError {
11644    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetOpsItemError> {
11645        if let Some(err) = proto::json::Error::parse(&res) {
11646            match err.typ.as_str() {
11647                "InternalServerError" => {
11648                    return RusotoError::Service(GetOpsItemError::InternalServerError(err.msg))
11649                }
11650                "OpsItemNotFoundException" => {
11651                    return RusotoError::Service(GetOpsItemError::OpsItemNotFound(err.msg))
11652                }
11653                "ValidationException" => return RusotoError::Validation(err.msg),
11654                _ => {}
11655            }
11656        }
11657        RusotoError::Unknown(res)
11658    }
11659}
11660impl fmt::Display for GetOpsItemError {
11661    #[allow(unused_variables)]
11662    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11663        match *self {
11664            GetOpsItemError::InternalServerError(ref cause) => write!(f, "{}", cause),
11665            GetOpsItemError::OpsItemNotFound(ref cause) => write!(f, "{}", cause),
11666        }
11667    }
11668}
11669impl Error for GetOpsItemError {}
11670/// Errors returned by GetOpsSummary
11671#[derive(Debug, PartialEq)]
11672pub enum GetOpsSummaryError {
11673    /// <p>An error occurred on the server side.</p>
11674    InternalServerError(String),
11675    /// <p>The specified aggregator is not valid for inventory groups. Verify that the aggregator uses a valid inventory type such as <code>AWS:Application</code> or <code>AWS:InstanceInformation</code>.</p>
11676    InvalidAggregator(String),
11677    /// <p>The filter name is not valid. Verify the you entered the correct name and try again.</p>
11678    InvalidFilter(String),
11679    /// <p>The specified token is not valid.</p>
11680    InvalidNextToken(String),
11681    /// <p>The parameter type name is not valid.</p>
11682    InvalidTypeName(String),
11683    /// <p>The specified sync name was not found.</p>
11684    ResourceDataSyncNotFound(String),
11685}
11686
11687impl GetOpsSummaryError {
11688    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetOpsSummaryError> {
11689        if let Some(err) = proto::json::Error::parse(&res) {
11690            match err.typ.as_str() {
11691                "InternalServerError" => {
11692                    return RusotoError::Service(GetOpsSummaryError::InternalServerError(err.msg))
11693                }
11694                "InvalidAggregatorException" => {
11695                    return RusotoError::Service(GetOpsSummaryError::InvalidAggregator(err.msg))
11696                }
11697                "InvalidFilter" => {
11698                    return RusotoError::Service(GetOpsSummaryError::InvalidFilter(err.msg))
11699                }
11700                "InvalidNextToken" => {
11701                    return RusotoError::Service(GetOpsSummaryError::InvalidNextToken(err.msg))
11702                }
11703                "InvalidTypeNameException" => {
11704                    return RusotoError::Service(GetOpsSummaryError::InvalidTypeName(err.msg))
11705                }
11706                "ResourceDataSyncNotFoundException" => {
11707                    return RusotoError::Service(GetOpsSummaryError::ResourceDataSyncNotFound(
11708                        err.msg,
11709                    ))
11710                }
11711                "ValidationException" => return RusotoError::Validation(err.msg),
11712                _ => {}
11713            }
11714        }
11715        RusotoError::Unknown(res)
11716    }
11717}
11718impl fmt::Display for GetOpsSummaryError {
11719    #[allow(unused_variables)]
11720    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11721        match *self {
11722            GetOpsSummaryError::InternalServerError(ref cause) => write!(f, "{}", cause),
11723            GetOpsSummaryError::InvalidAggregator(ref cause) => write!(f, "{}", cause),
11724            GetOpsSummaryError::InvalidFilter(ref cause) => write!(f, "{}", cause),
11725            GetOpsSummaryError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
11726            GetOpsSummaryError::InvalidTypeName(ref cause) => write!(f, "{}", cause),
11727            GetOpsSummaryError::ResourceDataSyncNotFound(ref cause) => write!(f, "{}", cause),
11728        }
11729    }
11730}
11731impl Error for GetOpsSummaryError {}
11732/// Errors returned by GetParameter
11733#[derive(Debug, PartialEq)]
11734pub enum GetParameterError {
11735    /// <p>An error occurred on the server side.</p>
11736    InternalServerError(String),
11737    /// <p>The query key ID is not valid.</p>
11738    InvalidKeyId(String),
11739    /// <p>The parameter could not be found. Verify the name and try again.</p>
11740    ParameterNotFound(String),
11741    /// <p>The specified parameter version was not found. Verify the parameter name and version, and try again.</p>
11742    ParameterVersionNotFound(String),
11743}
11744
11745impl GetParameterError {
11746    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetParameterError> {
11747        if let Some(err) = proto::json::Error::parse(&res) {
11748            match err.typ.as_str() {
11749                "InternalServerError" => {
11750                    return RusotoError::Service(GetParameterError::InternalServerError(err.msg))
11751                }
11752                "InvalidKeyId" => {
11753                    return RusotoError::Service(GetParameterError::InvalidKeyId(err.msg))
11754                }
11755                "ParameterNotFound" => {
11756                    return RusotoError::Service(GetParameterError::ParameterNotFound(err.msg))
11757                }
11758                "ParameterVersionNotFound" => {
11759                    return RusotoError::Service(GetParameterError::ParameterVersionNotFound(
11760                        err.msg,
11761                    ))
11762                }
11763                "ValidationException" => return RusotoError::Validation(err.msg),
11764                _ => {}
11765            }
11766        }
11767        RusotoError::Unknown(res)
11768    }
11769}
11770impl fmt::Display for GetParameterError {
11771    #[allow(unused_variables)]
11772    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11773        match *self {
11774            GetParameterError::InternalServerError(ref cause) => write!(f, "{}", cause),
11775            GetParameterError::InvalidKeyId(ref cause) => write!(f, "{}", cause),
11776            GetParameterError::ParameterNotFound(ref cause) => write!(f, "{}", cause),
11777            GetParameterError::ParameterVersionNotFound(ref cause) => write!(f, "{}", cause),
11778        }
11779    }
11780}
11781impl Error for GetParameterError {}
11782/// Errors returned by GetParameterHistory
11783#[derive(Debug, PartialEq)]
11784pub enum GetParameterHistoryError {
11785    /// <p>An error occurred on the server side.</p>
11786    InternalServerError(String),
11787    /// <p>The query key ID is not valid.</p>
11788    InvalidKeyId(String),
11789    /// <p>The specified token is not valid.</p>
11790    InvalidNextToken(String),
11791    /// <p>The parameter could not be found. Verify the name and try again.</p>
11792    ParameterNotFound(String),
11793}
11794
11795impl GetParameterHistoryError {
11796    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetParameterHistoryError> {
11797        if let Some(err) = proto::json::Error::parse(&res) {
11798            match err.typ.as_str() {
11799                "InternalServerError" => {
11800                    return RusotoError::Service(GetParameterHistoryError::InternalServerError(
11801                        err.msg,
11802                    ))
11803                }
11804                "InvalidKeyId" => {
11805                    return RusotoError::Service(GetParameterHistoryError::InvalidKeyId(err.msg))
11806                }
11807                "InvalidNextToken" => {
11808                    return RusotoError::Service(GetParameterHistoryError::InvalidNextToken(
11809                        err.msg,
11810                    ))
11811                }
11812                "ParameterNotFound" => {
11813                    return RusotoError::Service(GetParameterHistoryError::ParameterNotFound(
11814                        err.msg,
11815                    ))
11816                }
11817                "ValidationException" => return RusotoError::Validation(err.msg),
11818                _ => {}
11819            }
11820        }
11821        RusotoError::Unknown(res)
11822    }
11823}
11824impl fmt::Display for GetParameterHistoryError {
11825    #[allow(unused_variables)]
11826    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11827        match *self {
11828            GetParameterHistoryError::InternalServerError(ref cause) => write!(f, "{}", cause),
11829            GetParameterHistoryError::InvalidKeyId(ref cause) => write!(f, "{}", cause),
11830            GetParameterHistoryError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
11831            GetParameterHistoryError::ParameterNotFound(ref cause) => write!(f, "{}", cause),
11832        }
11833    }
11834}
11835impl Error for GetParameterHistoryError {}
11836/// Errors returned by GetParameters
11837#[derive(Debug, PartialEq)]
11838pub enum GetParametersError {
11839    /// <p>An error occurred on the server side.</p>
11840    InternalServerError(String),
11841    /// <p>The query key ID is not valid.</p>
11842    InvalidKeyId(String),
11843}
11844
11845impl GetParametersError {
11846    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetParametersError> {
11847        if let Some(err) = proto::json::Error::parse(&res) {
11848            match err.typ.as_str() {
11849                "InternalServerError" => {
11850                    return RusotoError::Service(GetParametersError::InternalServerError(err.msg))
11851                }
11852                "InvalidKeyId" => {
11853                    return RusotoError::Service(GetParametersError::InvalidKeyId(err.msg))
11854                }
11855                "ValidationException" => return RusotoError::Validation(err.msg),
11856                _ => {}
11857            }
11858        }
11859        RusotoError::Unknown(res)
11860    }
11861}
11862impl fmt::Display for GetParametersError {
11863    #[allow(unused_variables)]
11864    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11865        match *self {
11866            GetParametersError::InternalServerError(ref cause) => write!(f, "{}", cause),
11867            GetParametersError::InvalidKeyId(ref cause) => write!(f, "{}", cause),
11868        }
11869    }
11870}
11871impl Error for GetParametersError {}
11872/// Errors returned by GetParametersByPath
11873#[derive(Debug, PartialEq)]
11874pub enum GetParametersByPathError {
11875    /// <p>An error occurred on the server side.</p>
11876    InternalServerError(String),
11877    /// <p>The specified key is not valid.</p>
11878    InvalidFilterKey(String),
11879    /// <p>The specified filter option is not valid. Valid options are Equals and BeginsWith. For Path filter, valid options are Recursive and OneLevel.</p>
11880    InvalidFilterOption(String),
11881    /// <p>The filter value is not valid. Verify the value and try again.</p>
11882    InvalidFilterValue(String),
11883    /// <p>The query key ID is not valid.</p>
11884    InvalidKeyId(String),
11885    /// <p>The specified token is not valid.</p>
11886    InvalidNextToken(String),
11887}
11888
11889impl GetParametersByPathError {
11890    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetParametersByPathError> {
11891        if let Some(err) = proto::json::Error::parse(&res) {
11892            match err.typ.as_str() {
11893                "InternalServerError" => {
11894                    return RusotoError::Service(GetParametersByPathError::InternalServerError(
11895                        err.msg,
11896                    ))
11897                }
11898                "InvalidFilterKey" => {
11899                    return RusotoError::Service(GetParametersByPathError::InvalidFilterKey(
11900                        err.msg,
11901                    ))
11902                }
11903                "InvalidFilterOption" => {
11904                    return RusotoError::Service(GetParametersByPathError::InvalidFilterOption(
11905                        err.msg,
11906                    ))
11907                }
11908                "InvalidFilterValue" => {
11909                    return RusotoError::Service(GetParametersByPathError::InvalidFilterValue(
11910                        err.msg,
11911                    ))
11912                }
11913                "InvalidKeyId" => {
11914                    return RusotoError::Service(GetParametersByPathError::InvalidKeyId(err.msg))
11915                }
11916                "InvalidNextToken" => {
11917                    return RusotoError::Service(GetParametersByPathError::InvalidNextToken(
11918                        err.msg,
11919                    ))
11920                }
11921                "ValidationException" => return RusotoError::Validation(err.msg),
11922                _ => {}
11923            }
11924        }
11925        RusotoError::Unknown(res)
11926    }
11927}
11928impl fmt::Display for GetParametersByPathError {
11929    #[allow(unused_variables)]
11930    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11931        match *self {
11932            GetParametersByPathError::InternalServerError(ref cause) => write!(f, "{}", cause),
11933            GetParametersByPathError::InvalidFilterKey(ref cause) => write!(f, "{}", cause),
11934            GetParametersByPathError::InvalidFilterOption(ref cause) => write!(f, "{}", cause),
11935            GetParametersByPathError::InvalidFilterValue(ref cause) => write!(f, "{}", cause),
11936            GetParametersByPathError::InvalidKeyId(ref cause) => write!(f, "{}", cause),
11937            GetParametersByPathError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
11938        }
11939    }
11940}
11941impl Error for GetParametersByPathError {}
11942/// Errors returned by GetPatchBaseline
11943#[derive(Debug, PartialEq)]
11944pub enum GetPatchBaselineError {
11945    /// <p>Error returned when the ID specified for a resource, such as a maintenance window or Patch baseline, doesn't exist.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
11946    DoesNotExist(String),
11947    /// <p>An error occurred on the server side.</p>
11948    InternalServerError(String),
11949    /// <p>The resource ID is not valid. Verify that you entered the correct ID and try again.</p>
11950    InvalidResourceId(String),
11951}
11952
11953impl GetPatchBaselineError {
11954    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetPatchBaselineError> {
11955        if let Some(err) = proto::json::Error::parse(&res) {
11956            match err.typ.as_str() {
11957                "DoesNotExistException" => {
11958                    return RusotoError::Service(GetPatchBaselineError::DoesNotExist(err.msg))
11959                }
11960                "InternalServerError" => {
11961                    return RusotoError::Service(GetPatchBaselineError::InternalServerError(
11962                        err.msg,
11963                    ))
11964                }
11965                "InvalidResourceId" => {
11966                    return RusotoError::Service(GetPatchBaselineError::InvalidResourceId(err.msg))
11967                }
11968                "ValidationException" => return RusotoError::Validation(err.msg),
11969                _ => {}
11970            }
11971        }
11972        RusotoError::Unknown(res)
11973    }
11974}
11975impl fmt::Display for GetPatchBaselineError {
11976    #[allow(unused_variables)]
11977    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
11978        match *self {
11979            GetPatchBaselineError::DoesNotExist(ref cause) => write!(f, "{}", cause),
11980            GetPatchBaselineError::InternalServerError(ref cause) => write!(f, "{}", cause),
11981            GetPatchBaselineError::InvalidResourceId(ref cause) => write!(f, "{}", cause),
11982        }
11983    }
11984}
11985impl Error for GetPatchBaselineError {}
11986/// Errors returned by GetPatchBaselineForPatchGroup
11987#[derive(Debug, PartialEq)]
11988pub enum GetPatchBaselineForPatchGroupError {
11989    /// <p>An error occurred on the server side.</p>
11990    InternalServerError(String),
11991}
11992
11993impl GetPatchBaselineForPatchGroupError {
11994    pub fn from_response(
11995        res: BufferedHttpResponse,
11996    ) -> RusotoError<GetPatchBaselineForPatchGroupError> {
11997        if let Some(err) = proto::json::Error::parse(&res) {
11998            match err.typ.as_str() {
11999                "InternalServerError" => {
12000                    return RusotoError::Service(
12001                        GetPatchBaselineForPatchGroupError::InternalServerError(err.msg),
12002                    )
12003                }
12004                "ValidationException" => return RusotoError::Validation(err.msg),
12005                _ => {}
12006            }
12007        }
12008        RusotoError::Unknown(res)
12009    }
12010}
12011impl fmt::Display for GetPatchBaselineForPatchGroupError {
12012    #[allow(unused_variables)]
12013    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12014        match *self {
12015            GetPatchBaselineForPatchGroupError::InternalServerError(ref cause) => {
12016                write!(f, "{}", cause)
12017            }
12018        }
12019    }
12020}
12021impl Error for GetPatchBaselineForPatchGroupError {}
12022/// Errors returned by GetServiceSetting
12023#[derive(Debug, PartialEq)]
12024pub enum GetServiceSettingError {
12025    /// <p>An error occurred on the server side.</p>
12026    InternalServerError(String),
12027    /// <p>The specified service setting was not found. Either the service name or the setting has not been provisioned by the AWS service team.</p>
12028    ServiceSettingNotFound(String),
12029}
12030
12031impl GetServiceSettingError {
12032    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetServiceSettingError> {
12033        if let Some(err) = proto::json::Error::parse(&res) {
12034            match err.typ.as_str() {
12035                "InternalServerError" => {
12036                    return RusotoError::Service(GetServiceSettingError::InternalServerError(
12037                        err.msg,
12038                    ))
12039                }
12040                "ServiceSettingNotFound" => {
12041                    return RusotoError::Service(GetServiceSettingError::ServiceSettingNotFound(
12042                        err.msg,
12043                    ))
12044                }
12045                "ValidationException" => return RusotoError::Validation(err.msg),
12046                _ => {}
12047            }
12048        }
12049        RusotoError::Unknown(res)
12050    }
12051}
12052impl fmt::Display for GetServiceSettingError {
12053    #[allow(unused_variables)]
12054    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12055        match *self {
12056            GetServiceSettingError::InternalServerError(ref cause) => write!(f, "{}", cause),
12057            GetServiceSettingError::ServiceSettingNotFound(ref cause) => write!(f, "{}", cause),
12058        }
12059    }
12060}
12061impl Error for GetServiceSettingError {}
12062/// Errors returned by LabelParameterVersion
12063#[derive(Debug, PartialEq)]
12064pub enum LabelParameterVersionError {
12065    /// <p>An error occurred on the server side.</p>
12066    InternalServerError(String),
12067    /// <p>The parameter could not be found. Verify the name and try again.</p>
12068    ParameterNotFound(String),
12069    /// <p>A parameter version can have a maximum of ten labels.</p>
12070    ParameterVersionLabelLimitExceeded(String),
12071    /// <p>The specified parameter version was not found. Verify the parameter name and version, and try again.</p>
12072    ParameterVersionNotFound(String),
12073    /// <p>There are concurrent updates for a resource that supports one update at a time.</p>
12074    TooManyUpdates(String),
12075}
12076
12077impl LabelParameterVersionError {
12078    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<LabelParameterVersionError> {
12079        if let Some(err) = proto::json::Error::parse(&res) {
12080            match err.typ.as_str() {
12081                "InternalServerError" => {
12082                    return RusotoError::Service(LabelParameterVersionError::InternalServerError(
12083                        err.msg,
12084                    ))
12085                }
12086                "ParameterNotFound" => {
12087                    return RusotoError::Service(LabelParameterVersionError::ParameterNotFound(
12088                        err.msg,
12089                    ))
12090                }
12091                "ParameterVersionLabelLimitExceeded" => {
12092                    return RusotoError::Service(
12093                        LabelParameterVersionError::ParameterVersionLabelLimitExceeded(err.msg),
12094                    )
12095                }
12096                "ParameterVersionNotFound" => {
12097                    return RusotoError::Service(
12098                        LabelParameterVersionError::ParameterVersionNotFound(err.msg),
12099                    )
12100                }
12101                "TooManyUpdates" => {
12102                    return RusotoError::Service(LabelParameterVersionError::TooManyUpdates(
12103                        err.msg,
12104                    ))
12105                }
12106                "ValidationException" => return RusotoError::Validation(err.msg),
12107                _ => {}
12108            }
12109        }
12110        RusotoError::Unknown(res)
12111    }
12112}
12113impl fmt::Display for LabelParameterVersionError {
12114    #[allow(unused_variables)]
12115    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12116        match *self {
12117            LabelParameterVersionError::InternalServerError(ref cause) => write!(f, "{}", cause),
12118            LabelParameterVersionError::ParameterNotFound(ref cause) => write!(f, "{}", cause),
12119            LabelParameterVersionError::ParameterVersionLabelLimitExceeded(ref cause) => {
12120                write!(f, "{}", cause)
12121            }
12122            LabelParameterVersionError::ParameterVersionNotFound(ref cause) => {
12123                write!(f, "{}", cause)
12124            }
12125            LabelParameterVersionError::TooManyUpdates(ref cause) => write!(f, "{}", cause),
12126        }
12127    }
12128}
12129impl Error for LabelParameterVersionError {}
12130/// Errors returned by ListAssociationVersions
12131#[derive(Debug, PartialEq)]
12132pub enum ListAssociationVersionsError {
12133    /// <p>The specified association does not exist.</p>
12134    AssociationDoesNotExist(String),
12135    /// <p>An error occurred on the server side.</p>
12136    InternalServerError(String),
12137    /// <p>The specified token is not valid.</p>
12138    InvalidNextToken(String),
12139}
12140
12141impl ListAssociationVersionsError {
12142    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListAssociationVersionsError> {
12143        if let Some(err) = proto::json::Error::parse(&res) {
12144            match err.typ.as_str() {
12145                "AssociationDoesNotExist" => {
12146                    return RusotoError::Service(
12147                        ListAssociationVersionsError::AssociationDoesNotExist(err.msg),
12148                    )
12149                }
12150                "InternalServerError" => {
12151                    return RusotoError::Service(ListAssociationVersionsError::InternalServerError(
12152                        err.msg,
12153                    ))
12154                }
12155                "InvalidNextToken" => {
12156                    return RusotoError::Service(ListAssociationVersionsError::InvalidNextToken(
12157                        err.msg,
12158                    ))
12159                }
12160                "ValidationException" => return RusotoError::Validation(err.msg),
12161                _ => {}
12162            }
12163        }
12164        RusotoError::Unknown(res)
12165    }
12166}
12167impl fmt::Display for ListAssociationVersionsError {
12168    #[allow(unused_variables)]
12169    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12170        match *self {
12171            ListAssociationVersionsError::AssociationDoesNotExist(ref cause) => {
12172                write!(f, "{}", cause)
12173            }
12174            ListAssociationVersionsError::InternalServerError(ref cause) => write!(f, "{}", cause),
12175            ListAssociationVersionsError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
12176        }
12177    }
12178}
12179impl Error for ListAssociationVersionsError {}
12180/// Errors returned by ListAssociations
12181#[derive(Debug, PartialEq)]
12182pub enum ListAssociationsError {
12183    /// <p>An error occurred on the server side.</p>
12184    InternalServerError(String),
12185    /// <p>The specified token is not valid.</p>
12186    InvalidNextToken(String),
12187}
12188
12189impl ListAssociationsError {
12190    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListAssociationsError> {
12191        if let Some(err) = proto::json::Error::parse(&res) {
12192            match err.typ.as_str() {
12193                "InternalServerError" => {
12194                    return RusotoError::Service(ListAssociationsError::InternalServerError(
12195                        err.msg,
12196                    ))
12197                }
12198                "InvalidNextToken" => {
12199                    return RusotoError::Service(ListAssociationsError::InvalidNextToken(err.msg))
12200                }
12201                "ValidationException" => return RusotoError::Validation(err.msg),
12202                _ => {}
12203            }
12204        }
12205        RusotoError::Unknown(res)
12206    }
12207}
12208impl fmt::Display for ListAssociationsError {
12209    #[allow(unused_variables)]
12210    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12211        match *self {
12212            ListAssociationsError::InternalServerError(ref cause) => write!(f, "{}", cause),
12213            ListAssociationsError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
12214        }
12215    }
12216}
12217impl Error for ListAssociationsError {}
12218/// Errors returned by ListCommandInvocations
12219#[derive(Debug, PartialEq)]
12220pub enum ListCommandInvocationsError {
12221    /// <p>An error occurred on the server side.</p>
12222    InternalServerError(String),
12223
12224    InvalidCommandId(String),
12225    /// <p>The specified key is not valid.</p>
12226    InvalidFilterKey(String),
12227    /// <p>The following problems can cause this exception:</p> <p>You do not have permission to access the instance.</p> <p>SSM Agent is not running. Verify that SSM Agent is running.</p> <p>SSM Agent is not registered with the SSM endpoint. Try reinstalling SSM Agent.</p> <p>The instance is not in valid state. Valid states are: Running, Pending, Stopped, Stopping. Invalid states are: Shutting-down and Terminated.</p>
12228    InvalidInstanceId(String),
12229    /// <p>The specified token is not valid.</p>
12230    InvalidNextToken(String),
12231}
12232
12233impl ListCommandInvocationsError {
12234    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListCommandInvocationsError> {
12235        if let Some(err) = proto::json::Error::parse(&res) {
12236            match err.typ.as_str() {
12237                "InternalServerError" => {
12238                    return RusotoError::Service(ListCommandInvocationsError::InternalServerError(
12239                        err.msg,
12240                    ))
12241                }
12242                "InvalidCommandId" => {
12243                    return RusotoError::Service(ListCommandInvocationsError::InvalidCommandId(
12244                        err.msg,
12245                    ))
12246                }
12247                "InvalidFilterKey" => {
12248                    return RusotoError::Service(ListCommandInvocationsError::InvalidFilterKey(
12249                        err.msg,
12250                    ))
12251                }
12252                "InvalidInstanceId" => {
12253                    return RusotoError::Service(ListCommandInvocationsError::InvalidInstanceId(
12254                        err.msg,
12255                    ))
12256                }
12257                "InvalidNextToken" => {
12258                    return RusotoError::Service(ListCommandInvocationsError::InvalidNextToken(
12259                        err.msg,
12260                    ))
12261                }
12262                "ValidationException" => return RusotoError::Validation(err.msg),
12263                _ => {}
12264            }
12265        }
12266        RusotoError::Unknown(res)
12267    }
12268}
12269impl fmt::Display for ListCommandInvocationsError {
12270    #[allow(unused_variables)]
12271    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12272        match *self {
12273            ListCommandInvocationsError::InternalServerError(ref cause) => write!(f, "{}", cause),
12274            ListCommandInvocationsError::InvalidCommandId(ref cause) => write!(f, "{}", cause),
12275            ListCommandInvocationsError::InvalidFilterKey(ref cause) => write!(f, "{}", cause),
12276            ListCommandInvocationsError::InvalidInstanceId(ref cause) => write!(f, "{}", cause),
12277            ListCommandInvocationsError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
12278        }
12279    }
12280}
12281impl Error for ListCommandInvocationsError {}
12282/// Errors returned by ListCommands
12283#[derive(Debug, PartialEq)]
12284pub enum ListCommandsError {
12285    /// <p>An error occurred on the server side.</p>
12286    InternalServerError(String),
12287
12288    InvalidCommandId(String),
12289    /// <p>The specified key is not valid.</p>
12290    InvalidFilterKey(String),
12291    /// <p>The following problems can cause this exception:</p> <p>You do not have permission to access the instance.</p> <p>SSM Agent is not running. Verify that SSM Agent is running.</p> <p>SSM Agent is not registered with the SSM endpoint. Try reinstalling SSM Agent.</p> <p>The instance is not in valid state. Valid states are: Running, Pending, Stopped, Stopping. Invalid states are: Shutting-down and Terminated.</p>
12292    InvalidInstanceId(String),
12293    /// <p>The specified token is not valid.</p>
12294    InvalidNextToken(String),
12295}
12296
12297impl ListCommandsError {
12298    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListCommandsError> {
12299        if let Some(err) = proto::json::Error::parse(&res) {
12300            match err.typ.as_str() {
12301                "InternalServerError" => {
12302                    return RusotoError::Service(ListCommandsError::InternalServerError(err.msg))
12303                }
12304                "InvalidCommandId" => {
12305                    return RusotoError::Service(ListCommandsError::InvalidCommandId(err.msg))
12306                }
12307                "InvalidFilterKey" => {
12308                    return RusotoError::Service(ListCommandsError::InvalidFilterKey(err.msg))
12309                }
12310                "InvalidInstanceId" => {
12311                    return RusotoError::Service(ListCommandsError::InvalidInstanceId(err.msg))
12312                }
12313                "InvalidNextToken" => {
12314                    return RusotoError::Service(ListCommandsError::InvalidNextToken(err.msg))
12315                }
12316                "ValidationException" => return RusotoError::Validation(err.msg),
12317                _ => {}
12318            }
12319        }
12320        RusotoError::Unknown(res)
12321    }
12322}
12323impl fmt::Display for ListCommandsError {
12324    #[allow(unused_variables)]
12325    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12326        match *self {
12327            ListCommandsError::InternalServerError(ref cause) => write!(f, "{}", cause),
12328            ListCommandsError::InvalidCommandId(ref cause) => write!(f, "{}", cause),
12329            ListCommandsError::InvalidFilterKey(ref cause) => write!(f, "{}", cause),
12330            ListCommandsError::InvalidInstanceId(ref cause) => write!(f, "{}", cause),
12331            ListCommandsError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
12332        }
12333    }
12334}
12335impl Error for ListCommandsError {}
12336/// Errors returned by ListComplianceItems
12337#[derive(Debug, PartialEq)]
12338pub enum ListComplianceItemsError {
12339    /// <p>An error occurred on the server side.</p>
12340    InternalServerError(String),
12341    /// <p>The filter name is not valid. Verify the you entered the correct name and try again.</p>
12342    InvalidFilter(String),
12343    /// <p>The specified token is not valid.</p>
12344    InvalidNextToken(String),
12345    /// <p>The resource ID is not valid. Verify that you entered the correct ID and try again.</p>
12346    InvalidResourceId(String),
12347    /// <p>The resource type is not valid. For example, if you are attempting to tag an instance, the instance must be a registered, managed instance.</p>
12348    InvalidResourceType(String),
12349}
12350
12351impl ListComplianceItemsError {
12352    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListComplianceItemsError> {
12353        if let Some(err) = proto::json::Error::parse(&res) {
12354            match err.typ.as_str() {
12355                "InternalServerError" => {
12356                    return RusotoError::Service(ListComplianceItemsError::InternalServerError(
12357                        err.msg,
12358                    ))
12359                }
12360                "InvalidFilter" => {
12361                    return RusotoError::Service(ListComplianceItemsError::InvalidFilter(err.msg))
12362                }
12363                "InvalidNextToken" => {
12364                    return RusotoError::Service(ListComplianceItemsError::InvalidNextToken(
12365                        err.msg,
12366                    ))
12367                }
12368                "InvalidResourceId" => {
12369                    return RusotoError::Service(ListComplianceItemsError::InvalidResourceId(
12370                        err.msg,
12371                    ))
12372                }
12373                "InvalidResourceType" => {
12374                    return RusotoError::Service(ListComplianceItemsError::InvalidResourceType(
12375                        err.msg,
12376                    ))
12377                }
12378                "ValidationException" => return RusotoError::Validation(err.msg),
12379                _ => {}
12380            }
12381        }
12382        RusotoError::Unknown(res)
12383    }
12384}
12385impl fmt::Display for ListComplianceItemsError {
12386    #[allow(unused_variables)]
12387    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12388        match *self {
12389            ListComplianceItemsError::InternalServerError(ref cause) => write!(f, "{}", cause),
12390            ListComplianceItemsError::InvalidFilter(ref cause) => write!(f, "{}", cause),
12391            ListComplianceItemsError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
12392            ListComplianceItemsError::InvalidResourceId(ref cause) => write!(f, "{}", cause),
12393            ListComplianceItemsError::InvalidResourceType(ref cause) => write!(f, "{}", cause),
12394        }
12395    }
12396}
12397impl Error for ListComplianceItemsError {}
12398/// Errors returned by ListComplianceSummaries
12399#[derive(Debug, PartialEq)]
12400pub enum ListComplianceSummariesError {
12401    /// <p>An error occurred on the server side.</p>
12402    InternalServerError(String),
12403    /// <p>The filter name is not valid. Verify the you entered the correct name and try again.</p>
12404    InvalidFilter(String),
12405    /// <p>The specified token is not valid.</p>
12406    InvalidNextToken(String),
12407}
12408
12409impl ListComplianceSummariesError {
12410    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListComplianceSummariesError> {
12411        if let Some(err) = proto::json::Error::parse(&res) {
12412            match err.typ.as_str() {
12413                "InternalServerError" => {
12414                    return RusotoError::Service(ListComplianceSummariesError::InternalServerError(
12415                        err.msg,
12416                    ))
12417                }
12418                "InvalidFilter" => {
12419                    return RusotoError::Service(ListComplianceSummariesError::InvalidFilter(
12420                        err.msg,
12421                    ))
12422                }
12423                "InvalidNextToken" => {
12424                    return RusotoError::Service(ListComplianceSummariesError::InvalidNextToken(
12425                        err.msg,
12426                    ))
12427                }
12428                "ValidationException" => return RusotoError::Validation(err.msg),
12429                _ => {}
12430            }
12431        }
12432        RusotoError::Unknown(res)
12433    }
12434}
12435impl fmt::Display for ListComplianceSummariesError {
12436    #[allow(unused_variables)]
12437    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12438        match *self {
12439            ListComplianceSummariesError::InternalServerError(ref cause) => write!(f, "{}", cause),
12440            ListComplianceSummariesError::InvalidFilter(ref cause) => write!(f, "{}", cause),
12441            ListComplianceSummariesError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
12442        }
12443    }
12444}
12445impl Error for ListComplianceSummariesError {}
12446/// Errors returned by ListDocumentVersions
12447#[derive(Debug, PartialEq)]
12448pub enum ListDocumentVersionsError {
12449    /// <p>An error occurred on the server side.</p>
12450    InternalServerError(String),
12451    /// <p>The specified document does not exist.</p>
12452    InvalidDocument(String),
12453    /// <p>The specified token is not valid.</p>
12454    InvalidNextToken(String),
12455}
12456
12457impl ListDocumentVersionsError {
12458    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListDocumentVersionsError> {
12459        if let Some(err) = proto::json::Error::parse(&res) {
12460            match err.typ.as_str() {
12461                "InternalServerError" => {
12462                    return RusotoError::Service(ListDocumentVersionsError::InternalServerError(
12463                        err.msg,
12464                    ))
12465                }
12466                "InvalidDocument" => {
12467                    return RusotoError::Service(ListDocumentVersionsError::InvalidDocument(
12468                        err.msg,
12469                    ))
12470                }
12471                "InvalidNextToken" => {
12472                    return RusotoError::Service(ListDocumentVersionsError::InvalidNextToken(
12473                        err.msg,
12474                    ))
12475                }
12476                "ValidationException" => return RusotoError::Validation(err.msg),
12477                _ => {}
12478            }
12479        }
12480        RusotoError::Unknown(res)
12481    }
12482}
12483impl fmt::Display for ListDocumentVersionsError {
12484    #[allow(unused_variables)]
12485    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12486        match *self {
12487            ListDocumentVersionsError::InternalServerError(ref cause) => write!(f, "{}", cause),
12488            ListDocumentVersionsError::InvalidDocument(ref cause) => write!(f, "{}", cause),
12489            ListDocumentVersionsError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
12490        }
12491    }
12492}
12493impl Error for ListDocumentVersionsError {}
12494/// Errors returned by ListDocuments
12495#[derive(Debug, PartialEq)]
12496pub enum ListDocumentsError {
12497    /// <p>An error occurred on the server side.</p>
12498    InternalServerError(String),
12499    /// <p>The specified key is not valid.</p>
12500    InvalidFilterKey(String),
12501    /// <p>The specified token is not valid.</p>
12502    InvalidNextToken(String),
12503}
12504
12505impl ListDocumentsError {
12506    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListDocumentsError> {
12507        if let Some(err) = proto::json::Error::parse(&res) {
12508            match err.typ.as_str() {
12509                "InternalServerError" => {
12510                    return RusotoError::Service(ListDocumentsError::InternalServerError(err.msg))
12511                }
12512                "InvalidFilterKey" => {
12513                    return RusotoError::Service(ListDocumentsError::InvalidFilterKey(err.msg))
12514                }
12515                "InvalidNextToken" => {
12516                    return RusotoError::Service(ListDocumentsError::InvalidNextToken(err.msg))
12517                }
12518                "ValidationException" => return RusotoError::Validation(err.msg),
12519                _ => {}
12520            }
12521        }
12522        RusotoError::Unknown(res)
12523    }
12524}
12525impl fmt::Display for ListDocumentsError {
12526    #[allow(unused_variables)]
12527    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12528        match *self {
12529            ListDocumentsError::InternalServerError(ref cause) => write!(f, "{}", cause),
12530            ListDocumentsError::InvalidFilterKey(ref cause) => write!(f, "{}", cause),
12531            ListDocumentsError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
12532        }
12533    }
12534}
12535impl Error for ListDocumentsError {}
12536/// Errors returned by ListInventoryEntries
12537#[derive(Debug, PartialEq)]
12538pub enum ListInventoryEntriesError {
12539    /// <p>An error occurred on the server side.</p>
12540    InternalServerError(String),
12541    /// <p>The filter name is not valid. Verify the you entered the correct name and try again.</p>
12542    InvalidFilter(String),
12543    /// <p>The following problems can cause this exception:</p> <p>You do not have permission to access the instance.</p> <p>SSM Agent is not running. Verify that SSM Agent is running.</p> <p>SSM Agent is not registered with the SSM endpoint. Try reinstalling SSM Agent.</p> <p>The instance is not in valid state. Valid states are: Running, Pending, Stopped, Stopping. Invalid states are: Shutting-down and Terminated.</p>
12544    InvalidInstanceId(String),
12545    /// <p>The specified token is not valid.</p>
12546    InvalidNextToken(String),
12547    /// <p>The parameter type name is not valid.</p>
12548    InvalidTypeName(String),
12549}
12550
12551impl ListInventoryEntriesError {
12552    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListInventoryEntriesError> {
12553        if let Some(err) = proto::json::Error::parse(&res) {
12554            match err.typ.as_str() {
12555                "InternalServerError" => {
12556                    return RusotoError::Service(ListInventoryEntriesError::InternalServerError(
12557                        err.msg,
12558                    ))
12559                }
12560                "InvalidFilter" => {
12561                    return RusotoError::Service(ListInventoryEntriesError::InvalidFilter(err.msg))
12562                }
12563                "InvalidInstanceId" => {
12564                    return RusotoError::Service(ListInventoryEntriesError::InvalidInstanceId(
12565                        err.msg,
12566                    ))
12567                }
12568                "InvalidNextToken" => {
12569                    return RusotoError::Service(ListInventoryEntriesError::InvalidNextToken(
12570                        err.msg,
12571                    ))
12572                }
12573                "InvalidTypeNameException" => {
12574                    return RusotoError::Service(ListInventoryEntriesError::InvalidTypeName(
12575                        err.msg,
12576                    ))
12577                }
12578                "ValidationException" => return RusotoError::Validation(err.msg),
12579                _ => {}
12580            }
12581        }
12582        RusotoError::Unknown(res)
12583    }
12584}
12585impl fmt::Display for ListInventoryEntriesError {
12586    #[allow(unused_variables)]
12587    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12588        match *self {
12589            ListInventoryEntriesError::InternalServerError(ref cause) => write!(f, "{}", cause),
12590            ListInventoryEntriesError::InvalidFilter(ref cause) => write!(f, "{}", cause),
12591            ListInventoryEntriesError::InvalidInstanceId(ref cause) => write!(f, "{}", cause),
12592            ListInventoryEntriesError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
12593            ListInventoryEntriesError::InvalidTypeName(ref cause) => write!(f, "{}", cause),
12594        }
12595    }
12596}
12597impl Error for ListInventoryEntriesError {}
12598/// Errors returned by ListResourceComplianceSummaries
12599#[derive(Debug, PartialEq)]
12600pub enum ListResourceComplianceSummariesError {
12601    /// <p>An error occurred on the server side.</p>
12602    InternalServerError(String),
12603    /// <p>The filter name is not valid. Verify the you entered the correct name and try again.</p>
12604    InvalidFilter(String),
12605    /// <p>The specified token is not valid.</p>
12606    InvalidNextToken(String),
12607}
12608
12609impl ListResourceComplianceSummariesError {
12610    pub fn from_response(
12611        res: BufferedHttpResponse,
12612    ) -> RusotoError<ListResourceComplianceSummariesError> {
12613        if let Some(err) = proto::json::Error::parse(&res) {
12614            match err.typ.as_str() {
12615                "InternalServerError" => {
12616                    return RusotoError::Service(
12617                        ListResourceComplianceSummariesError::InternalServerError(err.msg),
12618                    )
12619                }
12620                "InvalidFilter" => {
12621                    return RusotoError::Service(
12622                        ListResourceComplianceSummariesError::InvalidFilter(err.msg),
12623                    )
12624                }
12625                "InvalidNextToken" => {
12626                    return RusotoError::Service(
12627                        ListResourceComplianceSummariesError::InvalidNextToken(err.msg),
12628                    )
12629                }
12630                "ValidationException" => return RusotoError::Validation(err.msg),
12631                _ => {}
12632            }
12633        }
12634        RusotoError::Unknown(res)
12635    }
12636}
12637impl fmt::Display for ListResourceComplianceSummariesError {
12638    #[allow(unused_variables)]
12639    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12640        match *self {
12641            ListResourceComplianceSummariesError::InternalServerError(ref cause) => {
12642                write!(f, "{}", cause)
12643            }
12644            ListResourceComplianceSummariesError::InvalidFilter(ref cause) => {
12645                write!(f, "{}", cause)
12646            }
12647            ListResourceComplianceSummariesError::InvalidNextToken(ref cause) => {
12648                write!(f, "{}", cause)
12649            }
12650        }
12651    }
12652}
12653impl Error for ListResourceComplianceSummariesError {}
12654/// Errors returned by ListResourceDataSync
12655#[derive(Debug, PartialEq)]
12656pub enum ListResourceDataSyncError {
12657    /// <p>An error occurred on the server side.</p>
12658    InternalServerError(String),
12659    /// <p>The specified token is not valid.</p>
12660    InvalidNextToken(String),
12661    /// <p>The specified sync configuration is invalid.</p>
12662    ResourceDataSyncInvalidConfiguration(String),
12663}
12664
12665impl ListResourceDataSyncError {
12666    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListResourceDataSyncError> {
12667        if let Some(err) = proto::json::Error::parse(&res) {
12668            match err.typ.as_str() {
12669                "InternalServerError" => {
12670                    return RusotoError::Service(ListResourceDataSyncError::InternalServerError(
12671                        err.msg,
12672                    ))
12673                }
12674                "InvalidNextToken" => {
12675                    return RusotoError::Service(ListResourceDataSyncError::InvalidNextToken(
12676                        err.msg,
12677                    ))
12678                }
12679                "ResourceDataSyncInvalidConfigurationException" => {
12680                    return RusotoError::Service(
12681                        ListResourceDataSyncError::ResourceDataSyncInvalidConfiguration(err.msg),
12682                    )
12683                }
12684                "ValidationException" => return RusotoError::Validation(err.msg),
12685                _ => {}
12686            }
12687        }
12688        RusotoError::Unknown(res)
12689    }
12690}
12691impl fmt::Display for ListResourceDataSyncError {
12692    #[allow(unused_variables)]
12693    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12694        match *self {
12695            ListResourceDataSyncError::InternalServerError(ref cause) => write!(f, "{}", cause),
12696            ListResourceDataSyncError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
12697            ListResourceDataSyncError::ResourceDataSyncInvalidConfiguration(ref cause) => {
12698                write!(f, "{}", cause)
12699            }
12700        }
12701    }
12702}
12703impl Error for ListResourceDataSyncError {}
12704/// Errors returned by ListTagsForResource
12705#[derive(Debug, PartialEq)]
12706pub enum ListTagsForResourceError {
12707    /// <p>An error occurred on the server side.</p>
12708    InternalServerError(String),
12709    /// <p>The resource ID is not valid. Verify that you entered the correct ID and try again.</p>
12710    InvalidResourceId(String),
12711    /// <p>The resource type is not valid. For example, if you are attempting to tag an instance, the instance must be a registered, managed instance.</p>
12712    InvalidResourceType(String),
12713}
12714
12715impl ListTagsForResourceError {
12716    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListTagsForResourceError> {
12717        if let Some(err) = proto::json::Error::parse(&res) {
12718            match err.typ.as_str() {
12719                "InternalServerError" => {
12720                    return RusotoError::Service(ListTagsForResourceError::InternalServerError(
12721                        err.msg,
12722                    ))
12723                }
12724                "InvalidResourceId" => {
12725                    return RusotoError::Service(ListTagsForResourceError::InvalidResourceId(
12726                        err.msg,
12727                    ))
12728                }
12729                "InvalidResourceType" => {
12730                    return RusotoError::Service(ListTagsForResourceError::InvalidResourceType(
12731                        err.msg,
12732                    ))
12733                }
12734                "ValidationException" => return RusotoError::Validation(err.msg),
12735                _ => {}
12736            }
12737        }
12738        RusotoError::Unknown(res)
12739    }
12740}
12741impl fmt::Display for ListTagsForResourceError {
12742    #[allow(unused_variables)]
12743    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12744        match *self {
12745            ListTagsForResourceError::InternalServerError(ref cause) => write!(f, "{}", cause),
12746            ListTagsForResourceError::InvalidResourceId(ref cause) => write!(f, "{}", cause),
12747            ListTagsForResourceError::InvalidResourceType(ref cause) => write!(f, "{}", cause),
12748        }
12749    }
12750}
12751impl Error for ListTagsForResourceError {}
12752/// Errors returned by ModifyDocumentPermission
12753#[derive(Debug, PartialEq)]
12754pub enum ModifyDocumentPermissionError {
12755    /// <p>You can have at most 500 active Systems Manager documents.</p>
12756    DocumentLimitExceeded(String),
12757    /// <p>The document cannot be shared with more AWS user accounts. You can share a document with a maximum of 20 accounts. You can publicly share up to five documents. If you need to increase this limit, contact AWS Support.</p>
12758    DocumentPermissionLimit(String),
12759    /// <p>An error occurred on the server side.</p>
12760    InternalServerError(String),
12761    /// <p>The specified document does not exist.</p>
12762    InvalidDocument(String),
12763    /// <p>The permission type is not supported. <i>Share</i> is the only supported permission type.</p>
12764    InvalidPermissionType(String),
12765}
12766
12767impl ModifyDocumentPermissionError {
12768    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ModifyDocumentPermissionError> {
12769        if let Some(err) = proto::json::Error::parse(&res) {
12770            match err.typ.as_str() {
12771                "DocumentLimitExceeded" => {
12772                    return RusotoError::Service(
12773                        ModifyDocumentPermissionError::DocumentLimitExceeded(err.msg),
12774                    )
12775                }
12776                "DocumentPermissionLimit" => {
12777                    return RusotoError::Service(
12778                        ModifyDocumentPermissionError::DocumentPermissionLimit(err.msg),
12779                    )
12780                }
12781                "InternalServerError" => {
12782                    return RusotoError::Service(
12783                        ModifyDocumentPermissionError::InternalServerError(err.msg),
12784                    )
12785                }
12786                "InvalidDocument" => {
12787                    return RusotoError::Service(ModifyDocumentPermissionError::InvalidDocument(
12788                        err.msg,
12789                    ))
12790                }
12791                "InvalidPermissionType" => {
12792                    return RusotoError::Service(
12793                        ModifyDocumentPermissionError::InvalidPermissionType(err.msg),
12794                    )
12795                }
12796                "ValidationException" => return RusotoError::Validation(err.msg),
12797                _ => {}
12798            }
12799        }
12800        RusotoError::Unknown(res)
12801    }
12802}
12803impl fmt::Display for ModifyDocumentPermissionError {
12804    #[allow(unused_variables)]
12805    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12806        match *self {
12807            ModifyDocumentPermissionError::DocumentLimitExceeded(ref cause) => {
12808                write!(f, "{}", cause)
12809            }
12810            ModifyDocumentPermissionError::DocumentPermissionLimit(ref cause) => {
12811                write!(f, "{}", cause)
12812            }
12813            ModifyDocumentPermissionError::InternalServerError(ref cause) => write!(f, "{}", cause),
12814            ModifyDocumentPermissionError::InvalidDocument(ref cause) => write!(f, "{}", cause),
12815            ModifyDocumentPermissionError::InvalidPermissionType(ref cause) => {
12816                write!(f, "{}", cause)
12817            }
12818        }
12819    }
12820}
12821impl Error for ModifyDocumentPermissionError {}
12822/// Errors returned by PutComplianceItems
12823#[derive(Debug, PartialEq)]
12824pub enum PutComplianceItemsError {
12825    /// <p>You specified too many custom compliance types. You can specify a maximum of 10 different types. </p>
12826    ComplianceTypeCountLimitExceeded(String),
12827    /// <p>An error occurred on the server side.</p>
12828    InternalServerError(String),
12829    /// <p>One or more content items is not valid.</p>
12830    InvalidItemContent(String),
12831    /// <p>The resource ID is not valid. Verify that you entered the correct ID and try again.</p>
12832    InvalidResourceId(String),
12833    /// <p>The resource type is not valid. For example, if you are attempting to tag an instance, the instance must be a registered, managed instance.</p>
12834    InvalidResourceType(String),
12835    /// <p>The inventory item size has exceeded the size limit.</p>
12836    ItemSizeLimitExceeded(String),
12837    /// <p>The size of inventory data has exceeded the total size limit for the resource.</p>
12838    TotalSizeLimitExceeded(String),
12839}
12840
12841impl PutComplianceItemsError {
12842    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<PutComplianceItemsError> {
12843        if let Some(err) = proto::json::Error::parse(&res) {
12844            match err.typ.as_str() {
12845                "ComplianceTypeCountLimitExceededException" => {
12846                    return RusotoError::Service(
12847                        PutComplianceItemsError::ComplianceTypeCountLimitExceeded(err.msg),
12848                    )
12849                }
12850                "InternalServerError" => {
12851                    return RusotoError::Service(PutComplianceItemsError::InternalServerError(
12852                        err.msg,
12853                    ))
12854                }
12855                "InvalidItemContentException" => {
12856                    return RusotoError::Service(PutComplianceItemsError::InvalidItemContent(
12857                        err.msg,
12858                    ))
12859                }
12860                "InvalidResourceId" => {
12861                    return RusotoError::Service(PutComplianceItemsError::InvalidResourceId(
12862                        err.msg,
12863                    ))
12864                }
12865                "InvalidResourceType" => {
12866                    return RusotoError::Service(PutComplianceItemsError::InvalidResourceType(
12867                        err.msg,
12868                    ))
12869                }
12870                "ItemSizeLimitExceededException" => {
12871                    return RusotoError::Service(PutComplianceItemsError::ItemSizeLimitExceeded(
12872                        err.msg,
12873                    ))
12874                }
12875                "TotalSizeLimitExceededException" => {
12876                    return RusotoError::Service(PutComplianceItemsError::TotalSizeLimitExceeded(
12877                        err.msg,
12878                    ))
12879                }
12880                "ValidationException" => return RusotoError::Validation(err.msg),
12881                _ => {}
12882            }
12883        }
12884        RusotoError::Unknown(res)
12885    }
12886}
12887impl fmt::Display for PutComplianceItemsError {
12888    #[allow(unused_variables)]
12889    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12890        match *self {
12891            PutComplianceItemsError::ComplianceTypeCountLimitExceeded(ref cause) => {
12892                write!(f, "{}", cause)
12893            }
12894            PutComplianceItemsError::InternalServerError(ref cause) => write!(f, "{}", cause),
12895            PutComplianceItemsError::InvalidItemContent(ref cause) => write!(f, "{}", cause),
12896            PutComplianceItemsError::InvalidResourceId(ref cause) => write!(f, "{}", cause),
12897            PutComplianceItemsError::InvalidResourceType(ref cause) => write!(f, "{}", cause),
12898            PutComplianceItemsError::ItemSizeLimitExceeded(ref cause) => write!(f, "{}", cause),
12899            PutComplianceItemsError::TotalSizeLimitExceeded(ref cause) => write!(f, "{}", cause),
12900        }
12901    }
12902}
12903impl Error for PutComplianceItemsError {}
12904/// Errors returned by PutInventory
12905#[derive(Debug, PartialEq)]
12906pub enum PutInventoryError {
12907    /// <p>You have exceeded the limit for custom schemas. Delete one or more custom schemas and try again.</p>
12908    CustomSchemaCountLimitExceeded(String),
12909    /// <p>An error occurred on the server side.</p>
12910    InternalServerError(String),
12911    /// <p>The following problems can cause this exception:</p> <p>You do not have permission to access the instance.</p> <p>SSM Agent is not running. Verify that SSM Agent is running.</p> <p>SSM Agent is not registered with the SSM endpoint. Try reinstalling SSM Agent.</p> <p>The instance is not in valid state. Valid states are: Running, Pending, Stopped, Stopping. Invalid states are: Shutting-down and Terminated.</p>
12912    InvalidInstanceId(String),
12913    /// <p>You specified invalid keys or values in the <code>Context</code> attribute for <code>InventoryItem</code>. Verify the keys and values, and try again.</p>
12914    InvalidInventoryItemContext(String),
12915    /// <p>One or more content items is not valid.</p>
12916    InvalidItemContent(String),
12917    /// <p>The parameter type name is not valid.</p>
12918    InvalidTypeName(String),
12919    /// <p>The inventory item has invalid content. </p>
12920    ItemContentMismatch(String),
12921    /// <p>The inventory item size has exceeded the size limit.</p>
12922    ItemSizeLimitExceeded(String),
12923    /// <p>The sub-type count exceeded the limit for the inventory type.</p>
12924    SubTypeCountLimitExceeded(String),
12925    /// <p>The size of inventory data has exceeded the total size limit for the resource.</p>
12926    TotalSizeLimitExceeded(String),
12927    /// <p>The <code>Context</code> attribute that you specified for the <code>InventoryItem</code> is not allowed for this inventory type. You can only use the <code>Context</code> attribute with inventory types like <code>AWS:ComplianceItem</code>.</p>
12928    UnsupportedInventoryItemContext(String),
12929    /// <p>Inventory item type schema version has to match supported versions in the service. Check output of GetInventorySchema to see the available schema version for each type.</p>
12930    UnsupportedInventorySchemaVersion(String),
12931}
12932
12933impl PutInventoryError {
12934    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<PutInventoryError> {
12935        if let Some(err) = proto::json::Error::parse(&res) {
12936            match err.typ.as_str() {
12937                "CustomSchemaCountLimitExceededException" => {
12938                    return RusotoError::Service(PutInventoryError::CustomSchemaCountLimitExceeded(
12939                        err.msg,
12940                    ))
12941                }
12942                "InternalServerError" => {
12943                    return RusotoError::Service(PutInventoryError::InternalServerError(err.msg))
12944                }
12945                "InvalidInstanceId" => {
12946                    return RusotoError::Service(PutInventoryError::InvalidInstanceId(err.msg))
12947                }
12948                "InvalidInventoryItemContextException" => {
12949                    return RusotoError::Service(PutInventoryError::InvalidInventoryItemContext(
12950                        err.msg,
12951                    ))
12952                }
12953                "InvalidItemContentException" => {
12954                    return RusotoError::Service(PutInventoryError::InvalidItemContent(err.msg))
12955                }
12956                "InvalidTypeNameException" => {
12957                    return RusotoError::Service(PutInventoryError::InvalidTypeName(err.msg))
12958                }
12959                "ItemContentMismatchException" => {
12960                    return RusotoError::Service(PutInventoryError::ItemContentMismatch(err.msg))
12961                }
12962                "ItemSizeLimitExceededException" => {
12963                    return RusotoError::Service(PutInventoryError::ItemSizeLimitExceeded(err.msg))
12964                }
12965                "SubTypeCountLimitExceededException" => {
12966                    return RusotoError::Service(PutInventoryError::SubTypeCountLimitExceeded(
12967                        err.msg,
12968                    ))
12969                }
12970                "TotalSizeLimitExceededException" => {
12971                    return RusotoError::Service(PutInventoryError::TotalSizeLimitExceeded(err.msg))
12972                }
12973                "UnsupportedInventoryItemContextException" => {
12974                    return RusotoError::Service(
12975                        PutInventoryError::UnsupportedInventoryItemContext(err.msg),
12976                    )
12977                }
12978                "UnsupportedInventorySchemaVersionException" => {
12979                    return RusotoError::Service(
12980                        PutInventoryError::UnsupportedInventorySchemaVersion(err.msg),
12981                    )
12982                }
12983                "ValidationException" => return RusotoError::Validation(err.msg),
12984                _ => {}
12985            }
12986        }
12987        RusotoError::Unknown(res)
12988    }
12989}
12990impl fmt::Display for PutInventoryError {
12991    #[allow(unused_variables)]
12992    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12993        match *self {
12994            PutInventoryError::CustomSchemaCountLimitExceeded(ref cause) => write!(f, "{}", cause),
12995            PutInventoryError::InternalServerError(ref cause) => write!(f, "{}", cause),
12996            PutInventoryError::InvalidInstanceId(ref cause) => write!(f, "{}", cause),
12997            PutInventoryError::InvalidInventoryItemContext(ref cause) => write!(f, "{}", cause),
12998            PutInventoryError::InvalidItemContent(ref cause) => write!(f, "{}", cause),
12999            PutInventoryError::InvalidTypeName(ref cause) => write!(f, "{}", cause),
13000            PutInventoryError::ItemContentMismatch(ref cause) => write!(f, "{}", cause),
13001            PutInventoryError::ItemSizeLimitExceeded(ref cause) => write!(f, "{}", cause),
13002            PutInventoryError::SubTypeCountLimitExceeded(ref cause) => write!(f, "{}", cause),
13003            PutInventoryError::TotalSizeLimitExceeded(ref cause) => write!(f, "{}", cause),
13004            PutInventoryError::UnsupportedInventoryItemContext(ref cause) => write!(f, "{}", cause),
13005            PutInventoryError::UnsupportedInventorySchemaVersion(ref cause) => {
13006                write!(f, "{}", cause)
13007            }
13008        }
13009    }
13010}
13011impl Error for PutInventoryError {}
13012/// Errors returned by PutParameter
13013#[derive(Debug, PartialEq)]
13014pub enum PutParameterError {
13015    /// <p>A hierarchy can have a maximum of 15 levels. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-parameter-name-constraints.html">Requirements and constraints for parameter names</a> in the <i>AWS Systems Manager User Guide</i>. </p>
13016    HierarchyLevelLimitExceeded(String),
13017    /// <p>Parameter Store does not support changing a parameter type in a hierarchy. For example, you can't change a parameter from a <code>String</code> type to a <code>SecureString</code> type. You must create a new, unique parameter.</p>
13018    HierarchyTypeMismatch(String),
13019    /// <p>There is a conflict in the policies specified for this parameter. You can't, for example, specify two Expiration policies for a parameter. Review your policies, and try again.</p>
13020    IncompatiblePolicy(String),
13021    /// <p>An error occurred on the server side.</p>
13022    InternalServerError(String),
13023    /// <p>The request does not meet the regular expression requirement.</p>
13024    InvalidAllowedPattern(String),
13025    /// <p>The query key ID is not valid.</p>
13026    InvalidKeyId(String),
13027    /// <p>A policy attribute or its value is invalid. </p>
13028    InvalidPolicyAttribute(String),
13029    /// <p>The policy type is not supported. Parameter Store supports the following policy types: Expiration, ExpirationNotification, and NoChangeNotification.</p>
13030    InvalidPolicyType(String),
13031    /// <p>The parameter already exists. You can't create duplicate parameters.</p>
13032    ParameterAlreadyExists(String),
13033    /// <p>You have exceeded the number of parameters for this AWS account. Delete one or more parameters and try again.</p>
13034    ParameterLimitExceeded(String),
13035    /// <p>The parameter exceeded the maximum number of allowed versions.</p>
13036    ParameterMaxVersionLimitExceeded(String),
13037    /// <p>The parameter name is not valid.</p>
13038    ParameterPatternMismatch(String),
13039    /// <p>You specified more than the maximum number of allowed policies for the parameter. The maximum is 10.</p>
13040    PoliciesLimitExceeded(String),
13041    /// <p>There are concurrent updates for a resource that supports one update at a time.</p>
13042    TooManyUpdates(String),
13043    /// <p>The parameter type is not supported.</p>
13044    UnsupportedParameterType(String),
13045}
13046
13047impl PutParameterError {
13048    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<PutParameterError> {
13049        if let Some(err) = proto::json::Error::parse(&res) {
13050            match err.typ.as_str() {
13051                "HierarchyLevelLimitExceededException" => {
13052                    return RusotoError::Service(PutParameterError::HierarchyLevelLimitExceeded(
13053                        err.msg,
13054                    ))
13055                }
13056                "HierarchyTypeMismatchException" => {
13057                    return RusotoError::Service(PutParameterError::HierarchyTypeMismatch(err.msg))
13058                }
13059                "IncompatiblePolicyException" => {
13060                    return RusotoError::Service(PutParameterError::IncompatiblePolicy(err.msg))
13061                }
13062                "InternalServerError" => {
13063                    return RusotoError::Service(PutParameterError::InternalServerError(err.msg))
13064                }
13065                "InvalidAllowedPatternException" => {
13066                    return RusotoError::Service(PutParameterError::InvalidAllowedPattern(err.msg))
13067                }
13068                "InvalidKeyId" => {
13069                    return RusotoError::Service(PutParameterError::InvalidKeyId(err.msg))
13070                }
13071                "InvalidPolicyAttributeException" => {
13072                    return RusotoError::Service(PutParameterError::InvalidPolicyAttribute(err.msg))
13073                }
13074                "InvalidPolicyTypeException" => {
13075                    return RusotoError::Service(PutParameterError::InvalidPolicyType(err.msg))
13076                }
13077                "ParameterAlreadyExists" => {
13078                    return RusotoError::Service(PutParameterError::ParameterAlreadyExists(err.msg))
13079                }
13080                "ParameterLimitExceeded" => {
13081                    return RusotoError::Service(PutParameterError::ParameterLimitExceeded(err.msg))
13082                }
13083                "ParameterMaxVersionLimitExceeded" => {
13084                    return RusotoError::Service(
13085                        PutParameterError::ParameterMaxVersionLimitExceeded(err.msg),
13086                    )
13087                }
13088                "ParameterPatternMismatchException" => {
13089                    return RusotoError::Service(PutParameterError::ParameterPatternMismatch(
13090                        err.msg,
13091                    ))
13092                }
13093                "PoliciesLimitExceededException" => {
13094                    return RusotoError::Service(PutParameterError::PoliciesLimitExceeded(err.msg))
13095                }
13096                "TooManyUpdates" => {
13097                    return RusotoError::Service(PutParameterError::TooManyUpdates(err.msg))
13098                }
13099                "UnsupportedParameterType" => {
13100                    return RusotoError::Service(PutParameterError::UnsupportedParameterType(
13101                        err.msg,
13102                    ))
13103                }
13104                "ValidationException" => return RusotoError::Validation(err.msg),
13105                _ => {}
13106            }
13107        }
13108        RusotoError::Unknown(res)
13109    }
13110}
13111impl fmt::Display for PutParameterError {
13112    #[allow(unused_variables)]
13113    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13114        match *self {
13115            PutParameterError::HierarchyLevelLimitExceeded(ref cause) => write!(f, "{}", cause),
13116            PutParameterError::HierarchyTypeMismatch(ref cause) => write!(f, "{}", cause),
13117            PutParameterError::IncompatiblePolicy(ref cause) => write!(f, "{}", cause),
13118            PutParameterError::InternalServerError(ref cause) => write!(f, "{}", cause),
13119            PutParameterError::InvalidAllowedPattern(ref cause) => write!(f, "{}", cause),
13120            PutParameterError::InvalidKeyId(ref cause) => write!(f, "{}", cause),
13121            PutParameterError::InvalidPolicyAttribute(ref cause) => write!(f, "{}", cause),
13122            PutParameterError::InvalidPolicyType(ref cause) => write!(f, "{}", cause),
13123            PutParameterError::ParameterAlreadyExists(ref cause) => write!(f, "{}", cause),
13124            PutParameterError::ParameterLimitExceeded(ref cause) => write!(f, "{}", cause),
13125            PutParameterError::ParameterMaxVersionLimitExceeded(ref cause) => {
13126                write!(f, "{}", cause)
13127            }
13128            PutParameterError::ParameterPatternMismatch(ref cause) => write!(f, "{}", cause),
13129            PutParameterError::PoliciesLimitExceeded(ref cause) => write!(f, "{}", cause),
13130            PutParameterError::TooManyUpdates(ref cause) => write!(f, "{}", cause),
13131            PutParameterError::UnsupportedParameterType(ref cause) => write!(f, "{}", cause),
13132        }
13133    }
13134}
13135impl Error for PutParameterError {}
13136/// Errors returned by RegisterDefaultPatchBaseline
13137#[derive(Debug, PartialEq)]
13138pub enum RegisterDefaultPatchBaselineError {
13139    /// <p>Error returned when the ID specified for a resource, such as a maintenance window or Patch baseline, doesn't exist.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
13140    DoesNotExist(String),
13141    /// <p>An error occurred on the server side.</p>
13142    InternalServerError(String),
13143    /// <p>The resource ID is not valid. Verify that you entered the correct ID and try again.</p>
13144    InvalidResourceId(String),
13145}
13146
13147impl RegisterDefaultPatchBaselineError {
13148    pub fn from_response(
13149        res: BufferedHttpResponse,
13150    ) -> RusotoError<RegisterDefaultPatchBaselineError> {
13151        if let Some(err) = proto::json::Error::parse(&res) {
13152            match err.typ.as_str() {
13153                "DoesNotExistException" => {
13154                    return RusotoError::Service(RegisterDefaultPatchBaselineError::DoesNotExist(
13155                        err.msg,
13156                    ))
13157                }
13158                "InternalServerError" => {
13159                    return RusotoError::Service(
13160                        RegisterDefaultPatchBaselineError::InternalServerError(err.msg),
13161                    )
13162                }
13163                "InvalidResourceId" => {
13164                    return RusotoError::Service(
13165                        RegisterDefaultPatchBaselineError::InvalidResourceId(err.msg),
13166                    )
13167                }
13168                "ValidationException" => return RusotoError::Validation(err.msg),
13169                _ => {}
13170            }
13171        }
13172        RusotoError::Unknown(res)
13173    }
13174}
13175impl fmt::Display for RegisterDefaultPatchBaselineError {
13176    #[allow(unused_variables)]
13177    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13178        match *self {
13179            RegisterDefaultPatchBaselineError::DoesNotExist(ref cause) => write!(f, "{}", cause),
13180            RegisterDefaultPatchBaselineError::InternalServerError(ref cause) => {
13181                write!(f, "{}", cause)
13182            }
13183            RegisterDefaultPatchBaselineError::InvalidResourceId(ref cause) => {
13184                write!(f, "{}", cause)
13185            }
13186        }
13187    }
13188}
13189impl Error for RegisterDefaultPatchBaselineError {}
13190/// Errors returned by RegisterPatchBaselineForPatchGroup
13191#[derive(Debug, PartialEq)]
13192pub enum RegisterPatchBaselineForPatchGroupError {
13193    /// <p>Error returned if an attempt is made to register a patch group with a patch baseline that is already registered with a different patch baseline.</p>
13194    AlreadyExists(String),
13195    /// <p>Error returned when the ID specified for a resource, such as a maintenance window or Patch baseline, doesn't exist.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
13196    DoesNotExist(String),
13197    /// <p>An error occurred on the server side.</p>
13198    InternalServerError(String),
13199    /// <p>The resource ID is not valid. Verify that you entered the correct ID and try again.</p>
13200    InvalidResourceId(String),
13201    /// <p>Error returned when the caller has exceeded the default resource quotas. For example, too many maintenance windows or patch baselines have been created.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
13202    ResourceLimitExceeded(String),
13203}
13204
13205impl RegisterPatchBaselineForPatchGroupError {
13206    pub fn from_response(
13207        res: BufferedHttpResponse,
13208    ) -> RusotoError<RegisterPatchBaselineForPatchGroupError> {
13209        if let Some(err) = proto::json::Error::parse(&res) {
13210            match err.typ.as_str() {
13211                "AlreadyExistsException" => {
13212                    return RusotoError::Service(
13213                        RegisterPatchBaselineForPatchGroupError::AlreadyExists(err.msg),
13214                    )
13215                }
13216                "DoesNotExistException" => {
13217                    return RusotoError::Service(
13218                        RegisterPatchBaselineForPatchGroupError::DoesNotExist(err.msg),
13219                    )
13220                }
13221                "InternalServerError" => {
13222                    return RusotoError::Service(
13223                        RegisterPatchBaselineForPatchGroupError::InternalServerError(err.msg),
13224                    )
13225                }
13226                "InvalidResourceId" => {
13227                    return RusotoError::Service(
13228                        RegisterPatchBaselineForPatchGroupError::InvalidResourceId(err.msg),
13229                    )
13230                }
13231                "ResourceLimitExceededException" => {
13232                    return RusotoError::Service(
13233                        RegisterPatchBaselineForPatchGroupError::ResourceLimitExceeded(err.msg),
13234                    )
13235                }
13236                "ValidationException" => return RusotoError::Validation(err.msg),
13237                _ => {}
13238            }
13239        }
13240        RusotoError::Unknown(res)
13241    }
13242}
13243impl fmt::Display for RegisterPatchBaselineForPatchGroupError {
13244    #[allow(unused_variables)]
13245    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13246        match *self {
13247            RegisterPatchBaselineForPatchGroupError::AlreadyExists(ref cause) => {
13248                write!(f, "{}", cause)
13249            }
13250            RegisterPatchBaselineForPatchGroupError::DoesNotExist(ref cause) => {
13251                write!(f, "{}", cause)
13252            }
13253            RegisterPatchBaselineForPatchGroupError::InternalServerError(ref cause) => {
13254                write!(f, "{}", cause)
13255            }
13256            RegisterPatchBaselineForPatchGroupError::InvalidResourceId(ref cause) => {
13257                write!(f, "{}", cause)
13258            }
13259            RegisterPatchBaselineForPatchGroupError::ResourceLimitExceeded(ref cause) => {
13260                write!(f, "{}", cause)
13261            }
13262        }
13263    }
13264}
13265impl Error for RegisterPatchBaselineForPatchGroupError {}
13266/// Errors returned by RegisterTargetWithMaintenanceWindow
13267#[derive(Debug, PartialEq)]
13268pub enum RegisterTargetWithMaintenanceWindowError {
13269    /// <p>Error returned when the ID specified for a resource, such as a maintenance window or Patch baseline, doesn't exist.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
13270    DoesNotExist(String),
13271    /// <p>Error returned when an idempotent operation is retried and the parameters don't match the original call to the API with the same idempotency token. </p>
13272    IdempotentParameterMismatch(String),
13273    /// <p>An error occurred on the server side.</p>
13274    InternalServerError(String),
13275    /// <p>Error returned when the caller has exceeded the default resource quotas. For example, too many maintenance windows or patch baselines have been created.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
13276    ResourceLimitExceeded(String),
13277}
13278
13279impl RegisterTargetWithMaintenanceWindowError {
13280    pub fn from_response(
13281        res: BufferedHttpResponse,
13282    ) -> RusotoError<RegisterTargetWithMaintenanceWindowError> {
13283        if let Some(err) = proto::json::Error::parse(&res) {
13284            match err.typ.as_str() {
13285                "DoesNotExistException" => {
13286                    return RusotoError::Service(
13287                        RegisterTargetWithMaintenanceWindowError::DoesNotExist(err.msg),
13288                    )
13289                }
13290                "IdempotentParameterMismatch" => {
13291                    return RusotoError::Service(
13292                        RegisterTargetWithMaintenanceWindowError::IdempotentParameterMismatch(
13293                            err.msg,
13294                        ),
13295                    )
13296                }
13297                "InternalServerError" => {
13298                    return RusotoError::Service(
13299                        RegisterTargetWithMaintenanceWindowError::InternalServerError(err.msg),
13300                    )
13301                }
13302                "ResourceLimitExceededException" => {
13303                    return RusotoError::Service(
13304                        RegisterTargetWithMaintenanceWindowError::ResourceLimitExceeded(err.msg),
13305                    )
13306                }
13307                "ValidationException" => return RusotoError::Validation(err.msg),
13308                _ => {}
13309            }
13310        }
13311        RusotoError::Unknown(res)
13312    }
13313}
13314impl fmt::Display for RegisterTargetWithMaintenanceWindowError {
13315    #[allow(unused_variables)]
13316    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13317        match *self {
13318            RegisterTargetWithMaintenanceWindowError::DoesNotExist(ref cause) => {
13319                write!(f, "{}", cause)
13320            }
13321            RegisterTargetWithMaintenanceWindowError::IdempotentParameterMismatch(ref cause) => {
13322                write!(f, "{}", cause)
13323            }
13324            RegisterTargetWithMaintenanceWindowError::InternalServerError(ref cause) => {
13325                write!(f, "{}", cause)
13326            }
13327            RegisterTargetWithMaintenanceWindowError::ResourceLimitExceeded(ref cause) => {
13328                write!(f, "{}", cause)
13329            }
13330        }
13331    }
13332}
13333impl Error for RegisterTargetWithMaintenanceWindowError {}
13334/// Errors returned by RegisterTaskWithMaintenanceWindow
13335#[derive(Debug, PartialEq)]
13336pub enum RegisterTaskWithMaintenanceWindowError {
13337    /// <p>Error returned when the ID specified for a resource, such as a maintenance window or Patch baseline, doesn't exist.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
13338    DoesNotExist(String),
13339    /// <p>You attempted to register a LAMBDA or STEP_FUNCTIONS task in a region where the corresponding service is not available. </p>
13340    FeatureNotAvailable(String),
13341    /// <p>Error returned when an idempotent operation is retried and the parameters don't match the original call to the API with the same idempotency token. </p>
13342    IdempotentParameterMismatch(String),
13343    /// <p>An error occurred on the server side.</p>
13344    InternalServerError(String),
13345    /// <p>Error returned when the caller has exceeded the default resource quotas. For example, too many maintenance windows or patch baselines have been created.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
13346    ResourceLimitExceeded(String),
13347}
13348
13349impl RegisterTaskWithMaintenanceWindowError {
13350    pub fn from_response(
13351        res: BufferedHttpResponse,
13352    ) -> RusotoError<RegisterTaskWithMaintenanceWindowError> {
13353        if let Some(err) = proto::json::Error::parse(&res) {
13354            match err.typ.as_str() {
13355                "DoesNotExistException" => {
13356                    return RusotoError::Service(
13357                        RegisterTaskWithMaintenanceWindowError::DoesNotExist(err.msg),
13358                    )
13359                }
13360                "FeatureNotAvailableException" => {
13361                    return RusotoError::Service(
13362                        RegisterTaskWithMaintenanceWindowError::FeatureNotAvailable(err.msg),
13363                    )
13364                }
13365                "IdempotentParameterMismatch" => {
13366                    return RusotoError::Service(
13367                        RegisterTaskWithMaintenanceWindowError::IdempotentParameterMismatch(
13368                            err.msg,
13369                        ),
13370                    )
13371                }
13372                "InternalServerError" => {
13373                    return RusotoError::Service(
13374                        RegisterTaskWithMaintenanceWindowError::InternalServerError(err.msg),
13375                    )
13376                }
13377                "ResourceLimitExceededException" => {
13378                    return RusotoError::Service(
13379                        RegisterTaskWithMaintenanceWindowError::ResourceLimitExceeded(err.msg),
13380                    )
13381                }
13382                "ValidationException" => return RusotoError::Validation(err.msg),
13383                _ => {}
13384            }
13385        }
13386        RusotoError::Unknown(res)
13387    }
13388}
13389impl fmt::Display for RegisterTaskWithMaintenanceWindowError {
13390    #[allow(unused_variables)]
13391    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13392        match *self {
13393            RegisterTaskWithMaintenanceWindowError::DoesNotExist(ref cause) => {
13394                write!(f, "{}", cause)
13395            }
13396            RegisterTaskWithMaintenanceWindowError::FeatureNotAvailable(ref cause) => {
13397                write!(f, "{}", cause)
13398            }
13399            RegisterTaskWithMaintenanceWindowError::IdempotentParameterMismatch(ref cause) => {
13400                write!(f, "{}", cause)
13401            }
13402            RegisterTaskWithMaintenanceWindowError::InternalServerError(ref cause) => {
13403                write!(f, "{}", cause)
13404            }
13405            RegisterTaskWithMaintenanceWindowError::ResourceLimitExceeded(ref cause) => {
13406                write!(f, "{}", cause)
13407            }
13408        }
13409    }
13410}
13411impl Error for RegisterTaskWithMaintenanceWindowError {}
13412/// Errors returned by RemoveTagsFromResource
13413#[derive(Debug, PartialEq)]
13414pub enum RemoveTagsFromResourceError {
13415    /// <p>An error occurred on the server side.</p>
13416    InternalServerError(String),
13417    /// <p>The resource ID is not valid. Verify that you entered the correct ID and try again.</p>
13418    InvalidResourceId(String),
13419    /// <p>The resource type is not valid. For example, if you are attempting to tag an instance, the instance must be a registered, managed instance.</p>
13420    InvalidResourceType(String),
13421    /// <p>There are concurrent updates for a resource that supports one update at a time.</p>
13422    TooManyUpdates(String),
13423}
13424
13425impl RemoveTagsFromResourceError {
13426    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<RemoveTagsFromResourceError> {
13427        if let Some(err) = proto::json::Error::parse(&res) {
13428            match err.typ.as_str() {
13429                "InternalServerError" => {
13430                    return RusotoError::Service(RemoveTagsFromResourceError::InternalServerError(
13431                        err.msg,
13432                    ))
13433                }
13434                "InvalidResourceId" => {
13435                    return RusotoError::Service(RemoveTagsFromResourceError::InvalidResourceId(
13436                        err.msg,
13437                    ))
13438                }
13439                "InvalidResourceType" => {
13440                    return RusotoError::Service(RemoveTagsFromResourceError::InvalidResourceType(
13441                        err.msg,
13442                    ))
13443                }
13444                "TooManyUpdates" => {
13445                    return RusotoError::Service(RemoveTagsFromResourceError::TooManyUpdates(
13446                        err.msg,
13447                    ))
13448                }
13449                "ValidationException" => return RusotoError::Validation(err.msg),
13450                _ => {}
13451            }
13452        }
13453        RusotoError::Unknown(res)
13454    }
13455}
13456impl fmt::Display for RemoveTagsFromResourceError {
13457    #[allow(unused_variables)]
13458    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13459        match *self {
13460            RemoveTagsFromResourceError::InternalServerError(ref cause) => write!(f, "{}", cause),
13461            RemoveTagsFromResourceError::InvalidResourceId(ref cause) => write!(f, "{}", cause),
13462            RemoveTagsFromResourceError::InvalidResourceType(ref cause) => write!(f, "{}", cause),
13463            RemoveTagsFromResourceError::TooManyUpdates(ref cause) => write!(f, "{}", cause),
13464        }
13465    }
13466}
13467impl Error for RemoveTagsFromResourceError {}
13468/// Errors returned by ResetServiceSetting
13469#[derive(Debug, PartialEq)]
13470pub enum ResetServiceSettingError {
13471    /// <p>An error occurred on the server side.</p>
13472    InternalServerError(String),
13473    /// <p>The specified service setting was not found. Either the service name or the setting has not been provisioned by the AWS service team.</p>
13474    ServiceSettingNotFound(String),
13475    /// <p>There are concurrent updates for a resource that supports one update at a time.</p>
13476    TooManyUpdates(String),
13477}
13478
13479impl ResetServiceSettingError {
13480    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ResetServiceSettingError> {
13481        if let Some(err) = proto::json::Error::parse(&res) {
13482            match err.typ.as_str() {
13483                "InternalServerError" => {
13484                    return RusotoError::Service(ResetServiceSettingError::InternalServerError(
13485                        err.msg,
13486                    ))
13487                }
13488                "ServiceSettingNotFound" => {
13489                    return RusotoError::Service(ResetServiceSettingError::ServiceSettingNotFound(
13490                        err.msg,
13491                    ))
13492                }
13493                "TooManyUpdates" => {
13494                    return RusotoError::Service(ResetServiceSettingError::TooManyUpdates(err.msg))
13495                }
13496                "ValidationException" => return RusotoError::Validation(err.msg),
13497                _ => {}
13498            }
13499        }
13500        RusotoError::Unknown(res)
13501    }
13502}
13503impl fmt::Display for ResetServiceSettingError {
13504    #[allow(unused_variables)]
13505    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13506        match *self {
13507            ResetServiceSettingError::InternalServerError(ref cause) => write!(f, "{}", cause),
13508            ResetServiceSettingError::ServiceSettingNotFound(ref cause) => write!(f, "{}", cause),
13509            ResetServiceSettingError::TooManyUpdates(ref cause) => write!(f, "{}", cause),
13510        }
13511    }
13512}
13513impl Error for ResetServiceSettingError {}
13514/// Errors returned by ResumeSession
13515#[derive(Debug, PartialEq)]
13516pub enum ResumeSessionError {
13517    /// <p>Error returned when the ID specified for a resource, such as a maintenance window or Patch baseline, doesn't exist.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
13518    DoesNotExist(String),
13519    /// <p>An error occurred on the server side.</p>
13520    InternalServerError(String),
13521}
13522
13523impl ResumeSessionError {
13524    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ResumeSessionError> {
13525        if let Some(err) = proto::json::Error::parse(&res) {
13526            match err.typ.as_str() {
13527                "DoesNotExistException" => {
13528                    return RusotoError::Service(ResumeSessionError::DoesNotExist(err.msg))
13529                }
13530                "InternalServerError" => {
13531                    return RusotoError::Service(ResumeSessionError::InternalServerError(err.msg))
13532                }
13533                "ValidationException" => return RusotoError::Validation(err.msg),
13534                _ => {}
13535            }
13536        }
13537        RusotoError::Unknown(res)
13538    }
13539}
13540impl fmt::Display for ResumeSessionError {
13541    #[allow(unused_variables)]
13542    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13543        match *self {
13544            ResumeSessionError::DoesNotExist(ref cause) => write!(f, "{}", cause),
13545            ResumeSessionError::InternalServerError(ref cause) => write!(f, "{}", cause),
13546        }
13547    }
13548}
13549impl Error for ResumeSessionError {}
13550/// Errors returned by SendAutomationSignal
13551#[derive(Debug, PartialEq)]
13552pub enum SendAutomationSignalError {
13553    /// <p>There is no automation execution information for the requested automation execution ID.</p>
13554    AutomationExecutionNotFound(String),
13555    /// <p>The specified step name and execution ID don't exist. Verify the information and try again.</p>
13556    AutomationStepNotFound(String),
13557    /// <p>An error occurred on the server side.</p>
13558    InternalServerError(String),
13559    /// <p>The signal is not valid for the current Automation execution.</p>
13560    InvalidAutomationSignal(String),
13561}
13562
13563impl SendAutomationSignalError {
13564    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<SendAutomationSignalError> {
13565        if let Some(err) = proto::json::Error::parse(&res) {
13566            match err.typ.as_str() {
13567                "AutomationExecutionNotFoundException" => {
13568                    return RusotoError::Service(
13569                        SendAutomationSignalError::AutomationExecutionNotFound(err.msg),
13570                    )
13571                }
13572                "AutomationStepNotFoundException" => {
13573                    return RusotoError::Service(SendAutomationSignalError::AutomationStepNotFound(
13574                        err.msg,
13575                    ))
13576                }
13577                "InternalServerError" => {
13578                    return RusotoError::Service(SendAutomationSignalError::InternalServerError(
13579                        err.msg,
13580                    ))
13581                }
13582                "InvalidAutomationSignalException" => {
13583                    return RusotoError::Service(
13584                        SendAutomationSignalError::InvalidAutomationSignal(err.msg),
13585                    )
13586                }
13587                "ValidationException" => return RusotoError::Validation(err.msg),
13588                _ => {}
13589            }
13590        }
13591        RusotoError::Unknown(res)
13592    }
13593}
13594impl fmt::Display for SendAutomationSignalError {
13595    #[allow(unused_variables)]
13596    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13597        match *self {
13598            SendAutomationSignalError::AutomationExecutionNotFound(ref cause) => {
13599                write!(f, "{}", cause)
13600            }
13601            SendAutomationSignalError::AutomationStepNotFound(ref cause) => write!(f, "{}", cause),
13602            SendAutomationSignalError::InternalServerError(ref cause) => write!(f, "{}", cause),
13603            SendAutomationSignalError::InvalidAutomationSignal(ref cause) => write!(f, "{}", cause),
13604        }
13605    }
13606}
13607impl Error for SendAutomationSignalError {}
13608/// Errors returned by SendCommand
13609#[derive(Debug, PartialEq)]
13610pub enum SendCommandError {
13611    /// <p>You cannot specify an instance ID in more than one association.</p>
13612    DuplicateInstanceId(String),
13613    /// <p>An error occurred on the server side.</p>
13614    InternalServerError(String),
13615    /// <p>The specified document does not exist.</p>
13616    InvalidDocument(String),
13617    /// <p>The document version is not valid or does not exist.</p>
13618    InvalidDocumentVersion(String),
13619    /// <p>The following problems can cause this exception:</p> <p>You do not have permission to access the instance.</p> <p>SSM Agent is not running. Verify that SSM Agent is running.</p> <p>SSM Agent is not registered with the SSM endpoint. Try reinstalling SSM Agent.</p> <p>The instance is not in valid state. Valid states are: Running, Pending, Stopped, Stopping. Invalid states are: Shutting-down and Terminated.</p>
13620    InvalidInstanceId(String),
13621    /// <p>One or more configuration items is not valid. Verify that a valid Amazon Resource Name (ARN) was provided for an Amazon SNS topic.</p>
13622    InvalidNotificationConfig(String),
13623    /// <p>The S3 bucket does not exist.</p>
13624    InvalidOutputFolder(String),
13625    /// <p>You must specify values for all required parameters in the Systems Manager document. You can only supply values to parameters defined in the Systems Manager document.</p>
13626    InvalidParameters(String),
13627    /// <p>The role name can't contain invalid characters. Also verify that you specified an IAM role for notifications that includes the required trust policy. For information about configuring the IAM role for Run Command notifications, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/rc-sns-notifications.html">Configuring Amazon SNS Notifications for Run Command</a> in the <i>AWS Systems Manager User Guide</i>.</p>
13628    InvalidRole(String),
13629    /// <p>The size limit of a document is 64 KB.</p>
13630    MaxDocumentSizeExceeded(String),
13631    /// <p>The document does not support the platform type of the given instance ID(s). For example, you sent an document for a Windows instance to a Linux instance.</p>
13632    UnsupportedPlatformType(String),
13633}
13634
13635impl SendCommandError {
13636    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<SendCommandError> {
13637        if let Some(err) = proto::json::Error::parse(&res) {
13638            match err.typ.as_str() {
13639                "DuplicateInstanceId" => {
13640                    return RusotoError::Service(SendCommandError::DuplicateInstanceId(err.msg))
13641                }
13642                "InternalServerError" => {
13643                    return RusotoError::Service(SendCommandError::InternalServerError(err.msg))
13644                }
13645                "InvalidDocument" => {
13646                    return RusotoError::Service(SendCommandError::InvalidDocument(err.msg))
13647                }
13648                "InvalidDocumentVersion" => {
13649                    return RusotoError::Service(SendCommandError::InvalidDocumentVersion(err.msg))
13650                }
13651                "InvalidInstanceId" => {
13652                    return RusotoError::Service(SendCommandError::InvalidInstanceId(err.msg))
13653                }
13654                "InvalidNotificationConfig" => {
13655                    return RusotoError::Service(SendCommandError::InvalidNotificationConfig(
13656                        err.msg,
13657                    ))
13658                }
13659                "InvalidOutputFolder" => {
13660                    return RusotoError::Service(SendCommandError::InvalidOutputFolder(err.msg))
13661                }
13662                "InvalidParameters" => {
13663                    return RusotoError::Service(SendCommandError::InvalidParameters(err.msg))
13664                }
13665                "InvalidRole" => {
13666                    return RusotoError::Service(SendCommandError::InvalidRole(err.msg))
13667                }
13668                "MaxDocumentSizeExceeded" => {
13669                    return RusotoError::Service(SendCommandError::MaxDocumentSizeExceeded(err.msg))
13670                }
13671                "UnsupportedPlatformType" => {
13672                    return RusotoError::Service(SendCommandError::UnsupportedPlatformType(err.msg))
13673                }
13674                "ValidationException" => return RusotoError::Validation(err.msg),
13675                _ => {}
13676            }
13677        }
13678        RusotoError::Unknown(res)
13679    }
13680}
13681impl fmt::Display for SendCommandError {
13682    #[allow(unused_variables)]
13683    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13684        match *self {
13685            SendCommandError::DuplicateInstanceId(ref cause) => write!(f, "{}", cause),
13686            SendCommandError::InternalServerError(ref cause) => write!(f, "{}", cause),
13687            SendCommandError::InvalidDocument(ref cause) => write!(f, "{}", cause),
13688            SendCommandError::InvalidDocumentVersion(ref cause) => write!(f, "{}", cause),
13689            SendCommandError::InvalidInstanceId(ref cause) => write!(f, "{}", cause),
13690            SendCommandError::InvalidNotificationConfig(ref cause) => write!(f, "{}", cause),
13691            SendCommandError::InvalidOutputFolder(ref cause) => write!(f, "{}", cause),
13692            SendCommandError::InvalidParameters(ref cause) => write!(f, "{}", cause),
13693            SendCommandError::InvalidRole(ref cause) => write!(f, "{}", cause),
13694            SendCommandError::MaxDocumentSizeExceeded(ref cause) => write!(f, "{}", cause),
13695            SendCommandError::UnsupportedPlatformType(ref cause) => write!(f, "{}", cause),
13696        }
13697    }
13698}
13699impl Error for SendCommandError {}
13700/// Errors returned by StartAssociationsOnce
13701#[derive(Debug, PartialEq)]
13702pub enum StartAssociationsOnceError {
13703    /// <p>The specified association does not exist.</p>
13704    AssociationDoesNotExist(String),
13705    /// <p>The association is not valid or does not exist. </p>
13706    InvalidAssociation(String),
13707}
13708
13709impl StartAssociationsOnceError {
13710    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<StartAssociationsOnceError> {
13711        if let Some(err) = proto::json::Error::parse(&res) {
13712            match err.typ.as_str() {
13713                "AssociationDoesNotExist" => {
13714                    return RusotoError::Service(
13715                        StartAssociationsOnceError::AssociationDoesNotExist(err.msg),
13716                    )
13717                }
13718                "InvalidAssociation" => {
13719                    return RusotoError::Service(StartAssociationsOnceError::InvalidAssociation(
13720                        err.msg,
13721                    ))
13722                }
13723                "ValidationException" => return RusotoError::Validation(err.msg),
13724                _ => {}
13725            }
13726        }
13727        RusotoError::Unknown(res)
13728    }
13729}
13730impl fmt::Display for StartAssociationsOnceError {
13731    #[allow(unused_variables)]
13732    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13733        match *self {
13734            StartAssociationsOnceError::AssociationDoesNotExist(ref cause) => {
13735                write!(f, "{}", cause)
13736            }
13737            StartAssociationsOnceError::InvalidAssociation(ref cause) => write!(f, "{}", cause),
13738        }
13739    }
13740}
13741impl Error for StartAssociationsOnceError {}
13742/// Errors returned by StartAutomationExecution
13743#[derive(Debug, PartialEq)]
13744pub enum StartAutomationExecutionError {
13745    /// <p>An Automation document with the specified name could not be found.</p>
13746    AutomationDefinitionNotFound(String),
13747    /// <p>An Automation document with the specified name and version could not be found.</p>
13748    AutomationDefinitionVersionNotFound(String),
13749    /// <p>The number of simultaneously running Automation executions exceeded the allowable limit.</p>
13750    AutomationExecutionLimitExceeded(String),
13751    /// <p>Error returned when an idempotent operation is retried and the parameters don't match the original call to the API with the same idempotency token. </p>
13752    IdempotentParameterMismatch(String),
13753    /// <p>An error occurred on the server side.</p>
13754    InternalServerError(String),
13755    /// <p>The supplied parameters for invoking the specified Automation document are incorrect. For example, they may not match the set of parameters permitted for the specified Automation document.</p>
13756    InvalidAutomationExecutionParameters(String),
13757    /// <p>The target is not valid or does not exist. It might not be configured for Systems Manager or you might not have permission to perform the operation.</p>
13758    InvalidTarget(String),
13759}
13760
13761impl StartAutomationExecutionError {
13762    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<StartAutomationExecutionError> {
13763        if let Some(err) = proto::json::Error::parse(&res) {
13764            match err.typ.as_str() {
13765                "AutomationDefinitionNotFoundException" => {
13766                    return RusotoError::Service(
13767                        StartAutomationExecutionError::AutomationDefinitionNotFound(err.msg),
13768                    )
13769                }
13770                "AutomationDefinitionVersionNotFoundException" => {
13771                    return RusotoError::Service(
13772                        StartAutomationExecutionError::AutomationDefinitionVersionNotFound(err.msg),
13773                    )
13774                }
13775                "AutomationExecutionLimitExceededException" => {
13776                    return RusotoError::Service(
13777                        StartAutomationExecutionError::AutomationExecutionLimitExceeded(err.msg),
13778                    )
13779                }
13780                "IdempotentParameterMismatch" => {
13781                    return RusotoError::Service(
13782                        StartAutomationExecutionError::IdempotentParameterMismatch(err.msg),
13783                    )
13784                }
13785                "InternalServerError" => {
13786                    return RusotoError::Service(
13787                        StartAutomationExecutionError::InternalServerError(err.msg),
13788                    )
13789                }
13790                "InvalidAutomationExecutionParametersException" => {
13791                    return RusotoError::Service(
13792                        StartAutomationExecutionError::InvalidAutomationExecutionParameters(
13793                            err.msg,
13794                        ),
13795                    )
13796                }
13797                "InvalidTarget" => {
13798                    return RusotoError::Service(StartAutomationExecutionError::InvalidTarget(
13799                        err.msg,
13800                    ))
13801                }
13802                "ValidationException" => return RusotoError::Validation(err.msg),
13803                _ => {}
13804            }
13805        }
13806        RusotoError::Unknown(res)
13807    }
13808}
13809impl fmt::Display for StartAutomationExecutionError {
13810    #[allow(unused_variables)]
13811    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13812        match *self {
13813            StartAutomationExecutionError::AutomationDefinitionNotFound(ref cause) => {
13814                write!(f, "{}", cause)
13815            }
13816            StartAutomationExecutionError::AutomationDefinitionVersionNotFound(ref cause) => {
13817                write!(f, "{}", cause)
13818            }
13819            StartAutomationExecutionError::AutomationExecutionLimitExceeded(ref cause) => {
13820                write!(f, "{}", cause)
13821            }
13822            StartAutomationExecutionError::IdempotentParameterMismatch(ref cause) => {
13823                write!(f, "{}", cause)
13824            }
13825            StartAutomationExecutionError::InternalServerError(ref cause) => write!(f, "{}", cause),
13826            StartAutomationExecutionError::InvalidAutomationExecutionParameters(ref cause) => {
13827                write!(f, "{}", cause)
13828            }
13829            StartAutomationExecutionError::InvalidTarget(ref cause) => write!(f, "{}", cause),
13830        }
13831    }
13832}
13833impl Error for StartAutomationExecutionError {}
13834/// Errors returned by StartSession
13835#[derive(Debug, PartialEq)]
13836pub enum StartSessionError {
13837    /// <p>An error occurred on the server side.</p>
13838    InternalServerError(String),
13839    /// <p>The specified document does not exist.</p>
13840    InvalidDocument(String),
13841    /// <p>The specified target instance for the session is not fully configured for use with Session Manager. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started.html">Getting started with Session Manager</a> in the <i>AWS Systems Manager User Guide</i>.</p>
13842    TargetNotConnected(String),
13843}
13844
13845impl StartSessionError {
13846    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<StartSessionError> {
13847        if let Some(err) = proto::json::Error::parse(&res) {
13848            match err.typ.as_str() {
13849                "InternalServerError" => {
13850                    return RusotoError::Service(StartSessionError::InternalServerError(err.msg))
13851                }
13852                "InvalidDocument" => {
13853                    return RusotoError::Service(StartSessionError::InvalidDocument(err.msg))
13854                }
13855                "TargetNotConnected" => {
13856                    return RusotoError::Service(StartSessionError::TargetNotConnected(err.msg))
13857                }
13858                "ValidationException" => return RusotoError::Validation(err.msg),
13859                _ => {}
13860            }
13861        }
13862        RusotoError::Unknown(res)
13863    }
13864}
13865impl fmt::Display for StartSessionError {
13866    #[allow(unused_variables)]
13867    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13868        match *self {
13869            StartSessionError::InternalServerError(ref cause) => write!(f, "{}", cause),
13870            StartSessionError::InvalidDocument(ref cause) => write!(f, "{}", cause),
13871            StartSessionError::TargetNotConnected(ref cause) => write!(f, "{}", cause),
13872        }
13873    }
13874}
13875impl Error for StartSessionError {}
13876/// Errors returned by StopAutomationExecution
13877#[derive(Debug, PartialEq)]
13878pub enum StopAutomationExecutionError {
13879    /// <p>There is no automation execution information for the requested automation execution ID.</p>
13880    AutomationExecutionNotFound(String),
13881    /// <p>An error occurred on the server side.</p>
13882    InternalServerError(String),
13883    /// <p>The specified update status operation is not valid.</p>
13884    InvalidAutomationStatusUpdate(String),
13885}
13886
13887impl StopAutomationExecutionError {
13888    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<StopAutomationExecutionError> {
13889        if let Some(err) = proto::json::Error::parse(&res) {
13890            match err.typ.as_str() {
13891                "AutomationExecutionNotFoundException" => {
13892                    return RusotoError::Service(
13893                        StopAutomationExecutionError::AutomationExecutionNotFound(err.msg),
13894                    )
13895                }
13896                "InternalServerError" => {
13897                    return RusotoError::Service(StopAutomationExecutionError::InternalServerError(
13898                        err.msg,
13899                    ))
13900                }
13901                "InvalidAutomationStatusUpdateException" => {
13902                    return RusotoError::Service(
13903                        StopAutomationExecutionError::InvalidAutomationStatusUpdate(err.msg),
13904                    )
13905                }
13906                "ValidationException" => return RusotoError::Validation(err.msg),
13907                _ => {}
13908            }
13909        }
13910        RusotoError::Unknown(res)
13911    }
13912}
13913impl fmt::Display for StopAutomationExecutionError {
13914    #[allow(unused_variables)]
13915    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13916        match *self {
13917            StopAutomationExecutionError::AutomationExecutionNotFound(ref cause) => {
13918                write!(f, "{}", cause)
13919            }
13920            StopAutomationExecutionError::InternalServerError(ref cause) => write!(f, "{}", cause),
13921            StopAutomationExecutionError::InvalidAutomationStatusUpdate(ref cause) => {
13922                write!(f, "{}", cause)
13923            }
13924        }
13925    }
13926}
13927impl Error for StopAutomationExecutionError {}
13928/// Errors returned by TerminateSession
13929#[derive(Debug, PartialEq)]
13930pub enum TerminateSessionError {
13931    /// <p>Error returned when the ID specified for a resource, such as a maintenance window or Patch baseline, doesn't exist.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
13932    DoesNotExist(String),
13933    /// <p>An error occurred on the server side.</p>
13934    InternalServerError(String),
13935}
13936
13937impl TerminateSessionError {
13938    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<TerminateSessionError> {
13939        if let Some(err) = proto::json::Error::parse(&res) {
13940            match err.typ.as_str() {
13941                "DoesNotExistException" => {
13942                    return RusotoError::Service(TerminateSessionError::DoesNotExist(err.msg))
13943                }
13944                "InternalServerError" => {
13945                    return RusotoError::Service(TerminateSessionError::InternalServerError(
13946                        err.msg,
13947                    ))
13948                }
13949                "ValidationException" => return RusotoError::Validation(err.msg),
13950                _ => {}
13951            }
13952        }
13953        RusotoError::Unknown(res)
13954    }
13955}
13956impl fmt::Display for TerminateSessionError {
13957    #[allow(unused_variables)]
13958    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13959        match *self {
13960            TerminateSessionError::DoesNotExist(ref cause) => write!(f, "{}", cause),
13961            TerminateSessionError::InternalServerError(ref cause) => write!(f, "{}", cause),
13962        }
13963    }
13964}
13965impl Error for TerminateSessionError {}
13966/// Errors returned by UpdateAssociation
13967#[derive(Debug, PartialEq)]
13968pub enum UpdateAssociationError {
13969    /// <p>The specified association does not exist.</p>
13970    AssociationDoesNotExist(String),
13971    /// <p>You have reached the maximum number versions allowed for an association. Each association has a limit of 1,000 versions. </p>
13972    AssociationVersionLimitExceeded(String),
13973    /// <p>An error occurred on the server side.</p>
13974    InternalServerError(String),
13975    /// <p>The version you specified is not valid. Use ListAssociationVersions to view all versions of an association according to the association ID. Or, use the <code>$LATEST</code> parameter to view the latest version of the association.</p>
13976    InvalidAssociationVersion(String),
13977    /// <p>The specified document does not exist.</p>
13978    InvalidDocument(String),
13979    /// <p>The document version is not valid or does not exist.</p>
13980    InvalidDocumentVersion(String),
13981    /// <p>The output location is not valid or does not exist.</p>
13982    InvalidOutputLocation(String),
13983    /// <p>You must specify values for all required parameters in the Systems Manager document. You can only supply values to parameters defined in the Systems Manager document.</p>
13984    InvalidParameters(String),
13985    /// <p>The schedule is invalid. Verify your cron or rate expression and try again.</p>
13986    InvalidSchedule(String),
13987    /// <p>The target is not valid or does not exist. It might not be configured for Systems Manager or you might not have permission to perform the operation.</p>
13988    InvalidTarget(String),
13989    /// <p>The update is not valid.</p>
13990    InvalidUpdate(String),
13991    /// <p>There are concurrent updates for a resource that supports one update at a time.</p>
13992    TooManyUpdates(String),
13993}
13994
13995impl UpdateAssociationError {
13996    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateAssociationError> {
13997        if let Some(err) = proto::json::Error::parse(&res) {
13998            match err.typ.as_str() {
13999                "AssociationDoesNotExist" => {
14000                    return RusotoError::Service(UpdateAssociationError::AssociationDoesNotExist(
14001                        err.msg,
14002                    ))
14003                }
14004                "AssociationVersionLimitExceeded" => {
14005                    return RusotoError::Service(
14006                        UpdateAssociationError::AssociationVersionLimitExceeded(err.msg),
14007                    )
14008                }
14009                "InternalServerError" => {
14010                    return RusotoError::Service(UpdateAssociationError::InternalServerError(
14011                        err.msg,
14012                    ))
14013                }
14014                "InvalidAssociationVersion" => {
14015                    return RusotoError::Service(UpdateAssociationError::InvalidAssociationVersion(
14016                        err.msg,
14017                    ))
14018                }
14019                "InvalidDocument" => {
14020                    return RusotoError::Service(UpdateAssociationError::InvalidDocument(err.msg))
14021                }
14022                "InvalidDocumentVersion" => {
14023                    return RusotoError::Service(UpdateAssociationError::InvalidDocumentVersion(
14024                        err.msg,
14025                    ))
14026                }
14027                "InvalidOutputLocation" => {
14028                    return RusotoError::Service(UpdateAssociationError::InvalidOutputLocation(
14029                        err.msg,
14030                    ))
14031                }
14032                "InvalidParameters" => {
14033                    return RusotoError::Service(UpdateAssociationError::InvalidParameters(err.msg))
14034                }
14035                "InvalidSchedule" => {
14036                    return RusotoError::Service(UpdateAssociationError::InvalidSchedule(err.msg))
14037                }
14038                "InvalidTarget" => {
14039                    return RusotoError::Service(UpdateAssociationError::InvalidTarget(err.msg))
14040                }
14041                "InvalidUpdate" => {
14042                    return RusotoError::Service(UpdateAssociationError::InvalidUpdate(err.msg))
14043                }
14044                "TooManyUpdates" => {
14045                    return RusotoError::Service(UpdateAssociationError::TooManyUpdates(err.msg))
14046                }
14047                "ValidationException" => return RusotoError::Validation(err.msg),
14048                _ => {}
14049            }
14050        }
14051        RusotoError::Unknown(res)
14052    }
14053}
14054impl fmt::Display for UpdateAssociationError {
14055    #[allow(unused_variables)]
14056    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14057        match *self {
14058            UpdateAssociationError::AssociationDoesNotExist(ref cause) => write!(f, "{}", cause),
14059            UpdateAssociationError::AssociationVersionLimitExceeded(ref cause) => {
14060                write!(f, "{}", cause)
14061            }
14062            UpdateAssociationError::InternalServerError(ref cause) => write!(f, "{}", cause),
14063            UpdateAssociationError::InvalidAssociationVersion(ref cause) => write!(f, "{}", cause),
14064            UpdateAssociationError::InvalidDocument(ref cause) => write!(f, "{}", cause),
14065            UpdateAssociationError::InvalidDocumentVersion(ref cause) => write!(f, "{}", cause),
14066            UpdateAssociationError::InvalidOutputLocation(ref cause) => write!(f, "{}", cause),
14067            UpdateAssociationError::InvalidParameters(ref cause) => write!(f, "{}", cause),
14068            UpdateAssociationError::InvalidSchedule(ref cause) => write!(f, "{}", cause),
14069            UpdateAssociationError::InvalidTarget(ref cause) => write!(f, "{}", cause),
14070            UpdateAssociationError::InvalidUpdate(ref cause) => write!(f, "{}", cause),
14071            UpdateAssociationError::TooManyUpdates(ref cause) => write!(f, "{}", cause),
14072        }
14073    }
14074}
14075impl Error for UpdateAssociationError {}
14076/// Errors returned by UpdateAssociationStatus
14077#[derive(Debug, PartialEq)]
14078pub enum UpdateAssociationStatusError {
14079    /// <p>The specified association does not exist.</p>
14080    AssociationDoesNotExist(String),
14081    /// <p>An error occurred on the server side.</p>
14082    InternalServerError(String),
14083    /// <p>The specified document does not exist.</p>
14084    InvalidDocument(String),
14085    /// <p>The following problems can cause this exception:</p> <p>You do not have permission to access the instance.</p> <p>SSM Agent is not running. Verify that SSM Agent is running.</p> <p>SSM Agent is not registered with the SSM endpoint. Try reinstalling SSM Agent.</p> <p>The instance is not in valid state. Valid states are: Running, Pending, Stopped, Stopping. Invalid states are: Shutting-down and Terminated.</p>
14086    InvalidInstanceId(String),
14087    /// <p>The updated status is the same as the current status.</p>
14088    StatusUnchanged(String),
14089    /// <p>There are concurrent updates for a resource that supports one update at a time.</p>
14090    TooManyUpdates(String),
14091}
14092
14093impl UpdateAssociationStatusError {
14094    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateAssociationStatusError> {
14095        if let Some(err) = proto::json::Error::parse(&res) {
14096            match err.typ.as_str() {
14097                "AssociationDoesNotExist" => {
14098                    return RusotoError::Service(
14099                        UpdateAssociationStatusError::AssociationDoesNotExist(err.msg),
14100                    )
14101                }
14102                "InternalServerError" => {
14103                    return RusotoError::Service(UpdateAssociationStatusError::InternalServerError(
14104                        err.msg,
14105                    ))
14106                }
14107                "InvalidDocument" => {
14108                    return RusotoError::Service(UpdateAssociationStatusError::InvalidDocument(
14109                        err.msg,
14110                    ))
14111                }
14112                "InvalidInstanceId" => {
14113                    return RusotoError::Service(UpdateAssociationStatusError::InvalidInstanceId(
14114                        err.msg,
14115                    ))
14116                }
14117                "StatusUnchanged" => {
14118                    return RusotoError::Service(UpdateAssociationStatusError::StatusUnchanged(
14119                        err.msg,
14120                    ))
14121                }
14122                "TooManyUpdates" => {
14123                    return RusotoError::Service(UpdateAssociationStatusError::TooManyUpdates(
14124                        err.msg,
14125                    ))
14126                }
14127                "ValidationException" => return RusotoError::Validation(err.msg),
14128                _ => {}
14129            }
14130        }
14131        RusotoError::Unknown(res)
14132    }
14133}
14134impl fmt::Display for UpdateAssociationStatusError {
14135    #[allow(unused_variables)]
14136    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14137        match *self {
14138            UpdateAssociationStatusError::AssociationDoesNotExist(ref cause) => {
14139                write!(f, "{}", cause)
14140            }
14141            UpdateAssociationStatusError::InternalServerError(ref cause) => write!(f, "{}", cause),
14142            UpdateAssociationStatusError::InvalidDocument(ref cause) => write!(f, "{}", cause),
14143            UpdateAssociationStatusError::InvalidInstanceId(ref cause) => write!(f, "{}", cause),
14144            UpdateAssociationStatusError::StatusUnchanged(ref cause) => write!(f, "{}", cause),
14145            UpdateAssociationStatusError::TooManyUpdates(ref cause) => write!(f, "{}", cause),
14146        }
14147    }
14148}
14149impl Error for UpdateAssociationStatusError {}
14150/// Errors returned by UpdateDocument
14151#[derive(Debug, PartialEq)]
14152pub enum UpdateDocumentError {
14153    /// <p>The document has too many versions. Delete one or more document versions and try again.</p>
14154    DocumentVersionLimitExceeded(String),
14155    /// <p>The content of the association document matches another document. Change the content of the document and try again.</p>
14156    DuplicateDocumentContent(String),
14157    /// <p>The version name has already been used in this document. Specify a different version name, and then try again.</p>
14158    DuplicateDocumentVersionName(String),
14159    /// <p>An error occurred on the server side.</p>
14160    InternalServerError(String),
14161    /// <p>The specified document does not exist.</p>
14162    InvalidDocument(String),
14163    /// <p>The content for the document is not valid.</p>
14164    InvalidDocumentContent(String),
14165    /// <p>You attempted to delete a document while it is still shared. You must stop sharing the document before you can delete it.</p>
14166    InvalidDocumentOperation(String),
14167    /// <p>The version of the document schema is not supported.</p>
14168    InvalidDocumentSchemaVersion(String),
14169    /// <p>The document version is not valid or does not exist.</p>
14170    InvalidDocumentVersion(String),
14171    /// <p>The size limit of a document is 64 KB.</p>
14172    MaxDocumentSizeExceeded(String),
14173}
14174
14175impl UpdateDocumentError {
14176    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateDocumentError> {
14177        if let Some(err) = proto::json::Error::parse(&res) {
14178            match err.typ.as_str() {
14179                "DocumentVersionLimitExceeded" => {
14180                    return RusotoError::Service(UpdateDocumentError::DocumentVersionLimitExceeded(
14181                        err.msg,
14182                    ))
14183                }
14184                "DuplicateDocumentContent" => {
14185                    return RusotoError::Service(UpdateDocumentError::DuplicateDocumentContent(
14186                        err.msg,
14187                    ))
14188                }
14189                "DuplicateDocumentVersionName" => {
14190                    return RusotoError::Service(UpdateDocumentError::DuplicateDocumentVersionName(
14191                        err.msg,
14192                    ))
14193                }
14194                "InternalServerError" => {
14195                    return RusotoError::Service(UpdateDocumentError::InternalServerError(err.msg))
14196                }
14197                "InvalidDocument" => {
14198                    return RusotoError::Service(UpdateDocumentError::InvalidDocument(err.msg))
14199                }
14200                "InvalidDocumentContent" => {
14201                    return RusotoError::Service(UpdateDocumentError::InvalidDocumentContent(
14202                        err.msg,
14203                    ))
14204                }
14205                "InvalidDocumentOperation" => {
14206                    return RusotoError::Service(UpdateDocumentError::InvalidDocumentOperation(
14207                        err.msg,
14208                    ))
14209                }
14210                "InvalidDocumentSchemaVersion" => {
14211                    return RusotoError::Service(UpdateDocumentError::InvalidDocumentSchemaVersion(
14212                        err.msg,
14213                    ))
14214                }
14215                "InvalidDocumentVersion" => {
14216                    return RusotoError::Service(UpdateDocumentError::InvalidDocumentVersion(
14217                        err.msg,
14218                    ))
14219                }
14220                "MaxDocumentSizeExceeded" => {
14221                    return RusotoError::Service(UpdateDocumentError::MaxDocumentSizeExceeded(
14222                        err.msg,
14223                    ))
14224                }
14225                "ValidationException" => return RusotoError::Validation(err.msg),
14226                _ => {}
14227            }
14228        }
14229        RusotoError::Unknown(res)
14230    }
14231}
14232impl fmt::Display for UpdateDocumentError {
14233    #[allow(unused_variables)]
14234    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14235        match *self {
14236            UpdateDocumentError::DocumentVersionLimitExceeded(ref cause) => write!(f, "{}", cause),
14237            UpdateDocumentError::DuplicateDocumentContent(ref cause) => write!(f, "{}", cause),
14238            UpdateDocumentError::DuplicateDocumentVersionName(ref cause) => write!(f, "{}", cause),
14239            UpdateDocumentError::InternalServerError(ref cause) => write!(f, "{}", cause),
14240            UpdateDocumentError::InvalidDocument(ref cause) => write!(f, "{}", cause),
14241            UpdateDocumentError::InvalidDocumentContent(ref cause) => write!(f, "{}", cause),
14242            UpdateDocumentError::InvalidDocumentOperation(ref cause) => write!(f, "{}", cause),
14243            UpdateDocumentError::InvalidDocumentSchemaVersion(ref cause) => write!(f, "{}", cause),
14244            UpdateDocumentError::InvalidDocumentVersion(ref cause) => write!(f, "{}", cause),
14245            UpdateDocumentError::MaxDocumentSizeExceeded(ref cause) => write!(f, "{}", cause),
14246        }
14247    }
14248}
14249impl Error for UpdateDocumentError {}
14250/// Errors returned by UpdateDocumentDefaultVersion
14251#[derive(Debug, PartialEq)]
14252pub enum UpdateDocumentDefaultVersionError {
14253    /// <p>An error occurred on the server side.</p>
14254    InternalServerError(String),
14255    /// <p>The specified document does not exist.</p>
14256    InvalidDocument(String),
14257    /// <p>The version of the document schema is not supported.</p>
14258    InvalidDocumentSchemaVersion(String),
14259    /// <p>The document version is not valid or does not exist.</p>
14260    InvalidDocumentVersion(String),
14261}
14262
14263impl UpdateDocumentDefaultVersionError {
14264    pub fn from_response(
14265        res: BufferedHttpResponse,
14266    ) -> RusotoError<UpdateDocumentDefaultVersionError> {
14267        if let Some(err) = proto::json::Error::parse(&res) {
14268            match err.typ.as_str() {
14269                "InternalServerError" => {
14270                    return RusotoError::Service(
14271                        UpdateDocumentDefaultVersionError::InternalServerError(err.msg),
14272                    )
14273                }
14274                "InvalidDocument" => {
14275                    return RusotoError::Service(
14276                        UpdateDocumentDefaultVersionError::InvalidDocument(err.msg),
14277                    )
14278                }
14279                "InvalidDocumentSchemaVersion" => {
14280                    return RusotoError::Service(
14281                        UpdateDocumentDefaultVersionError::InvalidDocumentSchemaVersion(err.msg),
14282                    )
14283                }
14284                "InvalidDocumentVersion" => {
14285                    return RusotoError::Service(
14286                        UpdateDocumentDefaultVersionError::InvalidDocumentVersion(err.msg),
14287                    )
14288                }
14289                "ValidationException" => return RusotoError::Validation(err.msg),
14290                _ => {}
14291            }
14292        }
14293        RusotoError::Unknown(res)
14294    }
14295}
14296impl fmt::Display for UpdateDocumentDefaultVersionError {
14297    #[allow(unused_variables)]
14298    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14299        match *self {
14300            UpdateDocumentDefaultVersionError::InternalServerError(ref cause) => {
14301                write!(f, "{}", cause)
14302            }
14303            UpdateDocumentDefaultVersionError::InvalidDocument(ref cause) => write!(f, "{}", cause),
14304            UpdateDocumentDefaultVersionError::InvalidDocumentSchemaVersion(ref cause) => {
14305                write!(f, "{}", cause)
14306            }
14307            UpdateDocumentDefaultVersionError::InvalidDocumentVersion(ref cause) => {
14308                write!(f, "{}", cause)
14309            }
14310        }
14311    }
14312}
14313impl Error for UpdateDocumentDefaultVersionError {}
14314/// Errors returned by UpdateMaintenanceWindow
14315#[derive(Debug, PartialEq)]
14316pub enum UpdateMaintenanceWindowError {
14317    /// <p>Error returned when the ID specified for a resource, such as a maintenance window or Patch baseline, doesn't exist.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
14318    DoesNotExist(String),
14319    /// <p>An error occurred on the server side.</p>
14320    InternalServerError(String),
14321}
14322
14323impl UpdateMaintenanceWindowError {
14324    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateMaintenanceWindowError> {
14325        if let Some(err) = proto::json::Error::parse(&res) {
14326            match err.typ.as_str() {
14327                "DoesNotExistException" => {
14328                    return RusotoError::Service(UpdateMaintenanceWindowError::DoesNotExist(
14329                        err.msg,
14330                    ))
14331                }
14332                "InternalServerError" => {
14333                    return RusotoError::Service(UpdateMaintenanceWindowError::InternalServerError(
14334                        err.msg,
14335                    ))
14336                }
14337                "ValidationException" => return RusotoError::Validation(err.msg),
14338                _ => {}
14339            }
14340        }
14341        RusotoError::Unknown(res)
14342    }
14343}
14344impl fmt::Display for UpdateMaintenanceWindowError {
14345    #[allow(unused_variables)]
14346    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14347        match *self {
14348            UpdateMaintenanceWindowError::DoesNotExist(ref cause) => write!(f, "{}", cause),
14349            UpdateMaintenanceWindowError::InternalServerError(ref cause) => write!(f, "{}", cause),
14350        }
14351    }
14352}
14353impl Error for UpdateMaintenanceWindowError {}
14354/// Errors returned by UpdateMaintenanceWindowTarget
14355#[derive(Debug, PartialEq)]
14356pub enum UpdateMaintenanceWindowTargetError {
14357    /// <p>Error returned when the ID specified for a resource, such as a maintenance window or Patch baseline, doesn't exist.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
14358    DoesNotExist(String),
14359    /// <p>An error occurred on the server side.</p>
14360    InternalServerError(String),
14361}
14362
14363impl UpdateMaintenanceWindowTargetError {
14364    pub fn from_response(
14365        res: BufferedHttpResponse,
14366    ) -> RusotoError<UpdateMaintenanceWindowTargetError> {
14367        if let Some(err) = proto::json::Error::parse(&res) {
14368            match err.typ.as_str() {
14369                "DoesNotExistException" => {
14370                    return RusotoError::Service(UpdateMaintenanceWindowTargetError::DoesNotExist(
14371                        err.msg,
14372                    ))
14373                }
14374                "InternalServerError" => {
14375                    return RusotoError::Service(
14376                        UpdateMaintenanceWindowTargetError::InternalServerError(err.msg),
14377                    )
14378                }
14379                "ValidationException" => return RusotoError::Validation(err.msg),
14380                _ => {}
14381            }
14382        }
14383        RusotoError::Unknown(res)
14384    }
14385}
14386impl fmt::Display for UpdateMaintenanceWindowTargetError {
14387    #[allow(unused_variables)]
14388    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14389        match *self {
14390            UpdateMaintenanceWindowTargetError::DoesNotExist(ref cause) => write!(f, "{}", cause),
14391            UpdateMaintenanceWindowTargetError::InternalServerError(ref cause) => {
14392                write!(f, "{}", cause)
14393            }
14394        }
14395    }
14396}
14397impl Error for UpdateMaintenanceWindowTargetError {}
14398/// Errors returned by UpdateMaintenanceWindowTask
14399#[derive(Debug, PartialEq)]
14400pub enum UpdateMaintenanceWindowTaskError {
14401    /// <p>Error returned when the ID specified for a resource, such as a maintenance window or Patch baseline, doesn't exist.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
14402    DoesNotExist(String),
14403    /// <p>An error occurred on the server side.</p>
14404    InternalServerError(String),
14405}
14406
14407impl UpdateMaintenanceWindowTaskError {
14408    pub fn from_response(
14409        res: BufferedHttpResponse,
14410    ) -> RusotoError<UpdateMaintenanceWindowTaskError> {
14411        if let Some(err) = proto::json::Error::parse(&res) {
14412            match err.typ.as_str() {
14413                "DoesNotExistException" => {
14414                    return RusotoError::Service(UpdateMaintenanceWindowTaskError::DoesNotExist(
14415                        err.msg,
14416                    ))
14417                }
14418                "InternalServerError" => {
14419                    return RusotoError::Service(
14420                        UpdateMaintenanceWindowTaskError::InternalServerError(err.msg),
14421                    )
14422                }
14423                "ValidationException" => return RusotoError::Validation(err.msg),
14424                _ => {}
14425            }
14426        }
14427        RusotoError::Unknown(res)
14428    }
14429}
14430impl fmt::Display for UpdateMaintenanceWindowTaskError {
14431    #[allow(unused_variables)]
14432    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14433        match *self {
14434            UpdateMaintenanceWindowTaskError::DoesNotExist(ref cause) => write!(f, "{}", cause),
14435            UpdateMaintenanceWindowTaskError::InternalServerError(ref cause) => {
14436                write!(f, "{}", cause)
14437            }
14438        }
14439    }
14440}
14441impl Error for UpdateMaintenanceWindowTaskError {}
14442/// Errors returned by UpdateManagedInstanceRole
14443#[derive(Debug, PartialEq)]
14444pub enum UpdateManagedInstanceRoleError {
14445    /// <p>An error occurred on the server side.</p>
14446    InternalServerError(String),
14447    /// <p>The following problems can cause this exception:</p> <p>You do not have permission to access the instance.</p> <p>SSM Agent is not running. Verify that SSM Agent is running.</p> <p>SSM Agent is not registered with the SSM endpoint. Try reinstalling SSM Agent.</p> <p>The instance is not in valid state. Valid states are: Running, Pending, Stopped, Stopping. Invalid states are: Shutting-down and Terminated.</p>
14448    InvalidInstanceId(String),
14449}
14450
14451impl UpdateManagedInstanceRoleError {
14452    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateManagedInstanceRoleError> {
14453        if let Some(err) = proto::json::Error::parse(&res) {
14454            match err.typ.as_str() {
14455                "InternalServerError" => {
14456                    return RusotoError::Service(
14457                        UpdateManagedInstanceRoleError::InternalServerError(err.msg),
14458                    )
14459                }
14460                "InvalidInstanceId" => {
14461                    return RusotoError::Service(UpdateManagedInstanceRoleError::InvalidInstanceId(
14462                        err.msg,
14463                    ))
14464                }
14465                "ValidationException" => return RusotoError::Validation(err.msg),
14466                _ => {}
14467            }
14468        }
14469        RusotoError::Unknown(res)
14470    }
14471}
14472impl fmt::Display for UpdateManagedInstanceRoleError {
14473    #[allow(unused_variables)]
14474    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14475        match *self {
14476            UpdateManagedInstanceRoleError::InternalServerError(ref cause) => {
14477                write!(f, "{}", cause)
14478            }
14479            UpdateManagedInstanceRoleError::InvalidInstanceId(ref cause) => write!(f, "{}", cause),
14480        }
14481    }
14482}
14483impl Error for UpdateManagedInstanceRoleError {}
14484/// Errors returned by UpdateOpsItem
14485#[derive(Debug, PartialEq)]
14486pub enum UpdateOpsItemError {
14487    /// <p>An error occurred on the server side.</p>
14488    InternalServerError(String),
14489    /// <p>The OpsItem already exists.</p>
14490    OpsItemAlreadyExists(String),
14491    /// <p>A specified parameter argument isn't valid. Verify the available arguments and try again.</p>
14492    OpsItemInvalidParameter(String),
14493    /// <p>The request caused OpsItems to exceed one or more quotas. For information about OpsItem quotas, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-learn-more.html#OpsCenter-learn-more-limits">What are the resource limits for OpsCenter?</a>.</p>
14494    OpsItemLimitExceeded(String),
14495    /// <p>The specified OpsItem ID doesn't exist. Verify the ID and try again.</p>
14496    OpsItemNotFound(String),
14497}
14498
14499impl UpdateOpsItemError {
14500    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateOpsItemError> {
14501        if let Some(err) = proto::json::Error::parse(&res) {
14502            match err.typ.as_str() {
14503                "InternalServerError" => {
14504                    return RusotoError::Service(UpdateOpsItemError::InternalServerError(err.msg))
14505                }
14506                "OpsItemAlreadyExistsException" => {
14507                    return RusotoError::Service(UpdateOpsItemError::OpsItemAlreadyExists(err.msg))
14508                }
14509                "OpsItemInvalidParameterException" => {
14510                    return RusotoError::Service(UpdateOpsItemError::OpsItemInvalidParameter(
14511                        err.msg,
14512                    ))
14513                }
14514                "OpsItemLimitExceededException" => {
14515                    return RusotoError::Service(UpdateOpsItemError::OpsItemLimitExceeded(err.msg))
14516                }
14517                "OpsItemNotFoundException" => {
14518                    return RusotoError::Service(UpdateOpsItemError::OpsItemNotFound(err.msg))
14519                }
14520                "ValidationException" => return RusotoError::Validation(err.msg),
14521                _ => {}
14522            }
14523        }
14524        RusotoError::Unknown(res)
14525    }
14526}
14527impl fmt::Display for UpdateOpsItemError {
14528    #[allow(unused_variables)]
14529    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14530        match *self {
14531            UpdateOpsItemError::InternalServerError(ref cause) => write!(f, "{}", cause),
14532            UpdateOpsItemError::OpsItemAlreadyExists(ref cause) => write!(f, "{}", cause),
14533            UpdateOpsItemError::OpsItemInvalidParameter(ref cause) => write!(f, "{}", cause),
14534            UpdateOpsItemError::OpsItemLimitExceeded(ref cause) => write!(f, "{}", cause),
14535            UpdateOpsItemError::OpsItemNotFound(ref cause) => write!(f, "{}", cause),
14536        }
14537    }
14538}
14539impl Error for UpdateOpsItemError {}
14540/// Errors returned by UpdatePatchBaseline
14541#[derive(Debug, PartialEq)]
14542pub enum UpdatePatchBaselineError {
14543    /// <p>Error returned when the ID specified for a resource, such as a maintenance window or Patch baseline, doesn't exist.</p> <p>For information about resource quotas in Systems Manager, see <a href="http://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm">Systems Manager service quotas</a> in the <i>AWS General Reference</i>.</p>
14544    DoesNotExist(String),
14545    /// <p>An error occurred on the server side.</p>
14546    InternalServerError(String),
14547}
14548
14549impl UpdatePatchBaselineError {
14550    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdatePatchBaselineError> {
14551        if let Some(err) = proto::json::Error::parse(&res) {
14552            match err.typ.as_str() {
14553                "DoesNotExistException" => {
14554                    return RusotoError::Service(UpdatePatchBaselineError::DoesNotExist(err.msg))
14555                }
14556                "InternalServerError" => {
14557                    return RusotoError::Service(UpdatePatchBaselineError::InternalServerError(
14558                        err.msg,
14559                    ))
14560                }
14561                "ValidationException" => return RusotoError::Validation(err.msg),
14562                _ => {}
14563            }
14564        }
14565        RusotoError::Unknown(res)
14566    }
14567}
14568impl fmt::Display for UpdatePatchBaselineError {
14569    #[allow(unused_variables)]
14570    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14571        match *self {
14572            UpdatePatchBaselineError::DoesNotExist(ref cause) => write!(f, "{}", cause),
14573            UpdatePatchBaselineError::InternalServerError(ref cause) => write!(f, "{}", cause),
14574        }
14575    }
14576}
14577impl Error for UpdatePatchBaselineError {}
14578/// Errors returned by UpdateResourceDataSync
14579#[derive(Debug, PartialEq)]
14580pub enum UpdateResourceDataSyncError {
14581    /// <p>An error occurred on the server side.</p>
14582    InternalServerError(String),
14583    /// <p>Another <code>UpdateResourceDataSync</code> request is being processed. Wait a few minutes and try again.</p>
14584    ResourceDataSyncConflict(String),
14585    /// <p>The specified sync configuration is invalid.</p>
14586    ResourceDataSyncInvalidConfiguration(String),
14587    /// <p>The specified sync name was not found.</p>
14588    ResourceDataSyncNotFound(String),
14589}
14590
14591impl UpdateResourceDataSyncError {
14592    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateResourceDataSyncError> {
14593        if let Some(err) = proto::json::Error::parse(&res) {
14594            match err.typ.as_str() {
14595                "InternalServerError" => {
14596                    return RusotoError::Service(UpdateResourceDataSyncError::InternalServerError(
14597                        err.msg,
14598                    ))
14599                }
14600                "ResourceDataSyncConflictException" => {
14601                    return RusotoError::Service(
14602                        UpdateResourceDataSyncError::ResourceDataSyncConflict(err.msg),
14603                    )
14604                }
14605                "ResourceDataSyncInvalidConfigurationException" => {
14606                    return RusotoError::Service(
14607                        UpdateResourceDataSyncError::ResourceDataSyncInvalidConfiguration(err.msg),
14608                    )
14609                }
14610                "ResourceDataSyncNotFoundException" => {
14611                    return RusotoError::Service(
14612                        UpdateResourceDataSyncError::ResourceDataSyncNotFound(err.msg),
14613                    )
14614                }
14615                "ValidationException" => return RusotoError::Validation(err.msg),
14616                _ => {}
14617            }
14618        }
14619        RusotoError::Unknown(res)
14620    }
14621}
14622impl fmt::Display for UpdateResourceDataSyncError {
14623    #[allow(unused_variables)]
14624    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14625        match *self {
14626            UpdateResourceDataSyncError::InternalServerError(ref cause) => write!(f, "{}", cause),
14627            UpdateResourceDataSyncError::ResourceDataSyncConflict(ref cause) => {
14628                write!(f, "{}", cause)
14629            }
14630            UpdateResourceDataSyncError::ResourceDataSyncInvalidConfiguration(ref cause) => {
14631                write!(f, "{}", cause)
14632            }
14633            UpdateResourceDataSyncError::ResourceDataSyncNotFound(ref cause) => {
14634                write!(f, "{}", cause)
14635            }
14636        }
14637    }
14638}
14639impl Error for UpdateResourceDataSyncError {}
14640/// Errors returned by UpdateServiceSetting
14641#[derive(Debug, PartialEq)]
14642pub enum UpdateServiceSettingError {
14643    /// <p>An error occurred on the server side.</p>
14644    InternalServerError(String),
14645    /// <p>The specified service setting was not found. Either the service name or the setting has not been provisioned by the AWS service team.</p>
14646    ServiceSettingNotFound(String),
14647    /// <p>There are concurrent updates for a resource that supports one update at a time.</p>
14648    TooManyUpdates(String),
14649}
14650
14651impl UpdateServiceSettingError {
14652    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateServiceSettingError> {
14653        if let Some(err) = proto::json::Error::parse(&res) {
14654            match err.typ.as_str() {
14655                "InternalServerError" => {
14656                    return RusotoError::Service(UpdateServiceSettingError::InternalServerError(
14657                        err.msg,
14658                    ))
14659                }
14660                "ServiceSettingNotFound" => {
14661                    return RusotoError::Service(UpdateServiceSettingError::ServiceSettingNotFound(
14662                        err.msg,
14663                    ))
14664                }
14665                "TooManyUpdates" => {
14666                    return RusotoError::Service(UpdateServiceSettingError::TooManyUpdates(err.msg))
14667                }
14668                "ValidationException" => return RusotoError::Validation(err.msg),
14669                _ => {}
14670            }
14671        }
14672        RusotoError::Unknown(res)
14673    }
14674}
14675impl fmt::Display for UpdateServiceSettingError {
14676    #[allow(unused_variables)]
14677    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14678        match *self {
14679            UpdateServiceSettingError::InternalServerError(ref cause) => write!(f, "{}", cause),
14680            UpdateServiceSettingError::ServiceSettingNotFound(ref cause) => write!(f, "{}", cause),
14681            UpdateServiceSettingError::TooManyUpdates(ref cause) => write!(f, "{}", cause),
14682        }
14683    }
14684}
14685impl Error for UpdateServiceSettingError {}
14686/// Trait representing the capabilities of the Amazon SSM API. Amazon SSM clients implement this trait.
14687#[async_trait]
14688pub trait Ssm {
14689    /// <p>Adds or overwrites one or more tags for the specified resource. Tags are metadata that you can assign to your documents, managed instances, maintenance windows, Parameter Store parameters, and patch baselines. Tags enable you to categorize your resources in different ways, for example, by purpose, owner, or environment. Each tag consists of a key and an optional value, both of which you define. For example, you could define a set of tags for your account's managed instances that helps you track each instance's owner and stack level. For example: Key=Owner and Value=DbAdmin, SysAdmin, or Dev. Or Key=Stack and Value=Production, Pre-Production, or Test.</p> <p>Each resource can have a maximum of 50 tags. </p> <p>We recommend that you devise a set of tag keys that meets your needs for each resource type. Using a consistent set of tag keys makes it easier for you to manage your resources. You can search and filter the resources based on the tags you add. Tags don't have any semantic meaning to and are interpreted strictly as a string of characters. </p> <p>For more information about using tags with EC2 instances, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html">Tagging your Amazon EC2 resources</a> in the <i>Amazon EC2 User Guide</i>.</p>
14690    async fn add_tags_to_resource(
14691        &self,
14692        input: AddTagsToResourceRequest,
14693    ) -> Result<AddTagsToResourceResult, RusotoError<AddTagsToResourceError>>;
14694
14695    /// <p>Attempts to cancel the command specified by the Command ID. There is no guarantee that the command will be terminated and the underlying process stopped.</p>
14696    async fn cancel_command(
14697        &self,
14698        input: CancelCommandRequest,
14699    ) -> Result<CancelCommandResult, RusotoError<CancelCommandError>>;
14700
14701    /// <p>Stops a maintenance window execution that is already in progress and cancels any tasks in the window that have not already starting running. (Tasks already in progress will continue to completion.)</p>
14702    async fn cancel_maintenance_window_execution(
14703        &self,
14704        input: CancelMaintenanceWindowExecutionRequest,
14705    ) -> Result<
14706        CancelMaintenanceWindowExecutionResult,
14707        RusotoError<CancelMaintenanceWindowExecutionError>,
14708    >;
14709
14710    /// <p><p>Generates an activation code and activation ID you can use to register your on-premises server or virtual machine (VM) with Systems Manager. Registering these machines with Systems Manager makes it possible to manage them using Systems Manager capabilities. You use the activation code and ID when installing SSM Agent on machines in your hybrid environment. For more information about requirements for managing on-premises instances and VMs using Systems Manager, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-managedinstances.html">Setting up AWS Systems Manager for hybrid environments</a> in the <i>AWS Systems Manager User Guide</i>. </p> <note> <p>On-premises servers or VMs that are registered with Systems Manager and EC2 instances that you manage with Systems Manager are all called <i>managed instances</i>.</p> </note></p>
14711    async fn create_activation(
14712        &self,
14713        input: CreateActivationRequest,
14714    ) -> Result<CreateActivationResult, RusotoError<CreateActivationError>>;
14715
14716    /// <p>A State Manager association defines the state that you want to maintain on your instances. For example, an association can specify that anti-virus software must be installed and running on your instances, or that certain ports must be closed. For static targets, the association specifies a schedule for when the configuration is reapplied. For dynamic targets, such as an AWS Resource Group or an AWS Autoscaling Group, State Manager applies the configuration when new instances are added to the group. The association also specifies actions to take when applying the configuration. For example, an association for anti-virus software might run once a day. If the software is not installed, then State Manager installs it. If the software is installed, but the service is not running, then the association might instruct State Manager to start the service. </p>
14717    async fn create_association(
14718        &self,
14719        input: CreateAssociationRequest,
14720    ) -> Result<CreateAssociationResult, RusotoError<CreateAssociationError>>;
14721
14722    /// <p>Associates the specified Systems Manager document with the specified instances or targets.</p> <p>When you associate a document with one or more instances using instance IDs or tags, SSM Agent running on the instance processes the document and configures the instance as specified.</p> <p>If you associate a document with an instance that already has an associated document, the system returns the AssociationAlreadyExists exception.</p>
14723    async fn create_association_batch(
14724        &self,
14725        input: CreateAssociationBatchRequest,
14726    ) -> Result<CreateAssociationBatchResult, RusotoError<CreateAssociationBatchError>>;
14727
14728    /// <p>Creates a Systems Manager (SSM) document. An SSM document defines the actions that Systems Manager performs on your managed instances. For more information about SSM documents, including information about supported schemas, features, and syntax, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-ssm-docs.html">AWS Systems Manager Documents</a> in the <i>AWS Systems Manager User Guide</i>.</p>
14729    async fn create_document(
14730        &self,
14731        input: CreateDocumentRequest,
14732    ) -> Result<CreateDocumentResult, RusotoError<CreateDocumentError>>;
14733
14734    /// <p><p>Creates a new maintenance window.</p> <note> <p>The value you specify for <code>Duration</code> determines the specific end time for the maintenance window based on the time it begins. No maintenance window tasks are permitted to start after the resulting endtime minus the number of hours you specify for <code>Cutoff</code>. For example, if the maintenance window starts at 3 PM, the duration is three hours, and the value you specify for <code>Cutoff</code> is one hour, no maintenance window tasks can start after 5 PM.</p> </note></p>
14735    async fn create_maintenance_window(
14736        &self,
14737        input: CreateMaintenanceWindowRequest,
14738    ) -> Result<CreateMaintenanceWindowResult, RusotoError<CreateMaintenanceWindowError>>;
14739
14740    /// <p>Creates a new OpsItem. You must have permission in AWS Identity and Access Management (IAM) to create a new OpsItem. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-getting-started.html">Getting started with OpsCenter</a> in the <i>AWS Systems Manager User Guide</i>.</p> <p>Operations engineers and IT professionals use OpsCenter to view, investigate, and remediate operational issues impacting the performance and health of their AWS resources. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter.html">AWS Systems Manager OpsCenter</a> in the <i>AWS Systems Manager User Guide</i>. </p>
14741    async fn create_ops_item(
14742        &self,
14743        input: CreateOpsItemRequest,
14744    ) -> Result<CreateOpsItemResponse, RusotoError<CreateOpsItemError>>;
14745
14746    /// <p><p>Creates a patch baseline.</p> <note> <p>For information about valid key and value pairs in <code>PatchFilters</code> for each supported operating system type, see <a href="http://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PatchFilter.html">PatchFilter</a>.</p> </note></p>
14747    async fn create_patch_baseline(
14748        &self,
14749        input: CreatePatchBaselineRequest,
14750    ) -> Result<CreatePatchBaselineResult, RusotoError<CreatePatchBaselineError>>;
14751
14752    /// <p><p>A resource data sync helps you view data from multiple sources in a single location. Systems Manager offers two types of resource data sync: <code>SyncToDestination</code> and <code>SyncFromSource</code>.</p> <p>You can configure Systems Manager Inventory to use the <code>SyncToDestination</code> type to synchronize Inventory data from multiple AWS Regions to a single S3 bucket. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-inventory-datasync.html">Configuring Resource Data Sync for Inventory</a> in the <i>AWS Systems Manager User Guide</i>.</p> <p>You can configure Systems Manager Explorer to use the <code>SyncFromSource</code> type to synchronize operational work items (OpsItems) and operational data (OpsData) from multiple AWS Regions to a single S3 bucket. This type can synchronize OpsItems and OpsData from multiple AWS accounts and Regions or <code>EntireOrganization</code> by using AWS Organizations. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/Explorer-resource-data-sync.html">Setting up Systems Manager Explorer to display data from multiple accounts and Regions</a> in the <i>AWS Systems Manager User Guide</i>.</p> <p>A resource data sync is an asynchronous operation that returns immediately. After a successful initial sync is completed, the system continuously syncs data. To check the status of a sync, use the <a>ListResourceDataSync</a>.</p> <note> <p>By default, data is not encrypted in Amazon S3. We strongly recommend that you enable encryption in Amazon S3 to ensure secure data storage. We also recommend that you secure access to the Amazon S3 bucket by creating a restrictive bucket policy. </p> </note></p>
14753    async fn create_resource_data_sync(
14754        &self,
14755        input: CreateResourceDataSyncRequest,
14756    ) -> Result<CreateResourceDataSyncResult, RusotoError<CreateResourceDataSyncError>>;
14757
14758    /// <p>Deletes an activation. You are not required to delete an activation. If you delete an activation, you can no longer use it to register additional managed instances. Deleting an activation does not de-register managed instances. You must manually de-register managed instances.</p>
14759    async fn delete_activation(
14760        &self,
14761        input: DeleteActivationRequest,
14762    ) -> Result<DeleteActivationResult, RusotoError<DeleteActivationError>>;
14763
14764    /// <p>Disassociates the specified Systems Manager document from the specified instance.</p> <p>When you disassociate a document from an instance, it does not change the configuration of the instance. To change the configuration state of an instance after you disassociate a document, you must create a new document with the desired configuration and associate it with the instance.</p>
14765    async fn delete_association(
14766        &self,
14767        input: DeleteAssociationRequest,
14768    ) -> Result<DeleteAssociationResult, RusotoError<DeleteAssociationError>>;
14769
14770    /// <p>Deletes the Systems Manager document and all instance associations to the document.</p> <p>Before you delete the document, we recommend that you use <a>DeleteAssociation</a> to disassociate all instances that are associated with the document.</p>
14771    async fn delete_document(
14772        &self,
14773        input: DeleteDocumentRequest,
14774    ) -> Result<DeleteDocumentResult, RusotoError<DeleteDocumentError>>;
14775
14776    /// <p>Delete a custom inventory type, or the data associated with a custom Inventory type. Deleting a custom inventory type is also referred to as deleting a custom inventory schema.</p>
14777    async fn delete_inventory(
14778        &self,
14779        input: DeleteInventoryRequest,
14780    ) -> Result<DeleteInventoryResult, RusotoError<DeleteInventoryError>>;
14781
14782    /// <p>Deletes a maintenance window.</p>
14783    async fn delete_maintenance_window(
14784        &self,
14785        input: DeleteMaintenanceWindowRequest,
14786    ) -> Result<DeleteMaintenanceWindowResult, RusotoError<DeleteMaintenanceWindowError>>;
14787
14788    /// <p>Delete a parameter from the system.</p>
14789    async fn delete_parameter(
14790        &self,
14791        input: DeleteParameterRequest,
14792    ) -> Result<DeleteParameterResult, RusotoError<DeleteParameterError>>;
14793
14794    /// <p>Delete a list of parameters.</p>
14795    async fn delete_parameters(
14796        &self,
14797        input: DeleteParametersRequest,
14798    ) -> Result<DeleteParametersResult, RusotoError<DeleteParametersError>>;
14799
14800    /// <p>Deletes a patch baseline.</p>
14801    async fn delete_patch_baseline(
14802        &self,
14803        input: DeletePatchBaselineRequest,
14804    ) -> Result<DeletePatchBaselineResult, RusotoError<DeletePatchBaselineError>>;
14805
14806    /// <p>Deletes a Resource Data Sync configuration. After the configuration is deleted, changes to data on managed instances are no longer synced to or from the target. Deleting a sync configuration does not delete data.</p>
14807    async fn delete_resource_data_sync(
14808        &self,
14809        input: DeleteResourceDataSyncRequest,
14810    ) -> Result<DeleteResourceDataSyncResult, RusotoError<DeleteResourceDataSyncError>>;
14811
14812    /// <p>Removes the server or virtual machine from the list of registered servers. You can reregister the instance again at any time. If you don't plan to use Run Command on the server, we suggest uninstalling SSM Agent first.</p>
14813    async fn deregister_managed_instance(
14814        &self,
14815        input: DeregisterManagedInstanceRequest,
14816    ) -> Result<DeregisterManagedInstanceResult, RusotoError<DeregisterManagedInstanceError>>;
14817
14818    /// <p>Removes a patch group from a patch baseline.</p>
14819    async fn deregister_patch_baseline_for_patch_group(
14820        &self,
14821        input: DeregisterPatchBaselineForPatchGroupRequest,
14822    ) -> Result<
14823        DeregisterPatchBaselineForPatchGroupResult,
14824        RusotoError<DeregisterPatchBaselineForPatchGroupError>,
14825    >;
14826
14827    /// <p>Removes a target from a maintenance window.</p>
14828    async fn deregister_target_from_maintenance_window(
14829        &self,
14830        input: DeregisterTargetFromMaintenanceWindowRequest,
14831    ) -> Result<
14832        DeregisterTargetFromMaintenanceWindowResult,
14833        RusotoError<DeregisterTargetFromMaintenanceWindowError>,
14834    >;
14835
14836    /// <p>Removes a task from a maintenance window.</p>
14837    async fn deregister_task_from_maintenance_window(
14838        &self,
14839        input: DeregisterTaskFromMaintenanceWindowRequest,
14840    ) -> Result<
14841        DeregisterTaskFromMaintenanceWindowResult,
14842        RusotoError<DeregisterTaskFromMaintenanceWindowError>,
14843    >;
14844
14845    /// <p>Describes details about the activation, such as the date and time the activation was created, its expiration date, the IAM role assigned to the instances in the activation, and the number of instances registered by using this activation.</p>
14846    async fn describe_activations(
14847        &self,
14848        input: DescribeActivationsRequest,
14849    ) -> Result<DescribeActivationsResult, RusotoError<DescribeActivationsError>>;
14850
14851    /// <p>Describes the association for the specified target or instance. If you created the association by using the <code>Targets</code> parameter, then you must retrieve the association by using the association ID. If you created the association by specifying an instance ID and a Systems Manager document, then you retrieve the association by specifying the document name and the instance ID. </p>
14852    async fn describe_association(
14853        &self,
14854        input: DescribeAssociationRequest,
14855    ) -> Result<DescribeAssociationResult, RusotoError<DescribeAssociationError>>;
14856
14857    /// <p>Use this API action to view information about a specific execution of a specific association.</p>
14858    async fn describe_association_execution_targets(
14859        &self,
14860        input: DescribeAssociationExecutionTargetsRequest,
14861    ) -> Result<
14862        DescribeAssociationExecutionTargetsResult,
14863        RusotoError<DescribeAssociationExecutionTargetsError>,
14864    >;
14865
14866    /// <p>Use this API action to view all executions for a specific association ID. </p>
14867    async fn describe_association_executions(
14868        &self,
14869        input: DescribeAssociationExecutionsRequest,
14870    ) -> Result<DescribeAssociationExecutionsResult, RusotoError<DescribeAssociationExecutionsError>>;
14871
14872    /// <p>Provides details about all active and terminated Automation executions.</p>
14873    async fn describe_automation_executions(
14874        &self,
14875        input: DescribeAutomationExecutionsRequest,
14876    ) -> Result<DescribeAutomationExecutionsResult, RusotoError<DescribeAutomationExecutionsError>>;
14877
14878    /// <p>Information about all active and terminated step executions in an Automation workflow.</p>
14879    async fn describe_automation_step_executions(
14880        &self,
14881        input: DescribeAutomationStepExecutionsRequest,
14882    ) -> Result<
14883        DescribeAutomationStepExecutionsResult,
14884        RusotoError<DescribeAutomationStepExecutionsError>,
14885    >;
14886
14887    /// <p>Lists all patches eligible to be included in a patch baseline.</p>
14888    async fn describe_available_patches(
14889        &self,
14890        input: DescribeAvailablePatchesRequest,
14891    ) -> Result<DescribeAvailablePatchesResult, RusotoError<DescribeAvailablePatchesError>>;
14892
14893    /// <p>Describes the specified Systems Manager document.</p>
14894    async fn describe_document(
14895        &self,
14896        input: DescribeDocumentRequest,
14897    ) -> Result<DescribeDocumentResult, RusotoError<DescribeDocumentError>>;
14898
14899    /// <p>Describes the permissions for a Systems Manager document. If you created the document, you are the owner. If a document is shared, it can either be shared privately (by specifying a user's AWS account ID) or publicly (<i>All</i>). </p>
14900    async fn describe_document_permission(
14901        &self,
14902        input: DescribeDocumentPermissionRequest,
14903    ) -> Result<DescribeDocumentPermissionResponse, RusotoError<DescribeDocumentPermissionError>>;
14904
14905    /// <p>All associations for the instance(s).</p>
14906    async fn describe_effective_instance_associations(
14907        &self,
14908        input: DescribeEffectiveInstanceAssociationsRequest,
14909    ) -> Result<
14910        DescribeEffectiveInstanceAssociationsResult,
14911        RusotoError<DescribeEffectiveInstanceAssociationsError>,
14912    >;
14913
14914    /// <p>Retrieves the current effective patches (the patch and the approval state) for the specified patch baseline. Note that this API applies only to Windows patch baselines.</p>
14915    async fn describe_effective_patches_for_patch_baseline(
14916        &self,
14917        input: DescribeEffectivePatchesForPatchBaselineRequest,
14918    ) -> Result<
14919        DescribeEffectivePatchesForPatchBaselineResult,
14920        RusotoError<DescribeEffectivePatchesForPatchBaselineError>,
14921    >;
14922
14923    /// <p>The status of the associations for the instance(s).</p>
14924    async fn describe_instance_associations_status(
14925        &self,
14926        input: DescribeInstanceAssociationsStatusRequest,
14927    ) -> Result<
14928        DescribeInstanceAssociationsStatusResult,
14929        RusotoError<DescribeInstanceAssociationsStatusError>,
14930    >;
14931
14932    /// <p><p>Describes one or more of your instances, including information about the operating system platform, the version of SSM Agent installed on the instance, instance status, and so on.</p> <p>If you specify one or more instance IDs, it returns information for those instances. If you do not specify instance IDs, it returns information for all your instances. If you specify an instance ID that is not valid or an instance that you do not own, you receive an error.</p> <note> <p>The IamRole field for this API action is the Amazon Identity and Access Management (IAM) role assigned to on-premises instances. This call does not return the IAM role for EC2 instances.</p> </note></p>
14933    async fn describe_instance_information(
14934        &self,
14935        input: DescribeInstanceInformationRequest,
14936    ) -> Result<DescribeInstanceInformationResult, RusotoError<DescribeInstanceInformationError>>;
14937
14938    /// <p>Retrieves the high-level patch state of one or more instances.</p>
14939    async fn describe_instance_patch_states(
14940        &self,
14941        input: DescribeInstancePatchStatesRequest,
14942    ) -> Result<DescribeInstancePatchStatesResult, RusotoError<DescribeInstancePatchStatesError>>;
14943
14944    /// <p>Retrieves the high-level patch state for the instances in the specified patch group.</p>
14945    async fn describe_instance_patch_states_for_patch_group(
14946        &self,
14947        input: DescribeInstancePatchStatesForPatchGroupRequest,
14948    ) -> Result<
14949        DescribeInstancePatchStatesForPatchGroupResult,
14950        RusotoError<DescribeInstancePatchStatesForPatchGroupError>,
14951    >;
14952
14953    /// <p>Retrieves information about the patches on the specified instance and their state relative to the patch baseline being used for the instance.</p>
14954    async fn describe_instance_patches(
14955        &self,
14956        input: DescribeInstancePatchesRequest,
14957    ) -> Result<DescribeInstancePatchesResult, RusotoError<DescribeInstancePatchesError>>;
14958
14959    /// <p>Describes a specific delete inventory operation.</p>
14960    async fn describe_inventory_deletions(
14961        &self,
14962        input: DescribeInventoryDeletionsRequest,
14963    ) -> Result<DescribeInventoryDeletionsResult, RusotoError<DescribeInventoryDeletionsError>>;
14964
14965    /// <p>Retrieves the individual task executions (one per target) for a particular task run as part of a maintenance window execution.</p>
14966    async fn describe_maintenance_window_execution_task_invocations(
14967        &self,
14968        input: DescribeMaintenanceWindowExecutionTaskInvocationsRequest,
14969    ) -> Result<
14970        DescribeMaintenanceWindowExecutionTaskInvocationsResult,
14971        RusotoError<DescribeMaintenanceWindowExecutionTaskInvocationsError>,
14972    >;
14973
14974    /// <p>For a given maintenance window execution, lists the tasks that were run.</p>
14975    async fn describe_maintenance_window_execution_tasks(
14976        &self,
14977        input: DescribeMaintenanceWindowExecutionTasksRequest,
14978    ) -> Result<
14979        DescribeMaintenanceWindowExecutionTasksResult,
14980        RusotoError<DescribeMaintenanceWindowExecutionTasksError>,
14981    >;
14982
14983    /// <p>Lists the executions of a maintenance window. This includes information about when the maintenance window was scheduled to be active, and information about tasks registered and run with the maintenance window.</p>
14984    async fn describe_maintenance_window_executions(
14985        &self,
14986        input: DescribeMaintenanceWindowExecutionsRequest,
14987    ) -> Result<
14988        DescribeMaintenanceWindowExecutionsResult,
14989        RusotoError<DescribeMaintenanceWindowExecutionsError>,
14990    >;
14991
14992    /// <p>Retrieves information about upcoming executions of a maintenance window.</p>
14993    async fn describe_maintenance_window_schedule(
14994        &self,
14995        input: DescribeMaintenanceWindowScheduleRequest,
14996    ) -> Result<
14997        DescribeMaintenanceWindowScheduleResult,
14998        RusotoError<DescribeMaintenanceWindowScheduleError>,
14999    >;
15000
15001    /// <p>Lists the targets registered with the maintenance window.</p>
15002    async fn describe_maintenance_window_targets(
15003        &self,
15004        input: DescribeMaintenanceWindowTargetsRequest,
15005    ) -> Result<
15006        DescribeMaintenanceWindowTargetsResult,
15007        RusotoError<DescribeMaintenanceWindowTargetsError>,
15008    >;
15009
15010    /// <p>Lists the tasks in a maintenance window.</p>
15011    async fn describe_maintenance_window_tasks(
15012        &self,
15013        input: DescribeMaintenanceWindowTasksRequest,
15014    ) -> Result<
15015        DescribeMaintenanceWindowTasksResult,
15016        RusotoError<DescribeMaintenanceWindowTasksError>,
15017    >;
15018
15019    /// <p>Retrieves the maintenance windows in an AWS account.</p>
15020    async fn describe_maintenance_windows(
15021        &self,
15022        input: DescribeMaintenanceWindowsRequest,
15023    ) -> Result<DescribeMaintenanceWindowsResult, RusotoError<DescribeMaintenanceWindowsError>>;
15024
15025    /// <p>Retrieves information about the maintenance window targets or tasks that an instance is associated with.</p>
15026    async fn describe_maintenance_windows_for_target(
15027        &self,
15028        input: DescribeMaintenanceWindowsForTargetRequest,
15029    ) -> Result<
15030        DescribeMaintenanceWindowsForTargetResult,
15031        RusotoError<DescribeMaintenanceWindowsForTargetError>,
15032    >;
15033
15034    /// <p>Query a set of OpsItems. You must have permission in AWS Identity and Access Management (IAM) to query a list of OpsItems. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-getting-started.html">Getting started with OpsCenter</a> in the <i>AWS Systems Manager User Guide</i>.</p> <p>Operations engineers and IT professionals use OpsCenter to view, investigate, and remediate operational issues impacting the performance and health of their AWS resources. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter.html">AWS Systems Manager OpsCenter</a> in the <i>AWS Systems Manager User Guide</i>. </p>
15035    async fn describe_ops_items(
15036        &self,
15037        input: DescribeOpsItemsRequest,
15038    ) -> Result<DescribeOpsItemsResponse, RusotoError<DescribeOpsItemsError>>;
15039
15040    /// <p><p>Get information about a parameter.</p> <note> <p>Request results are returned on a best-effort basis. If you specify <code>MaxResults</code> in the request, the response includes information up to the limit specified. The number of items returned, however, can be between zero and the value of <code>MaxResults</code>. If the service reaches an internal limit while processing the results, it stops the operation and returns the matching values up to that point and a <code>NextToken</code>. You can specify the <code>NextToken</code> in a subsequent call to get the next set of results.</p> </note></p>
15041    async fn describe_parameters(
15042        &self,
15043        input: DescribeParametersRequest,
15044    ) -> Result<DescribeParametersResult, RusotoError<DescribeParametersError>>;
15045
15046    /// <p>Lists the patch baselines in your AWS account.</p>
15047    async fn describe_patch_baselines(
15048        &self,
15049        input: DescribePatchBaselinesRequest,
15050    ) -> Result<DescribePatchBaselinesResult, RusotoError<DescribePatchBaselinesError>>;
15051
15052    /// <p>Returns high-level aggregated patch compliance state for a patch group.</p>
15053    async fn describe_patch_group_state(
15054        &self,
15055        input: DescribePatchGroupStateRequest,
15056    ) -> Result<DescribePatchGroupStateResult, RusotoError<DescribePatchGroupStateError>>;
15057
15058    /// <p>Lists all patch groups that have been registered with patch baselines.</p>
15059    async fn describe_patch_groups(
15060        &self,
15061        input: DescribePatchGroupsRequest,
15062    ) -> Result<DescribePatchGroupsResult, RusotoError<DescribePatchGroupsError>>;
15063
15064    /// <p><p>Lists the properties of available patches organized by product, product family, classification, severity, and other properties of available patches. You can use the reported properties in the filters you specify in requests for actions such as <a>CreatePatchBaseline</a>, <a>UpdatePatchBaseline</a>, <a>DescribeAvailablePatches</a>, and <a>DescribePatchBaselines</a>.</p> <p>The following section lists the properties that can be used in filters for each major operating system type:</p> <dl> <dt>WINDOWS</dt> <dd> <p>Valid properties: PRODUCT, PRODUCT<em>FAMILY, CLASSIFICATION, MSRC</em>SEVERITY</p> </dd> <dt>AMAZON<em>LINUX</dt> <dd> <p>Valid properties: PRODUCT, CLASSIFICATION, SEVERITY</p> </dd> <dt>AMAZON</em>LINUX<em>2</dt> <dd> <p>Valid properties: PRODUCT, CLASSIFICATION, SEVERITY</p> </dd> <dt>UBUNTU </dt> <dd> <p>Valid properties: PRODUCT, PRIORITY</p> </dd> <dt>REDHAT</em>ENTERPRISE_LINUX</dt> <dd> <p>Valid properties: PRODUCT, CLASSIFICATION, SEVERITY</p> </dd> <dt>SUSE</dt> <dd> <p>Valid properties: PRODUCT, CLASSIFICATION, SEVERITY</p> </dd> <dt>CENTOS</dt> <dd> <p>Valid properties: PRODUCT, CLASSIFICATION, SEVERITY</p> </dd> </dl></p>
15065    async fn describe_patch_properties(
15066        &self,
15067        input: DescribePatchPropertiesRequest,
15068    ) -> Result<DescribePatchPropertiesResult, RusotoError<DescribePatchPropertiesError>>;
15069
15070    /// <p>Retrieves a list of all active sessions (both connected and disconnected) or terminated sessions from the past 30 days.</p>
15071    async fn describe_sessions(
15072        &self,
15073        input: DescribeSessionsRequest,
15074    ) -> Result<DescribeSessionsResponse, RusotoError<DescribeSessionsError>>;
15075
15076    /// <p>Get detailed information about a particular Automation execution.</p>
15077    async fn get_automation_execution(
15078        &self,
15079        input: GetAutomationExecutionRequest,
15080    ) -> Result<GetAutomationExecutionResult, RusotoError<GetAutomationExecutionError>>;
15081
15082    /// <p>Gets the state of the AWS Systems Manager Change Calendar at an optional, specified time. If you specify a time, <code>GetCalendarState</code> returns the state of the calendar at a specific time, and returns the next time that the Change Calendar state will transition. If you do not specify a time, <code>GetCalendarState</code> assumes the current time. Change Calendar entries have two possible states: <code>OPEN</code> or <code>CLOSED</code>. For more information about Systems Manager Change Calendar, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-change-calendar.html">AWS Systems Manager Change Calendar</a> in the <i>AWS Systems Manager User Guide</i>.</p>
15083    async fn get_calendar_state(
15084        &self,
15085        input: GetCalendarStateRequest,
15086    ) -> Result<GetCalendarStateResponse, RusotoError<GetCalendarStateError>>;
15087
15088    /// <p>Returns detailed information about command execution for an invocation or plugin. </p>
15089    async fn get_command_invocation(
15090        &self,
15091        input: GetCommandInvocationRequest,
15092    ) -> Result<GetCommandInvocationResult, RusotoError<GetCommandInvocationError>>;
15093
15094    /// <p>Retrieves the Session Manager connection status for an instance to determine whether it is running and ready to receive Session Manager connections.</p>
15095    async fn get_connection_status(
15096        &self,
15097        input: GetConnectionStatusRequest,
15098    ) -> Result<GetConnectionStatusResponse, RusotoError<GetConnectionStatusError>>;
15099
15100    /// <p>Retrieves the default patch baseline. Note that Systems Manager supports creating multiple default patch baselines. For example, you can create a default patch baseline for each operating system.</p> <p>If you do not specify an operating system value, the default patch baseline for Windows is returned.</p>
15101    async fn get_default_patch_baseline(
15102        &self,
15103        input: GetDefaultPatchBaselineRequest,
15104    ) -> Result<GetDefaultPatchBaselineResult, RusotoError<GetDefaultPatchBaselineError>>;
15105
15106    /// <p>Retrieves the current snapshot for the patch baseline the instance uses. This API is primarily used by the AWS-RunPatchBaseline Systems Manager document. </p>
15107    async fn get_deployable_patch_snapshot_for_instance(
15108        &self,
15109        input: GetDeployablePatchSnapshotForInstanceRequest,
15110    ) -> Result<
15111        GetDeployablePatchSnapshotForInstanceResult,
15112        RusotoError<GetDeployablePatchSnapshotForInstanceError>,
15113    >;
15114
15115    /// <p>Gets the contents of the specified Systems Manager document.</p>
15116    async fn get_document(
15117        &self,
15118        input: GetDocumentRequest,
15119    ) -> Result<GetDocumentResult, RusotoError<GetDocumentError>>;
15120
15121    /// <p>Query inventory information.</p>
15122    async fn get_inventory(
15123        &self,
15124        input: GetInventoryRequest,
15125    ) -> Result<GetInventoryResult, RusotoError<GetInventoryError>>;
15126
15127    /// <p>Return a list of inventory type names for the account, or return a list of attribute names for a specific Inventory item type.</p>
15128    async fn get_inventory_schema(
15129        &self,
15130        input: GetInventorySchemaRequest,
15131    ) -> Result<GetInventorySchemaResult, RusotoError<GetInventorySchemaError>>;
15132
15133    /// <p>Retrieves a maintenance window.</p>
15134    async fn get_maintenance_window(
15135        &self,
15136        input: GetMaintenanceWindowRequest,
15137    ) -> Result<GetMaintenanceWindowResult, RusotoError<GetMaintenanceWindowError>>;
15138
15139    /// <p>Retrieves details about a specific a maintenance window execution.</p>
15140    async fn get_maintenance_window_execution(
15141        &self,
15142        input: GetMaintenanceWindowExecutionRequest,
15143    ) -> Result<GetMaintenanceWindowExecutionResult, RusotoError<GetMaintenanceWindowExecutionError>>;
15144
15145    /// <p>Retrieves the details about a specific task run as part of a maintenance window execution.</p>
15146    async fn get_maintenance_window_execution_task(
15147        &self,
15148        input: GetMaintenanceWindowExecutionTaskRequest,
15149    ) -> Result<
15150        GetMaintenanceWindowExecutionTaskResult,
15151        RusotoError<GetMaintenanceWindowExecutionTaskError>,
15152    >;
15153
15154    /// <p>Retrieves information about a specific task running on a specific target.</p>
15155    async fn get_maintenance_window_execution_task_invocation(
15156        &self,
15157        input: GetMaintenanceWindowExecutionTaskInvocationRequest,
15158    ) -> Result<
15159        GetMaintenanceWindowExecutionTaskInvocationResult,
15160        RusotoError<GetMaintenanceWindowExecutionTaskInvocationError>,
15161    >;
15162
15163    /// <p>Lists the tasks in a maintenance window.</p>
15164    async fn get_maintenance_window_task(
15165        &self,
15166        input: GetMaintenanceWindowTaskRequest,
15167    ) -> Result<GetMaintenanceWindowTaskResult, RusotoError<GetMaintenanceWindowTaskError>>;
15168
15169    /// <p>Get information about an OpsItem by using the ID. You must have permission in AWS Identity and Access Management (IAM) to view information about an OpsItem. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-getting-started.html">Getting started with OpsCenter</a> in the <i>AWS Systems Manager User Guide</i>.</p> <p>Operations engineers and IT professionals use OpsCenter to view, investigate, and remediate operational issues impacting the performance and health of their AWS resources. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter.html">AWS Systems Manager OpsCenter</a> in the <i>AWS Systems Manager User Guide</i>. </p>
15170    async fn get_ops_item(
15171        &self,
15172        input: GetOpsItemRequest,
15173    ) -> Result<GetOpsItemResponse, RusotoError<GetOpsItemError>>;
15174
15175    /// <p>View a summary of OpsItems based on specified filters and aggregators.</p>
15176    async fn get_ops_summary(
15177        &self,
15178        input: GetOpsSummaryRequest,
15179    ) -> Result<GetOpsSummaryResult, RusotoError<GetOpsSummaryError>>;
15180
15181    /// <p>Get information about a parameter by using the parameter name. Don't confuse this API action with the <a>GetParameters</a> API action.</p>
15182    async fn get_parameter(
15183        &self,
15184        input: GetParameterRequest,
15185    ) -> Result<GetParameterResult, RusotoError<GetParameterError>>;
15186
15187    /// <p>Query a list of all parameters used by the AWS account.</p>
15188    async fn get_parameter_history(
15189        &self,
15190        input: GetParameterHistoryRequest,
15191    ) -> Result<GetParameterHistoryResult, RusotoError<GetParameterHistoryError>>;
15192
15193    /// <p>Get details of a parameter. Don't confuse this API action with the <a>GetParameter</a> API action.</p>
15194    async fn get_parameters(
15195        &self,
15196        input: GetParametersRequest,
15197    ) -> Result<GetParametersResult, RusotoError<GetParametersError>>;
15198
15199    /// <p><p>Retrieve information about one or more parameters in a specific hierarchy. </p> <note> <p>Request results are returned on a best-effort basis. If you specify <code>MaxResults</code> in the request, the response includes information up to the limit specified. The number of items returned, however, can be between zero and the value of <code>MaxResults</code>. If the service reaches an internal limit while processing the results, it stops the operation and returns the matching values up to that point and a <code>NextToken</code>. You can specify the <code>NextToken</code> in a subsequent call to get the next set of results.</p> </note></p>
15200    async fn get_parameters_by_path(
15201        &self,
15202        input: GetParametersByPathRequest,
15203    ) -> Result<GetParametersByPathResult, RusotoError<GetParametersByPathError>>;
15204
15205    /// <p>Retrieves information about a patch baseline.</p>
15206    async fn get_patch_baseline(
15207        &self,
15208        input: GetPatchBaselineRequest,
15209    ) -> Result<GetPatchBaselineResult, RusotoError<GetPatchBaselineError>>;
15210
15211    /// <p>Retrieves the patch baseline that should be used for the specified patch group.</p>
15212    async fn get_patch_baseline_for_patch_group(
15213        &self,
15214        input: GetPatchBaselineForPatchGroupRequest,
15215    ) -> Result<GetPatchBaselineForPatchGroupResult, RusotoError<GetPatchBaselineForPatchGroupError>>;
15216
15217    /// <p> <code>ServiceSetting</code> is an account-level setting for an AWS service. This setting defines how a user interacts with or uses a service or a feature of a service. For example, if an AWS service charges money to the account based on feature or service usage, then the AWS service team might create a default setting of "false". This means the user can't use this feature unless they change the setting to "true" and intentionally opt in for a paid feature.</p> <p>Services map a <code>SettingId</code> object to a setting value. AWS services teams define the default value for a <code>SettingId</code>. You can't create a new <code>SettingId</code>, but you can overwrite the default value if you have the <code>ssm:UpdateServiceSetting</code> permission for the setting. Use the <a>UpdateServiceSetting</a> API action to change the default setting. Or use the <a>ResetServiceSetting</a> to change the value back to the original value defined by the AWS service team.</p> <p>Query the current service setting for the account. </p>
15218    async fn get_service_setting(
15219        &self,
15220        input: GetServiceSettingRequest,
15221    ) -> Result<GetServiceSettingResult, RusotoError<GetServiceSettingError>>;
15222
15223    /// <p><p>A parameter label is a user-defined alias to help you manage different versions of a parameter. When you modify a parameter, Systems Manager automatically saves a new version and increments the version number by one. A label can help you remember the purpose of a parameter when there are multiple versions. </p> <p>Parameter labels have the following requirements and restrictions.</p> <ul> <li> <p>A version of a parameter can have a maximum of 10 labels.</p> </li> <li> <p>You can&#39;t attach the same label to different versions of the same parameter. For example, if version 1 has the label Production, then you can&#39;t attach Production to version 2.</p> </li> <li> <p>You can move a label from one version of a parameter to another.</p> </li> <li> <p>You can&#39;t create a label when you create a new parameter. You must attach a label to a specific version of a parameter.</p> </li> <li> <p>You can&#39;t delete a parameter label. If you no longer want to use a parameter label, then you must move it to a different version of a parameter.</p> </li> <li> <p>A label can have a maximum of 100 characters.</p> </li> <li> <p>Labels can contain letters (case sensitive), numbers, periods (.), hyphens (-), or underscores (_).</p> </li> <li> <p>Labels can&#39;t begin with a number, &quot;aws,&quot; or &quot;ssm&quot; (not case sensitive). If a label fails to meet these requirements, then the label is not associated with a parameter and the system displays it in the list of InvalidLabels.</p> </li> </ul></p>
15224    async fn label_parameter_version(
15225        &self,
15226        input: LabelParameterVersionRequest,
15227    ) -> Result<LabelParameterVersionResult, RusotoError<LabelParameterVersionError>>;
15228
15229    /// <p>Retrieves all versions of an association for a specific association ID.</p>
15230    async fn list_association_versions(
15231        &self,
15232        input: ListAssociationVersionsRequest,
15233    ) -> Result<ListAssociationVersionsResult, RusotoError<ListAssociationVersionsError>>;
15234
15235    /// <p>Returns all State Manager associations in the current AWS account and Region. You can limit the results to a specific State Manager association document or instance by specifying a filter.</p>
15236    async fn list_associations(
15237        &self,
15238        input: ListAssociationsRequest,
15239    ) -> Result<ListAssociationsResult, RusotoError<ListAssociationsError>>;
15240
15241    /// <p>An invocation is copy of a command sent to a specific instance. A command can apply to one or more instances. A command invocation applies to one instance. For example, if a user runs SendCommand against three instances, then a command invocation is created for each requested instance ID. ListCommandInvocations provide status about command execution.</p>
15242    async fn list_command_invocations(
15243        &self,
15244        input: ListCommandInvocationsRequest,
15245    ) -> Result<ListCommandInvocationsResult, RusotoError<ListCommandInvocationsError>>;
15246
15247    /// <p>Lists the commands requested by users of the AWS account.</p>
15248    async fn list_commands(
15249        &self,
15250        input: ListCommandsRequest,
15251    ) -> Result<ListCommandsResult, RusotoError<ListCommandsError>>;
15252
15253    /// <p>For a specified resource ID, this API action returns a list of compliance statuses for different resource types. Currently, you can only specify one resource ID per call. List results depend on the criteria specified in the filter.</p>
15254    async fn list_compliance_items(
15255        &self,
15256        input: ListComplianceItemsRequest,
15257    ) -> Result<ListComplianceItemsResult, RusotoError<ListComplianceItemsError>>;
15258
15259    /// <p>Returns a summary count of compliant and non-compliant resources for a compliance type. For example, this call can return State Manager associations, patches, or custom compliance types according to the filter criteria that you specify.</p>
15260    async fn list_compliance_summaries(
15261        &self,
15262        input: ListComplianceSummariesRequest,
15263    ) -> Result<ListComplianceSummariesResult, RusotoError<ListComplianceSummariesError>>;
15264
15265    /// <p>List all versions for a document.</p>
15266    async fn list_document_versions(
15267        &self,
15268        input: ListDocumentVersionsRequest,
15269    ) -> Result<ListDocumentVersionsResult, RusotoError<ListDocumentVersionsError>>;
15270
15271    /// <p>Returns all Systems Manager (SSM) documents in the current AWS account and Region. You can limit the results of this request by using a filter.</p>
15272    async fn list_documents(
15273        &self,
15274        input: ListDocumentsRequest,
15275    ) -> Result<ListDocumentsResult, RusotoError<ListDocumentsError>>;
15276
15277    /// <p>A list of inventory items returned by the request.</p>
15278    async fn list_inventory_entries(
15279        &self,
15280        input: ListInventoryEntriesRequest,
15281    ) -> Result<ListInventoryEntriesResult, RusotoError<ListInventoryEntriesError>>;
15282
15283    /// <p>Returns a resource-level summary count. The summary includes information about compliant and non-compliant statuses and detailed compliance-item severity counts, according to the filter criteria you specify.</p>
15284    async fn list_resource_compliance_summaries(
15285        &self,
15286        input: ListResourceComplianceSummariesRequest,
15287    ) -> Result<
15288        ListResourceComplianceSummariesResult,
15289        RusotoError<ListResourceComplianceSummariesError>,
15290    >;
15291
15292    /// <p>Lists your resource data sync configurations. Includes information about the last time a sync attempted to start, the last sync status, and the last time a sync successfully completed.</p> <p>The number of sync configurations might be too large to return using a single call to <code>ListResourceDataSync</code>. You can limit the number of sync configurations returned by using the <code>MaxResults</code> parameter. To determine whether there are more sync configurations to list, check the value of <code>NextToken</code> in the output. If there are more sync configurations to list, you can request them by specifying the <code>NextToken</code> returned in the call to the parameter of a subsequent call. </p>
15293    async fn list_resource_data_sync(
15294        &self,
15295        input: ListResourceDataSyncRequest,
15296    ) -> Result<ListResourceDataSyncResult, RusotoError<ListResourceDataSyncError>>;
15297
15298    /// <p>Returns a list of the tags assigned to the specified resource.</p>
15299    async fn list_tags_for_resource(
15300        &self,
15301        input: ListTagsForResourceRequest,
15302    ) -> Result<ListTagsForResourceResult, RusotoError<ListTagsForResourceError>>;
15303
15304    /// <p>Shares a Systems Manager document publicly or privately. If you share a document privately, you must specify the AWS user account IDs for those people who can use the document. If you share a document publicly, you must specify <i>All</i> as the account ID.</p>
15305    async fn modify_document_permission(
15306        &self,
15307        input: ModifyDocumentPermissionRequest,
15308    ) -> Result<ModifyDocumentPermissionResponse, RusotoError<ModifyDocumentPermissionError>>;
15309
15310    /// <p><p>Registers a compliance type and other compliance details on a designated resource. This action lets you register custom compliance details with a resource. This call overwrites existing compliance information on the resource, so you must provide a full list of compliance items each time that you send the request.</p> <p>ComplianceType can be one of the following:</p> <ul> <li> <p>ExecutionId: The execution ID when the patch, association, or custom compliance item was applied.</p> </li> <li> <p>ExecutionType: Specify patch, association, or Custom:<code>string</code>.</p> </li> <li> <p>ExecutionTime. The time the patch, association, or custom compliance item was applied to the instance.</p> </li> <li> <p>Id: The patch, association, or custom compliance ID.</p> </li> <li> <p>Title: A title.</p> </li> <li> <p>Status: The status of the compliance item. For example, <code>approved</code> for patches, or <code>Failed</code> for associations.</p> </li> <li> <p>Severity: A patch severity. For example, <code>critical</code>.</p> </li> <li> <p>DocumentName: A SSM document name. For example, AWS-RunPatchBaseline.</p> </li> <li> <p>DocumentVersion: An SSM document version number. For example, 4.</p> </li> <li> <p>Classification: A patch classification. For example, <code>security updates</code>.</p> </li> <li> <p>PatchBaselineId: A patch baseline ID.</p> </li> <li> <p>PatchSeverity: A patch severity. For example, <code>Critical</code>.</p> </li> <li> <p>PatchState: A patch state. For example, <code>InstancesWithFailedPatches</code>.</p> </li> <li> <p>PatchGroup: The name of a patch group.</p> </li> <li> <p>InstalledTime: The time the association, patch, or custom compliance item was applied to the resource. Specify the time by using the following format: yyyy-MM-dd&#39;T&#39;HH:mm:ss&#39;Z&#39;</p> </li> </ul></p>
15311    async fn put_compliance_items(
15312        &self,
15313        input: PutComplianceItemsRequest,
15314    ) -> Result<PutComplianceItemsResult, RusotoError<PutComplianceItemsError>>;
15315
15316    /// <p>Bulk update custom inventory items on one more instance. The request adds an inventory item, if it doesn't already exist, or updates an inventory item, if it does exist.</p>
15317    async fn put_inventory(
15318        &self,
15319        input: PutInventoryRequest,
15320    ) -> Result<PutInventoryResult, RusotoError<PutInventoryError>>;
15321
15322    /// <p>Add a parameter to the system.</p>
15323    async fn put_parameter(
15324        &self,
15325        input: PutParameterRequest,
15326    ) -> Result<PutParameterResult, RusotoError<PutParameterError>>;
15327
15328    /// <p>Defines the default patch baseline for the relevant operating system.</p> <p>To reset the AWS predefined patch baseline as the default, specify the full patch baseline ARN as the baseline ID value. For example, for CentOS, specify <code>arn:aws:ssm:us-east-2:733109147000:patchbaseline/pb-0574b43a65ea646ed</code> instead of <code>pb-0574b43a65ea646ed</code>.</p>
15329    async fn register_default_patch_baseline(
15330        &self,
15331        input: RegisterDefaultPatchBaselineRequest,
15332    ) -> Result<RegisterDefaultPatchBaselineResult, RusotoError<RegisterDefaultPatchBaselineError>>;
15333
15334    /// <p>Registers a patch baseline for a patch group.</p>
15335    async fn register_patch_baseline_for_patch_group(
15336        &self,
15337        input: RegisterPatchBaselineForPatchGroupRequest,
15338    ) -> Result<
15339        RegisterPatchBaselineForPatchGroupResult,
15340        RusotoError<RegisterPatchBaselineForPatchGroupError>,
15341    >;
15342
15343    /// <p>Registers a target with a maintenance window.</p>
15344    async fn register_target_with_maintenance_window(
15345        &self,
15346        input: RegisterTargetWithMaintenanceWindowRequest,
15347    ) -> Result<
15348        RegisterTargetWithMaintenanceWindowResult,
15349        RusotoError<RegisterTargetWithMaintenanceWindowError>,
15350    >;
15351
15352    /// <p>Adds a new task to a maintenance window.</p>
15353    async fn register_task_with_maintenance_window(
15354        &self,
15355        input: RegisterTaskWithMaintenanceWindowRequest,
15356    ) -> Result<
15357        RegisterTaskWithMaintenanceWindowResult,
15358        RusotoError<RegisterTaskWithMaintenanceWindowError>,
15359    >;
15360
15361    /// <p>Removes tag keys from the specified resource.</p>
15362    async fn remove_tags_from_resource(
15363        &self,
15364        input: RemoveTagsFromResourceRequest,
15365    ) -> Result<RemoveTagsFromResourceResult, RusotoError<RemoveTagsFromResourceError>>;
15366
15367    /// <p> <code>ServiceSetting</code> is an account-level setting for an AWS service. This setting defines how a user interacts with or uses a service or a feature of a service. For example, if an AWS service charges money to the account based on feature or service usage, then the AWS service team might create a default setting of "false". This means the user can't use this feature unless they change the setting to "true" and intentionally opt in for a paid feature.</p> <p>Services map a <code>SettingId</code> object to a setting value. AWS services teams define the default value for a <code>SettingId</code>. You can't create a new <code>SettingId</code>, but you can overwrite the default value if you have the <code>ssm:UpdateServiceSetting</code> permission for the setting. Use the <a>GetServiceSetting</a> API action to view the current value. Use the <a>UpdateServiceSetting</a> API action to change the default setting. </p> <p>Reset the service setting for the account to the default value as provisioned by the AWS service team. </p>
15368    async fn reset_service_setting(
15369        &self,
15370        input: ResetServiceSettingRequest,
15371    ) -> Result<ResetServiceSettingResult, RusotoError<ResetServiceSettingError>>;
15372
15373    /// <p><p>Reconnects a session to an instance after it has been disconnected. Connections can be resumed for disconnected sessions, but not terminated sessions.</p> <note> <p>This command is primarily for use by client machines to automatically reconnect during intermittent network issues. It is not intended for any other use.</p> </note></p>
15374    async fn resume_session(
15375        &self,
15376        input: ResumeSessionRequest,
15377    ) -> Result<ResumeSessionResponse, RusotoError<ResumeSessionError>>;
15378
15379    /// <p>Sends a signal to an Automation execution to change the current behavior or status of the execution. </p>
15380    async fn send_automation_signal(
15381        &self,
15382        input: SendAutomationSignalRequest,
15383    ) -> Result<SendAutomationSignalResult, RusotoError<SendAutomationSignalError>>;
15384
15385    /// <p>Runs commands on one or more managed instances.</p>
15386    async fn send_command(
15387        &self,
15388        input: SendCommandRequest,
15389    ) -> Result<SendCommandResult, RusotoError<SendCommandError>>;
15390
15391    /// <p>Use this API action to run an association immediately and only one time. This action can be helpful when troubleshooting associations.</p>
15392    async fn start_associations_once(
15393        &self,
15394        input: StartAssociationsOnceRequest,
15395    ) -> Result<StartAssociationsOnceResult, RusotoError<StartAssociationsOnceError>>;
15396
15397    /// <p>Initiates execution of an Automation document.</p>
15398    async fn start_automation_execution(
15399        &self,
15400        input: StartAutomationExecutionRequest,
15401    ) -> Result<StartAutomationExecutionResult, RusotoError<StartAutomationExecutionError>>;
15402
15403    /// <p><p>Initiates a connection to a target (for example, an instance) for a Session Manager session. Returns a URL and token that can be used to open a WebSocket connection for sending input and receiving outputs.</p> <note> <p>AWS CLI usage: <code>start-session</code> is an interactive command that requires the Session Manager plugin to be installed on the client machine making the call. For information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html">Install the Session Manager plugin for the AWS CLI</a> in the <i>AWS Systems Manager User Guide</i>.</p> <p>AWS Tools for PowerShell usage: Start-SSMSession is not currently supported by AWS Tools for PowerShell on Windows local machines.</p> </note></p>
15404    async fn start_session(
15405        &self,
15406        input: StartSessionRequest,
15407    ) -> Result<StartSessionResponse, RusotoError<StartSessionError>>;
15408
15409    /// <p>Stop an Automation that is currently running.</p>
15410    async fn stop_automation_execution(
15411        &self,
15412        input: StopAutomationExecutionRequest,
15413    ) -> Result<StopAutomationExecutionResult, RusotoError<StopAutomationExecutionError>>;
15414
15415    /// <p>Permanently ends a session and closes the data connection between the Session Manager client and SSM Agent on the instance. A terminated session cannot be resumed.</p>
15416    async fn terminate_session(
15417        &self,
15418        input: TerminateSessionRequest,
15419    ) -> Result<TerminateSessionResponse, RusotoError<TerminateSessionError>>;
15420
15421    /// <p><p>Updates an association. You can update the association name and version, the document version, schedule, parameters, and Amazon S3 output. </p> <p>In order to call this API action, your IAM user account, group, or role must be configured with permission to call the <a>DescribeAssociation</a> API action. If you don&#39;t have permission to call DescribeAssociation, then you receive the following error: <code>An error occurred (AccessDeniedException) when calling the UpdateAssociation operation: User: &lt;user<em>arn&gt; is not authorized to perform: ssm:DescribeAssociation on resource: &lt;resource</em>arn&gt;</code> </p> <important> <p>When you update an association, the association immediately runs against the specified targets.</p> </important></p>
15422    async fn update_association(
15423        &self,
15424        input: UpdateAssociationRequest,
15425    ) -> Result<UpdateAssociationResult, RusotoError<UpdateAssociationError>>;
15426
15427    /// <p>Updates the status of the Systems Manager document associated with the specified instance.</p>
15428    async fn update_association_status(
15429        &self,
15430        input: UpdateAssociationStatusRequest,
15431    ) -> Result<UpdateAssociationStatusResult, RusotoError<UpdateAssociationStatusError>>;
15432
15433    /// <p>Updates one or more values for an SSM document.</p>
15434    async fn update_document(
15435        &self,
15436        input: UpdateDocumentRequest,
15437    ) -> Result<UpdateDocumentResult, RusotoError<UpdateDocumentError>>;
15438
15439    /// <p>Set the default version of a document. </p>
15440    async fn update_document_default_version(
15441        &self,
15442        input: UpdateDocumentDefaultVersionRequest,
15443    ) -> Result<UpdateDocumentDefaultVersionResult, RusotoError<UpdateDocumentDefaultVersionError>>;
15444
15445    /// <p><p>Updates an existing maintenance window. Only specified parameters are modified.</p> <note> <p>The value you specify for <code>Duration</code> determines the specific end time for the maintenance window based on the time it begins. No maintenance window tasks are permitted to start after the resulting endtime minus the number of hours you specify for <code>Cutoff</code>. For example, if the maintenance window starts at 3 PM, the duration is three hours, and the value you specify for <code>Cutoff</code> is one hour, no maintenance window tasks can start after 5 PM.</p> </note></p>
15446    async fn update_maintenance_window(
15447        &self,
15448        input: UpdateMaintenanceWindowRequest,
15449    ) -> Result<UpdateMaintenanceWindowResult, RusotoError<UpdateMaintenanceWindowError>>;
15450
15451    /// <p><p>Modifies the target of an existing maintenance window. You can change the following:</p> <ul> <li> <p>Name</p> </li> <li> <p>Description</p> </li> <li> <p>Owner</p> </li> <li> <p>IDs for an ID target</p> </li> <li> <p>Tags for a Tag target</p> </li> <li> <p>From any supported tag type to another. The three supported tag types are ID target, Tag target, and resource group. For more information, see <a>Target</a>.</p> </li> </ul> <note> <p>If a parameter is null, then the corresponding field is not modified.</p> </note></p>
15452    async fn update_maintenance_window_target(
15453        &self,
15454        input: UpdateMaintenanceWindowTargetRequest,
15455    ) -> Result<UpdateMaintenanceWindowTargetResult, RusotoError<UpdateMaintenanceWindowTargetError>>;
15456
15457    /// <p>Modifies a task assigned to a maintenance window. You can't change the task type, but you can change the following values:</p> <ul> <li> <p>TaskARN. For example, you can change a RUN_COMMAND task from AWS-RunPowerShellScript to AWS-RunShellScript.</p> </li> <li> <p>ServiceRoleArn</p> </li> <li> <p>TaskInvocationParameters</p> </li> <li> <p>Priority</p> </li> <li> <p>MaxConcurrency</p> </li> <li> <p>MaxErrors</p> </li> </ul> <p>If a parameter is null, then the corresponding field is not modified. Also, if you set Replace to true, then all fields required by the <a>RegisterTaskWithMaintenanceWindow</a> action are required for this request. Optional fields that aren't specified are set to null.</p>
15458    async fn update_maintenance_window_task(
15459        &self,
15460        input: UpdateMaintenanceWindowTaskRequest,
15461    ) -> Result<UpdateMaintenanceWindowTaskResult, RusotoError<UpdateMaintenanceWindowTaskError>>;
15462
15463    /// <p>Changes the Amazon Identity and Access Management (IAM) role that is assigned to the on-premises instance or virtual machines (VM). IAM roles are first assigned to these hybrid instances during the activation process. For more information, see <a>CreateActivation</a>.</p>
15464    async fn update_managed_instance_role(
15465        &self,
15466        input: UpdateManagedInstanceRoleRequest,
15467    ) -> Result<UpdateManagedInstanceRoleResult, RusotoError<UpdateManagedInstanceRoleError>>;
15468
15469    /// <p>Edit or change an OpsItem. You must have permission in AWS Identity and Access Management (IAM) to update an OpsItem. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-getting-started.html">Getting started with OpsCenter</a> in the <i>AWS Systems Manager User Guide</i>.</p> <p>Operations engineers and IT professionals use OpsCenter to view, investigate, and remediate operational issues impacting the performance and health of their AWS resources. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter.html">AWS Systems Manager OpsCenter</a> in the <i>AWS Systems Manager User Guide</i>. </p>
15470    async fn update_ops_item(
15471        &self,
15472        input: UpdateOpsItemRequest,
15473    ) -> Result<UpdateOpsItemResponse, RusotoError<UpdateOpsItemError>>;
15474
15475    /// <p><p>Modifies an existing patch baseline. Fields not specified in the request are left unchanged.</p> <note> <p>For information about valid key and value pairs in <code>PatchFilters</code> for each supported operating system type, see <a href="http://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PatchFilter.html">PatchFilter</a>.</p> </note></p>
15476    async fn update_patch_baseline(
15477        &self,
15478        input: UpdatePatchBaselineRequest,
15479    ) -> Result<UpdatePatchBaselineResult, RusotoError<UpdatePatchBaselineError>>;
15480
15481    /// <p><p>Update a resource data sync. After you create a resource data sync for a Region, you can&#39;t change the account options for that sync. For example, if you create a sync in the us-east-2 (Ohio) Region and you choose the Include only the current account option, you can&#39;t edit that sync later and choose the Include all accounts from my AWS Organizations configuration option. Instead, you must delete the first resource data sync, and create a new one.</p> <note> <p>This API action only supports a resource data sync that was created with a SyncFromSource <code>SyncType</code>.</p> </note></p>
15482    async fn update_resource_data_sync(
15483        &self,
15484        input: UpdateResourceDataSyncRequest,
15485    ) -> Result<UpdateResourceDataSyncResult, RusotoError<UpdateResourceDataSyncError>>;
15486
15487    /// <p> <code>ServiceSetting</code> is an account-level setting for an AWS service. This setting defines how a user interacts with or uses a service or a feature of a service. For example, if an AWS service charges money to the account based on feature or service usage, then the AWS service team might create a default setting of "false". This means the user can't use this feature unless they change the setting to "true" and intentionally opt in for a paid feature.</p> <p>Services map a <code>SettingId</code> object to a setting value. AWS services teams define the default value for a <code>SettingId</code>. You can't create a new <code>SettingId</code>, but you can overwrite the default value if you have the <code>ssm:UpdateServiceSetting</code> permission for the setting. Use the <a>GetServiceSetting</a> API action to view the current value. Or, use the <a>ResetServiceSetting</a> to change the value back to the original value defined by the AWS service team.</p> <p>Update the service setting for the account. </p>
15488    async fn update_service_setting(
15489        &self,
15490        input: UpdateServiceSettingRequest,
15491    ) -> Result<UpdateServiceSettingResult, RusotoError<UpdateServiceSettingError>>;
15492}
15493/// A client for the Amazon SSM API.
15494#[derive(Clone)]
15495pub struct SsmClient {
15496    client: Client,
15497    region: region::Region,
15498}
15499
15500impl SsmClient {
15501    /// Creates a client backed by the default tokio event loop.
15502    ///
15503    /// The client will use the default credentials provider and tls client.
15504    pub fn new(region: region::Region) -> SsmClient {
15505        SsmClient {
15506            client: Client::shared(),
15507            region,
15508        }
15509    }
15510
15511    pub fn new_with<P, D>(
15512        request_dispatcher: D,
15513        credentials_provider: P,
15514        region: region::Region,
15515    ) -> SsmClient
15516    where
15517        P: ProvideAwsCredentials + Send + Sync + 'static,
15518        D: DispatchSignedRequest + Send + Sync + 'static,
15519    {
15520        SsmClient {
15521            client: Client::new_with(credentials_provider, request_dispatcher),
15522            region,
15523        }
15524    }
15525
15526    pub fn new_with_client(client: Client, region: region::Region) -> SsmClient {
15527        SsmClient { client, region }
15528    }
15529}
15530
15531#[async_trait]
15532impl Ssm for SsmClient {
15533    /// <p>Adds or overwrites one or more tags for the specified resource. Tags are metadata that you can assign to your documents, managed instances, maintenance windows, Parameter Store parameters, and patch baselines. Tags enable you to categorize your resources in different ways, for example, by purpose, owner, or environment. Each tag consists of a key and an optional value, both of which you define. For example, you could define a set of tags for your account's managed instances that helps you track each instance's owner and stack level. For example: Key=Owner and Value=DbAdmin, SysAdmin, or Dev. Or Key=Stack and Value=Production, Pre-Production, or Test.</p> <p>Each resource can have a maximum of 50 tags. </p> <p>We recommend that you devise a set of tag keys that meets your needs for each resource type. Using a consistent set of tag keys makes it easier for you to manage your resources. You can search and filter the resources based on the tags you add. Tags don't have any semantic meaning to and are interpreted strictly as a string of characters. </p> <p>For more information about using tags with EC2 instances, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html">Tagging your Amazon EC2 resources</a> in the <i>Amazon EC2 User Guide</i>.</p>
15534    async fn add_tags_to_resource(
15535        &self,
15536        input: AddTagsToResourceRequest,
15537    ) -> Result<AddTagsToResourceResult, RusotoError<AddTagsToResourceError>> {
15538        let mut request = self.new_signed_request("POST", "/");
15539        request.add_header("x-amz-target", "AmazonSSM.AddTagsToResource");
15540        let encoded = serde_json::to_string(&input).unwrap();
15541        request.set_payload(Some(encoded));
15542
15543        let response = self
15544            .sign_and_dispatch(request, AddTagsToResourceError::from_response)
15545            .await?;
15546        let mut response = response;
15547        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
15548        proto::json::ResponsePayload::new(&response).deserialize::<AddTagsToResourceResult, _>()
15549    }
15550
15551    /// <p>Attempts to cancel the command specified by the Command ID. There is no guarantee that the command will be terminated and the underlying process stopped.</p>
15552    async fn cancel_command(
15553        &self,
15554        input: CancelCommandRequest,
15555    ) -> Result<CancelCommandResult, RusotoError<CancelCommandError>> {
15556        let mut request = self.new_signed_request("POST", "/");
15557        request.add_header("x-amz-target", "AmazonSSM.CancelCommand");
15558        let encoded = serde_json::to_string(&input).unwrap();
15559        request.set_payload(Some(encoded));
15560
15561        let response = self
15562            .sign_and_dispatch(request, CancelCommandError::from_response)
15563            .await?;
15564        let mut response = response;
15565        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
15566        proto::json::ResponsePayload::new(&response).deserialize::<CancelCommandResult, _>()
15567    }
15568
15569    /// <p>Stops a maintenance window execution that is already in progress and cancels any tasks in the window that have not already starting running. (Tasks already in progress will continue to completion.)</p>
15570    async fn cancel_maintenance_window_execution(
15571        &self,
15572        input: CancelMaintenanceWindowExecutionRequest,
15573    ) -> Result<
15574        CancelMaintenanceWindowExecutionResult,
15575        RusotoError<CancelMaintenanceWindowExecutionError>,
15576    > {
15577        let mut request = self.new_signed_request("POST", "/");
15578        request.add_header("x-amz-target", "AmazonSSM.CancelMaintenanceWindowExecution");
15579        let encoded = serde_json::to_string(&input).unwrap();
15580        request.set_payload(Some(encoded));
15581
15582        let response = self
15583            .sign_and_dispatch(
15584                request,
15585                CancelMaintenanceWindowExecutionError::from_response,
15586            )
15587            .await?;
15588        let mut response = response;
15589        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
15590        proto::json::ResponsePayload::new(&response)
15591            .deserialize::<CancelMaintenanceWindowExecutionResult, _>()
15592    }
15593
15594    /// <p><p>Generates an activation code and activation ID you can use to register your on-premises server or virtual machine (VM) with Systems Manager. Registering these machines with Systems Manager makes it possible to manage them using Systems Manager capabilities. You use the activation code and ID when installing SSM Agent on machines in your hybrid environment. For more information about requirements for managing on-premises instances and VMs using Systems Manager, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-managedinstances.html">Setting up AWS Systems Manager for hybrid environments</a> in the <i>AWS Systems Manager User Guide</i>. </p> <note> <p>On-premises servers or VMs that are registered with Systems Manager and EC2 instances that you manage with Systems Manager are all called <i>managed instances</i>.</p> </note></p>
15595    async fn create_activation(
15596        &self,
15597        input: CreateActivationRequest,
15598    ) -> Result<CreateActivationResult, RusotoError<CreateActivationError>> {
15599        let mut request = self.new_signed_request("POST", "/");
15600        request.add_header("x-amz-target", "AmazonSSM.CreateActivation");
15601        let encoded = serde_json::to_string(&input).unwrap();
15602        request.set_payload(Some(encoded));
15603
15604        let response = self
15605            .sign_and_dispatch(request, CreateActivationError::from_response)
15606            .await?;
15607        let mut response = response;
15608        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
15609        proto::json::ResponsePayload::new(&response).deserialize::<CreateActivationResult, _>()
15610    }
15611
15612    /// <p>A State Manager association defines the state that you want to maintain on your instances. For example, an association can specify that anti-virus software must be installed and running on your instances, or that certain ports must be closed. For static targets, the association specifies a schedule for when the configuration is reapplied. For dynamic targets, such as an AWS Resource Group or an AWS Autoscaling Group, State Manager applies the configuration when new instances are added to the group. The association also specifies actions to take when applying the configuration. For example, an association for anti-virus software might run once a day. If the software is not installed, then State Manager installs it. If the software is installed, but the service is not running, then the association might instruct State Manager to start the service. </p>
15613    async fn create_association(
15614        &self,
15615        input: CreateAssociationRequest,
15616    ) -> Result<CreateAssociationResult, RusotoError<CreateAssociationError>> {
15617        let mut request = self.new_signed_request("POST", "/");
15618        request.add_header("x-amz-target", "AmazonSSM.CreateAssociation");
15619        let encoded = serde_json::to_string(&input).unwrap();
15620        request.set_payload(Some(encoded));
15621
15622        let response = self
15623            .sign_and_dispatch(request, CreateAssociationError::from_response)
15624            .await?;
15625        let mut response = response;
15626        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
15627        proto::json::ResponsePayload::new(&response).deserialize::<CreateAssociationResult, _>()
15628    }
15629
15630    /// <p>Associates the specified Systems Manager document with the specified instances or targets.</p> <p>When you associate a document with one or more instances using instance IDs or tags, SSM Agent running on the instance processes the document and configures the instance as specified.</p> <p>If you associate a document with an instance that already has an associated document, the system returns the AssociationAlreadyExists exception.</p>
15631    async fn create_association_batch(
15632        &self,
15633        input: CreateAssociationBatchRequest,
15634    ) -> Result<CreateAssociationBatchResult, RusotoError<CreateAssociationBatchError>> {
15635        let mut request = self.new_signed_request("POST", "/");
15636        request.add_header("x-amz-target", "AmazonSSM.CreateAssociationBatch");
15637        let encoded = serde_json::to_string(&input).unwrap();
15638        request.set_payload(Some(encoded));
15639
15640        let response = self
15641            .sign_and_dispatch(request, CreateAssociationBatchError::from_response)
15642            .await?;
15643        let mut response = response;
15644        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
15645        proto::json::ResponsePayload::new(&response)
15646            .deserialize::<CreateAssociationBatchResult, _>()
15647    }
15648
15649    /// <p>Creates a Systems Manager (SSM) document. An SSM document defines the actions that Systems Manager performs on your managed instances. For more information about SSM documents, including information about supported schemas, features, and syntax, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-ssm-docs.html">AWS Systems Manager Documents</a> in the <i>AWS Systems Manager User Guide</i>.</p>
15650    async fn create_document(
15651        &self,
15652        input: CreateDocumentRequest,
15653    ) -> Result<CreateDocumentResult, RusotoError<CreateDocumentError>> {
15654        let mut request = self.new_signed_request("POST", "/");
15655        request.add_header("x-amz-target", "AmazonSSM.CreateDocument");
15656        let encoded = serde_json::to_string(&input).unwrap();
15657        request.set_payload(Some(encoded));
15658
15659        let response = self
15660            .sign_and_dispatch(request, CreateDocumentError::from_response)
15661            .await?;
15662        let mut response = response;
15663        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
15664        proto::json::ResponsePayload::new(&response).deserialize::<CreateDocumentResult, _>()
15665    }
15666
15667    /// <p><p>Creates a new maintenance window.</p> <note> <p>The value you specify for <code>Duration</code> determines the specific end time for the maintenance window based on the time it begins. No maintenance window tasks are permitted to start after the resulting endtime minus the number of hours you specify for <code>Cutoff</code>. For example, if the maintenance window starts at 3 PM, the duration is three hours, and the value you specify for <code>Cutoff</code> is one hour, no maintenance window tasks can start after 5 PM.</p> </note></p>
15668    async fn create_maintenance_window(
15669        &self,
15670        input: CreateMaintenanceWindowRequest,
15671    ) -> Result<CreateMaintenanceWindowResult, RusotoError<CreateMaintenanceWindowError>> {
15672        let mut request = self.new_signed_request("POST", "/");
15673        request.add_header("x-amz-target", "AmazonSSM.CreateMaintenanceWindow");
15674        let encoded = serde_json::to_string(&input).unwrap();
15675        request.set_payload(Some(encoded));
15676
15677        let response = self
15678            .sign_and_dispatch(request, CreateMaintenanceWindowError::from_response)
15679            .await?;
15680        let mut response = response;
15681        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
15682        proto::json::ResponsePayload::new(&response)
15683            .deserialize::<CreateMaintenanceWindowResult, _>()
15684    }
15685
15686    /// <p>Creates a new OpsItem. You must have permission in AWS Identity and Access Management (IAM) to create a new OpsItem. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-getting-started.html">Getting started with OpsCenter</a> in the <i>AWS Systems Manager User Guide</i>.</p> <p>Operations engineers and IT professionals use OpsCenter to view, investigate, and remediate operational issues impacting the performance and health of their AWS resources. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter.html">AWS Systems Manager OpsCenter</a> in the <i>AWS Systems Manager User Guide</i>. </p>
15687    async fn create_ops_item(
15688        &self,
15689        input: CreateOpsItemRequest,
15690    ) -> Result<CreateOpsItemResponse, RusotoError<CreateOpsItemError>> {
15691        let mut request = self.new_signed_request("POST", "/");
15692        request.add_header("x-amz-target", "AmazonSSM.CreateOpsItem");
15693        let encoded = serde_json::to_string(&input).unwrap();
15694        request.set_payload(Some(encoded));
15695
15696        let response = self
15697            .sign_and_dispatch(request, CreateOpsItemError::from_response)
15698            .await?;
15699        let mut response = response;
15700        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
15701        proto::json::ResponsePayload::new(&response).deserialize::<CreateOpsItemResponse, _>()
15702    }
15703
15704    /// <p><p>Creates a patch baseline.</p> <note> <p>For information about valid key and value pairs in <code>PatchFilters</code> for each supported operating system type, see <a href="http://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PatchFilter.html">PatchFilter</a>.</p> </note></p>
15705    async fn create_patch_baseline(
15706        &self,
15707        input: CreatePatchBaselineRequest,
15708    ) -> Result<CreatePatchBaselineResult, RusotoError<CreatePatchBaselineError>> {
15709        let mut request = self.new_signed_request("POST", "/");
15710        request.add_header("x-amz-target", "AmazonSSM.CreatePatchBaseline");
15711        let encoded = serde_json::to_string(&input).unwrap();
15712        request.set_payload(Some(encoded));
15713
15714        let response = self
15715            .sign_and_dispatch(request, CreatePatchBaselineError::from_response)
15716            .await?;
15717        let mut response = response;
15718        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
15719        proto::json::ResponsePayload::new(&response).deserialize::<CreatePatchBaselineResult, _>()
15720    }
15721
15722    /// <p><p>A resource data sync helps you view data from multiple sources in a single location. Systems Manager offers two types of resource data sync: <code>SyncToDestination</code> and <code>SyncFromSource</code>.</p> <p>You can configure Systems Manager Inventory to use the <code>SyncToDestination</code> type to synchronize Inventory data from multiple AWS Regions to a single S3 bucket. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-inventory-datasync.html">Configuring Resource Data Sync for Inventory</a> in the <i>AWS Systems Manager User Guide</i>.</p> <p>You can configure Systems Manager Explorer to use the <code>SyncFromSource</code> type to synchronize operational work items (OpsItems) and operational data (OpsData) from multiple AWS Regions to a single S3 bucket. This type can synchronize OpsItems and OpsData from multiple AWS accounts and Regions or <code>EntireOrganization</code> by using AWS Organizations. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/Explorer-resource-data-sync.html">Setting up Systems Manager Explorer to display data from multiple accounts and Regions</a> in the <i>AWS Systems Manager User Guide</i>.</p> <p>A resource data sync is an asynchronous operation that returns immediately. After a successful initial sync is completed, the system continuously syncs data. To check the status of a sync, use the <a>ListResourceDataSync</a>.</p> <note> <p>By default, data is not encrypted in Amazon S3. We strongly recommend that you enable encryption in Amazon S3 to ensure secure data storage. We also recommend that you secure access to the Amazon S3 bucket by creating a restrictive bucket policy. </p> </note></p>
15723    async fn create_resource_data_sync(
15724        &self,
15725        input: CreateResourceDataSyncRequest,
15726    ) -> Result<CreateResourceDataSyncResult, RusotoError<CreateResourceDataSyncError>> {
15727        let mut request = self.new_signed_request("POST", "/");
15728        request.add_header("x-amz-target", "AmazonSSM.CreateResourceDataSync");
15729        let encoded = serde_json::to_string(&input).unwrap();
15730        request.set_payload(Some(encoded));
15731
15732        let response = self
15733            .sign_and_dispatch(request, CreateResourceDataSyncError::from_response)
15734            .await?;
15735        let mut response = response;
15736        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
15737        proto::json::ResponsePayload::new(&response)
15738            .deserialize::<CreateResourceDataSyncResult, _>()
15739    }
15740
15741    /// <p>Deletes an activation. You are not required to delete an activation. If you delete an activation, you can no longer use it to register additional managed instances. Deleting an activation does not de-register managed instances. You must manually de-register managed instances.</p>
15742    async fn delete_activation(
15743        &self,
15744        input: DeleteActivationRequest,
15745    ) -> Result<DeleteActivationResult, RusotoError<DeleteActivationError>> {
15746        let mut request = self.new_signed_request("POST", "/");
15747        request.add_header("x-amz-target", "AmazonSSM.DeleteActivation");
15748        let encoded = serde_json::to_string(&input).unwrap();
15749        request.set_payload(Some(encoded));
15750
15751        let response = self
15752            .sign_and_dispatch(request, DeleteActivationError::from_response)
15753            .await?;
15754        let mut response = response;
15755        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
15756        proto::json::ResponsePayload::new(&response).deserialize::<DeleteActivationResult, _>()
15757    }
15758
15759    /// <p>Disassociates the specified Systems Manager document from the specified instance.</p> <p>When you disassociate a document from an instance, it does not change the configuration of the instance. To change the configuration state of an instance after you disassociate a document, you must create a new document with the desired configuration and associate it with the instance.</p>
15760    async fn delete_association(
15761        &self,
15762        input: DeleteAssociationRequest,
15763    ) -> Result<DeleteAssociationResult, RusotoError<DeleteAssociationError>> {
15764        let mut request = self.new_signed_request("POST", "/");
15765        request.add_header("x-amz-target", "AmazonSSM.DeleteAssociation");
15766        let encoded = serde_json::to_string(&input).unwrap();
15767        request.set_payload(Some(encoded));
15768
15769        let response = self
15770            .sign_and_dispatch(request, DeleteAssociationError::from_response)
15771            .await?;
15772        let mut response = response;
15773        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
15774        proto::json::ResponsePayload::new(&response).deserialize::<DeleteAssociationResult, _>()
15775    }
15776
15777    /// <p>Deletes the Systems Manager document and all instance associations to the document.</p> <p>Before you delete the document, we recommend that you use <a>DeleteAssociation</a> to disassociate all instances that are associated with the document.</p>
15778    async fn delete_document(
15779        &self,
15780        input: DeleteDocumentRequest,
15781    ) -> Result<DeleteDocumentResult, RusotoError<DeleteDocumentError>> {
15782        let mut request = self.new_signed_request("POST", "/");
15783        request.add_header("x-amz-target", "AmazonSSM.DeleteDocument");
15784        let encoded = serde_json::to_string(&input).unwrap();
15785        request.set_payload(Some(encoded));
15786
15787        let response = self
15788            .sign_and_dispatch(request, DeleteDocumentError::from_response)
15789            .await?;
15790        let mut response = response;
15791        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
15792        proto::json::ResponsePayload::new(&response).deserialize::<DeleteDocumentResult, _>()
15793    }
15794
15795    /// <p>Delete a custom inventory type, or the data associated with a custom Inventory type. Deleting a custom inventory type is also referred to as deleting a custom inventory schema.</p>
15796    async fn delete_inventory(
15797        &self,
15798        input: DeleteInventoryRequest,
15799    ) -> Result<DeleteInventoryResult, RusotoError<DeleteInventoryError>> {
15800        let mut request = self.new_signed_request("POST", "/");
15801        request.add_header("x-amz-target", "AmazonSSM.DeleteInventory");
15802        let encoded = serde_json::to_string(&input).unwrap();
15803        request.set_payload(Some(encoded));
15804
15805        let response = self
15806            .sign_and_dispatch(request, DeleteInventoryError::from_response)
15807            .await?;
15808        let mut response = response;
15809        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
15810        proto::json::ResponsePayload::new(&response).deserialize::<DeleteInventoryResult, _>()
15811    }
15812
15813    /// <p>Deletes a maintenance window.</p>
15814    async fn delete_maintenance_window(
15815        &self,
15816        input: DeleteMaintenanceWindowRequest,
15817    ) -> Result<DeleteMaintenanceWindowResult, RusotoError<DeleteMaintenanceWindowError>> {
15818        let mut request = self.new_signed_request("POST", "/");
15819        request.add_header("x-amz-target", "AmazonSSM.DeleteMaintenanceWindow");
15820        let encoded = serde_json::to_string(&input).unwrap();
15821        request.set_payload(Some(encoded));
15822
15823        let response = self
15824            .sign_and_dispatch(request, DeleteMaintenanceWindowError::from_response)
15825            .await?;
15826        let mut response = response;
15827        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
15828        proto::json::ResponsePayload::new(&response)
15829            .deserialize::<DeleteMaintenanceWindowResult, _>()
15830    }
15831
15832    /// <p>Delete a parameter from the system.</p>
15833    async fn delete_parameter(
15834        &self,
15835        input: DeleteParameterRequest,
15836    ) -> Result<DeleteParameterResult, RusotoError<DeleteParameterError>> {
15837        let mut request = self.new_signed_request("POST", "/");
15838        request.add_header("x-amz-target", "AmazonSSM.DeleteParameter");
15839        let encoded = serde_json::to_string(&input).unwrap();
15840        request.set_payload(Some(encoded));
15841
15842        let response = self
15843            .sign_and_dispatch(request, DeleteParameterError::from_response)
15844            .await?;
15845        let mut response = response;
15846        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
15847        proto::json::ResponsePayload::new(&response).deserialize::<DeleteParameterResult, _>()
15848    }
15849
15850    /// <p>Delete a list of parameters.</p>
15851    async fn delete_parameters(
15852        &self,
15853        input: DeleteParametersRequest,
15854    ) -> Result<DeleteParametersResult, RusotoError<DeleteParametersError>> {
15855        let mut request = self.new_signed_request("POST", "/");
15856        request.add_header("x-amz-target", "AmazonSSM.DeleteParameters");
15857        let encoded = serde_json::to_string(&input).unwrap();
15858        request.set_payload(Some(encoded));
15859
15860        let response = self
15861            .sign_and_dispatch(request, DeleteParametersError::from_response)
15862            .await?;
15863        let mut response = response;
15864        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
15865        proto::json::ResponsePayload::new(&response).deserialize::<DeleteParametersResult, _>()
15866    }
15867
15868    /// <p>Deletes a patch baseline.</p>
15869    async fn delete_patch_baseline(
15870        &self,
15871        input: DeletePatchBaselineRequest,
15872    ) -> Result<DeletePatchBaselineResult, RusotoError<DeletePatchBaselineError>> {
15873        let mut request = self.new_signed_request("POST", "/");
15874        request.add_header("x-amz-target", "AmazonSSM.DeletePatchBaseline");
15875        let encoded = serde_json::to_string(&input).unwrap();
15876        request.set_payload(Some(encoded));
15877
15878        let response = self
15879            .sign_and_dispatch(request, DeletePatchBaselineError::from_response)
15880            .await?;
15881        let mut response = response;
15882        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
15883        proto::json::ResponsePayload::new(&response).deserialize::<DeletePatchBaselineResult, _>()
15884    }
15885
15886    /// <p>Deletes a Resource Data Sync configuration. After the configuration is deleted, changes to data on managed instances are no longer synced to or from the target. Deleting a sync configuration does not delete data.</p>
15887    async fn delete_resource_data_sync(
15888        &self,
15889        input: DeleteResourceDataSyncRequest,
15890    ) -> Result<DeleteResourceDataSyncResult, RusotoError<DeleteResourceDataSyncError>> {
15891        let mut request = self.new_signed_request("POST", "/");
15892        request.add_header("x-amz-target", "AmazonSSM.DeleteResourceDataSync");
15893        let encoded = serde_json::to_string(&input).unwrap();
15894        request.set_payload(Some(encoded));
15895
15896        let response = self
15897            .sign_and_dispatch(request, DeleteResourceDataSyncError::from_response)
15898            .await?;
15899        let mut response = response;
15900        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
15901        proto::json::ResponsePayload::new(&response)
15902            .deserialize::<DeleteResourceDataSyncResult, _>()
15903    }
15904
15905    /// <p>Removes the server or virtual machine from the list of registered servers. You can reregister the instance again at any time. If you don't plan to use Run Command on the server, we suggest uninstalling SSM Agent first.</p>
15906    async fn deregister_managed_instance(
15907        &self,
15908        input: DeregisterManagedInstanceRequest,
15909    ) -> Result<DeregisterManagedInstanceResult, RusotoError<DeregisterManagedInstanceError>> {
15910        let mut request = self.new_signed_request("POST", "/");
15911        request.add_header("x-amz-target", "AmazonSSM.DeregisterManagedInstance");
15912        let encoded = serde_json::to_string(&input).unwrap();
15913        request.set_payload(Some(encoded));
15914
15915        let response = self
15916            .sign_and_dispatch(request, DeregisterManagedInstanceError::from_response)
15917            .await?;
15918        let mut response = response;
15919        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
15920        proto::json::ResponsePayload::new(&response)
15921            .deserialize::<DeregisterManagedInstanceResult, _>()
15922    }
15923
15924    /// <p>Removes a patch group from a patch baseline.</p>
15925    async fn deregister_patch_baseline_for_patch_group(
15926        &self,
15927        input: DeregisterPatchBaselineForPatchGroupRequest,
15928    ) -> Result<
15929        DeregisterPatchBaselineForPatchGroupResult,
15930        RusotoError<DeregisterPatchBaselineForPatchGroupError>,
15931    > {
15932        let mut request = self.new_signed_request("POST", "/");
15933        request.add_header(
15934            "x-amz-target",
15935            "AmazonSSM.DeregisterPatchBaselineForPatchGroup",
15936        );
15937        let encoded = serde_json::to_string(&input).unwrap();
15938        request.set_payload(Some(encoded));
15939
15940        let response = self
15941            .sign_and_dispatch(
15942                request,
15943                DeregisterPatchBaselineForPatchGroupError::from_response,
15944            )
15945            .await?;
15946        let mut response = response;
15947        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
15948        proto::json::ResponsePayload::new(&response)
15949            .deserialize::<DeregisterPatchBaselineForPatchGroupResult, _>()
15950    }
15951
15952    /// <p>Removes a target from a maintenance window.</p>
15953    async fn deregister_target_from_maintenance_window(
15954        &self,
15955        input: DeregisterTargetFromMaintenanceWindowRequest,
15956    ) -> Result<
15957        DeregisterTargetFromMaintenanceWindowResult,
15958        RusotoError<DeregisterTargetFromMaintenanceWindowError>,
15959    > {
15960        let mut request = self.new_signed_request("POST", "/");
15961        request.add_header(
15962            "x-amz-target",
15963            "AmazonSSM.DeregisterTargetFromMaintenanceWindow",
15964        );
15965        let encoded = serde_json::to_string(&input).unwrap();
15966        request.set_payload(Some(encoded));
15967
15968        let response = self
15969            .sign_and_dispatch(
15970                request,
15971                DeregisterTargetFromMaintenanceWindowError::from_response,
15972            )
15973            .await?;
15974        let mut response = response;
15975        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
15976        proto::json::ResponsePayload::new(&response)
15977            .deserialize::<DeregisterTargetFromMaintenanceWindowResult, _>()
15978    }
15979
15980    /// <p>Removes a task from a maintenance window.</p>
15981    async fn deregister_task_from_maintenance_window(
15982        &self,
15983        input: DeregisterTaskFromMaintenanceWindowRequest,
15984    ) -> Result<
15985        DeregisterTaskFromMaintenanceWindowResult,
15986        RusotoError<DeregisterTaskFromMaintenanceWindowError>,
15987    > {
15988        let mut request = self.new_signed_request("POST", "/");
15989        request.add_header(
15990            "x-amz-target",
15991            "AmazonSSM.DeregisterTaskFromMaintenanceWindow",
15992        );
15993        let encoded = serde_json::to_string(&input).unwrap();
15994        request.set_payload(Some(encoded));
15995
15996        let response = self
15997            .sign_and_dispatch(
15998                request,
15999                DeregisterTaskFromMaintenanceWindowError::from_response,
16000            )
16001            .await?;
16002        let mut response = response;
16003        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16004        proto::json::ResponsePayload::new(&response)
16005            .deserialize::<DeregisterTaskFromMaintenanceWindowResult, _>()
16006    }
16007
16008    /// <p>Describes details about the activation, such as the date and time the activation was created, its expiration date, the IAM role assigned to the instances in the activation, and the number of instances registered by using this activation.</p>
16009    async fn describe_activations(
16010        &self,
16011        input: DescribeActivationsRequest,
16012    ) -> Result<DescribeActivationsResult, RusotoError<DescribeActivationsError>> {
16013        let mut request = self.new_signed_request("POST", "/");
16014        request.add_header("x-amz-target", "AmazonSSM.DescribeActivations");
16015        let encoded = serde_json::to_string(&input).unwrap();
16016        request.set_payload(Some(encoded));
16017
16018        let response = self
16019            .sign_and_dispatch(request, DescribeActivationsError::from_response)
16020            .await?;
16021        let mut response = response;
16022        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16023        proto::json::ResponsePayload::new(&response).deserialize::<DescribeActivationsResult, _>()
16024    }
16025
16026    /// <p>Describes the association for the specified target or instance. If you created the association by using the <code>Targets</code> parameter, then you must retrieve the association by using the association ID. If you created the association by specifying an instance ID and a Systems Manager document, then you retrieve the association by specifying the document name and the instance ID. </p>
16027    async fn describe_association(
16028        &self,
16029        input: DescribeAssociationRequest,
16030    ) -> Result<DescribeAssociationResult, RusotoError<DescribeAssociationError>> {
16031        let mut request = self.new_signed_request("POST", "/");
16032        request.add_header("x-amz-target", "AmazonSSM.DescribeAssociation");
16033        let encoded = serde_json::to_string(&input).unwrap();
16034        request.set_payload(Some(encoded));
16035
16036        let response = self
16037            .sign_and_dispatch(request, DescribeAssociationError::from_response)
16038            .await?;
16039        let mut response = response;
16040        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16041        proto::json::ResponsePayload::new(&response).deserialize::<DescribeAssociationResult, _>()
16042    }
16043
16044    /// <p>Use this API action to view information about a specific execution of a specific association.</p>
16045    async fn describe_association_execution_targets(
16046        &self,
16047        input: DescribeAssociationExecutionTargetsRequest,
16048    ) -> Result<
16049        DescribeAssociationExecutionTargetsResult,
16050        RusotoError<DescribeAssociationExecutionTargetsError>,
16051    > {
16052        let mut request = self.new_signed_request("POST", "/");
16053        request.add_header(
16054            "x-amz-target",
16055            "AmazonSSM.DescribeAssociationExecutionTargets",
16056        );
16057        let encoded = serde_json::to_string(&input).unwrap();
16058        request.set_payload(Some(encoded));
16059
16060        let response = self
16061            .sign_and_dispatch(
16062                request,
16063                DescribeAssociationExecutionTargetsError::from_response,
16064            )
16065            .await?;
16066        let mut response = response;
16067        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16068        proto::json::ResponsePayload::new(&response)
16069            .deserialize::<DescribeAssociationExecutionTargetsResult, _>()
16070    }
16071
16072    /// <p>Use this API action to view all executions for a specific association ID. </p>
16073    async fn describe_association_executions(
16074        &self,
16075        input: DescribeAssociationExecutionsRequest,
16076    ) -> Result<DescribeAssociationExecutionsResult, RusotoError<DescribeAssociationExecutionsError>>
16077    {
16078        let mut request = self.new_signed_request("POST", "/");
16079        request.add_header("x-amz-target", "AmazonSSM.DescribeAssociationExecutions");
16080        let encoded = serde_json::to_string(&input).unwrap();
16081        request.set_payload(Some(encoded));
16082
16083        let response = self
16084            .sign_and_dispatch(request, DescribeAssociationExecutionsError::from_response)
16085            .await?;
16086        let mut response = response;
16087        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16088        proto::json::ResponsePayload::new(&response)
16089            .deserialize::<DescribeAssociationExecutionsResult, _>()
16090    }
16091
16092    /// <p>Provides details about all active and terminated Automation executions.</p>
16093    async fn describe_automation_executions(
16094        &self,
16095        input: DescribeAutomationExecutionsRequest,
16096    ) -> Result<DescribeAutomationExecutionsResult, RusotoError<DescribeAutomationExecutionsError>>
16097    {
16098        let mut request = self.new_signed_request("POST", "/");
16099        request.add_header("x-amz-target", "AmazonSSM.DescribeAutomationExecutions");
16100        let encoded = serde_json::to_string(&input).unwrap();
16101        request.set_payload(Some(encoded));
16102
16103        let response = self
16104            .sign_and_dispatch(request, DescribeAutomationExecutionsError::from_response)
16105            .await?;
16106        let mut response = response;
16107        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16108        proto::json::ResponsePayload::new(&response)
16109            .deserialize::<DescribeAutomationExecutionsResult, _>()
16110    }
16111
16112    /// <p>Information about all active and terminated step executions in an Automation workflow.</p>
16113    async fn describe_automation_step_executions(
16114        &self,
16115        input: DescribeAutomationStepExecutionsRequest,
16116    ) -> Result<
16117        DescribeAutomationStepExecutionsResult,
16118        RusotoError<DescribeAutomationStepExecutionsError>,
16119    > {
16120        let mut request = self.new_signed_request("POST", "/");
16121        request.add_header("x-amz-target", "AmazonSSM.DescribeAutomationStepExecutions");
16122        let encoded = serde_json::to_string(&input).unwrap();
16123        request.set_payload(Some(encoded));
16124
16125        let response = self
16126            .sign_and_dispatch(
16127                request,
16128                DescribeAutomationStepExecutionsError::from_response,
16129            )
16130            .await?;
16131        let mut response = response;
16132        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16133        proto::json::ResponsePayload::new(&response)
16134            .deserialize::<DescribeAutomationStepExecutionsResult, _>()
16135    }
16136
16137    /// <p>Lists all patches eligible to be included in a patch baseline.</p>
16138    async fn describe_available_patches(
16139        &self,
16140        input: DescribeAvailablePatchesRequest,
16141    ) -> Result<DescribeAvailablePatchesResult, RusotoError<DescribeAvailablePatchesError>> {
16142        let mut request = self.new_signed_request("POST", "/");
16143        request.add_header("x-amz-target", "AmazonSSM.DescribeAvailablePatches");
16144        let encoded = serde_json::to_string(&input).unwrap();
16145        request.set_payload(Some(encoded));
16146
16147        let response = self
16148            .sign_and_dispatch(request, DescribeAvailablePatchesError::from_response)
16149            .await?;
16150        let mut response = response;
16151        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16152        proto::json::ResponsePayload::new(&response)
16153            .deserialize::<DescribeAvailablePatchesResult, _>()
16154    }
16155
16156    /// <p>Describes the specified Systems Manager document.</p>
16157    async fn describe_document(
16158        &self,
16159        input: DescribeDocumentRequest,
16160    ) -> Result<DescribeDocumentResult, RusotoError<DescribeDocumentError>> {
16161        let mut request = self.new_signed_request("POST", "/");
16162        request.add_header("x-amz-target", "AmazonSSM.DescribeDocument");
16163        let encoded = serde_json::to_string(&input).unwrap();
16164        request.set_payload(Some(encoded));
16165
16166        let response = self
16167            .sign_and_dispatch(request, DescribeDocumentError::from_response)
16168            .await?;
16169        let mut response = response;
16170        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16171        proto::json::ResponsePayload::new(&response).deserialize::<DescribeDocumentResult, _>()
16172    }
16173
16174    /// <p>Describes the permissions for a Systems Manager document. If you created the document, you are the owner. If a document is shared, it can either be shared privately (by specifying a user's AWS account ID) or publicly (<i>All</i>). </p>
16175    async fn describe_document_permission(
16176        &self,
16177        input: DescribeDocumentPermissionRequest,
16178    ) -> Result<DescribeDocumentPermissionResponse, RusotoError<DescribeDocumentPermissionError>>
16179    {
16180        let mut request = self.new_signed_request("POST", "/");
16181        request.add_header("x-amz-target", "AmazonSSM.DescribeDocumentPermission");
16182        let encoded = serde_json::to_string(&input).unwrap();
16183        request.set_payload(Some(encoded));
16184
16185        let response = self
16186            .sign_and_dispatch(request, DescribeDocumentPermissionError::from_response)
16187            .await?;
16188        let mut response = response;
16189        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16190        proto::json::ResponsePayload::new(&response)
16191            .deserialize::<DescribeDocumentPermissionResponse, _>()
16192    }
16193
16194    /// <p>All associations for the instance(s).</p>
16195    async fn describe_effective_instance_associations(
16196        &self,
16197        input: DescribeEffectiveInstanceAssociationsRequest,
16198    ) -> Result<
16199        DescribeEffectiveInstanceAssociationsResult,
16200        RusotoError<DescribeEffectiveInstanceAssociationsError>,
16201    > {
16202        let mut request = self.new_signed_request("POST", "/");
16203        request.add_header(
16204            "x-amz-target",
16205            "AmazonSSM.DescribeEffectiveInstanceAssociations",
16206        );
16207        let encoded = serde_json::to_string(&input).unwrap();
16208        request.set_payload(Some(encoded));
16209
16210        let response = self
16211            .sign_and_dispatch(
16212                request,
16213                DescribeEffectiveInstanceAssociationsError::from_response,
16214            )
16215            .await?;
16216        let mut response = response;
16217        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16218        proto::json::ResponsePayload::new(&response)
16219            .deserialize::<DescribeEffectiveInstanceAssociationsResult, _>()
16220    }
16221
16222    /// <p>Retrieves the current effective patches (the patch and the approval state) for the specified patch baseline. Note that this API applies only to Windows patch baselines.</p>
16223    async fn describe_effective_patches_for_patch_baseline(
16224        &self,
16225        input: DescribeEffectivePatchesForPatchBaselineRequest,
16226    ) -> Result<
16227        DescribeEffectivePatchesForPatchBaselineResult,
16228        RusotoError<DescribeEffectivePatchesForPatchBaselineError>,
16229    > {
16230        let mut request = self.new_signed_request("POST", "/");
16231        request.add_header(
16232            "x-amz-target",
16233            "AmazonSSM.DescribeEffectivePatchesForPatchBaseline",
16234        );
16235        let encoded = serde_json::to_string(&input).unwrap();
16236        request.set_payload(Some(encoded));
16237
16238        let response = self
16239            .sign_and_dispatch(
16240                request,
16241                DescribeEffectivePatchesForPatchBaselineError::from_response,
16242            )
16243            .await?;
16244        let mut response = response;
16245        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16246        proto::json::ResponsePayload::new(&response)
16247            .deserialize::<DescribeEffectivePatchesForPatchBaselineResult, _>()
16248    }
16249
16250    /// <p>The status of the associations for the instance(s).</p>
16251    async fn describe_instance_associations_status(
16252        &self,
16253        input: DescribeInstanceAssociationsStatusRequest,
16254    ) -> Result<
16255        DescribeInstanceAssociationsStatusResult,
16256        RusotoError<DescribeInstanceAssociationsStatusError>,
16257    > {
16258        let mut request = self.new_signed_request("POST", "/");
16259        request.add_header(
16260            "x-amz-target",
16261            "AmazonSSM.DescribeInstanceAssociationsStatus",
16262        );
16263        let encoded = serde_json::to_string(&input).unwrap();
16264        request.set_payload(Some(encoded));
16265
16266        let response = self
16267            .sign_and_dispatch(
16268                request,
16269                DescribeInstanceAssociationsStatusError::from_response,
16270            )
16271            .await?;
16272        let mut response = response;
16273        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16274        proto::json::ResponsePayload::new(&response)
16275            .deserialize::<DescribeInstanceAssociationsStatusResult, _>()
16276    }
16277
16278    /// <p><p>Describes one or more of your instances, including information about the operating system platform, the version of SSM Agent installed on the instance, instance status, and so on.</p> <p>If you specify one or more instance IDs, it returns information for those instances. If you do not specify instance IDs, it returns information for all your instances. If you specify an instance ID that is not valid or an instance that you do not own, you receive an error.</p> <note> <p>The IamRole field for this API action is the Amazon Identity and Access Management (IAM) role assigned to on-premises instances. This call does not return the IAM role for EC2 instances.</p> </note></p>
16279    async fn describe_instance_information(
16280        &self,
16281        input: DescribeInstanceInformationRequest,
16282    ) -> Result<DescribeInstanceInformationResult, RusotoError<DescribeInstanceInformationError>>
16283    {
16284        let mut request = self.new_signed_request("POST", "/");
16285        request.add_header("x-amz-target", "AmazonSSM.DescribeInstanceInformation");
16286        let encoded = serde_json::to_string(&input).unwrap();
16287        request.set_payload(Some(encoded));
16288
16289        let response = self
16290            .sign_and_dispatch(request, DescribeInstanceInformationError::from_response)
16291            .await?;
16292        let mut response = response;
16293        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16294        proto::json::ResponsePayload::new(&response)
16295            .deserialize::<DescribeInstanceInformationResult, _>()
16296    }
16297
16298    /// <p>Retrieves the high-level patch state of one or more instances.</p>
16299    async fn describe_instance_patch_states(
16300        &self,
16301        input: DescribeInstancePatchStatesRequest,
16302    ) -> Result<DescribeInstancePatchStatesResult, RusotoError<DescribeInstancePatchStatesError>>
16303    {
16304        let mut request = self.new_signed_request("POST", "/");
16305        request.add_header("x-amz-target", "AmazonSSM.DescribeInstancePatchStates");
16306        let encoded = serde_json::to_string(&input).unwrap();
16307        request.set_payload(Some(encoded));
16308
16309        let response = self
16310            .sign_and_dispatch(request, DescribeInstancePatchStatesError::from_response)
16311            .await?;
16312        let mut response = response;
16313        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16314        proto::json::ResponsePayload::new(&response)
16315            .deserialize::<DescribeInstancePatchStatesResult, _>()
16316    }
16317
16318    /// <p>Retrieves the high-level patch state for the instances in the specified patch group.</p>
16319    async fn describe_instance_patch_states_for_patch_group(
16320        &self,
16321        input: DescribeInstancePatchStatesForPatchGroupRequest,
16322    ) -> Result<
16323        DescribeInstancePatchStatesForPatchGroupResult,
16324        RusotoError<DescribeInstancePatchStatesForPatchGroupError>,
16325    > {
16326        let mut request = self.new_signed_request("POST", "/");
16327        request.add_header(
16328            "x-amz-target",
16329            "AmazonSSM.DescribeInstancePatchStatesForPatchGroup",
16330        );
16331        let encoded = serde_json::to_string(&input).unwrap();
16332        request.set_payload(Some(encoded));
16333
16334        let response = self
16335            .sign_and_dispatch(
16336                request,
16337                DescribeInstancePatchStatesForPatchGroupError::from_response,
16338            )
16339            .await?;
16340        let mut response = response;
16341        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16342        proto::json::ResponsePayload::new(&response)
16343            .deserialize::<DescribeInstancePatchStatesForPatchGroupResult, _>()
16344    }
16345
16346    /// <p>Retrieves information about the patches on the specified instance and their state relative to the patch baseline being used for the instance.</p>
16347    async fn describe_instance_patches(
16348        &self,
16349        input: DescribeInstancePatchesRequest,
16350    ) -> Result<DescribeInstancePatchesResult, RusotoError<DescribeInstancePatchesError>> {
16351        let mut request = self.new_signed_request("POST", "/");
16352        request.add_header("x-amz-target", "AmazonSSM.DescribeInstancePatches");
16353        let encoded = serde_json::to_string(&input).unwrap();
16354        request.set_payload(Some(encoded));
16355
16356        let response = self
16357            .sign_and_dispatch(request, DescribeInstancePatchesError::from_response)
16358            .await?;
16359        let mut response = response;
16360        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16361        proto::json::ResponsePayload::new(&response)
16362            .deserialize::<DescribeInstancePatchesResult, _>()
16363    }
16364
16365    /// <p>Describes a specific delete inventory operation.</p>
16366    async fn describe_inventory_deletions(
16367        &self,
16368        input: DescribeInventoryDeletionsRequest,
16369    ) -> Result<DescribeInventoryDeletionsResult, RusotoError<DescribeInventoryDeletionsError>>
16370    {
16371        let mut request = self.new_signed_request("POST", "/");
16372        request.add_header("x-amz-target", "AmazonSSM.DescribeInventoryDeletions");
16373        let encoded = serde_json::to_string(&input).unwrap();
16374        request.set_payload(Some(encoded));
16375
16376        let response = self
16377            .sign_and_dispatch(request, DescribeInventoryDeletionsError::from_response)
16378            .await?;
16379        let mut response = response;
16380        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16381        proto::json::ResponsePayload::new(&response)
16382            .deserialize::<DescribeInventoryDeletionsResult, _>()
16383    }
16384
16385    /// <p>Retrieves the individual task executions (one per target) for a particular task run as part of a maintenance window execution.</p>
16386    async fn describe_maintenance_window_execution_task_invocations(
16387        &self,
16388        input: DescribeMaintenanceWindowExecutionTaskInvocationsRequest,
16389    ) -> Result<
16390        DescribeMaintenanceWindowExecutionTaskInvocationsResult,
16391        RusotoError<DescribeMaintenanceWindowExecutionTaskInvocationsError>,
16392    > {
16393        let mut request = self.new_signed_request("POST", "/");
16394        request.add_header(
16395            "x-amz-target",
16396            "AmazonSSM.DescribeMaintenanceWindowExecutionTaskInvocations",
16397        );
16398        let encoded = serde_json::to_string(&input).unwrap();
16399        request.set_payload(Some(encoded));
16400
16401        let response = self
16402            .sign_and_dispatch(
16403                request,
16404                DescribeMaintenanceWindowExecutionTaskInvocationsError::from_response,
16405            )
16406            .await?;
16407        let mut response = response;
16408        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16409        proto::json::ResponsePayload::new(&response)
16410            .deserialize::<DescribeMaintenanceWindowExecutionTaskInvocationsResult, _>()
16411    }
16412
16413    /// <p>For a given maintenance window execution, lists the tasks that were run.</p>
16414    async fn describe_maintenance_window_execution_tasks(
16415        &self,
16416        input: DescribeMaintenanceWindowExecutionTasksRequest,
16417    ) -> Result<
16418        DescribeMaintenanceWindowExecutionTasksResult,
16419        RusotoError<DescribeMaintenanceWindowExecutionTasksError>,
16420    > {
16421        let mut request = self.new_signed_request("POST", "/");
16422        request.add_header(
16423            "x-amz-target",
16424            "AmazonSSM.DescribeMaintenanceWindowExecutionTasks",
16425        );
16426        let encoded = serde_json::to_string(&input).unwrap();
16427        request.set_payload(Some(encoded));
16428
16429        let response = self
16430            .sign_and_dispatch(
16431                request,
16432                DescribeMaintenanceWindowExecutionTasksError::from_response,
16433            )
16434            .await?;
16435        let mut response = response;
16436        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16437        proto::json::ResponsePayload::new(&response)
16438            .deserialize::<DescribeMaintenanceWindowExecutionTasksResult, _>()
16439    }
16440
16441    /// <p>Lists the executions of a maintenance window. This includes information about when the maintenance window was scheduled to be active, and information about tasks registered and run with the maintenance window.</p>
16442    async fn describe_maintenance_window_executions(
16443        &self,
16444        input: DescribeMaintenanceWindowExecutionsRequest,
16445    ) -> Result<
16446        DescribeMaintenanceWindowExecutionsResult,
16447        RusotoError<DescribeMaintenanceWindowExecutionsError>,
16448    > {
16449        let mut request = self.new_signed_request("POST", "/");
16450        request.add_header(
16451            "x-amz-target",
16452            "AmazonSSM.DescribeMaintenanceWindowExecutions",
16453        );
16454        let encoded = serde_json::to_string(&input).unwrap();
16455        request.set_payload(Some(encoded));
16456
16457        let response = self
16458            .sign_and_dispatch(
16459                request,
16460                DescribeMaintenanceWindowExecutionsError::from_response,
16461            )
16462            .await?;
16463        let mut response = response;
16464        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16465        proto::json::ResponsePayload::new(&response)
16466            .deserialize::<DescribeMaintenanceWindowExecutionsResult, _>()
16467    }
16468
16469    /// <p>Retrieves information about upcoming executions of a maintenance window.</p>
16470    async fn describe_maintenance_window_schedule(
16471        &self,
16472        input: DescribeMaintenanceWindowScheduleRequest,
16473    ) -> Result<
16474        DescribeMaintenanceWindowScheduleResult,
16475        RusotoError<DescribeMaintenanceWindowScheduleError>,
16476    > {
16477        let mut request = self.new_signed_request("POST", "/");
16478        request.add_header(
16479            "x-amz-target",
16480            "AmazonSSM.DescribeMaintenanceWindowSchedule",
16481        );
16482        let encoded = serde_json::to_string(&input).unwrap();
16483        request.set_payload(Some(encoded));
16484
16485        let response = self
16486            .sign_and_dispatch(
16487                request,
16488                DescribeMaintenanceWindowScheduleError::from_response,
16489            )
16490            .await?;
16491        let mut response = response;
16492        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16493        proto::json::ResponsePayload::new(&response)
16494            .deserialize::<DescribeMaintenanceWindowScheduleResult, _>()
16495    }
16496
16497    /// <p>Lists the targets registered with the maintenance window.</p>
16498    async fn describe_maintenance_window_targets(
16499        &self,
16500        input: DescribeMaintenanceWindowTargetsRequest,
16501    ) -> Result<
16502        DescribeMaintenanceWindowTargetsResult,
16503        RusotoError<DescribeMaintenanceWindowTargetsError>,
16504    > {
16505        let mut request = self.new_signed_request("POST", "/");
16506        request.add_header("x-amz-target", "AmazonSSM.DescribeMaintenanceWindowTargets");
16507        let encoded = serde_json::to_string(&input).unwrap();
16508        request.set_payload(Some(encoded));
16509
16510        let response = self
16511            .sign_and_dispatch(
16512                request,
16513                DescribeMaintenanceWindowTargetsError::from_response,
16514            )
16515            .await?;
16516        let mut response = response;
16517        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16518        proto::json::ResponsePayload::new(&response)
16519            .deserialize::<DescribeMaintenanceWindowTargetsResult, _>()
16520    }
16521
16522    /// <p>Lists the tasks in a maintenance window.</p>
16523    async fn describe_maintenance_window_tasks(
16524        &self,
16525        input: DescribeMaintenanceWindowTasksRequest,
16526    ) -> Result<
16527        DescribeMaintenanceWindowTasksResult,
16528        RusotoError<DescribeMaintenanceWindowTasksError>,
16529    > {
16530        let mut request = self.new_signed_request("POST", "/");
16531        request.add_header("x-amz-target", "AmazonSSM.DescribeMaintenanceWindowTasks");
16532        let encoded = serde_json::to_string(&input).unwrap();
16533        request.set_payload(Some(encoded));
16534
16535        let response = self
16536            .sign_and_dispatch(request, DescribeMaintenanceWindowTasksError::from_response)
16537            .await?;
16538        let mut response = response;
16539        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16540        proto::json::ResponsePayload::new(&response)
16541            .deserialize::<DescribeMaintenanceWindowTasksResult, _>()
16542    }
16543
16544    /// <p>Retrieves the maintenance windows in an AWS account.</p>
16545    async fn describe_maintenance_windows(
16546        &self,
16547        input: DescribeMaintenanceWindowsRequest,
16548    ) -> Result<DescribeMaintenanceWindowsResult, RusotoError<DescribeMaintenanceWindowsError>>
16549    {
16550        let mut request = self.new_signed_request("POST", "/");
16551        request.add_header("x-amz-target", "AmazonSSM.DescribeMaintenanceWindows");
16552        let encoded = serde_json::to_string(&input).unwrap();
16553        request.set_payload(Some(encoded));
16554
16555        let response = self
16556            .sign_and_dispatch(request, DescribeMaintenanceWindowsError::from_response)
16557            .await?;
16558        let mut response = response;
16559        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16560        proto::json::ResponsePayload::new(&response)
16561            .deserialize::<DescribeMaintenanceWindowsResult, _>()
16562    }
16563
16564    /// <p>Retrieves information about the maintenance window targets or tasks that an instance is associated with.</p>
16565    async fn describe_maintenance_windows_for_target(
16566        &self,
16567        input: DescribeMaintenanceWindowsForTargetRequest,
16568    ) -> Result<
16569        DescribeMaintenanceWindowsForTargetResult,
16570        RusotoError<DescribeMaintenanceWindowsForTargetError>,
16571    > {
16572        let mut request = self.new_signed_request("POST", "/");
16573        request.add_header(
16574            "x-amz-target",
16575            "AmazonSSM.DescribeMaintenanceWindowsForTarget",
16576        );
16577        let encoded = serde_json::to_string(&input).unwrap();
16578        request.set_payload(Some(encoded));
16579
16580        let response = self
16581            .sign_and_dispatch(
16582                request,
16583                DescribeMaintenanceWindowsForTargetError::from_response,
16584            )
16585            .await?;
16586        let mut response = response;
16587        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16588        proto::json::ResponsePayload::new(&response)
16589            .deserialize::<DescribeMaintenanceWindowsForTargetResult, _>()
16590    }
16591
16592    /// <p>Query a set of OpsItems. You must have permission in AWS Identity and Access Management (IAM) to query a list of OpsItems. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-getting-started.html">Getting started with OpsCenter</a> in the <i>AWS Systems Manager User Guide</i>.</p> <p>Operations engineers and IT professionals use OpsCenter to view, investigate, and remediate operational issues impacting the performance and health of their AWS resources. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter.html">AWS Systems Manager OpsCenter</a> in the <i>AWS Systems Manager User Guide</i>. </p>
16593    async fn describe_ops_items(
16594        &self,
16595        input: DescribeOpsItemsRequest,
16596    ) -> Result<DescribeOpsItemsResponse, RusotoError<DescribeOpsItemsError>> {
16597        let mut request = self.new_signed_request("POST", "/");
16598        request.add_header("x-amz-target", "AmazonSSM.DescribeOpsItems");
16599        let encoded = serde_json::to_string(&input).unwrap();
16600        request.set_payload(Some(encoded));
16601
16602        let response = self
16603            .sign_and_dispatch(request, DescribeOpsItemsError::from_response)
16604            .await?;
16605        let mut response = response;
16606        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16607        proto::json::ResponsePayload::new(&response).deserialize::<DescribeOpsItemsResponse, _>()
16608    }
16609
16610    /// <p><p>Get information about a parameter.</p> <note> <p>Request results are returned on a best-effort basis. If you specify <code>MaxResults</code> in the request, the response includes information up to the limit specified. The number of items returned, however, can be between zero and the value of <code>MaxResults</code>. If the service reaches an internal limit while processing the results, it stops the operation and returns the matching values up to that point and a <code>NextToken</code>. You can specify the <code>NextToken</code> in a subsequent call to get the next set of results.</p> </note></p>
16611    async fn describe_parameters(
16612        &self,
16613        input: DescribeParametersRequest,
16614    ) -> Result<DescribeParametersResult, RusotoError<DescribeParametersError>> {
16615        let mut request = self.new_signed_request("POST", "/");
16616        request.add_header("x-amz-target", "AmazonSSM.DescribeParameters");
16617        let encoded = serde_json::to_string(&input).unwrap();
16618        request.set_payload(Some(encoded));
16619
16620        let response = self
16621            .sign_and_dispatch(request, DescribeParametersError::from_response)
16622            .await?;
16623        let mut response = response;
16624        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16625        proto::json::ResponsePayload::new(&response).deserialize::<DescribeParametersResult, _>()
16626    }
16627
16628    /// <p>Lists the patch baselines in your AWS account.</p>
16629    async fn describe_patch_baselines(
16630        &self,
16631        input: DescribePatchBaselinesRequest,
16632    ) -> Result<DescribePatchBaselinesResult, RusotoError<DescribePatchBaselinesError>> {
16633        let mut request = self.new_signed_request("POST", "/");
16634        request.add_header("x-amz-target", "AmazonSSM.DescribePatchBaselines");
16635        let encoded = serde_json::to_string(&input).unwrap();
16636        request.set_payload(Some(encoded));
16637
16638        let response = self
16639            .sign_and_dispatch(request, DescribePatchBaselinesError::from_response)
16640            .await?;
16641        let mut response = response;
16642        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16643        proto::json::ResponsePayload::new(&response)
16644            .deserialize::<DescribePatchBaselinesResult, _>()
16645    }
16646
16647    /// <p>Returns high-level aggregated patch compliance state for a patch group.</p>
16648    async fn describe_patch_group_state(
16649        &self,
16650        input: DescribePatchGroupStateRequest,
16651    ) -> Result<DescribePatchGroupStateResult, RusotoError<DescribePatchGroupStateError>> {
16652        let mut request = self.new_signed_request("POST", "/");
16653        request.add_header("x-amz-target", "AmazonSSM.DescribePatchGroupState");
16654        let encoded = serde_json::to_string(&input).unwrap();
16655        request.set_payload(Some(encoded));
16656
16657        let response = self
16658            .sign_and_dispatch(request, DescribePatchGroupStateError::from_response)
16659            .await?;
16660        let mut response = response;
16661        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16662        proto::json::ResponsePayload::new(&response)
16663            .deserialize::<DescribePatchGroupStateResult, _>()
16664    }
16665
16666    /// <p>Lists all patch groups that have been registered with patch baselines.</p>
16667    async fn describe_patch_groups(
16668        &self,
16669        input: DescribePatchGroupsRequest,
16670    ) -> Result<DescribePatchGroupsResult, RusotoError<DescribePatchGroupsError>> {
16671        let mut request = self.new_signed_request("POST", "/");
16672        request.add_header("x-amz-target", "AmazonSSM.DescribePatchGroups");
16673        let encoded = serde_json::to_string(&input).unwrap();
16674        request.set_payload(Some(encoded));
16675
16676        let response = self
16677            .sign_and_dispatch(request, DescribePatchGroupsError::from_response)
16678            .await?;
16679        let mut response = response;
16680        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16681        proto::json::ResponsePayload::new(&response).deserialize::<DescribePatchGroupsResult, _>()
16682    }
16683
16684    /// <p><p>Lists the properties of available patches organized by product, product family, classification, severity, and other properties of available patches. You can use the reported properties in the filters you specify in requests for actions such as <a>CreatePatchBaseline</a>, <a>UpdatePatchBaseline</a>, <a>DescribeAvailablePatches</a>, and <a>DescribePatchBaselines</a>.</p> <p>The following section lists the properties that can be used in filters for each major operating system type:</p> <dl> <dt>WINDOWS</dt> <dd> <p>Valid properties: PRODUCT, PRODUCT<em>FAMILY, CLASSIFICATION, MSRC</em>SEVERITY</p> </dd> <dt>AMAZON<em>LINUX</dt> <dd> <p>Valid properties: PRODUCT, CLASSIFICATION, SEVERITY</p> </dd> <dt>AMAZON</em>LINUX<em>2</dt> <dd> <p>Valid properties: PRODUCT, CLASSIFICATION, SEVERITY</p> </dd> <dt>UBUNTU </dt> <dd> <p>Valid properties: PRODUCT, PRIORITY</p> </dd> <dt>REDHAT</em>ENTERPRISE_LINUX</dt> <dd> <p>Valid properties: PRODUCT, CLASSIFICATION, SEVERITY</p> </dd> <dt>SUSE</dt> <dd> <p>Valid properties: PRODUCT, CLASSIFICATION, SEVERITY</p> </dd> <dt>CENTOS</dt> <dd> <p>Valid properties: PRODUCT, CLASSIFICATION, SEVERITY</p> </dd> </dl></p>
16685    async fn describe_patch_properties(
16686        &self,
16687        input: DescribePatchPropertiesRequest,
16688    ) -> Result<DescribePatchPropertiesResult, RusotoError<DescribePatchPropertiesError>> {
16689        let mut request = self.new_signed_request("POST", "/");
16690        request.add_header("x-amz-target", "AmazonSSM.DescribePatchProperties");
16691        let encoded = serde_json::to_string(&input).unwrap();
16692        request.set_payload(Some(encoded));
16693
16694        let response = self
16695            .sign_and_dispatch(request, DescribePatchPropertiesError::from_response)
16696            .await?;
16697        let mut response = response;
16698        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16699        proto::json::ResponsePayload::new(&response)
16700            .deserialize::<DescribePatchPropertiesResult, _>()
16701    }
16702
16703    /// <p>Retrieves a list of all active sessions (both connected and disconnected) or terminated sessions from the past 30 days.</p>
16704    async fn describe_sessions(
16705        &self,
16706        input: DescribeSessionsRequest,
16707    ) -> Result<DescribeSessionsResponse, RusotoError<DescribeSessionsError>> {
16708        let mut request = self.new_signed_request("POST", "/");
16709        request.add_header("x-amz-target", "AmazonSSM.DescribeSessions");
16710        let encoded = serde_json::to_string(&input).unwrap();
16711        request.set_payload(Some(encoded));
16712
16713        let response = self
16714            .sign_and_dispatch(request, DescribeSessionsError::from_response)
16715            .await?;
16716        let mut response = response;
16717        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16718        proto::json::ResponsePayload::new(&response).deserialize::<DescribeSessionsResponse, _>()
16719    }
16720
16721    /// <p>Get detailed information about a particular Automation execution.</p>
16722    async fn get_automation_execution(
16723        &self,
16724        input: GetAutomationExecutionRequest,
16725    ) -> Result<GetAutomationExecutionResult, RusotoError<GetAutomationExecutionError>> {
16726        let mut request = self.new_signed_request("POST", "/");
16727        request.add_header("x-amz-target", "AmazonSSM.GetAutomationExecution");
16728        let encoded = serde_json::to_string(&input).unwrap();
16729        request.set_payload(Some(encoded));
16730
16731        let response = self
16732            .sign_and_dispatch(request, GetAutomationExecutionError::from_response)
16733            .await?;
16734        let mut response = response;
16735        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16736        proto::json::ResponsePayload::new(&response)
16737            .deserialize::<GetAutomationExecutionResult, _>()
16738    }
16739
16740    /// <p>Gets the state of the AWS Systems Manager Change Calendar at an optional, specified time. If you specify a time, <code>GetCalendarState</code> returns the state of the calendar at a specific time, and returns the next time that the Change Calendar state will transition. If you do not specify a time, <code>GetCalendarState</code> assumes the current time. Change Calendar entries have two possible states: <code>OPEN</code> or <code>CLOSED</code>. For more information about Systems Manager Change Calendar, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-change-calendar.html">AWS Systems Manager Change Calendar</a> in the <i>AWS Systems Manager User Guide</i>.</p>
16741    async fn get_calendar_state(
16742        &self,
16743        input: GetCalendarStateRequest,
16744    ) -> Result<GetCalendarStateResponse, RusotoError<GetCalendarStateError>> {
16745        let mut request = self.new_signed_request("POST", "/");
16746        request.add_header("x-amz-target", "AmazonSSM.GetCalendarState");
16747        let encoded = serde_json::to_string(&input).unwrap();
16748        request.set_payload(Some(encoded));
16749
16750        let response = self
16751            .sign_and_dispatch(request, GetCalendarStateError::from_response)
16752            .await?;
16753        let mut response = response;
16754        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16755        proto::json::ResponsePayload::new(&response).deserialize::<GetCalendarStateResponse, _>()
16756    }
16757
16758    /// <p>Returns detailed information about command execution for an invocation or plugin. </p>
16759    async fn get_command_invocation(
16760        &self,
16761        input: GetCommandInvocationRequest,
16762    ) -> Result<GetCommandInvocationResult, RusotoError<GetCommandInvocationError>> {
16763        let mut request = self.new_signed_request("POST", "/");
16764        request.add_header("x-amz-target", "AmazonSSM.GetCommandInvocation");
16765        let encoded = serde_json::to_string(&input).unwrap();
16766        request.set_payload(Some(encoded));
16767
16768        let response = self
16769            .sign_and_dispatch(request, GetCommandInvocationError::from_response)
16770            .await?;
16771        let mut response = response;
16772        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16773        proto::json::ResponsePayload::new(&response).deserialize::<GetCommandInvocationResult, _>()
16774    }
16775
16776    /// <p>Retrieves the Session Manager connection status for an instance to determine whether it is running and ready to receive Session Manager connections.</p>
16777    async fn get_connection_status(
16778        &self,
16779        input: GetConnectionStatusRequest,
16780    ) -> Result<GetConnectionStatusResponse, RusotoError<GetConnectionStatusError>> {
16781        let mut request = self.new_signed_request("POST", "/");
16782        request.add_header("x-amz-target", "AmazonSSM.GetConnectionStatus");
16783        let encoded = serde_json::to_string(&input).unwrap();
16784        request.set_payload(Some(encoded));
16785
16786        let response = self
16787            .sign_and_dispatch(request, GetConnectionStatusError::from_response)
16788            .await?;
16789        let mut response = response;
16790        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16791        proto::json::ResponsePayload::new(&response).deserialize::<GetConnectionStatusResponse, _>()
16792    }
16793
16794    /// <p>Retrieves the default patch baseline. Note that Systems Manager supports creating multiple default patch baselines. For example, you can create a default patch baseline for each operating system.</p> <p>If you do not specify an operating system value, the default patch baseline for Windows is returned.</p>
16795    async fn get_default_patch_baseline(
16796        &self,
16797        input: GetDefaultPatchBaselineRequest,
16798    ) -> Result<GetDefaultPatchBaselineResult, RusotoError<GetDefaultPatchBaselineError>> {
16799        let mut request = self.new_signed_request("POST", "/");
16800        request.add_header("x-amz-target", "AmazonSSM.GetDefaultPatchBaseline");
16801        let encoded = serde_json::to_string(&input).unwrap();
16802        request.set_payload(Some(encoded));
16803
16804        let response = self
16805            .sign_and_dispatch(request, GetDefaultPatchBaselineError::from_response)
16806            .await?;
16807        let mut response = response;
16808        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16809        proto::json::ResponsePayload::new(&response)
16810            .deserialize::<GetDefaultPatchBaselineResult, _>()
16811    }
16812
16813    /// <p>Retrieves the current snapshot for the patch baseline the instance uses. This API is primarily used by the AWS-RunPatchBaseline Systems Manager document. </p>
16814    async fn get_deployable_patch_snapshot_for_instance(
16815        &self,
16816        input: GetDeployablePatchSnapshotForInstanceRequest,
16817    ) -> Result<
16818        GetDeployablePatchSnapshotForInstanceResult,
16819        RusotoError<GetDeployablePatchSnapshotForInstanceError>,
16820    > {
16821        let mut request = self.new_signed_request("POST", "/");
16822        request.add_header(
16823            "x-amz-target",
16824            "AmazonSSM.GetDeployablePatchSnapshotForInstance",
16825        );
16826        let encoded = serde_json::to_string(&input).unwrap();
16827        request.set_payload(Some(encoded));
16828
16829        let response = self
16830            .sign_and_dispatch(
16831                request,
16832                GetDeployablePatchSnapshotForInstanceError::from_response,
16833            )
16834            .await?;
16835        let mut response = response;
16836        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16837        proto::json::ResponsePayload::new(&response)
16838            .deserialize::<GetDeployablePatchSnapshotForInstanceResult, _>()
16839    }
16840
16841    /// <p>Gets the contents of the specified Systems Manager document.</p>
16842    async fn get_document(
16843        &self,
16844        input: GetDocumentRequest,
16845    ) -> Result<GetDocumentResult, RusotoError<GetDocumentError>> {
16846        let mut request = self.new_signed_request("POST", "/");
16847        request.add_header("x-amz-target", "AmazonSSM.GetDocument");
16848        let encoded = serde_json::to_string(&input).unwrap();
16849        request.set_payload(Some(encoded));
16850
16851        let response = self
16852            .sign_and_dispatch(request, GetDocumentError::from_response)
16853            .await?;
16854        let mut response = response;
16855        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16856        proto::json::ResponsePayload::new(&response).deserialize::<GetDocumentResult, _>()
16857    }
16858
16859    /// <p>Query inventory information.</p>
16860    async fn get_inventory(
16861        &self,
16862        input: GetInventoryRequest,
16863    ) -> Result<GetInventoryResult, RusotoError<GetInventoryError>> {
16864        let mut request = self.new_signed_request("POST", "/");
16865        request.add_header("x-amz-target", "AmazonSSM.GetInventory");
16866        let encoded = serde_json::to_string(&input).unwrap();
16867        request.set_payload(Some(encoded));
16868
16869        let response = self
16870            .sign_and_dispatch(request, GetInventoryError::from_response)
16871            .await?;
16872        let mut response = response;
16873        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16874        proto::json::ResponsePayload::new(&response).deserialize::<GetInventoryResult, _>()
16875    }
16876
16877    /// <p>Return a list of inventory type names for the account, or return a list of attribute names for a specific Inventory item type.</p>
16878    async fn get_inventory_schema(
16879        &self,
16880        input: GetInventorySchemaRequest,
16881    ) -> Result<GetInventorySchemaResult, RusotoError<GetInventorySchemaError>> {
16882        let mut request = self.new_signed_request("POST", "/");
16883        request.add_header("x-amz-target", "AmazonSSM.GetInventorySchema");
16884        let encoded = serde_json::to_string(&input).unwrap();
16885        request.set_payload(Some(encoded));
16886
16887        let response = self
16888            .sign_and_dispatch(request, GetInventorySchemaError::from_response)
16889            .await?;
16890        let mut response = response;
16891        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16892        proto::json::ResponsePayload::new(&response).deserialize::<GetInventorySchemaResult, _>()
16893    }
16894
16895    /// <p>Retrieves a maintenance window.</p>
16896    async fn get_maintenance_window(
16897        &self,
16898        input: GetMaintenanceWindowRequest,
16899    ) -> Result<GetMaintenanceWindowResult, RusotoError<GetMaintenanceWindowError>> {
16900        let mut request = self.new_signed_request("POST", "/");
16901        request.add_header("x-amz-target", "AmazonSSM.GetMaintenanceWindow");
16902        let encoded = serde_json::to_string(&input).unwrap();
16903        request.set_payload(Some(encoded));
16904
16905        let response = self
16906            .sign_and_dispatch(request, GetMaintenanceWindowError::from_response)
16907            .await?;
16908        let mut response = response;
16909        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16910        proto::json::ResponsePayload::new(&response).deserialize::<GetMaintenanceWindowResult, _>()
16911    }
16912
16913    /// <p>Retrieves details about a specific a maintenance window execution.</p>
16914    async fn get_maintenance_window_execution(
16915        &self,
16916        input: GetMaintenanceWindowExecutionRequest,
16917    ) -> Result<GetMaintenanceWindowExecutionResult, RusotoError<GetMaintenanceWindowExecutionError>>
16918    {
16919        let mut request = self.new_signed_request("POST", "/");
16920        request.add_header("x-amz-target", "AmazonSSM.GetMaintenanceWindowExecution");
16921        let encoded = serde_json::to_string(&input).unwrap();
16922        request.set_payload(Some(encoded));
16923
16924        let response = self
16925            .sign_and_dispatch(request, GetMaintenanceWindowExecutionError::from_response)
16926            .await?;
16927        let mut response = response;
16928        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16929        proto::json::ResponsePayload::new(&response)
16930            .deserialize::<GetMaintenanceWindowExecutionResult, _>()
16931    }
16932
16933    /// <p>Retrieves the details about a specific task run as part of a maintenance window execution.</p>
16934    async fn get_maintenance_window_execution_task(
16935        &self,
16936        input: GetMaintenanceWindowExecutionTaskRequest,
16937    ) -> Result<
16938        GetMaintenanceWindowExecutionTaskResult,
16939        RusotoError<GetMaintenanceWindowExecutionTaskError>,
16940    > {
16941        let mut request = self.new_signed_request("POST", "/");
16942        request.add_header(
16943            "x-amz-target",
16944            "AmazonSSM.GetMaintenanceWindowExecutionTask",
16945        );
16946        let encoded = serde_json::to_string(&input).unwrap();
16947        request.set_payload(Some(encoded));
16948
16949        let response = self
16950            .sign_and_dispatch(
16951                request,
16952                GetMaintenanceWindowExecutionTaskError::from_response,
16953            )
16954            .await?;
16955        let mut response = response;
16956        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16957        proto::json::ResponsePayload::new(&response)
16958            .deserialize::<GetMaintenanceWindowExecutionTaskResult, _>()
16959    }
16960
16961    /// <p>Retrieves information about a specific task running on a specific target.</p>
16962    async fn get_maintenance_window_execution_task_invocation(
16963        &self,
16964        input: GetMaintenanceWindowExecutionTaskInvocationRequest,
16965    ) -> Result<
16966        GetMaintenanceWindowExecutionTaskInvocationResult,
16967        RusotoError<GetMaintenanceWindowExecutionTaskInvocationError>,
16968    > {
16969        let mut request = self.new_signed_request("POST", "/");
16970        request.add_header(
16971            "x-amz-target",
16972            "AmazonSSM.GetMaintenanceWindowExecutionTaskInvocation",
16973        );
16974        let encoded = serde_json::to_string(&input).unwrap();
16975        request.set_payload(Some(encoded));
16976
16977        let response = self
16978            .sign_and_dispatch(
16979                request,
16980                GetMaintenanceWindowExecutionTaskInvocationError::from_response,
16981            )
16982            .await?;
16983        let mut response = response;
16984        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
16985        proto::json::ResponsePayload::new(&response)
16986            .deserialize::<GetMaintenanceWindowExecutionTaskInvocationResult, _>()
16987    }
16988
16989    /// <p>Lists the tasks in a maintenance window.</p>
16990    async fn get_maintenance_window_task(
16991        &self,
16992        input: GetMaintenanceWindowTaskRequest,
16993    ) -> Result<GetMaintenanceWindowTaskResult, RusotoError<GetMaintenanceWindowTaskError>> {
16994        let mut request = self.new_signed_request("POST", "/");
16995        request.add_header("x-amz-target", "AmazonSSM.GetMaintenanceWindowTask");
16996        let encoded = serde_json::to_string(&input).unwrap();
16997        request.set_payload(Some(encoded));
16998
16999        let response = self
17000            .sign_and_dispatch(request, GetMaintenanceWindowTaskError::from_response)
17001            .await?;
17002        let mut response = response;
17003        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17004        proto::json::ResponsePayload::new(&response)
17005            .deserialize::<GetMaintenanceWindowTaskResult, _>()
17006    }
17007
17008    /// <p>Get information about an OpsItem by using the ID. You must have permission in AWS Identity and Access Management (IAM) to view information about an OpsItem. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-getting-started.html">Getting started with OpsCenter</a> in the <i>AWS Systems Manager User Guide</i>.</p> <p>Operations engineers and IT professionals use OpsCenter to view, investigate, and remediate operational issues impacting the performance and health of their AWS resources. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter.html">AWS Systems Manager OpsCenter</a> in the <i>AWS Systems Manager User Guide</i>. </p>
17009    async fn get_ops_item(
17010        &self,
17011        input: GetOpsItemRequest,
17012    ) -> Result<GetOpsItemResponse, RusotoError<GetOpsItemError>> {
17013        let mut request = self.new_signed_request("POST", "/");
17014        request.add_header("x-amz-target", "AmazonSSM.GetOpsItem");
17015        let encoded = serde_json::to_string(&input).unwrap();
17016        request.set_payload(Some(encoded));
17017
17018        let response = self
17019            .sign_and_dispatch(request, GetOpsItemError::from_response)
17020            .await?;
17021        let mut response = response;
17022        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17023        proto::json::ResponsePayload::new(&response).deserialize::<GetOpsItemResponse, _>()
17024    }
17025
17026    /// <p>View a summary of OpsItems based on specified filters and aggregators.</p>
17027    async fn get_ops_summary(
17028        &self,
17029        input: GetOpsSummaryRequest,
17030    ) -> Result<GetOpsSummaryResult, RusotoError<GetOpsSummaryError>> {
17031        let mut request = self.new_signed_request("POST", "/");
17032        request.add_header("x-amz-target", "AmazonSSM.GetOpsSummary");
17033        let encoded = serde_json::to_string(&input).unwrap();
17034        request.set_payload(Some(encoded));
17035
17036        let response = self
17037            .sign_and_dispatch(request, GetOpsSummaryError::from_response)
17038            .await?;
17039        let mut response = response;
17040        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17041        proto::json::ResponsePayload::new(&response).deserialize::<GetOpsSummaryResult, _>()
17042    }
17043
17044    /// <p>Get information about a parameter by using the parameter name. Don't confuse this API action with the <a>GetParameters</a> API action.</p>
17045    async fn get_parameter(
17046        &self,
17047        input: GetParameterRequest,
17048    ) -> Result<GetParameterResult, RusotoError<GetParameterError>> {
17049        let mut request = self.new_signed_request("POST", "/");
17050        request.add_header("x-amz-target", "AmazonSSM.GetParameter");
17051        let encoded = serde_json::to_string(&input).unwrap();
17052        request.set_payload(Some(encoded));
17053
17054        let response = self
17055            .sign_and_dispatch(request, GetParameterError::from_response)
17056            .await?;
17057        let mut response = response;
17058        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17059        proto::json::ResponsePayload::new(&response).deserialize::<GetParameterResult, _>()
17060    }
17061
17062    /// <p>Query a list of all parameters used by the AWS account.</p>
17063    async fn get_parameter_history(
17064        &self,
17065        input: GetParameterHistoryRequest,
17066    ) -> Result<GetParameterHistoryResult, RusotoError<GetParameterHistoryError>> {
17067        let mut request = self.new_signed_request("POST", "/");
17068        request.add_header("x-amz-target", "AmazonSSM.GetParameterHistory");
17069        let encoded = serde_json::to_string(&input).unwrap();
17070        request.set_payload(Some(encoded));
17071
17072        let response = self
17073            .sign_and_dispatch(request, GetParameterHistoryError::from_response)
17074            .await?;
17075        let mut response = response;
17076        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17077        proto::json::ResponsePayload::new(&response).deserialize::<GetParameterHistoryResult, _>()
17078    }
17079
17080    /// <p>Get details of a parameter. Don't confuse this API action with the <a>GetParameter</a> API action.</p>
17081    async fn get_parameters(
17082        &self,
17083        input: GetParametersRequest,
17084    ) -> Result<GetParametersResult, RusotoError<GetParametersError>> {
17085        let mut request = self.new_signed_request("POST", "/");
17086        request.add_header("x-amz-target", "AmazonSSM.GetParameters");
17087        let encoded = serde_json::to_string(&input).unwrap();
17088        request.set_payload(Some(encoded));
17089
17090        let response = self
17091            .sign_and_dispatch(request, GetParametersError::from_response)
17092            .await?;
17093        let mut response = response;
17094        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17095        proto::json::ResponsePayload::new(&response).deserialize::<GetParametersResult, _>()
17096    }
17097
17098    /// <p><p>Retrieve information about one or more parameters in a specific hierarchy. </p> <note> <p>Request results are returned on a best-effort basis. If you specify <code>MaxResults</code> in the request, the response includes information up to the limit specified. The number of items returned, however, can be between zero and the value of <code>MaxResults</code>. If the service reaches an internal limit while processing the results, it stops the operation and returns the matching values up to that point and a <code>NextToken</code>. You can specify the <code>NextToken</code> in a subsequent call to get the next set of results.</p> </note></p>
17099    async fn get_parameters_by_path(
17100        &self,
17101        input: GetParametersByPathRequest,
17102    ) -> Result<GetParametersByPathResult, RusotoError<GetParametersByPathError>> {
17103        let mut request = self.new_signed_request("POST", "/");
17104        request.add_header("x-amz-target", "AmazonSSM.GetParametersByPath");
17105        let encoded = serde_json::to_string(&input).unwrap();
17106        request.set_payload(Some(encoded));
17107
17108        let response = self
17109            .sign_and_dispatch(request, GetParametersByPathError::from_response)
17110            .await?;
17111        let mut response = response;
17112        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17113        proto::json::ResponsePayload::new(&response).deserialize::<GetParametersByPathResult, _>()
17114    }
17115
17116    /// <p>Retrieves information about a patch baseline.</p>
17117    async fn get_patch_baseline(
17118        &self,
17119        input: GetPatchBaselineRequest,
17120    ) -> Result<GetPatchBaselineResult, RusotoError<GetPatchBaselineError>> {
17121        let mut request = self.new_signed_request("POST", "/");
17122        request.add_header("x-amz-target", "AmazonSSM.GetPatchBaseline");
17123        let encoded = serde_json::to_string(&input).unwrap();
17124        request.set_payload(Some(encoded));
17125
17126        let response = self
17127            .sign_and_dispatch(request, GetPatchBaselineError::from_response)
17128            .await?;
17129        let mut response = response;
17130        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17131        proto::json::ResponsePayload::new(&response).deserialize::<GetPatchBaselineResult, _>()
17132    }
17133
17134    /// <p>Retrieves the patch baseline that should be used for the specified patch group.</p>
17135    async fn get_patch_baseline_for_patch_group(
17136        &self,
17137        input: GetPatchBaselineForPatchGroupRequest,
17138    ) -> Result<GetPatchBaselineForPatchGroupResult, RusotoError<GetPatchBaselineForPatchGroupError>>
17139    {
17140        let mut request = self.new_signed_request("POST", "/");
17141        request.add_header("x-amz-target", "AmazonSSM.GetPatchBaselineForPatchGroup");
17142        let encoded = serde_json::to_string(&input).unwrap();
17143        request.set_payload(Some(encoded));
17144
17145        let response = self
17146            .sign_and_dispatch(request, GetPatchBaselineForPatchGroupError::from_response)
17147            .await?;
17148        let mut response = response;
17149        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17150        proto::json::ResponsePayload::new(&response)
17151            .deserialize::<GetPatchBaselineForPatchGroupResult, _>()
17152    }
17153
17154    /// <p> <code>ServiceSetting</code> is an account-level setting for an AWS service. This setting defines how a user interacts with or uses a service or a feature of a service. For example, if an AWS service charges money to the account based on feature or service usage, then the AWS service team might create a default setting of "false". This means the user can't use this feature unless they change the setting to "true" and intentionally opt in for a paid feature.</p> <p>Services map a <code>SettingId</code> object to a setting value. AWS services teams define the default value for a <code>SettingId</code>. You can't create a new <code>SettingId</code>, but you can overwrite the default value if you have the <code>ssm:UpdateServiceSetting</code> permission for the setting. Use the <a>UpdateServiceSetting</a> API action to change the default setting. Or use the <a>ResetServiceSetting</a> to change the value back to the original value defined by the AWS service team.</p> <p>Query the current service setting for the account. </p>
17155    async fn get_service_setting(
17156        &self,
17157        input: GetServiceSettingRequest,
17158    ) -> Result<GetServiceSettingResult, RusotoError<GetServiceSettingError>> {
17159        let mut request = self.new_signed_request("POST", "/");
17160        request.add_header("x-amz-target", "AmazonSSM.GetServiceSetting");
17161        let encoded = serde_json::to_string(&input).unwrap();
17162        request.set_payload(Some(encoded));
17163
17164        let response = self
17165            .sign_and_dispatch(request, GetServiceSettingError::from_response)
17166            .await?;
17167        let mut response = response;
17168        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17169        proto::json::ResponsePayload::new(&response).deserialize::<GetServiceSettingResult, _>()
17170    }
17171
17172    /// <p><p>A parameter label is a user-defined alias to help you manage different versions of a parameter. When you modify a parameter, Systems Manager automatically saves a new version and increments the version number by one. A label can help you remember the purpose of a parameter when there are multiple versions. </p> <p>Parameter labels have the following requirements and restrictions.</p> <ul> <li> <p>A version of a parameter can have a maximum of 10 labels.</p> </li> <li> <p>You can&#39;t attach the same label to different versions of the same parameter. For example, if version 1 has the label Production, then you can&#39;t attach Production to version 2.</p> </li> <li> <p>You can move a label from one version of a parameter to another.</p> </li> <li> <p>You can&#39;t create a label when you create a new parameter. You must attach a label to a specific version of a parameter.</p> </li> <li> <p>You can&#39;t delete a parameter label. If you no longer want to use a parameter label, then you must move it to a different version of a parameter.</p> </li> <li> <p>A label can have a maximum of 100 characters.</p> </li> <li> <p>Labels can contain letters (case sensitive), numbers, periods (.), hyphens (-), or underscores (_).</p> </li> <li> <p>Labels can&#39;t begin with a number, &quot;aws,&quot; or &quot;ssm&quot; (not case sensitive). If a label fails to meet these requirements, then the label is not associated with a parameter and the system displays it in the list of InvalidLabels.</p> </li> </ul></p>
17173    async fn label_parameter_version(
17174        &self,
17175        input: LabelParameterVersionRequest,
17176    ) -> Result<LabelParameterVersionResult, RusotoError<LabelParameterVersionError>> {
17177        let mut request = self.new_signed_request("POST", "/");
17178        request.add_header("x-amz-target", "AmazonSSM.LabelParameterVersion");
17179        let encoded = serde_json::to_string(&input).unwrap();
17180        request.set_payload(Some(encoded));
17181
17182        let response = self
17183            .sign_and_dispatch(request, LabelParameterVersionError::from_response)
17184            .await?;
17185        let mut response = response;
17186        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17187        proto::json::ResponsePayload::new(&response).deserialize::<LabelParameterVersionResult, _>()
17188    }
17189
17190    /// <p>Retrieves all versions of an association for a specific association ID.</p>
17191    async fn list_association_versions(
17192        &self,
17193        input: ListAssociationVersionsRequest,
17194    ) -> Result<ListAssociationVersionsResult, RusotoError<ListAssociationVersionsError>> {
17195        let mut request = self.new_signed_request("POST", "/");
17196        request.add_header("x-amz-target", "AmazonSSM.ListAssociationVersions");
17197        let encoded = serde_json::to_string(&input).unwrap();
17198        request.set_payload(Some(encoded));
17199
17200        let response = self
17201            .sign_and_dispatch(request, ListAssociationVersionsError::from_response)
17202            .await?;
17203        let mut response = response;
17204        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17205        proto::json::ResponsePayload::new(&response)
17206            .deserialize::<ListAssociationVersionsResult, _>()
17207    }
17208
17209    /// <p>Returns all State Manager associations in the current AWS account and Region. You can limit the results to a specific State Manager association document or instance by specifying a filter.</p>
17210    async fn list_associations(
17211        &self,
17212        input: ListAssociationsRequest,
17213    ) -> Result<ListAssociationsResult, RusotoError<ListAssociationsError>> {
17214        let mut request = self.new_signed_request("POST", "/");
17215        request.add_header("x-amz-target", "AmazonSSM.ListAssociations");
17216        let encoded = serde_json::to_string(&input).unwrap();
17217        request.set_payload(Some(encoded));
17218
17219        let response = self
17220            .sign_and_dispatch(request, ListAssociationsError::from_response)
17221            .await?;
17222        let mut response = response;
17223        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17224        proto::json::ResponsePayload::new(&response).deserialize::<ListAssociationsResult, _>()
17225    }
17226
17227    /// <p>An invocation is copy of a command sent to a specific instance. A command can apply to one or more instances. A command invocation applies to one instance. For example, if a user runs SendCommand against three instances, then a command invocation is created for each requested instance ID. ListCommandInvocations provide status about command execution.</p>
17228    async fn list_command_invocations(
17229        &self,
17230        input: ListCommandInvocationsRequest,
17231    ) -> Result<ListCommandInvocationsResult, RusotoError<ListCommandInvocationsError>> {
17232        let mut request = self.new_signed_request("POST", "/");
17233        request.add_header("x-amz-target", "AmazonSSM.ListCommandInvocations");
17234        let encoded = serde_json::to_string(&input).unwrap();
17235        request.set_payload(Some(encoded));
17236
17237        let response = self
17238            .sign_and_dispatch(request, ListCommandInvocationsError::from_response)
17239            .await?;
17240        let mut response = response;
17241        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17242        proto::json::ResponsePayload::new(&response)
17243            .deserialize::<ListCommandInvocationsResult, _>()
17244    }
17245
17246    /// <p>Lists the commands requested by users of the AWS account.</p>
17247    async fn list_commands(
17248        &self,
17249        input: ListCommandsRequest,
17250    ) -> Result<ListCommandsResult, RusotoError<ListCommandsError>> {
17251        let mut request = self.new_signed_request("POST", "/");
17252        request.add_header("x-amz-target", "AmazonSSM.ListCommands");
17253        let encoded = serde_json::to_string(&input).unwrap();
17254        request.set_payload(Some(encoded));
17255
17256        let response = self
17257            .sign_and_dispatch(request, ListCommandsError::from_response)
17258            .await?;
17259        let mut response = response;
17260        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17261        proto::json::ResponsePayload::new(&response).deserialize::<ListCommandsResult, _>()
17262    }
17263
17264    /// <p>For a specified resource ID, this API action returns a list of compliance statuses for different resource types. Currently, you can only specify one resource ID per call. List results depend on the criteria specified in the filter.</p>
17265    async fn list_compliance_items(
17266        &self,
17267        input: ListComplianceItemsRequest,
17268    ) -> Result<ListComplianceItemsResult, RusotoError<ListComplianceItemsError>> {
17269        let mut request = self.new_signed_request("POST", "/");
17270        request.add_header("x-amz-target", "AmazonSSM.ListComplianceItems");
17271        let encoded = serde_json::to_string(&input).unwrap();
17272        request.set_payload(Some(encoded));
17273
17274        let response = self
17275            .sign_and_dispatch(request, ListComplianceItemsError::from_response)
17276            .await?;
17277        let mut response = response;
17278        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17279        proto::json::ResponsePayload::new(&response).deserialize::<ListComplianceItemsResult, _>()
17280    }
17281
17282    /// <p>Returns a summary count of compliant and non-compliant resources for a compliance type. For example, this call can return State Manager associations, patches, or custom compliance types according to the filter criteria that you specify.</p>
17283    async fn list_compliance_summaries(
17284        &self,
17285        input: ListComplianceSummariesRequest,
17286    ) -> Result<ListComplianceSummariesResult, RusotoError<ListComplianceSummariesError>> {
17287        let mut request = self.new_signed_request("POST", "/");
17288        request.add_header("x-amz-target", "AmazonSSM.ListComplianceSummaries");
17289        let encoded = serde_json::to_string(&input).unwrap();
17290        request.set_payload(Some(encoded));
17291
17292        let response = self
17293            .sign_and_dispatch(request, ListComplianceSummariesError::from_response)
17294            .await?;
17295        let mut response = response;
17296        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17297        proto::json::ResponsePayload::new(&response)
17298            .deserialize::<ListComplianceSummariesResult, _>()
17299    }
17300
17301    /// <p>List all versions for a document.</p>
17302    async fn list_document_versions(
17303        &self,
17304        input: ListDocumentVersionsRequest,
17305    ) -> Result<ListDocumentVersionsResult, RusotoError<ListDocumentVersionsError>> {
17306        let mut request = self.new_signed_request("POST", "/");
17307        request.add_header("x-amz-target", "AmazonSSM.ListDocumentVersions");
17308        let encoded = serde_json::to_string(&input).unwrap();
17309        request.set_payload(Some(encoded));
17310
17311        let response = self
17312            .sign_and_dispatch(request, ListDocumentVersionsError::from_response)
17313            .await?;
17314        let mut response = response;
17315        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17316        proto::json::ResponsePayload::new(&response).deserialize::<ListDocumentVersionsResult, _>()
17317    }
17318
17319    /// <p>Returns all Systems Manager (SSM) documents in the current AWS account and Region. You can limit the results of this request by using a filter.</p>
17320    async fn list_documents(
17321        &self,
17322        input: ListDocumentsRequest,
17323    ) -> Result<ListDocumentsResult, RusotoError<ListDocumentsError>> {
17324        let mut request = self.new_signed_request("POST", "/");
17325        request.add_header("x-amz-target", "AmazonSSM.ListDocuments");
17326        let encoded = serde_json::to_string(&input).unwrap();
17327        request.set_payload(Some(encoded));
17328
17329        let response = self
17330            .sign_and_dispatch(request, ListDocumentsError::from_response)
17331            .await?;
17332        let mut response = response;
17333        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17334        proto::json::ResponsePayload::new(&response).deserialize::<ListDocumentsResult, _>()
17335    }
17336
17337    /// <p>A list of inventory items returned by the request.</p>
17338    async fn list_inventory_entries(
17339        &self,
17340        input: ListInventoryEntriesRequest,
17341    ) -> Result<ListInventoryEntriesResult, RusotoError<ListInventoryEntriesError>> {
17342        let mut request = self.new_signed_request("POST", "/");
17343        request.add_header("x-amz-target", "AmazonSSM.ListInventoryEntries");
17344        let encoded = serde_json::to_string(&input).unwrap();
17345        request.set_payload(Some(encoded));
17346
17347        let response = self
17348            .sign_and_dispatch(request, ListInventoryEntriesError::from_response)
17349            .await?;
17350        let mut response = response;
17351        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17352        proto::json::ResponsePayload::new(&response).deserialize::<ListInventoryEntriesResult, _>()
17353    }
17354
17355    /// <p>Returns a resource-level summary count. The summary includes information about compliant and non-compliant statuses and detailed compliance-item severity counts, according to the filter criteria you specify.</p>
17356    async fn list_resource_compliance_summaries(
17357        &self,
17358        input: ListResourceComplianceSummariesRequest,
17359    ) -> Result<
17360        ListResourceComplianceSummariesResult,
17361        RusotoError<ListResourceComplianceSummariesError>,
17362    > {
17363        let mut request = self.new_signed_request("POST", "/");
17364        request.add_header("x-amz-target", "AmazonSSM.ListResourceComplianceSummaries");
17365        let encoded = serde_json::to_string(&input).unwrap();
17366        request.set_payload(Some(encoded));
17367
17368        let response = self
17369            .sign_and_dispatch(request, ListResourceComplianceSummariesError::from_response)
17370            .await?;
17371        let mut response = response;
17372        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17373        proto::json::ResponsePayload::new(&response)
17374            .deserialize::<ListResourceComplianceSummariesResult, _>()
17375    }
17376
17377    /// <p>Lists your resource data sync configurations. Includes information about the last time a sync attempted to start, the last sync status, and the last time a sync successfully completed.</p> <p>The number of sync configurations might be too large to return using a single call to <code>ListResourceDataSync</code>. You can limit the number of sync configurations returned by using the <code>MaxResults</code> parameter. To determine whether there are more sync configurations to list, check the value of <code>NextToken</code> in the output. If there are more sync configurations to list, you can request them by specifying the <code>NextToken</code> returned in the call to the parameter of a subsequent call. </p>
17378    async fn list_resource_data_sync(
17379        &self,
17380        input: ListResourceDataSyncRequest,
17381    ) -> Result<ListResourceDataSyncResult, RusotoError<ListResourceDataSyncError>> {
17382        let mut request = self.new_signed_request("POST", "/");
17383        request.add_header("x-amz-target", "AmazonSSM.ListResourceDataSync");
17384        let encoded = serde_json::to_string(&input).unwrap();
17385        request.set_payload(Some(encoded));
17386
17387        let response = self
17388            .sign_and_dispatch(request, ListResourceDataSyncError::from_response)
17389            .await?;
17390        let mut response = response;
17391        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17392        proto::json::ResponsePayload::new(&response).deserialize::<ListResourceDataSyncResult, _>()
17393    }
17394
17395    /// <p>Returns a list of the tags assigned to the specified resource.</p>
17396    async fn list_tags_for_resource(
17397        &self,
17398        input: ListTagsForResourceRequest,
17399    ) -> Result<ListTagsForResourceResult, RusotoError<ListTagsForResourceError>> {
17400        let mut request = self.new_signed_request("POST", "/");
17401        request.add_header("x-amz-target", "AmazonSSM.ListTagsForResource");
17402        let encoded = serde_json::to_string(&input).unwrap();
17403        request.set_payload(Some(encoded));
17404
17405        let response = self
17406            .sign_and_dispatch(request, ListTagsForResourceError::from_response)
17407            .await?;
17408        let mut response = response;
17409        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17410        proto::json::ResponsePayload::new(&response).deserialize::<ListTagsForResourceResult, _>()
17411    }
17412
17413    /// <p>Shares a Systems Manager document publicly or privately. If you share a document privately, you must specify the AWS user account IDs for those people who can use the document. If you share a document publicly, you must specify <i>All</i> as the account ID.</p>
17414    async fn modify_document_permission(
17415        &self,
17416        input: ModifyDocumentPermissionRequest,
17417    ) -> Result<ModifyDocumentPermissionResponse, RusotoError<ModifyDocumentPermissionError>> {
17418        let mut request = self.new_signed_request("POST", "/");
17419        request.add_header("x-amz-target", "AmazonSSM.ModifyDocumentPermission");
17420        let encoded = serde_json::to_string(&input).unwrap();
17421        request.set_payload(Some(encoded));
17422
17423        let response = self
17424            .sign_and_dispatch(request, ModifyDocumentPermissionError::from_response)
17425            .await?;
17426        let mut response = response;
17427        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17428        proto::json::ResponsePayload::new(&response)
17429            .deserialize::<ModifyDocumentPermissionResponse, _>()
17430    }
17431
17432    /// <p><p>Registers a compliance type and other compliance details on a designated resource. This action lets you register custom compliance details with a resource. This call overwrites existing compliance information on the resource, so you must provide a full list of compliance items each time that you send the request.</p> <p>ComplianceType can be one of the following:</p> <ul> <li> <p>ExecutionId: The execution ID when the patch, association, or custom compliance item was applied.</p> </li> <li> <p>ExecutionType: Specify patch, association, or Custom:<code>string</code>.</p> </li> <li> <p>ExecutionTime. The time the patch, association, or custom compliance item was applied to the instance.</p> </li> <li> <p>Id: The patch, association, or custom compliance ID.</p> </li> <li> <p>Title: A title.</p> </li> <li> <p>Status: The status of the compliance item. For example, <code>approved</code> for patches, or <code>Failed</code> for associations.</p> </li> <li> <p>Severity: A patch severity. For example, <code>critical</code>.</p> </li> <li> <p>DocumentName: A SSM document name. For example, AWS-RunPatchBaseline.</p> </li> <li> <p>DocumentVersion: An SSM document version number. For example, 4.</p> </li> <li> <p>Classification: A patch classification. For example, <code>security updates</code>.</p> </li> <li> <p>PatchBaselineId: A patch baseline ID.</p> </li> <li> <p>PatchSeverity: A patch severity. For example, <code>Critical</code>.</p> </li> <li> <p>PatchState: A patch state. For example, <code>InstancesWithFailedPatches</code>.</p> </li> <li> <p>PatchGroup: The name of a patch group.</p> </li> <li> <p>InstalledTime: The time the association, patch, or custom compliance item was applied to the resource. Specify the time by using the following format: yyyy-MM-dd&#39;T&#39;HH:mm:ss&#39;Z&#39;</p> </li> </ul></p>
17433    async fn put_compliance_items(
17434        &self,
17435        input: PutComplianceItemsRequest,
17436    ) -> Result<PutComplianceItemsResult, RusotoError<PutComplianceItemsError>> {
17437        let mut request = self.new_signed_request("POST", "/");
17438        request.add_header("x-amz-target", "AmazonSSM.PutComplianceItems");
17439        let encoded = serde_json::to_string(&input).unwrap();
17440        request.set_payload(Some(encoded));
17441
17442        let response = self
17443            .sign_and_dispatch(request, PutComplianceItemsError::from_response)
17444            .await?;
17445        let mut response = response;
17446        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17447        proto::json::ResponsePayload::new(&response).deserialize::<PutComplianceItemsResult, _>()
17448    }
17449
17450    /// <p>Bulk update custom inventory items on one more instance. The request adds an inventory item, if it doesn't already exist, or updates an inventory item, if it does exist.</p>
17451    async fn put_inventory(
17452        &self,
17453        input: PutInventoryRequest,
17454    ) -> Result<PutInventoryResult, RusotoError<PutInventoryError>> {
17455        let mut request = self.new_signed_request("POST", "/");
17456        request.add_header("x-amz-target", "AmazonSSM.PutInventory");
17457        let encoded = serde_json::to_string(&input).unwrap();
17458        request.set_payload(Some(encoded));
17459
17460        let response = self
17461            .sign_and_dispatch(request, PutInventoryError::from_response)
17462            .await?;
17463        let mut response = response;
17464        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17465        proto::json::ResponsePayload::new(&response).deserialize::<PutInventoryResult, _>()
17466    }
17467
17468    /// <p>Add a parameter to the system.</p>
17469    async fn put_parameter(
17470        &self,
17471        input: PutParameterRequest,
17472    ) -> Result<PutParameterResult, RusotoError<PutParameterError>> {
17473        let mut request = self.new_signed_request("POST", "/");
17474        request.add_header("x-amz-target", "AmazonSSM.PutParameter");
17475        let encoded = serde_json::to_string(&input).unwrap();
17476        request.set_payload(Some(encoded));
17477
17478        let response = self
17479            .sign_and_dispatch(request, PutParameterError::from_response)
17480            .await?;
17481        let mut response = response;
17482        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17483        proto::json::ResponsePayload::new(&response).deserialize::<PutParameterResult, _>()
17484    }
17485
17486    /// <p>Defines the default patch baseline for the relevant operating system.</p> <p>To reset the AWS predefined patch baseline as the default, specify the full patch baseline ARN as the baseline ID value. For example, for CentOS, specify <code>arn:aws:ssm:us-east-2:733109147000:patchbaseline/pb-0574b43a65ea646ed</code> instead of <code>pb-0574b43a65ea646ed</code>.</p>
17487    async fn register_default_patch_baseline(
17488        &self,
17489        input: RegisterDefaultPatchBaselineRequest,
17490    ) -> Result<RegisterDefaultPatchBaselineResult, RusotoError<RegisterDefaultPatchBaselineError>>
17491    {
17492        let mut request = self.new_signed_request("POST", "/");
17493        request.add_header("x-amz-target", "AmazonSSM.RegisterDefaultPatchBaseline");
17494        let encoded = serde_json::to_string(&input).unwrap();
17495        request.set_payload(Some(encoded));
17496
17497        let response = self
17498            .sign_and_dispatch(request, RegisterDefaultPatchBaselineError::from_response)
17499            .await?;
17500        let mut response = response;
17501        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17502        proto::json::ResponsePayload::new(&response)
17503            .deserialize::<RegisterDefaultPatchBaselineResult, _>()
17504    }
17505
17506    /// <p>Registers a patch baseline for a patch group.</p>
17507    async fn register_patch_baseline_for_patch_group(
17508        &self,
17509        input: RegisterPatchBaselineForPatchGroupRequest,
17510    ) -> Result<
17511        RegisterPatchBaselineForPatchGroupResult,
17512        RusotoError<RegisterPatchBaselineForPatchGroupError>,
17513    > {
17514        let mut request = self.new_signed_request("POST", "/");
17515        request.add_header(
17516            "x-amz-target",
17517            "AmazonSSM.RegisterPatchBaselineForPatchGroup",
17518        );
17519        let encoded = serde_json::to_string(&input).unwrap();
17520        request.set_payload(Some(encoded));
17521
17522        let response = self
17523            .sign_and_dispatch(
17524                request,
17525                RegisterPatchBaselineForPatchGroupError::from_response,
17526            )
17527            .await?;
17528        let mut response = response;
17529        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17530        proto::json::ResponsePayload::new(&response)
17531            .deserialize::<RegisterPatchBaselineForPatchGroupResult, _>()
17532    }
17533
17534    /// <p>Registers a target with a maintenance window.</p>
17535    async fn register_target_with_maintenance_window(
17536        &self,
17537        input: RegisterTargetWithMaintenanceWindowRequest,
17538    ) -> Result<
17539        RegisterTargetWithMaintenanceWindowResult,
17540        RusotoError<RegisterTargetWithMaintenanceWindowError>,
17541    > {
17542        let mut request = self.new_signed_request("POST", "/");
17543        request.add_header(
17544            "x-amz-target",
17545            "AmazonSSM.RegisterTargetWithMaintenanceWindow",
17546        );
17547        let encoded = serde_json::to_string(&input).unwrap();
17548        request.set_payload(Some(encoded));
17549
17550        let response = self
17551            .sign_and_dispatch(
17552                request,
17553                RegisterTargetWithMaintenanceWindowError::from_response,
17554            )
17555            .await?;
17556        let mut response = response;
17557        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17558        proto::json::ResponsePayload::new(&response)
17559            .deserialize::<RegisterTargetWithMaintenanceWindowResult, _>()
17560    }
17561
17562    /// <p>Adds a new task to a maintenance window.</p>
17563    async fn register_task_with_maintenance_window(
17564        &self,
17565        input: RegisterTaskWithMaintenanceWindowRequest,
17566    ) -> Result<
17567        RegisterTaskWithMaintenanceWindowResult,
17568        RusotoError<RegisterTaskWithMaintenanceWindowError>,
17569    > {
17570        let mut request = self.new_signed_request("POST", "/");
17571        request.add_header(
17572            "x-amz-target",
17573            "AmazonSSM.RegisterTaskWithMaintenanceWindow",
17574        );
17575        let encoded = serde_json::to_string(&input).unwrap();
17576        request.set_payload(Some(encoded));
17577
17578        let response = self
17579            .sign_and_dispatch(
17580                request,
17581                RegisterTaskWithMaintenanceWindowError::from_response,
17582            )
17583            .await?;
17584        let mut response = response;
17585        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17586        proto::json::ResponsePayload::new(&response)
17587            .deserialize::<RegisterTaskWithMaintenanceWindowResult, _>()
17588    }
17589
17590    /// <p>Removes tag keys from the specified resource.</p>
17591    async fn remove_tags_from_resource(
17592        &self,
17593        input: RemoveTagsFromResourceRequest,
17594    ) -> Result<RemoveTagsFromResourceResult, RusotoError<RemoveTagsFromResourceError>> {
17595        let mut request = self.new_signed_request("POST", "/");
17596        request.add_header("x-amz-target", "AmazonSSM.RemoveTagsFromResource");
17597        let encoded = serde_json::to_string(&input).unwrap();
17598        request.set_payload(Some(encoded));
17599
17600        let response = self
17601            .sign_and_dispatch(request, RemoveTagsFromResourceError::from_response)
17602            .await?;
17603        let mut response = response;
17604        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17605        proto::json::ResponsePayload::new(&response)
17606            .deserialize::<RemoveTagsFromResourceResult, _>()
17607    }
17608
17609    /// <p> <code>ServiceSetting</code> is an account-level setting for an AWS service. This setting defines how a user interacts with or uses a service or a feature of a service. For example, if an AWS service charges money to the account based on feature or service usage, then the AWS service team might create a default setting of "false". This means the user can't use this feature unless they change the setting to "true" and intentionally opt in for a paid feature.</p> <p>Services map a <code>SettingId</code> object to a setting value. AWS services teams define the default value for a <code>SettingId</code>. You can't create a new <code>SettingId</code>, but you can overwrite the default value if you have the <code>ssm:UpdateServiceSetting</code> permission for the setting. Use the <a>GetServiceSetting</a> API action to view the current value. Use the <a>UpdateServiceSetting</a> API action to change the default setting. </p> <p>Reset the service setting for the account to the default value as provisioned by the AWS service team. </p>
17610    async fn reset_service_setting(
17611        &self,
17612        input: ResetServiceSettingRequest,
17613    ) -> Result<ResetServiceSettingResult, RusotoError<ResetServiceSettingError>> {
17614        let mut request = self.new_signed_request("POST", "/");
17615        request.add_header("x-amz-target", "AmazonSSM.ResetServiceSetting");
17616        let encoded = serde_json::to_string(&input).unwrap();
17617        request.set_payload(Some(encoded));
17618
17619        let response = self
17620            .sign_and_dispatch(request, ResetServiceSettingError::from_response)
17621            .await?;
17622        let mut response = response;
17623        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17624        proto::json::ResponsePayload::new(&response).deserialize::<ResetServiceSettingResult, _>()
17625    }
17626
17627    /// <p><p>Reconnects a session to an instance after it has been disconnected. Connections can be resumed for disconnected sessions, but not terminated sessions.</p> <note> <p>This command is primarily for use by client machines to automatically reconnect during intermittent network issues. It is not intended for any other use.</p> </note></p>
17628    async fn resume_session(
17629        &self,
17630        input: ResumeSessionRequest,
17631    ) -> Result<ResumeSessionResponse, RusotoError<ResumeSessionError>> {
17632        let mut request = self.new_signed_request("POST", "/");
17633        request.add_header("x-amz-target", "AmazonSSM.ResumeSession");
17634        let encoded = serde_json::to_string(&input).unwrap();
17635        request.set_payload(Some(encoded));
17636
17637        let response = self
17638            .sign_and_dispatch(request, ResumeSessionError::from_response)
17639            .await?;
17640        let mut response = response;
17641        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17642        proto::json::ResponsePayload::new(&response).deserialize::<ResumeSessionResponse, _>()
17643    }
17644
17645    /// <p>Sends a signal to an Automation execution to change the current behavior or status of the execution. </p>
17646    async fn send_automation_signal(
17647        &self,
17648        input: SendAutomationSignalRequest,
17649    ) -> Result<SendAutomationSignalResult, RusotoError<SendAutomationSignalError>> {
17650        let mut request = self.new_signed_request("POST", "/");
17651        request.add_header("x-amz-target", "AmazonSSM.SendAutomationSignal");
17652        let encoded = serde_json::to_string(&input).unwrap();
17653        request.set_payload(Some(encoded));
17654
17655        let response = self
17656            .sign_and_dispatch(request, SendAutomationSignalError::from_response)
17657            .await?;
17658        let mut response = response;
17659        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17660        proto::json::ResponsePayload::new(&response).deserialize::<SendAutomationSignalResult, _>()
17661    }
17662
17663    /// <p>Runs commands on one or more managed instances.</p>
17664    async fn send_command(
17665        &self,
17666        input: SendCommandRequest,
17667    ) -> Result<SendCommandResult, RusotoError<SendCommandError>> {
17668        let mut request = self.new_signed_request("POST", "/");
17669        request.add_header("x-amz-target", "AmazonSSM.SendCommand");
17670        let encoded = serde_json::to_string(&input).unwrap();
17671        request.set_payload(Some(encoded));
17672
17673        let response = self
17674            .sign_and_dispatch(request, SendCommandError::from_response)
17675            .await?;
17676        let mut response = response;
17677        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17678        proto::json::ResponsePayload::new(&response).deserialize::<SendCommandResult, _>()
17679    }
17680
17681    /// <p>Use this API action to run an association immediately and only one time. This action can be helpful when troubleshooting associations.</p>
17682    async fn start_associations_once(
17683        &self,
17684        input: StartAssociationsOnceRequest,
17685    ) -> Result<StartAssociationsOnceResult, RusotoError<StartAssociationsOnceError>> {
17686        let mut request = self.new_signed_request("POST", "/");
17687        request.add_header("x-amz-target", "AmazonSSM.StartAssociationsOnce");
17688        let encoded = serde_json::to_string(&input).unwrap();
17689        request.set_payload(Some(encoded));
17690
17691        let response = self
17692            .sign_and_dispatch(request, StartAssociationsOnceError::from_response)
17693            .await?;
17694        let mut response = response;
17695        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17696        proto::json::ResponsePayload::new(&response).deserialize::<StartAssociationsOnceResult, _>()
17697    }
17698
17699    /// <p>Initiates execution of an Automation document.</p>
17700    async fn start_automation_execution(
17701        &self,
17702        input: StartAutomationExecutionRequest,
17703    ) -> Result<StartAutomationExecutionResult, RusotoError<StartAutomationExecutionError>> {
17704        let mut request = self.new_signed_request("POST", "/");
17705        request.add_header("x-amz-target", "AmazonSSM.StartAutomationExecution");
17706        let encoded = serde_json::to_string(&input).unwrap();
17707        request.set_payload(Some(encoded));
17708
17709        let response = self
17710            .sign_and_dispatch(request, StartAutomationExecutionError::from_response)
17711            .await?;
17712        let mut response = response;
17713        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17714        proto::json::ResponsePayload::new(&response)
17715            .deserialize::<StartAutomationExecutionResult, _>()
17716    }
17717
17718    /// <p><p>Initiates a connection to a target (for example, an instance) for a Session Manager session. Returns a URL and token that can be used to open a WebSocket connection for sending input and receiving outputs.</p> <note> <p>AWS CLI usage: <code>start-session</code> is an interactive command that requires the Session Manager plugin to be installed on the client machine making the call. For information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html">Install the Session Manager plugin for the AWS CLI</a> in the <i>AWS Systems Manager User Guide</i>.</p> <p>AWS Tools for PowerShell usage: Start-SSMSession is not currently supported by AWS Tools for PowerShell on Windows local machines.</p> </note></p>
17719    async fn start_session(
17720        &self,
17721        input: StartSessionRequest,
17722    ) -> Result<StartSessionResponse, RusotoError<StartSessionError>> {
17723        let mut request = self.new_signed_request("POST", "/");
17724        request.add_header("x-amz-target", "AmazonSSM.StartSession");
17725        let encoded = serde_json::to_string(&input).unwrap();
17726        request.set_payload(Some(encoded));
17727
17728        let response = self
17729            .sign_and_dispatch(request, StartSessionError::from_response)
17730            .await?;
17731        let mut response = response;
17732        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17733        proto::json::ResponsePayload::new(&response).deserialize::<StartSessionResponse, _>()
17734    }
17735
17736    /// <p>Stop an Automation that is currently running.</p>
17737    async fn stop_automation_execution(
17738        &self,
17739        input: StopAutomationExecutionRequest,
17740    ) -> Result<StopAutomationExecutionResult, RusotoError<StopAutomationExecutionError>> {
17741        let mut request = self.new_signed_request("POST", "/");
17742        request.add_header("x-amz-target", "AmazonSSM.StopAutomationExecution");
17743        let encoded = serde_json::to_string(&input).unwrap();
17744        request.set_payload(Some(encoded));
17745
17746        let response = self
17747            .sign_and_dispatch(request, StopAutomationExecutionError::from_response)
17748            .await?;
17749        let mut response = response;
17750        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17751        proto::json::ResponsePayload::new(&response)
17752            .deserialize::<StopAutomationExecutionResult, _>()
17753    }
17754
17755    /// <p>Permanently ends a session and closes the data connection between the Session Manager client and SSM Agent on the instance. A terminated session cannot be resumed.</p>
17756    async fn terminate_session(
17757        &self,
17758        input: TerminateSessionRequest,
17759    ) -> Result<TerminateSessionResponse, RusotoError<TerminateSessionError>> {
17760        let mut request = self.new_signed_request("POST", "/");
17761        request.add_header("x-amz-target", "AmazonSSM.TerminateSession");
17762        let encoded = serde_json::to_string(&input).unwrap();
17763        request.set_payload(Some(encoded));
17764
17765        let response = self
17766            .sign_and_dispatch(request, TerminateSessionError::from_response)
17767            .await?;
17768        let mut response = response;
17769        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17770        proto::json::ResponsePayload::new(&response).deserialize::<TerminateSessionResponse, _>()
17771    }
17772
17773    /// <p><p>Updates an association. You can update the association name and version, the document version, schedule, parameters, and Amazon S3 output. </p> <p>In order to call this API action, your IAM user account, group, or role must be configured with permission to call the <a>DescribeAssociation</a> API action. If you don&#39;t have permission to call DescribeAssociation, then you receive the following error: <code>An error occurred (AccessDeniedException) when calling the UpdateAssociation operation: User: &lt;user<em>arn&gt; is not authorized to perform: ssm:DescribeAssociation on resource: &lt;resource</em>arn&gt;</code> </p> <important> <p>When you update an association, the association immediately runs against the specified targets.</p> </important></p>
17774    async fn update_association(
17775        &self,
17776        input: UpdateAssociationRequest,
17777    ) -> Result<UpdateAssociationResult, RusotoError<UpdateAssociationError>> {
17778        let mut request = self.new_signed_request("POST", "/");
17779        request.add_header("x-amz-target", "AmazonSSM.UpdateAssociation");
17780        let encoded = serde_json::to_string(&input).unwrap();
17781        request.set_payload(Some(encoded));
17782
17783        let response = self
17784            .sign_and_dispatch(request, UpdateAssociationError::from_response)
17785            .await?;
17786        let mut response = response;
17787        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17788        proto::json::ResponsePayload::new(&response).deserialize::<UpdateAssociationResult, _>()
17789    }
17790
17791    /// <p>Updates the status of the Systems Manager document associated with the specified instance.</p>
17792    async fn update_association_status(
17793        &self,
17794        input: UpdateAssociationStatusRequest,
17795    ) -> Result<UpdateAssociationStatusResult, RusotoError<UpdateAssociationStatusError>> {
17796        let mut request = self.new_signed_request("POST", "/");
17797        request.add_header("x-amz-target", "AmazonSSM.UpdateAssociationStatus");
17798        let encoded = serde_json::to_string(&input).unwrap();
17799        request.set_payload(Some(encoded));
17800
17801        let response = self
17802            .sign_and_dispatch(request, UpdateAssociationStatusError::from_response)
17803            .await?;
17804        let mut response = response;
17805        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17806        proto::json::ResponsePayload::new(&response)
17807            .deserialize::<UpdateAssociationStatusResult, _>()
17808    }
17809
17810    /// <p>Updates one or more values for an SSM document.</p>
17811    async fn update_document(
17812        &self,
17813        input: UpdateDocumentRequest,
17814    ) -> Result<UpdateDocumentResult, RusotoError<UpdateDocumentError>> {
17815        let mut request = self.new_signed_request("POST", "/");
17816        request.add_header("x-amz-target", "AmazonSSM.UpdateDocument");
17817        let encoded = serde_json::to_string(&input).unwrap();
17818        request.set_payload(Some(encoded));
17819
17820        let response = self
17821            .sign_and_dispatch(request, UpdateDocumentError::from_response)
17822            .await?;
17823        let mut response = response;
17824        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17825        proto::json::ResponsePayload::new(&response).deserialize::<UpdateDocumentResult, _>()
17826    }
17827
17828    /// <p>Set the default version of a document. </p>
17829    async fn update_document_default_version(
17830        &self,
17831        input: UpdateDocumentDefaultVersionRequest,
17832    ) -> Result<UpdateDocumentDefaultVersionResult, RusotoError<UpdateDocumentDefaultVersionError>>
17833    {
17834        let mut request = self.new_signed_request("POST", "/");
17835        request.add_header("x-amz-target", "AmazonSSM.UpdateDocumentDefaultVersion");
17836        let encoded = serde_json::to_string(&input).unwrap();
17837        request.set_payload(Some(encoded));
17838
17839        let response = self
17840            .sign_and_dispatch(request, UpdateDocumentDefaultVersionError::from_response)
17841            .await?;
17842        let mut response = response;
17843        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17844        proto::json::ResponsePayload::new(&response)
17845            .deserialize::<UpdateDocumentDefaultVersionResult, _>()
17846    }
17847
17848    /// <p><p>Updates an existing maintenance window. Only specified parameters are modified.</p> <note> <p>The value you specify for <code>Duration</code> determines the specific end time for the maintenance window based on the time it begins. No maintenance window tasks are permitted to start after the resulting endtime minus the number of hours you specify for <code>Cutoff</code>. For example, if the maintenance window starts at 3 PM, the duration is three hours, and the value you specify for <code>Cutoff</code> is one hour, no maintenance window tasks can start after 5 PM.</p> </note></p>
17849    async fn update_maintenance_window(
17850        &self,
17851        input: UpdateMaintenanceWindowRequest,
17852    ) -> Result<UpdateMaintenanceWindowResult, RusotoError<UpdateMaintenanceWindowError>> {
17853        let mut request = self.new_signed_request("POST", "/");
17854        request.add_header("x-amz-target", "AmazonSSM.UpdateMaintenanceWindow");
17855        let encoded = serde_json::to_string(&input).unwrap();
17856        request.set_payload(Some(encoded));
17857
17858        let response = self
17859            .sign_and_dispatch(request, UpdateMaintenanceWindowError::from_response)
17860            .await?;
17861        let mut response = response;
17862        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17863        proto::json::ResponsePayload::new(&response)
17864            .deserialize::<UpdateMaintenanceWindowResult, _>()
17865    }
17866
17867    /// <p><p>Modifies the target of an existing maintenance window. You can change the following:</p> <ul> <li> <p>Name</p> </li> <li> <p>Description</p> </li> <li> <p>Owner</p> </li> <li> <p>IDs for an ID target</p> </li> <li> <p>Tags for a Tag target</p> </li> <li> <p>From any supported tag type to another. The three supported tag types are ID target, Tag target, and resource group. For more information, see <a>Target</a>.</p> </li> </ul> <note> <p>If a parameter is null, then the corresponding field is not modified.</p> </note></p>
17868    async fn update_maintenance_window_target(
17869        &self,
17870        input: UpdateMaintenanceWindowTargetRequest,
17871    ) -> Result<UpdateMaintenanceWindowTargetResult, RusotoError<UpdateMaintenanceWindowTargetError>>
17872    {
17873        let mut request = self.new_signed_request("POST", "/");
17874        request.add_header("x-amz-target", "AmazonSSM.UpdateMaintenanceWindowTarget");
17875        let encoded = serde_json::to_string(&input).unwrap();
17876        request.set_payload(Some(encoded));
17877
17878        let response = self
17879            .sign_and_dispatch(request, UpdateMaintenanceWindowTargetError::from_response)
17880            .await?;
17881        let mut response = response;
17882        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17883        proto::json::ResponsePayload::new(&response)
17884            .deserialize::<UpdateMaintenanceWindowTargetResult, _>()
17885    }
17886
17887    /// <p>Modifies a task assigned to a maintenance window. You can't change the task type, but you can change the following values:</p> <ul> <li> <p>TaskARN. For example, you can change a RUN_COMMAND task from AWS-RunPowerShellScript to AWS-RunShellScript.</p> </li> <li> <p>ServiceRoleArn</p> </li> <li> <p>TaskInvocationParameters</p> </li> <li> <p>Priority</p> </li> <li> <p>MaxConcurrency</p> </li> <li> <p>MaxErrors</p> </li> </ul> <p>If a parameter is null, then the corresponding field is not modified. Also, if you set Replace to true, then all fields required by the <a>RegisterTaskWithMaintenanceWindow</a> action are required for this request. Optional fields that aren't specified are set to null.</p>
17888    async fn update_maintenance_window_task(
17889        &self,
17890        input: UpdateMaintenanceWindowTaskRequest,
17891    ) -> Result<UpdateMaintenanceWindowTaskResult, RusotoError<UpdateMaintenanceWindowTaskError>>
17892    {
17893        let mut request = self.new_signed_request("POST", "/");
17894        request.add_header("x-amz-target", "AmazonSSM.UpdateMaintenanceWindowTask");
17895        let encoded = serde_json::to_string(&input).unwrap();
17896        request.set_payload(Some(encoded));
17897
17898        let response = self
17899            .sign_and_dispatch(request, UpdateMaintenanceWindowTaskError::from_response)
17900            .await?;
17901        let mut response = response;
17902        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17903        proto::json::ResponsePayload::new(&response)
17904            .deserialize::<UpdateMaintenanceWindowTaskResult, _>()
17905    }
17906
17907    /// <p>Changes the Amazon Identity and Access Management (IAM) role that is assigned to the on-premises instance or virtual machines (VM). IAM roles are first assigned to these hybrid instances during the activation process. For more information, see <a>CreateActivation</a>.</p>
17908    async fn update_managed_instance_role(
17909        &self,
17910        input: UpdateManagedInstanceRoleRequest,
17911    ) -> Result<UpdateManagedInstanceRoleResult, RusotoError<UpdateManagedInstanceRoleError>> {
17912        let mut request = self.new_signed_request("POST", "/");
17913        request.add_header("x-amz-target", "AmazonSSM.UpdateManagedInstanceRole");
17914        let encoded = serde_json::to_string(&input).unwrap();
17915        request.set_payload(Some(encoded));
17916
17917        let response = self
17918            .sign_and_dispatch(request, UpdateManagedInstanceRoleError::from_response)
17919            .await?;
17920        let mut response = response;
17921        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17922        proto::json::ResponsePayload::new(&response)
17923            .deserialize::<UpdateManagedInstanceRoleResult, _>()
17924    }
17925
17926    /// <p>Edit or change an OpsItem. You must have permission in AWS Identity and Access Management (IAM) to update an OpsItem. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-getting-started.html">Getting started with OpsCenter</a> in the <i>AWS Systems Manager User Guide</i>.</p> <p>Operations engineers and IT professionals use OpsCenter to view, investigate, and remediate operational issues impacting the performance and health of their AWS resources. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter.html">AWS Systems Manager OpsCenter</a> in the <i>AWS Systems Manager User Guide</i>. </p>
17927    async fn update_ops_item(
17928        &self,
17929        input: UpdateOpsItemRequest,
17930    ) -> Result<UpdateOpsItemResponse, RusotoError<UpdateOpsItemError>> {
17931        let mut request = self.new_signed_request("POST", "/");
17932        request.add_header("x-amz-target", "AmazonSSM.UpdateOpsItem");
17933        let encoded = serde_json::to_string(&input).unwrap();
17934        request.set_payload(Some(encoded));
17935
17936        let response = self
17937            .sign_and_dispatch(request, UpdateOpsItemError::from_response)
17938            .await?;
17939        let mut response = response;
17940        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17941        proto::json::ResponsePayload::new(&response).deserialize::<UpdateOpsItemResponse, _>()
17942    }
17943
17944    /// <p><p>Modifies an existing patch baseline. Fields not specified in the request are left unchanged.</p> <note> <p>For information about valid key and value pairs in <code>PatchFilters</code> for each supported operating system type, see <a href="http://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PatchFilter.html">PatchFilter</a>.</p> </note></p>
17945    async fn update_patch_baseline(
17946        &self,
17947        input: UpdatePatchBaselineRequest,
17948    ) -> Result<UpdatePatchBaselineResult, RusotoError<UpdatePatchBaselineError>> {
17949        let mut request = self.new_signed_request("POST", "/");
17950        request.add_header("x-amz-target", "AmazonSSM.UpdatePatchBaseline");
17951        let encoded = serde_json::to_string(&input).unwrap();
17952        request.set_payload(Some(encoded));
17953
17954        let response = self
17955            .sign_and_dispatch(request, UpdatePatchBaselineError::from_response)
17956            .await?;
17957        let mut response = response;
17958        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17959        proto::json::ResponsePayload::new(&response).deserialize::<UpdatePatchBaselineResult, _>()
17960    }
17961
17962    /// <p><p>Update a resource data sync. After you create a resource data sync for a Region, you can&#39;t change the account options for that sync. For example, if you create a sync in the us-east-2 (Ohio) Region and you choose the Include only the current account option, you can&#39;t edit that sync later and choose the Include all accounts from my AWS Organizations configuration option. Instead, you must delete the first resource data sync, and create a new one.</p> <note> <p>This API action only supports a resource data sync that was created with a SyncFromSource <code>SyncType</code>.</p> </note></p>
17963    async fn update_resource_data_sync(
17964        &self,
17965        input: UpdateResourceDataSyncRequest,
17966    ) -> Result<UpdateResourceDataSyncResult, RusotoError<UpdateResourceDataSyncError>> {
17967        let mut request = self.new_signed_request("POST", "/");
17968        request.add_header("x-amz-target", "AmazonSSM.UpdateResourceDataSync");
17969        let encoded = serde_json::to_string(&input).unwrap();
17970        request.set_payload(Some(encoded));
17971
17972        let response = self
17973            .sign_and_dispatch(request, UpdateResourceDataSyncError::from_response)
17974            .await?;
17975        let mut response = response;
17976        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17977        proto::json::ResponsePayload::new(&response)
17978            .deserialize::<UpdateResourceDataSyncResult, _>()
17979    }
17980
17981    /// <p> <code>ServiceSetting</code> is an account-level setting for an AWS service. This setting defines how a user interacts with or uses a service or a feature of a service. For example, if an AWS service charges money to the account based on feature or service usage, then the AWS service team might create a default setting of "false". This means the user can't use this feature unless they change the setting to "true" and intentionally opt in for a paid feature.</p> <p>Services map a <code>SettingId</code> object to a setting value. AWS services teams define the default value for a <code>SettingId</code>. You can't create a new <code>SettingId</code>, but you can overwrite the default value if you have the <code>ssm:UpdateServiceSetting</code> permission for the setting. Use the <a>GetServiceSetting</a> API action to view the current value. Or, use the <a>ResetServiceSetting</a> to change the value back to the original value defined by the AWS service team.</p> <p>Update the service setting for the account. </p>
17982    async fn update_service_setting(
17983        &self,
17984        input: UpdateServiceSettingRequest,
17985    ) -> Result<UpdateServiceSettingResult, RusotoError<UpdateServiceSettingError>> {
17986        let mut request = self.new_signed_request("POST", "/");
17987        request.add_header("x-amz-target", "AmazonSSM.UpdateServiceSetting");
17988        let encoded = serde_json::to_string(&input).unwrap();
17989        request.set_payload(Some(encoded));
17990
17991        let response = self
17992            .sign_and_dispatch(request, UpdateServiceSettingError::from_response)
17993            .await?;
17994        let mut response = response;
17995        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
17996        proto::json::ResponsePayload::new(&response).deserialize::<UpdateServiceSettingResult, _>()
17997    }
17998}